aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/edje/src/examples/sigtest.c
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-01-04 18:41:13 +1000
committerDavid Walter Seikel2012-01-04 18:41:13 +1000
commitdd7595a3475407a7fa96a97393bae8c5220e8762 (patch)
treee341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/edje/src/examples/sigtest.c
parentAdd the skeleton. (diff)
downloadSledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to 'libraries/edje/src/examples/sigtest.c')
-rw-r--r--libraries/edje/src/examples/sigtest.c309
1 files changed, 309 insertions, 0 deletions
diff --git a/libraries/edje/src/examples/sigtest.c b/libraries/edje/src/examples/sigtest.c
new file mode 100644
index 0000000..6e4d85f
--- /dev/null
+++ b/libraries/edje/src/examples/sigtest.c
@@ -0,0 +1,309 @@
1#ifdef HAVE_CONFIG_H
2#include "config.h"
3#else
4#define PACKAGE_EXAMPLES_DIR "."
5#define __UNUSED__
6#endif
7
8#include <Ecore.h>
9#include <Ecore_Evas.h>
10#include <Edje.h>
11#include <stdio.h>
12
13#define WIDTH (300)
14#define HEIGHT (300)
15
16static const char *border_img_path = PACKAGE_EXAMPLES_DIR "/red.png";
17static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/sigtest.edj";
18
19static Ecore_Evas *ee;
20static Evas_Object *edje_obj;
21
22static const char commands[] = \
23 "commands are:\n"
24 "\te - change te edje base\n"
25 "\tl - change to lua base\n"
26 "\tm - send message\n"
27 "\ts - send signal\n"
28 "\th - print help\n";
29
30static void
31_on_keydown(void *data __UNUSED__,
32 Evas *evas __UNUSED__,
33 Evas_Object *o __UNUSED__,
34 void *einfo)
35{
36 Evas_Event_Key_Down *ev = einfo;
37
38 if (strcmp(ev->keyname, "h") == 0)
39 {
40 fprintf(stdout, commands);
41 return;
42 }
43
44 if (strcmp(ev->keyname, "e") == 0)
45 {
46 if (!edje_object_file_set(edje_obj, edje_file_path, "plain/edje/group"))
47 {
48 int err = edje_object_load_error_get(edje_obj);
49 const char *errmsg = edje_load_error_str(err);
50
51 fprintf(stderr, "Could not load 'plain/edje/group' from sigtest.edj: %s\n", errmsg);
52 }
53 else
54 fprintf(stdout, "Loaded Edje object bound to group 'plain/edje/group' from"
55 " file sigtest.edj with success!\n");
56 return;
57 }
58
59 if (strcmp(ev->keyname, "l") == 0)
60 {
61 if (!edje_object_file_set(edje_obj, edje_file_path, "lua_base"))
62 {
63 int err = edje_object_load_error_get(edje_obj);
64 const char *errmsg = edje_load_error_str(err);
65
66 fprintf(stderr, "Could not load 'lua_base' from sigtest.edj: %s\n", errmsg);
67 }
68 else
69 fprintf(stdout, "Loaded Edje object bound to group 'lua_base' from"
70 " file sigtest.edj with success!\n");
71 return;
72 }
73
74 if (strcmp(ev->keyname, "m") == 0)
75 {
76 Edje_Message_String *msg = malloc(sizeof(*msg));
77
78 fprintf(stdout, "\n");
79 msg->str = strdup("C message text");
80 edje_object_message_send(edje_obj, EDJE_MESSAGE_STRING, 2, msg);
81 free(msg);
82 fprintf(stdout, "C message sent\n");
83 return;
84 }
85
86 if (strcmp(ev->keyname, "s") == 0)
87 {
88 fprintf(stdout, "\n");
89 edje_object_signal_emit(edje_obj, "C signal 1", "Csource");
90 edje_object_signal_emit(edje_obj, "bubbles_lua:C signal 2", "Csource");
91 fprintf(stdout, "C signal sent\n");
92 return;
93 }
94}
95
96static void
97_on_message(void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg)
98{
99 int i;
100
101 fprintf(stdout, "C::message id=%d type=%d ", id, type);
102 switch (type)
103 {
104 case EDJE_MESSAGE_NONE :
105 {
106 fprintf(stdout, " NONE");
107 break;
108 }
109
110 case EDJE_MESSAGE_SIGNAL :
111 {
112 fprintf(stdout, " SIGNAL ");
113 break;
114 }
115
116 case EDJE_MESSAGE_STRING :
117 {
118 Edje_Message_String *mmsg = msg;
119
120 fprintf(stdout, " STRING %s", mmsg->str);
121 break;
122 }
123
124 case EDJE_MESSAGE_INT :
125 {
126 Edje_Message_Int *mmsg = msg;
127
128 fprintf(stdout, " INT %d", mmsg->val);
129 break;
130 }
131
132 case EDJE_MESSAGE_FLOAT :
133 {
134 Edje_Message_Float *mmsg = msg;
135
136 fprintf(stdout, " FLOAT %f", mmsg->val);
137 break;
138 }
139
140 case EDJE_MESSAGE_STRING_SET :
141 {
142 Edje_Message_String_Set *mmsg = msg;
143
144 fprintf(stdout, " STRING_SET -\n");
145 for (i = 0; i < mmsg->count; i++)
146 fprintf(stdout, " %s\n", mmsg->str[i]);
147 break;
148 }
149
150 case EDJE_MESSAGE_INT_SET :
151 {
152 Edje_Message_Int_Set *mmsg = msg;
153
154 fprintf(stdout, " INT_SET -\n");
155 for (i = 0; i < mmsg->count; i++)
156 fprintf(stdout, " %d\n", mmsg->val[i]);
157 break;
158 }
159
160 case EDJE_MESSAGE_FLOAT_SET :
161 {
162 Edje_Message_Float_Set *mmsg = msg;
163
164 fprintf(stdout, " FLOAT_SET -\n");
165 for (i = 0; i < mmsg->count; i++)
166 fprintf(stdout, " %f\n", mmsg->val[i]);
167 break;
168 }
169
170 case EDJE_MESSAGE_STRING_INT :
171 {
172 Edje_Message_String_Int *mmsg = msg;
173
174 fprintf(stdout, " STRING_INT %s %d", mmsg->str, mmsg->val);
175 break;
176 }
177
178 case EDJE_MESSAGE_STRING_FLOAT :
179 {
180 Edje_Message_String_Float *mmsg = msg;
181
182 fprintf(stdout, " STRING_FLOAT %s %f", mmsg->str, mmsg->val);
183 break;
184 }
185
186 case EDJE_MESSAGE_STRING_INT_SET :
187 {
188 Edje_Message_String_Int_Set *mmsg = msg;
189
190 fprintf(stdout, " STRING_INT_SET %s -\n", mmsg->str);
191 for (i = 0; i < mmsg->count; i++)
192 fprintf(stdout, " %d\n", mmsg->val[i]);
193 break;
194 }
195
196 case EDJE_MESSAGE_STRING_FLOAT_SET :
197 {
198 Edje_Message_String_Float_Set *mmsg = msg;
199
200 fprintf(stdout, " STRING_FLOAT_SET %s -\n", mmsg->str);
201 for (i = 0; i < mmsg->count; i++)
202 fprintf(stdout, " %f\n", mmsg->val[i]);
203 break;
204 }
205 }
206 fprintf(stdout, "\n");
207}
208
209static void
210_on_signal(void *data, Evas_Object *obj __UNUSED__, const char *emission, const char *source)
211{
212 fprintf(stdout, "C::signal sig=|%s| src=|%s|\n", emission, source);
213}
214
215static void
216_on_delete(Ecore_Evas *ee __UNUSED__)
217{
218 ecore_main_loop_quit();
219}
220
221int
222main(void)
223{
224 Evas_Object *border, *bg;
225 Evas *evas;
226
227 if (!ecore_evas_init())
228 return EXIT_FAILURE;
229
230 if (!edje_init())
231 return EXIT_FAILURE;
232
233 /* this will give you a window with an Evas canvas under the first
234 * engine available */
235 ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
236 if (!ee)
237 goto error;
238
239 ecore_evas_callback_delete_request_set(ee, _on_delete);
240 ecore_evas_title_set(ee, "Signals and wessages tester");
241 ecore_evas_show(ee);
242
243 evas = ecore_evas_get(ee);
244
245 bg = evas_object_rectangle_add(evas);
246 evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */
247 evas_object_move(bg, 0, 0); /* at canvas' origin */
248 evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
249 evas_object_show(bg);
250 ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
251
252 evas_object_focus_set(bg, EINA_TRUE);
253 evas_object_event_callback_add(
254 bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL);
255
256 edje_obj = edje_object_add(evas);
257
258 edje_object_message_handler_set(edje_obj, _on_message, NULL);
259 edje_object_signal_callback_add(edje_obj, "*", "*", _on_signal, NULL);
260
261 if (!edje_object_file_set(edje_obj, edje_file_path, "lua_base"))
262 {
263 int err = edje_object_load_error_get(edje_obj);
264 const char *errmsg = edje_load_error_str(err);
265 fprintf(stderr, "Could not load 'lua_base' from sigtest.edj: %s\n",
266 errmsg);
267
268 evas_object_del(edje_obj);
269 goto error_edj;
270 }
271
272 fprintf(stdout, "Loaded Edje object bound to group 'lua_base' from"
273 " file sigtest.edj with success!\n");
274
275 evas_object_move(edje_obj, 20, 20);
276 evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
277 evas_object_show(edje_obj);
278
279 /* this is a border around the Edje object above, here just to
280 * emphasize its geometry */
281 border = evas_object_image_filled_add(evas);
282 evas_object_image_file_set(border, border_img_path, NULL);
283 evas_object_image_border_set(border, 2, 2, 2, 2);
284 evas_object_image_border_center_fill_set(border, EVAS_BORDER_FILL_NONE);
285
286 evas_object_resize(border, WIDTH - 40 + 4, HEIGHT - 40 + 4);
287 evas_object_move(border, 20 - 2, 20 - 2);
288 evas_object_show(border);
289
290 ecore_main_loop_begin();
291
292 ecore_evas_free(ee);
293 ecore_evas_shutdown();
294 edje_shutdown();
295 return 0;
296
297error:
298 fprintf(stderr, "You got to have at least one evas engine built"
299 " and linked up to ecore-evas for this example to run"
300 " properly.\n");
301 ecore_evas_shutdown();
302 return -1;
303
304error_edj:
305 fprintf(stderr, "Failed to load sigtest.edj!\n");
306
307 ecore_evas_shutdown();
308 return -2;
309}