#include #include #include #include #include #include #include #include "Edje.h" Ecore_Evas *ee; Evas *evas; Evas_Object *o_bg; Evas_Object *o_edje; void signal_cb(void *data, Evas_Object *o, const char *sig, const char *src); void resize_cb(Ecore_Evas *ee); void key_cb(void *data, Evas *e, Evas_Object *o, void *ei); void message_cb(void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg); void signal_cb(void *data, Evas_Object *o, const char *sig, const char *src) { printf("EMIT: \"%s\" \"%s\"\n", sig, src); } void resize_cb(Ecore_Evas *ee) { Evas_Coord w, h; evas_output_viewport_get(evas, NULL, NULL, &w, &h); evas_object_resize(o_bg, w, h); evas_object_resize(o_edje, w, h); } void key_cb(void *data, Evas *e, Evas_Object *o, void *ei) { Evas_Event_Key_Down *ev; ev = ei; printf("KEY: %s\n", ev->keyname); if (!strcmp(ev->keyname, "Escape")) ecore_main_loop_quit(); if (!strcmp(ev->keyname, "space")) { edje_object_message_send(o_edje, EDJE_MESSAGE_NONE, 77, NULL); } if (!strcmp(ev->keyname, "1")) { Edje_Message_String msg; msg.str = "A Test String"; edje_object_message_send(o_edje, EDJE_MESSAGE_STRING, 101, &msg); } if (!strcmp(ev->keyname, "2")) { Edje_Message_Int msg; msg.val = 42; edje_object_message_send(o_edje, EDJE_MESSAGE_INT, 102, &msg); } if (!strcmp(ev->keyname, "3")) { Edje_Message_Float msg; msg.val = 3.14159; edje_object_message_send(o_edje, EDJE_MESSAGE_FLOAT, 103, &msg); } if (!strcmp(ev->keyname, "4")) { Edje_Message_String_Set *msg; msg = calloc(1, sizeof(Edje_Message_String_Set) - sizeof(char *) + (7 * sizeof(char *))); msg->count = 7; msg->str[0] = "String 1"; msg->str[1] = "String 2"; msg->str[2] = "String 3"; msg->str[3] = "String 4"; msg->str[4] = "String 5"; msg->str[5] = "String 6"; msg->str[6] = "String 7"; edje_object_message_send(o_edje, EDJE_MESSAGE_STRING_SET, 104, msg); free(msg); } if (!strcmp(ev->keyname, "5")) { Edje_Message_Int_Set *msg; msg = calloc(1, sizeof(Edje_Message_Int_Set) - sizeof(int) + (7 * sizeof(int))); msg->count = 7; msg->val[0] = 42; msg->val[1] = 43; msg->val[2] = 44; msg->val[3] = 45; msg->val[4] = 46; msg->val[5] = 47; msg->val[6] = 48; edje_object_message_send(o_edje, EDJE_MESSAGE_INT_SET, 105, msg); free(msg); } if (!strcmp(ev->keyname, "6")) { Edje_Message_Float_Set *msg; msg = calloc(1, sizeof(Edje_Message_Float_Set) - sizeof(double) + (7 * sizeof(double))); msg->count = 7; msg->val[0] = 1.2345; msg->val[1] = 7.7777; msg->val[2] = 3.1415; msg->val[3] = 9.8765; msg->val[4] = 7.8901; msg->val[5] = 3.4567; msg->val[6] = 6.7890; edje_object_message_send(o_edje, EDJE_MESSAGE_FLOAT_SET, 106, msg); free(msg); } if (!strcmp(ev->keyname, "7")) { Edje_Message_String_Int msg; msg.str = "A Test String and Int"; msg.val = 42; edje_object_message_send(o_edje, EDJE_MESSAGE_STRING_INT, 107, &msg); } if (!strcmp(ev->keyname, "8")) { Edje_Message_String_Float msg; msg.str = "A Test String and Float"; msg.val = 777.777; edje_object_message_send(o_edje, EDJE_MESSAGE_STRING_FLOAT, 108, &msg); } if (!strcmp(ev->keyname, "9")) { Edje_Message_String_Int_Set *msg; msg = calloc(1, sizeof(Edje_Message_String_Int_Set) - sizeof(int) + (7 * sizeof(int))); msg->str = "A Test String and Int Set"; msg->count = 7; msg->val[0] = 42; msg->val[1] = 43; msg->val[2] = 44; msg->val[3] = 45; msg->val[4] = 46; msg->val[5] = 47; msg->val[6] = 48; edje_object_message_send(o_edje, EDJE_MESSAGE_STRING_INT_SET, 109, msg); free(msg); } if (!strcmp(ev->keyname, "0")) { Edje_Message_String_Float_Set *msg; msg = calloc(1, sizeof(Edje_Message_String_Float_Set) - sizeof(double) + (7 * sizeof(double))); msg->str = "A Test String and Float Set"; msg->count = 7; msg->val[0] = 1.2345; msg->val[1] = 7.7777; msg->val[2] = 3.1415; msg->val[3] = 9.8765; msg->val[4] = 7.8901; msg->val[5] = 3.4567; msg->val[6] = 6.7890; edje_object_message_send(o_edje, EDJE_MESSAGE_STRING_FLOAT_SET, 110, msg); free(msg); } } void message_cb(void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg) { printf("MESSAGE FROM OBJ, TYPE: %i, ID %i\n", type, id); if (type == EDJE_MESSAGE_NONE) { } else if (type == EDJE_MESSAGE_STRING) { Edje_Message_String *emsg; emsg = (Edje_Message_String *)msg; printf(" STRING: \"%s\"\n", emsg->str); } else if (type == EDJE_MESSAGE_INT) { Edje_Message_Int *emsg; emsg = (Edje_Message_Int *)msg; printf(" INT: %i\n", emsg->val); } else if (type == EDJE_MESSAGE_FLOAT) { Edje_Message_Float *emsg; emsg = (Edje_Message_Float *)msg; printf(" FLOAT: %f\n", emsg->val); } else if (type == EDJE_MESSAGE_STRING_SET) { Edje_Message_String_Set *emsg; int i; emsg = (Edje_Message_String_Set *)msg; for (i = 0; i < emsg->count; i++) printf(" STR: %s\n", emsg->str[i]); } else if (type == EDJE_MESSAGE_INT_SET) { Edje_Message_Int_Set *emsg; int i; emsg = (Edje_Message_Int_Set *)msg; for (i = 0; i < emsg->count; i++) printf(" INT: %i\n", emsg->val[i]); } else if (type == EDJE_MESSAGE_FLOAT_SET) { Edje_Message_Float_Set *emsg; int i; emsg = (Edje_Message_Float_Set *)msg; for (i = 0; i < emsg->count; i++) printf(" FLOAT: %f\n", emsg->val[i]); } else if (type == EDJE_MESSAGE_STRING_INT) { Edje_Message_String_Int *emsg; emsg = (Edje_Message_String_Int *)msg; printf(" STR: %s\n", emsg->str); printf(" INT: %i\n", emsg->val); } else if (type == EDJE_MESSAGE_STRING_FLOAT) { Edje_Message_String_Float *emsg; emsg = (Edje_Message_String_Float *)msg; printf(" STR: %s\n", emsg->str); printf(" FLOAT: %f\n", emsg->val); } else if (type == EDJE_MESSAGE_STRING_INT_SET) { Edje_Message_String_Int_Set *emsg; int i; emsg = (Edje_Message_String_Int_Set *)msg; printf(" STR: %s\n", emsg->str); for (i = 0; i < emsg->count; i++) printf(" INT: %i\n", emsg->val[i]); } else if (type == EDJE_MESSAGE_STRING_FLOAT_SET) { Edje_Message_String_Float_Set *emsg; int i; emsg = (Edje_Message_String_Float_Set *)msg; printf(" STR: %s\n", emsg->str); for (i = 0; i < emsg->count; i++) printf(" INT: %f\n", emsg->val[i]); } } int main(int argc, char **argv) { Evas_Object *o; Evas_Coord mw, mh; if (argc != 3) { printf("Usage: edje_test edje_file.edj part_to_load\n"); exit(-1); } ecore_init(); ecore_app_args_set(argc, (const char **)argv); ecore_evas_init(); edje_init(); ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 240, 320); evas = ecore_evas_get(ee); evas_image_cache_set(evas, 8192 * 1024); evas_font_cache_set(evas, 512 * 1024); o = evas_object_rectangle_add(evas); evas_object_move(o, 0, 0); evas_object_resize(o, 240, 320); evas_object_color_set(o, 255, 255, 255, 255); evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, key_cb, NULL); evas_object_focus_set(o, 1); evas_object_show(o); o_bg = o; o = edje_object_add(evas); edje_object_signal_callback_add(o, "*", "*", signal_cb, NULL); edje_object_message_handler_set(o, message_cb, NULL); edje_object_file_set(o, argv[1], argv[2]); evas_object_move(o, 0, 0); evas_object_resize(o, 240, 320); evas_object_show(o); o_edje = o; ecore_evas_callback_resize_set(ee, resize_cb); ecore_evas_show(ee); ecore_main_loop_begin(); edje_shutdown(); ecore_evas_shutdown(); ecore_shutdown(); return 0; }