From c963d75dfdeec11f82e79e727062fbf89afa2c04 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 22 Apr 2012 09:19:23 +1000 Subject: Update EFL to latest beta. --- libraries/edje/src/examples/edje-box2.c | 187 ++++++++++++++++++++------------ 1 file changed, 115 insertions(+), 72 deletions(-) (limited to 'libraries/edje/src/examples/edje-box2.c') diff --git a/libraries/edje/src/examples/edje-box2.c b/libraries/edje/src/examples/edje-box2.c index b3f4e40..81f1a90 100644 --- a/libraries/edje/src/examples/edje-box2.c +++ b/libraries/edje/src/examples/edje-box2.c @@ -10,40 +10,35 @@ */ #ifdef HAVE_CONFIG_H -#include "config.h" +# include "config.h" #else -#define PACKAGE_EXAMPLES_DIR "." -#define __UNUSED__ +# define __UNUSED__ #endif -#include -#include -#include -#include - #include #include #include -static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/box.edj"; - -struct _App { - Ecore_Evas *ee; - Evas *evas; - Evas_Object *bg; - Evas_Object *box; -}; +#include +#include +#include +#include -static struct _App app; +static const char commands[] = \ + "commands are:\n" + "\tShift - remove box\n" + "\tCtrl - insert box\n" + "\tEsc - exit\n" + "\th - print help\n"; static void -custom_layout(Evas_Object *o, Evas_Object_Box_Data *p, void *data) +custom_layout(Evas_Object *o, Evas_Object_Box_Data *p, void *data __UNUSED__) { + Evas_Object_Box_Option *opt; + Eina_List *l; int x, y, w, h; int xx, yy, ww, hh; int count; - Eina_List *l; - Evas_Object_Box_Option *opt; evas_object_geometry_get(o, &x, &y, &w, &h); count = eina_list_count(p->children); @@ -76,129 +71,177 @@ new_greenie_block(Evas *e) } static void -on_keydown(void *data, Evas *evas, Evas_Object *o, void *einfo) +on_keydown(void *data, Evas *evas, Evas_Object *o __UNUSED__, void *einfo) { - struct _App *app = data; - Evas_Event_Key_Down *ev = einfo; + Evas_Event_Key_Down *ev; + Evas_Object *edje_obj; const Evas_Modifier *mods; + ev = (Evas_Event_Key_Down *)einfo; + edje_obj = (Evas_Object *)data; + mods = evas_key_modifier_get(evas); + if (!strcmp(ev->keyname, "h")) + { + fprintf(stdout, commands); + return; + } if (evas_key_modifier_is_set(mods, "Shift")) { int pos; Evas_Object *obj = NULL; pos = atoi(ev->keyname); - obj = edje_object_part_box_remove_at(app->box, "example/box", pos); + obj = edje_object_part_box_remove_at(edje_obj, "example/box", pos); if (obj) evas_object_del(obj); return; } if (evas_key_modifier_is_set(mods, "Control")) { - Evas_Object *o; + Evas_Object *obj; int pos; pos = atoi(ev->keyname); - o = new_greenie_block(app->evas); - if (!edje_object_part_box_insert_at(app->box, "example/box", o, pos)) - edje_object_part_box_append(app->box, "example/box", o); + obj = new_greenie_block(evas); + if (!edje_object_part_box_insert_at(edje_obj, "example/box", obj, pos)) + edje_object_part_box_append(edje_obj, "example/box", obj); return; } - if (strcmp(ev->keyname, "Escape") == 0) + if (!strcmp(ev->keyname, "Escape")) ecore_main_loop_quit(); } static Evas_Object * -box_new(Evas *evas, const char *name, int x, int y, int w, int h) +box_new(Ecore_Evas *ee, const char *edje_file_path, const char *name, int x, int y, int w, int h) { - Evas_Object *o; + Evas_Object *edje_obj; - o = edje_object_add(evas); - evas_object_move(o, x, y); - evas_object_resize(o, w, h); - if (!edje_object_file_set(o, edje_file_path, "example/group2")) + edje_obj = edje_object_add(ecore_evas_get(ee)); + evas_object_move(edje_obj, x, y); + evas_object_resize(edje_obj, w, h); + if (!edje_object_file_set(edje_obj, edje_file_path, "example/group2")) { printf("error: could not load file object.\n"); } - evas_object_show(o); - - evas_object_name_set(o, name); + evas_object_show(edje_obj); + evas_object_name_set(edje_obj, name); + ecore_evas_data_set(ee, "edje_obj", edje_obj); - return o; + return edje_obj; } static void on_resize(Ecore_Evas *ee) { - int w, h; - - evas_output_viewport_get(app.evas, NULL, NULL, &w, &h); - evas_object_resize(app.bg, w, h); - evas_object_resize(app.box, w, h); + Evas_Object *bg; + Evas_Object *edje_obj; + int w; + int h; + + bg = ecore_evas_data_get(ee, "background"); + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(bg, w, h); + evas_object_resize(edje_obj, w, h); } static void -on_destroy(Ecore_Evas *ee) +on_destroy(Ecore_Evas *ee __UNUSED__) { ecore_main_loop_quit(); } int -main(int argc, char *argv[]) +main(int argc __UNUSED__, char *argv[]) { - Ecore_Evas *ee; - int w, h, i; + char edje_file_path[PATH_MAX]; + const char *edje_file = "box.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; Evas_Object *last; Evas_Object *o; - - evas_init(); - ecore_init(); - ecore_evas_init(); - edje_init(); - + Eina_Prefix *pfx; + int w; + int h; + int i; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ ee = ecore_evas_new(NULL, 0, 0, 640, 480, NULL); - ecore_evas_show(ee); - - app.ee = ee; - app.evas = ecore_evas_get(ee); + if (!ee) + goto free_prefix; ecore_evas_callback_resize_set(ee, on_resize); ecore_evas_callback_destroy_set(ee, on_destroy); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - evas_output_viewport_get(app.evas, NULL, NULL, &w, &h); + evas = ecore_evas_get(ee); - app.bg = evas_object_rectangle_add(app.evas); - evas_object_resize(app.bg, w, h); - evas_object_show(app.bg); - evas_object_focus_set(app.bg, 1); - evas_object_event_callback_add( - app.bg, EVAS_CALLBACK_KEY_DOWN, on_keydown, &app); + bg = evas_object_rectangle_add(evas); + evas_object_resize(bg, w, h); + evas_object_show(bg); + evas_object_focus_set(bg, 1); + ecore_evas_data_set(ee, "background", bg); edje_box_layout_register("custom_layout", custom_layout, NULL, NULL, NULL, NULL); - app.box = box_new(app.evas, "box", 0, 0, w, h); + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_obj = box_new(ee, edje_file_path, "box", 0, 0, w, h); + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, on_keydown, edje_obj); for (i = 1; i <= 5; i++) { - o = last = evas_object_rectangle_add(app.evas); + o = last = evas_object_rectangle_add(evas); evas_object_size_hint_min_set(o, 50, 50); evas_object_resize(o, 50, 50); evas_object_color_set(o, 255, 0, 0, 128); evas_object_show(o); - if (!edje_object_part_box_append(app.box, "example/box", o)) + if (!edje_object_part_box_append(edje_obj, "example/box", o)) { fprintf(stderr, "error appending child object!\n"); return 1; } } + fprintf(stdout, commands); + + ecore_evas_show(ee); + ecore_main_loop_begin(); - edje_shutdown(); + eina_prefix_free(pfx); + ecore_evas_free(ee); ecore_evas_shutdown(); - ecore_shutdown(); - evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); - return 0; + return EXIT_FAILURE; } -- cgit v1.1