efl

Форк
0
/
test_win_dialog.c 
169 строк · 6.1 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4
#include <Efl_Ui.h>
5
#include <Elementary.h>
6

7
static void
8
_bt_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
9
{
10
   Evas_Object *dia, *lb;
11
   Evas_Object *parent = data;
12

13
   dia = elm_win_util_dialog_add(parent, "window-dia", "A Dialog Window");
14
   elm_win_autodel_set(dia, EINA_TRUE);
15

16
   lb = elm_label_add(dia);
17
   elm_object_text_set(lb, "This is a Dialog Window");
18
   evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
19
   elm_win_resize_object_add(dia, lb);
20
   evas_object_show(lb);
21

22
   evas_object_resize(dia, 200, 150);
23
   evas_object_show(dia);
24
}
25

26
static void
27
_bt2_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
28
{
29
   Efl_Canvas_Object *dia, *lb, *parent = data;
30
   Eina_Size2D size = { 300, 150 };
31

32
   dia = efl_add(EFL_UI_WIN_CLASS, parent,
33
                 efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_DIALOG_BASIC),
34
                 efl_ui_win_name_set(efl_added, "window-dia-2"),
35
                 efl_ui_win_autodel_set(efl_added, EINA_TRUE),
36
                 efl_text_set(efl_added, "A Fixed Size Dialog"));
37

38
   // Notes:
39
   // - All objects have 0 weight, this makes the window not resizable.
40
   // - With EO APIs, efl_gfx_hint_size_min_set() is safe to call as EFL will
41
   //   only set the restricted min size (and combine them for calculation).
42

43
   lb = efl_add(EFL_UI_TEXTBOX_CLASS, dia,
44
                efl_text_set(efl_added, "This is a non-resizable dialog."),
45
                efl_gfx_hint_size_min_set(efl_added, size),
46
                efl_gfx_hint_size_max_set(efl_added, size),
47
                efl_gfx_hint_weight_set(efl_added, 0, 0));
48

49
   // Swallow in the label as the default content, this will make it visible.
50
   efl_content_set(dia, lb);
51
}
52

53
static void
54
_size_update(void *data, const Efl_Event *ev)
55
{
56
   Eina_Size2D sz, max, min, cmin;
57
   char buf[2048];
58
   Eo *dia = ev->object;
59
   Eo *lbl = data;
60

61
   cmin = efl_gfx_hint_size_combined_min_get(dia);
62
   min = efl_gfx_hint_size_min_get(dia);
63
   max = efl_gfx_hint_size_max_get(dia);
64
   sz = efl_gfx_entity_size_get(dia);
65

66
   sprintf(buf, "This is a dialog with min/max size<br>"
67
           "Min size: %dx%d (requested) %dx%d (effective)<br>"
68
           "Max size: %dx%d<br>"
69
           "Current size: %dx%d", min.w, min.h, cmin.w, cmin.h, max.w, max.h, sz.w, sz.h);
70
   //efl_text_set(lbl, buf);
71
   elm_object_text_set(lbl, buf);
72
}
73

74
static void
75
_bt3_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
76
{
77
   Efl_Canvas_Object *dia, *lb, *parent = data;
78

79
   dia = efl_add(EFL_UI_WIN_CLASS, parent,
80
                 efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_DIALOG_BASIC),
81
                 efl_ui_win_name_set(efl_added, "window-dia-3"),
82
                 efl_ui_win_autodel_set(efl_added, EINA_TRUE),
83
                 efl_text_set(efl_added, "Min/Max Size Dialog"));
84

85
   //lb = efl_add(EFL_UI_TEXTBOX_CLASS, dia);,
86
   lb = elm_label_add(dia);
87
   efl_event_callback_add(dia, EFL_GFX_ENTITY_EVENT_HINTS_CHANGED, _size_update, lb);
88
   efl_event_callback_add(dia, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _size_update, lb);
