[access] move mouse postion if an object has a highlight by highlight_cycle(); not...
[framework/uifw/elementary.git] / src / examples / layout_example_01.c
1 //Compile with:
2 //gcc -g layout_example_01.c -o layout_example_01 `pkg-config --cflags --libs elementary`
3
4 #include <Elementary.h>
5
6 #define TABLE "example/table"
7 #define BOX "example/box"
8 #define TITLE "example/title"
9 #define SWALLOW "example/custom"
10
11 static int _box_buttons = 0;
12
13 static void
14 _tbl_btn_cb(void *data, Evas_Object *btn, void *event_info)
15 {
16    Evas_Object *layout = data;
17
18    elm_layout_table_unpack(layout, TABLE, btn);
19    evas_object_del(btn);
20 }
21
22 static void
23 _box_btn_cb(void *data, Evas_Object *btn, void *event_info)
24 {
25    Evas_Object *layout = data;
26    Evas_Object *item;
27    char buf[30];
28
29    snprintf(buf, sizeof(buf), "Button %02d", _box_buttons++);
30
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);
38 }
39
40 static void
41 _swallow_btn_cb(void *data, Evas_Object *btn, void *event_info)
42 {
43    Evas_Object *layout = data;
44    Evas_Object *item;
45
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);
50 }
51
52 EAPI_MAIN int
53 elm_main(int argc, char **argv)
54 {
55    Evas_Object *win, *bg, *icon, *icon2, *bt, *bt2, *layout;
56    Evas_Object *clk;
57    Evas_Object *item;
58    char buf[PATH_MAX];
59
60    elm_app_info_set(elm_main, "elementary", "examples/layout_example.edj");
61    win = elm_win_add(NULL, "layout", ELM_WIN_BASIC);
62    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
63    elm_win_autodel_set(win, EINA_TRUE);
64
65    bg = elm_bg_add(win);
66    elm_bg_color_set(bg, 255,255 ,255);
67    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
68    elm_win_resize_object_add(win, bg);
69    evas_object_show(bg);
70
71    // Adding layout and filling it with widgets
72    layout = elm_layout_add(win);
73    evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
74    elm_win_resize_object_add(win, layout);
75    snprintf(buf, sizeof(buf), "%s/examples/layout_example.edj", elm_app_data_dir_get());
76    elm_layout_file_set(layout, buf, "example/mylayout");
77    evas_object_show(layout);
78
79    // Setting title
80    const char *title = elm_layout_data_get(layout, "title");
81    if (title)
82      {
83         elm_win_title_set(win, title);
84         elm_object_part_text_set(layout, TITLE, title);
85      }
86
87    // Add icon, clock and button to the table
88    icon = elm_icon_add(win);
89    elm_icon_standard_set(icon, "home");
90    evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
91    evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
92    elm_layout_table_pack(layout, TABLE, icon, 0, 0, 1, 1);
93    evas_object_show(icon);
94
95    icon2 = elm_icon_add(win);
96    elm_icon_standard_set(icon2, "close");
97    evas_object_size_hint_weight_set(icon2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
98    evas_object_size_hint_align_set(icon2, EVAS_HINT_FILL, EVAS_HINT_FILL);
99    elm_layout_table_pack(layout, TABLE, icon2, 1, 0, 1, 1);
100    evas_object_show(icon2);
101
102    clk = elm_clock_add(win);
103    evas_object_size_hint_weight_set(clk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
104    evas_object_size_hint_align_set(clk, EVAS_HINT_FILL, EVAS_HINT_FILL);
105    elm_layout_table_pack(layout, TABLE, clk, 2, 0, 1, 1);
106    evas_object_show(clk);
107
108    bt = elm_button_add(win);
109    elm_object_text_set(bt, "Click me!");
110    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
111    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
112    elm_layout_table_pack(layout, TABLE, bt, 0, 1, 3, 1);
113    evas_object_smart_callback_add(bt, "clicked", _tbl_btn_cb, layout);
114    evas_object_show(bt);
115
116    item = elm_button_add(win);
117    elm_object_text_set(item, "Position 0");
118    evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
119    evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
120    elm_layout_box_insert_at(layout, BOX, item, 0);
121    evas_object_smart_callback_add(item, "clicked", _box_btn_cb, layout);
122    evas_object_show(item);
123
124    item = elm_button_add(win);
125    elm_object_text_set(item, "Prepended");
126    evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
127    evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
128    elm_layout_box_prepend(layout, BOX, item);
129    evas_object_smart_callback_add(item, "clicked", _box_btn_cb, layout);
130    evas_object_show(item);
131
132    bt2 = elm_button_add(win);
133    elm_object_text_set(bt2, "Delete All");
134    elm_object_part_content_set(layout, SWALLOW, bt2);
135    evas_object_smart_callback_add(bt2, "clicked", _swallow_btn_cb, layout);
136
137    evas_object_resize(win, 320, 320);
138    evas_object_show(win);
139
140    elm_run();
141    elm_shutdown();
142
143    return 0;
144 }
145 ELM_MAIN()