diff options
author | David Walter Seikel | 2012-04-22 09:19:23 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-04-22 09:19:23 +1000 |
commit | c963d75dfdeec11f82e79e727062fbf89afa2c04 (patch) | |
tree | 895633dbf641110be46f117c29890c49b3ffc0bd /libraries/edje/src/examples/edje-box.c | |
parent | Adding the new extantz viewer and grid manager. (diff) | |
download | SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.zip SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.gz SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.bz2 SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.xz |
Update EFL to latest beta.
Diffstat (limited to 'libraries/edje/src/examples/edje-box.c')
-rw-r--r-- | libraries/edje/src/examples/edje-box.c | 185 |
1 files changed, 123 insertions, 62 deletions
diff --git a/libraries/edje/src/examples/edje-box.c b/libraries/edje/src/examples/edje-box.c index 7fffba3..2b0cbda 100644 --- a/libraries/edje/src/examples/edje-box.c +++ b/libraries/edje/src/examples/edje-box.c | |||
@@ -10,10 +10,9 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #ifdef HAVE_CONFIG_H | 12 | #ifdef HAVE_CONFIG_H |
13 | #include "config.h" | 13 | # include "config.h" |
14 | #else | 14 | #else |
15 | #define PACKAGE_EXAMPLES_DIR "." | 15 | # define __UNUSED__ |
16 | #define __UNUSED__ | ||
17 | #endif | 16 | #endif |
18 | 17 | ||
19 | #include <Ecore.h> | 18 | #include <Ecore.h> |
@@ -28,13 +27,13 @@ | |||
28 | 27 | ||
29 | #define NRECTS 20 | 28 | #define NRECTS 20 |
30 | 29 | ||
31 | static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/box.edj"; | 30 | static const char commands[] = \ |
32 | 31 | "commands are:\n" | |
33 | struct _App { | 32 | "\ti - prepend rectangle\n" |
34 | Ecore_Evas *ee; | 33 | "\ta - append rectangle\n" |
35 | Evas_Object *edje; | 34 | "\tc - remove\n" |
36 | Evas_Object *bg; | 35 | "\tEsc - exit\n" |
37 | }; | 36 | "\th - print help\n"; |
38 | 37 | ||
39 | static void | 38 | static void |
40 | _on_destroy(Ecore_Evas *ee __UNUSED__) | 39 | _on_destroy(Ecore_Evas *ee __UNUSED__) |
@@ -45,32 +44,41 @@ _on_destroy(Ecore_Evas *ee __UNUSED__) | |||
45 | /* here just to keep our example's window size and background image's | 44 | /* here just to keep our example's window size and background image's |
46 | * size in synchrony */ | 45 | * size in synchrony */ |
47 | static void | 46 | static void |
48 | _canvas_resize_cb(Ecore_Evas *ee) | 47 | _on_canvas_resize(Ecore_Evas *ee) |
49 | { | 48 | { |
50 | int w, h; | 49 | Evas_Object *bg; |
51 | struct _App *app = ecore_evas_data_get(ee, "app"); | 50 | Evas_Object *edje_obj; |
51 | int w; | ||
52 | int h; | ||
52 | 53 | ||
54 | bg = ecore_evas_data_get(ee, "background"); | ||
55 | edje_obj = ecore_evas_data_get(ee, "edje_obj"); | ||
53 | ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); | 56 | ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); |
54 | evas_object_resize(app->bg, w, h); | 57 | evas_object_resize(bg, w, h); |
55 | evas_object_resize(app->edje, w, h); | 58 | evas_object_resize(edje_obj, w, h); |
56 | } | 59 | } |
57 | 60 | ||
58 | static void | 61 | static void |
59 | _rect_mouse_down(void *data, Evas *e, Evas_Object *o, void *event_info) | 62 | _on_rect_mouse_down(void *data, Evas *e, Evas_Object *o, void *event_info) |
60 | { | 63 | { |
61 | struct _App *app = data; | 64 | Ecore_Evas *ee; |
62 | Evas_Event_Mouse_Down *ev = event_info; | 65 | Evas_Event_Mouse_Down *ev; |
66 | Evas_Object *edje_obj; | ||
67 | |||
68 | ee = (Ecore_Evas *)data; | ||
69 | ev = (Evas_Event_Mouse_Down *)event_info; | ||
70 | edje_obj = ecore_evas_data_get(ee, "edje_obj"); | ||
63 | 71 | ||
64 | if (ev->button == 1) | 72 | if (ev->button == 1) |
65 | { | 73 | { |
66 | printf("Removing rect %p under the mouse pointer.\n", o); | 74 | printf("Removing rect %p under the mouse pointer.\n", o); |
67 | edje_object_part_box_remove(app->edje, "example/box", o); | 75 | edje_object_part_box_remove(edje_obj, "example/box", o); |
68 | evas_object_del(o); | 76 | evas_object_del(o); |
69 | } | 77 | } |
70 | else if (ev->button == 3) | 78 | else if (ev->button == 3) |
71 | { | 79 | { |
72 | Evas_Object *rect; | 80 | Evas_Object *rect; |
73 | Eina_Bool r; | 81 | Eina_Bool r; |
74 | 82 | ||
75 | rect = evas_object_rectangle_add(e); | 83 | rect = evas_object_rectangle_add(e); |
76 | evas_object_color_set(rect, 0, 0, 255, 255); | 84 | evas_object_color_set(rect, 0, 0, 255, 255); |
@@ -78,23 +86,32 @@ _rect_mouse_down(void *data, Evas *e, Evas_Object *o, void *event_info) | |||
78 | evas_object_show(rect); | 86 | evas_object_show(rect); |
79 | 87 | ||
80 | printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); | 88 | printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); |
81 | r = edje_object_part_box_insert_before(app->edje, "example/box", rect, o); | 89 | r = edje_object_part_box_insert_before(edje_obj, "example/box", rect, o); |
82 | if (!r) | 90 | if (!r) |
83 | printf("An error ocurred when appending rect %p to the box.\n", rect); | 91 | printf("An error ocurred when appending rect %p to the box.\n", rect); |
84 | 92 | ||
85 | evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _rect_mouse_down, app); | 93 | evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL); |
86 | } | 94 | } |
87 | } | 95 | } |
88 | 96 | ||
89 | static void | 97 | static void |
90 | _bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info) | 98 | _on_bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info) |
91 | { | 99 | { |
92 | struct _App *app = data; | 100 | Ecore_Evas *ee; |
93 | Evas_Event_Key_Down *ev = event_info; | 101 | Evas_Event_Key_Down *ev; |
94 | Evas_Object *rect; | 102 | Evas_Object *edje_obj; |
95 | Eina_Bool r; | 103 | Evas_Object *rect; |
104 | Eina_Bool r; | ||
96 | 105 | ||
106 | ee = (Ecore_Evas *)data; | ||
107 | ev = (Evas_Event_Key_Down *)event_info; | ||
108 | edje_obj = ecore_evas_data_get(ee, "edje_obj"); | ||
97 | 109 | ||
110 | if (!strcmp(ev->keyname, "h")) | ||
111 | { | ||
112 | fprintf(stdout, commands); | ||
113 | return; | ||
114 | } | ||
98 | if (!strcmp(ev->keyname, "i")) | 115 | if (!strcmp(ev->keyname, "i")) |
99 | { | 116 | { |
100 | rect = evas_object_rectangle_add(e); | 117 | rect = evas_object_rectangle_add(e); |
@@ -103,11 +120,11 @@ _bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info) | |||
103 | evas_object_show(rect); | 120 | evas_object_show(rect); |
104 | 121 | ||
105 | printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); | 122 | printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); |
106 | r = edje_object_part_box_insert_at(app->edje, "example/box", rect, 0); | 123 | r = edje_object_part_box_insert_at(edje_obj, "example/box", rect, 0); |
107 | if (!r) | 124 | if (!r) |
108 | printf("An error ocurred when appending rect %p to the box.\n", rect); | 125 | printf("An error ocurred when appending rect %p to the box.\n", rect); |
109 | 126 | ||
110 | evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _rect_mouse_down, app); | 127 | evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL); |
111 | } | 128 | } |
112 | else if (!strcmp(ev->keyname, "a")) | 129 | else if (!strcmp(ev->keyname, "a")) |
113 | { | 130 | { |
@@ -117,53 +134,82 @@ _bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info) | |||
117 | evas_object_show(rect); | 134 | evas_object_show(rect); |
118 | 135 | ||
119 | printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); | 136 | printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); |
120 | r = edje_object_part_box_append(app->edje, "example/box", rect); | 137 | r = edje_object_part_box_append(edje_obj, "example/box", rect); |
121 | if (!r) | 138 | if (!r) |
122 | printf("An error ocurred when appending rect %p to the box.\n", rect); | 139 | printf("An error ocurred when appending rect %p to the box.\n", rect); |
123 | 140 | ||
124 | evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _rect_mouse_down, app); | 141 | evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL); |
125 | } | 142 | } |
126 | else if (!strcmp(ev->keyname, "c")) | 143 | else if (!strcmp(ev->keyname, "c")) |
127 | edje_object_part_box_remove_all(app->edje, "example/box", EINA_TRUE); | 144 | edje_object_part_box_remove_all(edje_obj, "example/box", EINA_TRUE); |
145 | else if (!strcmp(ev->keyname, "Escape")) | ||
146 | ecore_main_loop_quit(); | ||
147 | else | ||
148 | { | ||
149 | printf("unhandled key: %s\n", ev->keyname); | ||
150 | fprintf(stdout, commands); | ||
151 | } | ||
128 | } | 152 | } |
129 | 153 | ||
130 | int | 154 | int |
131 | main(void) | 155 | main(int argc __UNUSED__, char *argv[]) |
132 | { | 156 | { |
133 | Evas *evas; | 157 | char edje_file_path[PATH_MAX]; |
134 | struct _App app; | 158 | const char *edje_file = "box.edj"; |
135 | int i; | 159 | Ecore_Evas *ee; |
136 | 160 | Evas *evas; | |
137 | ecore_evas_init(); | 161 | Evas_Object *bg; |
138 | edje_init(); | 162 | Evas_Object *edje_obj; |
163 | Eina_Prefix *pfx; | ||
164 | int i; | ||
165 | |||
166 | if (!ecore_evas_init()) | ||
167 | return EXIT_FAILURE; | ||
168 | |||
169 | if (!edje_init()) | ||
170 | goto shutdown_ecore_evas; | ||
171 | |||
172 | pfx = eina_prefix_new(argv[0], main, | ||
173 | "EDJE_EXAMPLES", | ||
174 | "edje/examples", | ||
175 | edje_file, | ||
176 | PACKAGE_BIN_DIR, | ||
177 | PACKAGE_LIB_DIR, | ||
178 | PACKAGE_DATA_DIR, | ||
179 | PACKAGE_DATA_DIR); | ||
180 | if (!pfx) | ||
181 | goto shutdown_edje; | ||
139 | 182 | ||
140 | /* this will give you a window with an Evas canvas under the first | 183 | /* this will give you a window with an Evas canvas under the first |
141 | * engine available */ | 184 | * engine available */ |
142 | app.ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); | 185 | ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); |
143 | 186 | if (!ee) | |
144 | ecore_evas_callback_destroy_set(app.ee, _on_destroy); | 187 | goto free_prefix; |
145 | ecore_evas_callback_resize_set(app.ee, _canvas_resize_cb); | ||
146 | ecore_evas_title_set(app.ee, "Edje Box Example"); | ||
147 | ecore_evas_show(app.ee); | ||
148 | 188 | ||
149 | ecore_evas_data_set(app.ee, "app", &app); | 189 | ecore_evas_callback_destroy_set(ee, _on_destroy); |
190 | ecore_evas_callback_resize_set(ee, _on_canvas_resize); | ||
191 | ecore_evas_title_set(ee, "Edje Box Example"); | ||
150 | 192 | ||
151 | evas = ecore_evas_get(app.ee); | 193 | evas = ecore_evas_get(ee); |
152 | 194 | ||
153 | app.bg = evas_object_rectangle_add(evas); | 195 | bg = evas_object_rectangle_add(evas); |
154 | evas_object_color_set(app.bg, 255, 255, 255, 255); | 196 | evas_object_color_set(bg, 255, 255, 255, 255); |
155 | evas_object_resize(app.bg, WIDTH, HEIGHT); | 197 | evas_object_resize(bg, WIDTH, HEIGHT); |
156 | evas_object_focus_set(app.bg, EINA_TRUE); | 198 | evas_object_focus_set(bg, EINA_TRUE); |
157 | evas_object_show(app.bg); | 199 | evas_object_show(bg); |
200 | ecore_evas_data_set(ee, "background", bg); | ||
158 | 201 | ||
159 | evas_object_event_callback_add(app.bg, EVAS_CALLBACK_KEY_DOWN, _bg_key_down, &app); | 202 | evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_bg_key_down, ee); |
160 | 203 | ||
161 | app.edje = edje_object_add(evas); | 204 | edje_obj = edje_object_add(evas); |
162 | 205 | ||
163 | edje_object_file_set(app.edje, edje_file_path, "example/group"); | 206 | snprintf(edje_file_path, sizeof(edje_file_path), |
164 | evas_object_move(app.edje, 0, 0); | 207 | "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); |
165 | evas_object_resize(app.edje, WIDTH, HEIGHT); | 208 | edje_object_file_set(edje_obj, edje_file_path, "example/group"); |
166 | evas_object_show(app.edje); | 209 | evas_object_move(edje_obj, 0, 0); |
210 | evas_object_resize(edje_obj, WIDTH, HEIGHT); | ||
211 | evas_object_show(edje_obj); | ||
212 | ecore_evas_data_set(ee, "edje_obj", edje_obj); | ||
167 | 213 | ||
168 | for (i = 0; i < NRECTS; i++) | 214 | for (i = 0; i < NRECTS; i++) |
169 | { | 215 | { |
@@ -173,19 +219,34 @@ main(void) | |||
173 | rect = evas_object_rectangle_add(evas); | 219 | rect = evas_object_rectangle_add(evas); |
174 | evas_object_color_set(rect, red, 0, 0, 255); | 220 | evas_object_color_set(rect, red, 0, 0, 255); |
175 | evas_object_resize(rect, RECTW, RECTH); | 221 | evas_object_resize(rect, RECTW, RECTH); |
176 | r = edje_object_part_box_append(app.edje, "example/box", rect); | 222 | r = edje_object_part_box_append(edje_obj, "example/box", rect); |
177 | if (!r) | 223 | if (!r) |
178 | printf("An error ocurred when appending rect #%d to the box.\n", i); | 224 | printf("An error ocurred when appending rect #%d to the box.\n", i); |
179 | evas_object_show(rect); | 225 | evas_object_show(rect); |
180 | 226 | ||
181 | evas_object_event_callback_add( | 227 | evas_object_event_callback_add( |
182 | rect, EVAS_CALLBACK_MOUSE_DOWN, _rect_mouse_down, &app); | 228 | rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, ee); |
183 | } | 229 | } |
184 | 230 | ||
231 | fprintf(stdout, commands); | ||
232 | |||
233 | ecore_evas_show(ee); | ||
234 | |||
185 | ecore_main_loop_begin(); | 235 | ecore_main_loop_begin(); |
186 | 236 | ||
187 | ecore_evas_free(app.ee); | 237 | eina_prefix_free(pfx); |
238 | ecore_evas_free(ee); | ||
188 | ecore_evas_shutdown(); | 239 | ecore_evas_shutdown(); |
189 | edje_shutdown(); | 240 | edje_shutdown(); |
190 | return 0; | 241 | |
242 | return EXIT_SUCCESS; | ||
243 | |||
244 | free_prefix: | ||
245 | eina_prefix_free(pfx); | ||
246 | shutdown_edje: | ||
247 | edje_shutdown(); | ||
248 | shutdown_ecore_evas: | ||
249 | ecore_evas_shutdown(); | ||
250 | |||
251 | return EXIT_FAILURE; | ||
191 | } | 252 | } |