89
   elm_object_text_set(lb, "This is a Dialog Window");
90
   efl_gfx_hint_weight_set(lb, 1.0, 1.0);
91

92
   // Swallow in the label as the default content, this will make it visible.
93
   efl_content_set(dia, lb);
94

95
   // Set min & max size (app-side)
96
   efl_gfx_hint_size_min_set(dia, EINA_SIZE2D(ELM_SCALE_SIZE(0), ELM_SCALE_SIZE(100)));
97
   efl_gfx_hint_size_max_set(dia, EINA_SIZE2D(ELM_SCALE_SIZE(800), ELM_SCALE_SIZE(600)));
98
}
99

100
static void
101
_bt4_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
102
{
103
   Efl_Canvas_Object *dia, *lb;
104

105
   dia = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
106
                 efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_DIALOG_BASIC),
107
                 efl_ui_win_name_set(efl_added, "window-dia-4"),
108
                 efl_ui_win_autodel_set(efl_added, EINA_TRUE),
109
                 efl_text_set(efl_added, "Min/Max Size Dialog")
110
                );
111

112
   //lb = efl_add(EFL_UI_TEXTBOX_CLASS, dia);,
113
   lb = elm_label_add(dia);
114
   efl_event_callback_add(dia, EFL_GFX_ENTITY_EVENT_HINTS_CHANGED, _size_update, lb);
115
   efl_event_callback_add(dia, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _size_update, lb);
116
   elm_object_text_set(lb, "This is a Centered Dialog Window");
117
   efl_gfx_hint_weight_set(lb, 1.0, 1.0);
118

119
   // Swallow in the label as the default content, this will make it visible.
120
   efl_content_set(dia, lb);
121

122
   // Set min & max size (app-side)
123
   efl_gfx_hint_size_min_set(dia, EINA_SIZE2D(ELM_SCALE_SIZE(0), ELM_SCALE_SIZE(100)));
124
   efl_gfx_hint_size_max_set(dia, EINA_SIZE2D(ELM_SCALE_SIZE(800), ELM_SCALE_SIZE(600)));
125

126
   efl_ui_win_center(dia, EINA_TRUE, EINA_TRUE);
127
}
128

129
void
130
test_win_dialog(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
131
{
132
   Evas_Object *win, *box, *bt;
133

134
   win = elm_win_util_standard_add("window-dia", "A Standard Window");
135
   elm_win_autodel_set(win, EINA_TRUE);
136

137
   box = elm_box_add(win);
138
   evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
139
   elm_win_resize_object_add(win, box);
140
   evas_object_show(box);
141

142
   bt = elm_button_add(win);
143
   elm_object_text_set(bt, "Create a new dialog");
144
   evas_object_smart_callback_add(bt, "clicked", _bt_clicked_cb, win);
145
   elm_box_pack_end(box, bt);
146
   evas_object_show(bt);
147

148
   bt = elm_button_add(win);
149
   elm_object_text_set(bt, "Create a new unresizable dialog");
150
   evas_object_smart_callback_add(bt, "clicked", _bt2_clicked_cb, win);
151
   elm_box_pack_end(box, bt);
152
   evas_object_show(bt);
153

154
   bt = elm_button_add(win);
155
   elm_object_text_set(bt, "Create a new dialog with min/max sizes");
156
   evas_object_smart_callback_add(bt, "clicked", _bt3_clicked_cb, win);
157
   elm_box_pack_end(box, bt);
158
   evas_object_show(bt);
159

160
   bt = elm_button_add(win);
161
   elm_object_text_set(bt, "Create a new centered dialog");
162
   evas_object_smart_callback_add(bt, "clicked", _bt4_clicked_cb, win);
163
   elm_box_pack_end(box, bt);
164
   evas_object_show(bt);
165

166
   evas_object_resize(win, 400 * elm_config_scale_get(),
167
                           400 * elm_config_scale_get());
168
   evas_object_show(win);
169
}
170

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.