2 //gcc -g layout_example_01.c -o layout_example_01 `pkg-config --cflags --libs elementary`
4 #include <Elementary.h>
6 #define TABLE "example/table"
7 #define BOX "example/box"
8 #define TITLE "example/title"
9 #define SWALLOW "example/custom"
11 static int _box_buttons = 0;
14 _tbl_btn_cb(void *data, Evas_Object *btn, void *event_info)
16 Evas_Object *layout = data;
18 elm_layout_table_unpack(layout, TABLE, btn);
23 _box_btn_cb(void *data, Evas_Object *btn, void *event_info)
25 Evas_Object *layout = data;
29 snprintf(buf, sizeof(buf), "Button %02d", _box_buttons++);
31 item = elm_button_add(elm_object_parent_widget_get(layout));
32 elm_object_text_set(item, buf);
33 evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
34 evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
35 elm_layout_box_insert_before(layout, BOX, item, btn);
36 evas_object_smart_callback_add(item, "clicked", _box_btn_cb, layout);
37 evas_object_show(item);
41 _swallow_btn_cb(void *data, Evas_Object *btn, void *event_info)
43 Evas_Object *layout = data;
46 elm_layout_table_clear(layout, TABLE, EINA_TRUE);
47 elm_layout_box_remove_all(layout, BOX, EINA_TRUE);
48 item = elm_object_part_content_unset(layout, SWALLOW);
49 evas_object_del(item);
53 elm_main(int argc, char **argv)
55 Evas_Object *win, *icon, *icon2, *bt, *bt2, *layout;
60 elm_app_info_set(elm_main, "elementary", "config/profile.cfg");
61 elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
63 win = elm_win_util_standard_add("layout", "Layout");
64 elm_win_autodel_set(win, EINA_TRUE);
66 // Adding layout and filling it with widgets
67 layout = elm_layout_add(win);
68 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
69 elm_win_resize_object_add(win, layout);
70 snprintf(buf, sizeof(buf), "%s/examples/layout_example.edj", elm_app_data_dir_get());
71 snprintf(buf, sizeof(buf), "%s/elementary/examples/layout_example.edj", elm_app_data_dir_get());
72 elm_layout_file_set(layout, buf, "example/mylayout");
73 evas_object_show(layout);
76 const char *title = elm_layout_data_get(layout, "title");
79 elm_win_title_set(win, title);
80 elm_object_part_text_set(layout, TITLE, title);
83 // Add icon, clock and button to the table
84 icon = elm_icon_add(win);
85 elm_icon_standard_set(icon, "home");
86 evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
87 evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
88 elm_layout_table_pack(layout, TABLE, icon, 0, 0, 1, 1);
89 evas_object_show(icon);
91 icon2 = elm_icon_add(win);
92 elm_icon_standard_set(icon2, "close");
93 evas_object_size_hint_weight_set(icon2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
94 evas_object_size_hint_align_set(icon2, EVAS_HINT_FILL, EVAS_HINT_FILL);
95 elm_layout_table_pack(layout, TABLE, icon2, 1, 0, 1, 1);
96 evas_object_show(icon2);
98 clk = elm_clock_add(win);
99 evas_object_size_hint_weight_set(clk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
100 evas_object_size_hint_align_set(clk, EVAS_HINT_FILL, EVAS_HINT_FILL);
101 elm_layout_table_pack(layout, TABLE, clk, 2, 0, 1, 1);
102 evas_object_show(clk);
104 bt = elm_button_add(win);
105 elm_object_text_set(bt, "Click me!");
106 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
107 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
108 elm_layout_table_pack(layout, TABLE, bt, 0, 1, 3, 1);
109 evas_object_smart_callback_add(bt, "clicked", _tbl_btn_cb, layout);
110 evas_object_show(bt);
112 item = elm_button_add(win);
113 elm_object_text_set(item, "Position 0");
114 evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
115 evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
116 elm_layout_box_insert_at(layout, BOX, item, 0);
117 evas_object_smart_callback_add(item, "clicked", _box_btn_cb, layout);
118 evas_object_show(item);
120 item = elm_button_add(win);
121 elm_object_text_set(item, "Prepended");
122 evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
123 evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
124 elm_layout_box_prepend(layout, BOX, item);
125 evas_object_smart_callback_add(item, "clicked", _box_btn_cb, layout);
126 evas_object_show(item);
128 bt2 = elm_button_add(win);
129 elm_object_text_set(bt2, "Delete All");
130 elm_object_part_content_set(layout, SWALLOW, bt2);
131 evas_object_smart_callback_add(bt2, "clicked", _swallow_btn_cb, layout);
133 evas_object_resize(win, 320, 320);
134 evas_object_show(win);