2 * gcc -o button_example_01 button_example_01.c `pkg-config --cflags --libs elementary`
4 #include <Elementary.h>
9 Evas_Object *icon_still;
19 _btn_cursors_release_cb(void *data, Evas_Object *btn, void *ev)
22 elm_object_part_content_set(app->mid, "icon", app->icon_still);
23 app->icon_still = NULL;
27 _btn_cursors_move_cb(void *data, Evas_Object *btn, void *ev)
35 app->icon_still = elm_object_content_unset(app->mid);
36 evas_object_hide(app->icon_still);
37 icon = elm_icon_add(app->mid);
38 elm_icon_standard_set(icon, "chat");
39 elm_object_part_content_set(app->mid, "icon", icon);
42 evas_object_size_hint_align_get(app->mid, &ax, &ay);
43 if (btn == app->cursors.up)
49 else if (btn == app->cursors.down)
55 else if (btn == app->cursors.left)
61 else if (btn == app->cursors.right)
67 evas_object_size_hint_align_set(app->mid, ax, ay);
71 _btn_options_cb(void *data, Evas_Object *btn, void *ev)
76 const char *lbl = elm_object_text_get(btn);
78 ptr = strchr(lbl, ':');
80 t = strtod(ptr, NULL);
82 if (!strncmp(lbl, "Initial", 7))
84 elm_button_autorepeat_initial_timeout_set(app->cursors.up, t);
85 elm_button_autorepeat_initial_timeout_set(app->cursors.down, t);
86 elm_button_autorepeat_initial_timeout_set(app->cursors.left, t);
87 elm_button_autorepeat_initial_timeout_set(app->cursors.right, t);
89 else if (!strncmp(lbl, "Gap", 3))
91 elm_button_autorepeat_gap_timeout_set(app->cursors.up, t);
92 elm_button_autorepeat_gap_timeout_set(app->cursors.down, t);
93 elm_button_autorepeat_gap_timeout_set(app->cursors.left, t);
94 elm_button_autorepeat_gap_timeout_set(app->cursors.right, t);
99 elm_main(int argc, char *argv[])
101 Evas_Object *win, *bg, *box, *box2, *btn, *icon;
102 static App_Data data;
104 elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
106 win = elm_win_add(NULL, "Button example", ELM_WIN_BASIC);
107 elm_win_title_set(win, "Button example");
108 elm_win_autodel_set(win, EINA_TRUE);
109 evas_object_resize(win, 300, 320);
110 evas_object_show(win);
112 bg = elm_bg_add(win);
113 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
114 elm_win_resize_object_add(win, bg);
115 evas_object_show(bg);
117 box = elm_box_add(win);
118 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
119 elm_win_resize_object_add(win, box);
120 evas_object_show(box);
122 box2 = elm_box_add(win);
123 elm_box_horizontal_set(box2, EINA_TRUE);
124 evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, 0.0);
125 elm_box_pack_end(box, box2);
126 evas_object_show(box2);
128 btn = elm_button_add(win);
129 elm_object_text_set(btn, "Initial: 0.0");
130 elm_box_pack_end(box2, btn);
131 evas_object_show(btn);
132 evas_object_smart_callback_add(btn, "clicked", _btn_options_cb, &data);
134 btn = elm_button_add(win);
135 elm_object_text_set(btn, "Initial: 1.0");
136 elm_box_pack_end(box2, btn);
137 evas_object_show(btn);
138 evas_object_smart_callback_add(btn, "clicked", _btn_options_cb, &data);
140 btn = elm_button_add(win);
141 elm_object_text_set(btn, "Initial: 5.0");
142 elm_box_pack_end(box2, btn);
143 evas_object_show(btn);
144 evas_object_smart_callback_add(btn, "clicked", _btn_options_cb, &data);
146 box2 = elm_box_add(win);
147 elm_box_horizontal_set(box2, EINA_TRUE);
148 evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, 0.0);
149 elm_box_pack_end(box, box2);
150 evas_object_show(box2);
152 btn = elm_button_add(win);
153 elm_object_text_set(btn, "Gap: 0.1");
154 elm_box_pack_end(box2, btn);
155 evas_object_show(btn);
156 evas_object_smart_callback_add(btn, "clicked", _btn_options_cb, &data);
158 btn = elm_button_add(win);
159 elm_object_text_set(btn, "Gap: 0.5");
160 elm_box_pack_end(box2, btn);
161 evas_object_show(btn);
162 evas_object_smart_callback_add(btn, "clicked", _btn_options_cb, &data);
164 btn = elm_button_add(win);
165 elm_object_text_set(btn, "Gap: 1.0");
166 elm_box_pack_end(box2, btn);
167 evas_object_show(btn);
168 evas_object_smart_callback_add(btn, "clicked", _btn_options_cb, &data);
170 btn = elm_button_add(win);
171 elm_button_autorepeat_set(btn, EINA_TRUE);
172 elm_button_autorepeat_initial_timeout_set(btn, 1.0);
173 elm_button_autorepeat_gap_timeout_set(btn, 0.5);
174 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
175 evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);
176 elm_box_pack_end(box, btn);
177 evas_object_show(btn);
178 evas_object_smart_callback_add(btn, "repeated", _btn_cursors_move_cb, &data);
179 evas_object_smart_callback_add(btn, "unpressed", _btn_cursors_release_cb,
182 icon = elm_icon_add(win);
183 elm_icon_standard_set(icon, "arrow_up");
184 elm_object_part_content_set(btn, "icon", icon);
186 data.cursors.up = btn;
188 box2 = elm_box_add(win);
189 elm_box_horizontal_set(box2, EINA_TRUE);
190 evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
191 evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL);
192 elm_box_pack_end(box, box2);
193 evas_object_show(box2);
195 btn = elm_button_add(win);
196 elm_button_autorepeat_set(btn, EINA_TRUE);
197 elm_button_autorepeat_initial_timeout_set(btn, 1.0);
198 elm_button_autorepeat_gap_timeout_set(btn, 0.5);
199 evas_object_size_hint_weight_set(btn, 0.0, EVAS_HINT_EXPAND);
200 evas_object_size_hint_align_set(btn, 0.0, EVAS_HINT_FILL);
201 elm_box_pack_end(box2, btn);
202 evas_object_show(btn);
203 evas_object_smart_callback_add(btn, "repeated", _btn_cursors_move_cb, &data);
204 evas_object_smart_callback_add(btn, "unpressed", _btn_cursors_release_cb,
207 icon = elm_icon_add(win);
208 elm_icon_standard_set(icon, "arrow_left");
209 elm_object_part_content_set(btn, "icon", icon);
211 data.cursors.left = btn;
213 btn = elm_button_add(win);
214 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
215 elm_box_pack_end(box2, btn);
216 evas_object_show(btn);
218 icon = elm_icon_add(win);
219 elm_icon_standard_set(icon, "close");
220 elm_object_part_content_set(btn, "icon", icon);
224 btn = elm_button_add(win);
225 elm_button_autorepeat_set(btn, EINA_TRUE);
226 elm_button_autorepeat_initial_timeout_set(btn, 1.0);
227 elm_button_autorepeat_gap_timeout_set(btn, 0.5);
228 evas_object_size_hint_weight_set(btn, 0.0, EVAS_HINT_EXPAND);
229 evas_object_size_hint_align_set(btn, 0.0, EVAS_HINT_FILL);
230 elm_box_pack_end(box2, btn);
231 evas_object_show(btn);
232 evas_object_smart_callback_add(btn, "repeated", _btn_cursors_move_cb, &data);
233 evas_object_smart_callback_add(btn, "unpressed", _btn_cursors_release_cb,
236 icon = elm_icon_add(win);
237 elm_icon_standard_set(icon, "arrow_right");
238 elm_object_part_content_set(btn, "icon", icon);
240 data.cursors.right = btn;
242 btn = elm_button_add(win);
243 elm_button_autorepeat_set(btn, EINA_TRUE);
244 elm_button_autorepeat_initial_timeout_set(btn, 1.0);
245 elm_button_autorepeat_gap_timeout_set(btn, 0.5);
246 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
247 evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);
248 elm_box_pack_end(box, btn);
249 evas_object_show(btn);
250 evas_object_smart_callback_add(btn, "repeated", _btn_cursors_move_cb, &data);
251 evas_object_smart_callback_add(btn, "unpressed", _btn_cursors_release_cb,
254 icon = elm_icon_add(win);
255 elm_icon_standard_set(icon, "arrow_down");
256 elm_object_part_content_set(btn, "icon", icon);
258 data.cursors.down = btn;