if BUILD_EXAMPLES
AM_CPPFLAGS = \
- -I. \
- -I$(top_srcdir)/src/lib \
- -I$(top_srcdir)/src/lib/include \
- -DPACKAGE_BIN_DIR=\"$(bindir)\" \
- -DPACKAGE_LIB_DIR=\"$(libdir)\" \
- -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
- -DPACKAGE_EXAMPLES_DIR=\"$(datadir)/$(PACKAGE)/examples\" \
- @EDJE_CFLAGS@
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-DPACKAGE_BIN_DIR=\"$(bindir)\" \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
+@EDJE_CFLAGS@
files_DATA += $(EDJS)
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
#include <Ecore.h>
#define WIDTH (400)
#define HEIGHT (300)
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/animations.edj";
-static Ecore_Evas *ee;
-static Evas_Object *bg, *edje_obj;
-static double frametime = 1.0/30.0; /* default value */
+static const char commands[] = \
+ "commands are:\n"
+ "\t+ - increase frametime\n"
+ "\t- - decrease frametime\n"
+ "\t= - status of the animation\n"
+ "\ts - pause\n"
+ "\tp - play\n"
+ "\tf - freeze one object\n"
+ "\tF - freeze all objects\n"
+ "\tt - thaw one object\n"
+ "\tT - thaw all objects\n"
+ "\ta - start animation of one object\n"
+ "\tA - stop animation of one object\n"
+ "\tEsc - exit\n"
+ "\th - print help\n";
+
+static double frametime = 1.0 / 30.0; /* default value */
static void
-_on_delete_cb(Ecore_Evas *ee)
+_on_delete_cb(Ecore_Evas *ee __UNUSED__)
{
ecore_main_loop_quit();
}
static void
-_canvas_resize_cb(Ecore_Evas *ee)
+_on_canvas_resize(Ecore_Evas *ee)
{
- int w, h;
-
- ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
- evas_object_resize(bg, w, h);
- evas_object_resize(edje_obj, 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_key_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+_on_key_down(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
{
- Evas_Event_Key_Down *ev = event_info;
- double ft;
+ Evas_Event_Key_Down *ev;
+ double ft;
+
+ ev = (Evas_Event_Key_Down *)event_info;
- if (!strcmp(ev->key, "plus"))
+ if (!strcmp(ev->keyname, "h"))
+ {
+ fprintf(stdout, commands);
+ return;
+ }
+ else if (!strcmp(ev->key, "plus"))
{
frametime *= 2.0;
fprintf(stdout, "Increasing frametime to: %f\n", frametime);
edje_object_animation_set(obj, EINA_FALSE);
fprintf(stdout, "Stopping the animation in the Edje object\n");
}
+ else if (!strcmp(ev->keyname, "Escape"))
+ ecore_main_loop_quit();
+ else
+ {
+ printf("unhandled key: %s\n", ev->keyname);
+ fprintf(stdout, commands);
+ }
}
int
-main(int argc, char *argv[])
+main(int argc __UNUSED__, char *argv[])
{
- Evas *evas;
-
- ecore_evas_init();
- edje_init();
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "animations.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+ Eina_Prefix *pfx;
+
+ 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, WIDTH, HEIGHT, NULL);
+ if (!ee)
+ goto free_prefix;
ecore_evas_callback_delete_request_set(ee, _on_delete_cb);
- ecore_evas_callback_resize_set(ee, _canvas_resize_cb);
+ ecore_evas_callback_resize_set(ee, _on_canvas_resize);
ecore_evas_title_set(ee, "Edje Animations Example");
- ecore_evas_show(ee);
evas = ecore_evas_get(ee);
evas_object_move(bg, 0, 0); /* at canvas' origin */
evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
evas_object_show(bg);
+ ecore_evas_data_set(ee, "background", bg);
edje_obj = edje_object_add(evas);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
edje_object_file_set(edje_obj, edje_file_path, "animations_group");
evas_object_move(edje_obj, 0, 0);
evas_object_resize(edje_obj, WIDTH, HEIGHT);
evas_object_show(edje_obj);
+ ecore_evas_data_set(ee, "edje_obj", edje_obj);
evas_object_event_callback_add(edje_obj, EVAS_CALLBACK_KEY_DOWN,
- _on_key_down_cb, NULL);
+ _on_key_down, NULL);
evas_object_focus_set(edje_obj, EINA_TRUE);
+ fprintf(stdout, commands);
+
+ ecore_evas_show(ee);
+
ecore_main_loop_begin();
+ eina_prefix_free(pfx);
ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
+
+ return EXIT_SUCCESS;
+
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
+#include <stdio.h>
+
+#include <Eina.h>
#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Edje.h>
-#include <stdio.h>
#define WIDTH (300)
#define HEIGHT (300)
-static const char *border_img_path = PACKAGE_EXAMPLES_DIR "/red.png";
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/basic.edj";
-
-static Ecore_Evas *ee;
-static Evas_Object *edje_obj;
-
static const char commands[] = \
"commands are:\n"
"\ts - change Edje's global scaling factor\n"
"\tr - change center rectangle's scaling factor\n"
+ "\tEsc - exit\n"
"\th - print help\n";
static void
-_on_keydown(void *data __UNUSED__,
+_on_keydown(void *data,
Evas *evas __UNUSED__,
Evas_Object *o __UNUSED__,
void *einfo)
{
- Evas_Event_Key_Down *ev = einfo;
+ Evas_Event_Key_Down *ev;
+ Evas_Object *edje_obj;
+
+ ev = (Evas_Event_Key_Down *)einfo;
+ edje_obj = (Evas_Object *)data;
if (strcmp(ev->keyname, "h") == 0) /* print help */
{
fprintf(stdout, commands);
return;
}
-
- if (strcmp(ev->keyname, "s") == 0) /* global scaling factor */
+ else if (strcmp(ev->keyname, "s") == 0) /* global scaling factor */
{
double scale = edje_scale_get();
return;
}
-
- if (strcmp(ev->keyname, "r") == 0) /* individual scaling factor */
+ else if (strcmp(ev->keyname, "r") == 0) /* individual scaling factor */
{
double scale = edje_object_scale_get(edje_obj);
return;
}
+ else if (!strcmp(ev->keyname, "Escape"))
+ ecore_main_loop_quit();
+ else
+ {
+ printf("unhandled key: %s\n", ev->keyname);
+ fprintf(stdout, commands);
+ }
}
static void
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- Evas_Object *border, *bg;
- int x, y, w, h;
- Evas *evas;
+ char border_img_path[PATH_MAX];
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "basic.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *border;
+ Evas_Object *edje_obj;
+ Eina_Prefix *pfx;
+ int x;
+ int y;
+ int w;
+ int h;
if (!ecore_evas_init())
return EXIT_FAILURE;
if (!edje_init())
- return EXIT_FAILURE;
+ 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, WIDTH, HEIGHT, NULL);
if (!ee)
- goto error;
+ goto free_prefix;
ecore_evas_callback_delete_request_set(ee, _on_delete);
ecore_evas_title_set(ee, "Edje Basics Example");
- ecore_evas_show(ee);
evas = ecore_evas_get(ee);
ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
evas_object_focus_set(bg, EINA_TRUE);
- evas_object_event_callback_add(
- bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL);
edje_obj = edje_object_add(evas);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
+ printf("%s\n", edje_file_path);
/* exercising Edje loading error, on purpose */
if (!edje_object_file_set(edje_obj, edje_file_path, "unexistant_group"))
{
errmsg);
evas_object_del(edje_obj);
- goto error_edj;
+ goto free_prefix;
}
fprintf(stdout, "Loaded Edje object bound to group 'example_group' from"
evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
evas_object_show(edje_obj);
+ evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, edje_obj);
+
+ snprintf(border_img_path, sizeof(border_img_path),
+ "%s/edje/examples/red.png", eina_prefix_data_get(pfx));
+
/* this is a border around the Edje object above, here just to
* emphasize its geometry */
border = evas_object_image_filled_add(evas);
"y = %d, w = %d, h = %d\n", x, y, w, h);
fprintf(stdout, commands);
+
+ ecore_evas_show(ee);
+
ecore_main_loop_begin();
+ eina_prefix_free(pfx);
ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
-error:
- fprintf(stderr, "You got to have at least one evas engine built"
- " and linked up to ecore-evas for this example to run"
- " properly.\n");
- ecore_evas_shutdown();
- return -1;
-
-error_edj:
- fprintf(stderr, "Failed to load basic.edj!\n");
+ return EXIT_SUCCESS;
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
ecore_evas_shutdown();
- return -2;
-}
+ return EXIT_FAILURE;
+}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
#include <Ecore.h>
#define NRECTS 20
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/box.edj";
-
-struct _App {
- Ecore_Evas *ee;
- Evas_Object *edje;
- Evas_Object *bg;
-};
+static const char commands[] = \
+ "commands are:\n"
+ "\ti - prepend rectangle\n"
+ "\ta - append rectangle\n"
+ "\tc - remove\n"
+ "\tEsc - exit\n"
+ "\th - print help\n";
static void
_on_destroy(Ecore_Evas *ee __UNUSED__)
/* here just to keep our example's window size and background image's
* size in synchrony */
static void
-_canvas_resize_cb(Ecore_Evas *ee)
+_on_canvas_resize(Ecore_Evas *ee)
{
- int w, h;
- struct _App *app = ecore_evas_data_get(ee, "app");
+ 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(app->bg, w, h);
- evas_object_resize(app->edje, w, h);
+ evas_object_resize(bg, w, h);
+ evas_object_resize(edje_obj, w, h);
}
static void
-_rect_mouse_down(void *data, Evas *e, Evas_Object *o, void *event_info)
+_on_rect_mouse_down(void *data, Evas *e, Evas_Object *o, void *event_info)
{
- struct _App *app = data;
- Evas_Event_Mouse_Down *ev = event_info;
+ Ecore_Evas *ee;
+ Evas_Event_Mouse_Down *ev;
+ Evas_Object *edje_obj;
+
+ ee = (Ecore_Evas *)data;
+ ev = (Evas_Event_Mouse_Down *)event_info;
+ edje_obj = ecore_evas_data_get(ee, "edje_obj");
if (ev->button == 1)
{
printf("Removing rect %p under the mouse pointer.\n", o);
- edje_object_part_box_remove(app->edje, "example/box", o);
+ edje_object_part_box_remove(edje_obj, "example/box", o);
evas_object_del(o);
}
else if (ev->button == 3)
{
Evas_Object *rect;
- Eina_Bool r;
+ Eina_Bool r;
rect = evas_object_rectangle_add(e);
evas_object_color_set(rect, 0, 0, 255, 255);
evas_object_show(rect);
printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect);
- r = edje_object_part_box_insert_before(app->edje, "example/box", rect, o);
+ r = edje_object_part_box_insert_before(edje_obj, "example/box", rect, o);
if (!r)
printf("An error ocurred when appending rect %p to the box.\n", rect);
- evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _rect_mouse_down, app);
+ evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL);
}
}
static void
-_bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info)
+_on_bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info)
{
- struct _App *app = data;
- Evas_Event_Key_Down *ev = event_info;
- Evas_Object *rect;
- Eina_Bool r;
+ Ecore_Evas *ee;
+ Evas_Event_Key_Down *ev;
+ Evas_Object *edje_obj;
+ Evas_Object *rect;
+ Eina_Bool r;
+ ee = (Ecore_Evas *)data;
+ ev = (Evas_Event_Key_Down *)event_info;
+ edje_obj = ecore_evas_data_get(ee, "edje_obj");
+ if (!strcmp(ev->keyname, "h"))
+ {
+ fprintf(stdout, commands);
+ return;
+ }
if (!strcmp(ev->keyname, "i"))
{
rect = evas_object_rectangle_add(e);
evas_object_show(rect);
printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect);
- r = edje_object_part_box_insert_at(app->edje, "example/box", rect, 0);
+ r = edje_object_part_box_insert_at(edje_obj, "example/box", rect, 0);
if (!r)
printf("An error ocurred when appending rect %p to the box.\n", rect);
- evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _rect_mouse_down, app);
+ evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL);
}
else if (!strcmp(ev->keyname, "a"))
{
evas_object_show(rect);
printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect);
- r = edje_object_part_box_append(app->edje, "example/box", rect);
+ r = edje_object_part_box_append(edje_obj, "example/box", rect);
if (!r)
printf("An error ocurred when appending rect %p to the box.\n", rect);
- evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _rect_mouse_down, app);
+ evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL);
}
else if (!strcmp(ev->keyname, "c"))
- edje_object_part_box_remove_all(app->edje, "example/box", EINA_TRUE);
+ edje_object_part_box_remove_all(edje_obj, "example/box", EINA_TRUE);
+ else if (!strcmp(ev->keyname, "Escape"))
+ ecore_main_loop_quit();
+ else
+ {
+ printf("unhandled key: %s\n", ev->keyname);
+ fprintf(stdout, commands);
+ }
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- Evas *evas;
- struct _App app;
- int i;
-
- ecore_evas_init();
- edje_init();
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "box.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+ Eina_Prefix *pfx;
+ 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 */
- app.ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
-
- ecore_evas_callback_destroy_set(app.ee, _on_destroy);
- ecore_evas_callback_resize_set(app.ee, _canvas_resize_cb);
- ecore_evas_title_set(app.ee, "Edje Box Example");
- ecore_evas_show(app.ee);
+ ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+ if (!ee)
+ goto free_prefix;
- ecore_evas_data_set(app.ee, "app", &app);
+ ecore_evas_callback_destroy_set(ee, _on_destroy);
+ ecore_evas_callback_resize_set(ee, _on_canvas_resize);
+ ecore_evas_title_set(ee, "Edje Box Example");
- evas = ecore_evas_get(app.ee);
+ evas = ecore_evas_get(ee);
- app.bg = evas_object_rectangle_add(evas);
- evas_object_color_set(app.bg, 255, 255, 255, 255);
- evas_object_resize(app.bg, WIDTH, HEIGHT);
- evas_object_focus_set(app.bg, EINA_TRUE);
- evas_object_show(app.bg);
+ bg = evas_object_rectangle_add(evas);
+ evas_object_color_set(bg, 255, 255, 255, 255);
+ evas_object_resize(bg, WIDTH, HEIGHT);
+ evas_object_focus_set(bg, EINA_TRUE);
+ evas_object_show(bg);
+ ecore_evas_data_set(ee, "background", bg);
- evas_object_event_callback_add(app.bg, EVAS_CALLBACK_KEY_DOWN, _bg_key_down, &app);
+ evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_bg_key_down, ee);
- app.edje = edje_object_add(evas);
+ edje_obj = edje_object_add(evas);
- edje_object_file_set(app.edje, edje_file_path, "example/group");
- evas_object_move(app.edje, 0, 0);
- evas_object_resize(app.edje, WIDTH, HEIGHT);
- evas_object_show(app.edje);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
+ edje_object_file_set(edje_obj, edje_file_path, "example/group");
+ evas_object_move(edje_obj, 0, 0);
+ evas_object_resize(edje_obj, WIDTH, HEIGHT);
+ evas_object_show(edje_obj);
+ ecore_evas_data_set(ee, "edje_obj", edje_obj);
for (i = 0; i < NRECTS; i++)
{
rect = evas_object_rectangle_add(evas);
evas_object_color_set(rect, red, 0, 0, 255);
evas_object_resize(rect, RECTW, RECTH);
- r = edje_object_part_box_append(app.edje, "example/box", rect);
+ r = edje_object_part_box_append(edje_obj, "example/box", rect);
if (!r)
printf("An error ocurred when appending rect #%d to the box.\n", i);
evas_object_show(rect);
evas_object_event_callback_add(
- rect, EVAS_CALLBACK_MOUSE_DOWN, _rect_mouse_down, &app);
+ rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, ee);
}
+ fprintf(stdout, commands);
+
+ ecore_evas_show(ee);
+
ecore_main_loop_begin();
- ecore_evas_free(app.ee);
+ eina_prefix_free(pfx);
+ ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
+
+ return EXIT_SUCCESS;
+
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
-#include <Ecore.h>
-#include <Evas.h>
-#include <Ecore_Evas.h>
-#include <Edje.h>
-
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-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 <Ecore.h>
+#include <Evas.h>
+#include <Ecore_Evas.h>
+#include <Edje.h>
-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);
}
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;
}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
#include <Ecore.h>
#define WIDTH (400)
#define HEIGHT (400)
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/color-class.edj";
-
typedef int color[4]; /* rgba */
-static Ecore_Evas *ee, *ee2;
-static Evas *evas, *evas2;
-static Evas_Object *bg, *edje_obj, *bg2, *edje_obj2;
+static Ecore_Evas *ee1, *ee2;
+static Evas *evas1, *evas2;
+static Evas_Object *bg1, *edje_obj1, *bg2, *edje_obj2;
static const char *selected_class;
static color colors_init_data[] =
}
static void
-_on_destroy(Ecore_Evas *ee)
+_on_destroy(Ecore_Evas *ee __UNUSED__)
{
ecore_main_loop_quit();
}
static void
-_on_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+_on_mouse_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_Down *ev = event_info;
if (ev->button == 1)
- if (obj == edje_obj)
- edje_color_class_del(selected_class);
- else
- edje_object_color_class_del(edje_obj2, selected_class);
+ {
+ if (obj == edje_obj1)
+ edje_color_class_del(selected_class);
+ else
+ edje_object_color_class_del(edje_obj2, selected_class);
+ }
}
/* here just to keep our example's window size
ecore_evas_geometry_get(_ee, NULL, NULL, &w, &h);
- if (_ee == ee)
+ if (_ee == ee1)
{
- evas_object_resize(bg, w, h);
- evas_object_resize(edje_obj, w, h);
+ evas_object_resize(bg1, w, h);
+ evas_object_resize(edje_obj1, w, h);
}
else
{
}
static void
-_color_class_callback_delete(void *data, Evas *evas, Evas_Object *obj,
- const char *emission, void *source)
+_color_class_callback_delete(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
+ const char *emission, void *source __UNUSED__)
{
if (!strcmp(data, "process"))
fprintf(stdout, "Color class: %s deleted on process level\n", emission);
fprintf(stdout, "Color class: %s deleted on object level\n", emission);
}
-static void
-_create_windows(void)
+static int
+_create_windows(const char *edje_file_path)
{
/* this will give you a window with an Evas canvas under the first
* engine available */
- ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+ ee1 = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+ if (!ee1)
+ return 0;
ee2 = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+ if (!ee2)
+ return 0;
- ecore_evas_callback_destroy_set(ee, _on_destroy);
- ecore_evas_callback_resize_set(ee, _canvas_resize_cb);
- ecore_evas_title_set(ee, "Edje Color Class Example");
- ecore_evas_show(ee);
+ ecore_evas_callback_destroy_set(ee1, _on_destroy);
+ ecore_evas_callback_resize_set(ee1, _canvas_resize_cb);
+ ecore_evas_title_set(ee1, "Edje Color Class Example");
ecore_evas_callback_destroy_set(ee2, _on_destroy);
ecore_evas_callback_resize_set(ee2, _canvas_resize_cb);
ecore_evas_title_set(ee2, "Edje Object Color Class Example");
- ecore_evas_show(ee2);
- evas = ecore_evas_get(ee);
+ evas1 = ecore_evas_get(ee1);
evas2 = ecore_evas_get(ee2);
- bg = evas_object_rectangle_add(evas);
- evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */
- evas_object_move(bg, 0, 0); /* at canvas' origin */
- evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
- evas_object_show(bg);
+ bg1 = evas_object_rectangle_add(evas1);
+ evas_object_color_set(bg1, 255, 255, 255, 255); /* white bg */
+ evas_object_move(bg1, 0, 0); /* at canvas' origin */
+ evas_object_resize(bg1, WIDTH, HEIGHT); /* covers full canvas */
+ evas_object_show(bg1);
bg2 = evas_object_rectangle_add(evas2);
evas_object_color_set(bg2, 255, 255, 255, 255); /* white bg */
evas_object_resize(bg2, WIDTH, HEIGHT); /* covers full canvas */
evas_object_show(bg2);
- edje_obj = edje_object_add(evas);
- evas_object_event_callback_add(edje_obj, EVAS_CALLBACK_MOUSE_DOWN,
+ edje_obj1 = edje_object_add(evas1);
+ evas_object_event_callback_add(edje_obj1, EVAS_CALLBACK_MOUSE_DOWN,
_on_mouse_down, NULL);
- edje_object_file_set(edje_obj, edje_file_path, "example_color_class");
- evas_object_move(edje_obj, 0, 0); /* at canvas' origin */
- evas_object_resize(edje_obj, WIDTH, HEIGHT);
- edje_object_part_text_set(edje_obj, "part_four", "EDJE EXAMPLE");
- edje_object_signal_callback_add(edje_obj, "color_class,del", "*",
+ edje_object_file_set(edje_obj1, edje_file_path, "example_color_class");
+ evas_object_move(edje_obj1, 0, 0); /* at canvas' origin */
+ evas_object_resize(edje_obj1, WIDTH, HEIGHT);
+ edje_object_part_text_set(edje_obj1, "part_four", "EDJE EXAMPLE");
+ edje_object_signal_callback_add(edje_obj1, "color_class,del", "*",
(Edje_Signal_Cb) _color_class_callback_delete,
"process");
- evas_object_show(edje_obj);
+ evas_object_show(edje_obj1);
edje_obj2 = edje_object_add(evas2);
evas_object_event_callback_add(edje_obj2, EVAS_CALLBACK_MOUSE_DOWN,
(Edje_Signal_Cb) _color_class_callback_delete,
"object");
evas_object_show(edje_obj2);
+
+ return 1;
}
int
main(int argc, char *argv[])
{
- color c1, c2, c3;
- int i;
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "color-class.edj";
+ Eina_Prefix *pfx;
+ color c1, c2, c3;
+ int i;
if (argc != 5)
{
for (i = 0; i < 8; i++)
fprintf(stderr, "%s\n", color_names[i]);
- return 1;
+ return EXIT_FAILURE;
}
selected_class = argv[1];
_get_color_from_name(argv[4], &c3)))
{
fprintf(stderr, "Color not available!\n");
- return 2;
+ return EXIT_FAILURE;
}
- ecore_evas_init();
- edje_init();
+ 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;
- _create_windows();
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
+ if (!_create_windows(edje_file_path))
+ goto free_prefix;
edje_color_class_set(argv[1], /* class name */
c1[0], c1[1], c1[2], c1[3], /* Object color */
39, 90, 187, 255); /* Text shadow */
_color_classes_print();
+
+ ecore_evas_show(ee1);
+ ecore_evas_show(ee2);
+
ecore_main_loop_begin();
- ecore_evas_free(ee);
- ecore_evas_free(ee2);
+
+ eina_prefix_free(pfx);
+ ecore_evas_free(ee1);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
+
+ return EXIT_SUCCESS;
+
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
#include <Ecore.h>
#define NRECTS 20
-static const char *PARTNAME = "example/knob";
-
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/drag.edj";
+static const char commands[] = \
+ "commands are:\n"
+ "\tDdown - set drag step to 1\n"
+ "\tUp - set drag step to -1\n"
+ "\tm - set drag value to 0.5\n"
+ "\tPrior - set drag page to -1\n"
+ "\tNext - set drag page to -1\n"
+ "\tEsc - exit\n"
+ "\th - print help\n";
-struct _App {
- Ecore_Evas *ee;
- Evas_Object *edje;
- Evas_Object *bg;
-};
+static const char *PARTNAME = "example/knob";
static void
_on_destroy(Ecore_Evas *ee __UNUSED__)
/* here just to keep our example's window size and background image's
* size in synchrony */
static void
-_canvas_resize_cb(Ecore_Evas *ee)
+_on_canvas_resize(Ecore_Evas *ee)
{
- int w, h;
- struct _App *app = ecore_evas_data_get(ee, "app");
+ 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(app->bg, w, h);
- evas_object_resize(app->edje, w, h);
+ evas_object_resize(bg, w, h);
+ evas_object_resize(edje_obj, w, h);
}
static void
-_bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info)
+_on_bg_key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event_info)
{
- struct _App *app = data;
- Evas_Event_Key_Down *ev = event_info;
- Evas_Object *rect;
- Eina_Bool r;
+ Ecore_Evas *ee;
+ Evas_Event_Key_Down *ev;
+ Evas_Object *edje_obj;
+ ee = (Ecore_Evas *)data;
+ ev = (Evas_Event_Key_Down *)event_info;
+ edje_obj = ecore_evas_data_get(ee, "edje_obj");
- if (!strcmp(ev->keyname, "Down"))
+ if (!strcmp(ev->keyname, "h"))
{
- edje_object_part_drag_step(app->edje, PARTNAME, 0, 1.0);
+ fprintf(stdout, commands);
+ return;
+ }
+ else if (!strcmp(ev->keyname, "Down"))
+ {
+ edje_object_part_drag_step(edje_obj, PARTNAME, 0, 1.0);
}
else if (!strcmp(ev->keyname, "Up"))
{
- edje_object_part_drag_step(app->edje, PARTNAME, 0, -1.0);
+ edje_object_part_drag_step(edje_obj, PARTNAME, 0, -1.0);
}
else if (!strcmp(ev->keyname, "m"))
{
- edje_object_part_drag_value_set(app->edje, PARTNAME, 0.0, 0.5);
+ edje_object_part_drag_value_set(edje_obj, PARTNAME, 0.0, 0.5);
}
else if (!strcmp(ev->keyname, "Prior"))
{
- edje_object_part_drag_page(app->edje, PARTNAME, 0.0, -1.0);
+ edje_object_part_drag_page(edje_obj, PARTNAME, 0.0, -1.0);
}
else if (!strcmp(ev->keyname, "Next"))
{
- edje_object_part_drag_page(app->edje, PARTNAME, 0.0, 1.0);
+ edje_object_part_drag_page(edje_obj, PARTNAME, 0.0, 1.0);
}
else if (!strcmp(ev->keyname, "Escape"))
ecore_main_loop_quit();
else
- printf("unhandled key: %s\n", ev->keyname);
+ {
+ printf("unhandled key: %s\n", ev->keyname);
+ fprintf(stdout, commands);
+ }
}
static void
-_knob_moved_cb(void *data, Evas_Object *o, const char *emission, const char *source)
+_on_knob_moved(void *data __UNUSED__, Evas_Object *o, const char *emission __UNUSED__, const char *source __UNUSED__)
{
double val;
+
edje_object_part_drag_value_get(o, PARTNAME, NULL, &val);
printf("value changed to: %0.3f\n", val);
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- Evas *evas;
- struct _App app;
- int i;
-
- ecore_evas_init();
- edje_init();
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "drag.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+ Eina_Prefix *pfx;
+
+ 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 */
- app.ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
-
- ecore_evas_callback_destroy_set(app.ee, _on_destroy);
- ecore_evas_callback_resize_set(app.ee, _canvas_resize_cb);
- ecore_evas_title_set(app.ee, "Edje Box Example");
- ecore_evas_show(app.ee);
+ ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+ if (!ee)
+ goto free_prefix;
- ecore_evas_data_set(app.ee, "app", &app);
+ ecore_evas_callback_destroy_set(ee, _on_destroy);
+ ecore_evas_callback_resize_set(ee, _on_canvas_resize);
+ ecore_evas_title_set(ee, "Edje Box Example");
- evas = ecore_evas_get(app.ee);
+ evas = ecore_evas_get(ee);
- app.bg = evas_object_rectangle_add(evas);
- evas_object_color_set(app.bg, 255, 255, 255, 255);
- evas_object_resize(app.bg, WIDTH, HEIGHT);
- evas_object_focus_set(app.bg, EINA_TRUE);
- evas_object_show(app.bg);
+ bg = evas_object_rectangle_add(evas);
+ evas_object_color_set(bg, 255, 255, 255, 255);
+ evas_object_resize(bg, WIDTH, HEIGHT);
+ evas_object_focus_set(bg, EINA_TRUE);
+ evas_object_show(bg);
+ ecore_evas_data_set(ee, "background", bg);
- evas_object_event_callback_add(app.bg, EVAS_CALLBACK_KEY_DOWN, _bg_key_down, &app);
+ evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_bg_key_down, ee);
- app.edje = edje_object_add(evas);
+ edje_obj = edje_object_add(evas);
- edje_object_file_set(app.edje, edje_file_path, "example/group");
- evas_object_move(app.edje, 0, 0);
- evas_object_resize(app.edje, WIDTH, HEIGHT);
- evas_object_show(app.edje);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
+ edje_object_file_set(edje_obj, edje_file_path, "example/group");
+ evas_object_move(edje_obj, 0, 0);
+ evas_object_resize(edje_obj, WIDTH, HEIGHT);
+ evas_object_show(edje_obj);
+ ecore_evas_data_set(ee, "edje_obj", edje_obj);
- edje_object_part_drag_size_set(app.edje, PARTNAME, 1.0, 0.4);
+ edje_object_part_drag_size_set(edje_obj, PARTNAME, 1.0, 0.4);
- if (!edje_object_part_drag_step_set(app.edje, PARTNAME, 0.0, 0.1))
+ if (!edje_object_part_drag_step_set(edje_obj, PARTNAME, 0.0, 0.1))
printf("error when setting drag step size.\n");
- if (!edje_object_part_drag_page_set(app.edje, PARTNAME, 0.0, 0.3))
+ if (!edje_object_part_drag_page_set(edje_obj, PARTNAME, 0.0, 0.3))
printf("error when setting drag page step size.\n");
- edje_object_signal_callback_add(app.edje, "drag", PARTNAME, _knob_moved_cb, &app);
+ edje_object_signal_callback_add(edje_obj, "drag", PARTNAME, _on_knob_moved, NULL);
+
+ fprintf(stdout, commands);
+
+ ecore_evas_show(ee);
ecore_main_loop_begin();
- ecore_evas_free(app.ee);
+ eina_prefix_free(pfx);
+ ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
+
+ return EXIT_SUCCESS;
+
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
#include <Ecore.h>
#define WIDTH 480
#define HEIGHT 320
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/perspective.edj";
+static const char commands[] = \
+ "commands are:\n"
+ "\tDown - move part down\n"
+ "\tUp - move part up\n"
+ "\tLeft - move part left\n"
+ "\tRight - move part right\n"
+ "\tPrior - move part up-left\n"
+ "\tNext - move part down-right\n"
+ "\tInsert - increase focal\n"
+ "\tSuppr - decrease focal\n"
+ "\tEsc - exit\n"
+ "\th - print help\n";
struct _App {
- Ecore_Evas *ee;
- Evas_Object *edje;
+ Evas_Object *edje_obj;
Evas_Object *bg;
Edje_Perspective *ps;
Eina_Bool animating;
/* here just to keep our example's window size and background image's
* size in synchrony */
static void
-_canvas_resize_cb(Ecore_Evas *ee)
+_on_canvas_resize(Ecore_Evas *ee)
{
int w, h;
struct _App *app = ecore_evas_data_get(ee, "app");
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
evas_object_resize(app->bg, w, h);
- evas_object_resize(app->edje, w, h);
+ evas_object_resize(app->edje_obj, w, h);
}
static void
app->y = 0;
snprintf(emission, sizeof(emission), "move,%d,%d", app->x, app->y);
- edje_object_signal_emit(app->edje, emission, "");
+ edje_object_signal_emit(app->edje_obj, emission, "");
app->animating = EINA_TRUE;
}
static void
-_bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info)
+_on_bg_key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event_info)
{
struct _App *app = data;
Evas_Event_Key_Down *ev = event_info;
-
+ if (!strcmp(ev->keyname, "h"))
+ {
+ fprintf(stdout, commands);
+ return;
+ }
// just moving the part and text
- if (!strcmp(ev->keyname, "Down"))
+ else if (!strcmp(ev->keyname, "Down"))
{
_part_move(app, 0, 1);
}
{
app->focal += 5;
edje_perspective_set(app->ps, 240, 160, 0, app->focal);
- edje_object_calc_force(app->edje);
+ edje_object_calc_force(app->edje_obj);
}
else if (!strcmp(ev->keyname, "KP_Subtract"))
{
app->focal = 5;
edje_perspective_set(app->ps, 240, 160, 0, app->focal);
- edje_object_calc_force(app->edje);
+ edje_object_calc_force(app->edje_obj);
}
// exiting
else if (!strcmp(ev->keyname, "Escape"))
ecore_main_loop_quit();
else
- printf("unhandled key: %s\n", ev->keyname);
+ {
+ printf("unhandled key: %s\n", ev->keyname);
+ fprintf(stdout, commands);
+ }
}
static void
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- Evas *evas;
- struct _App app;
- int i;
-
- ecore_evas_init();
- edje_init();
-
- edje_frametime_set(((double)1) / 60);
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "perspective.edj";
+ struct _App app;
+ Ecore_Evas *ee;
+ Evas *evas;
+ Eina_Prefix *pfx;
+
+ 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;
+
+ edje_frametime_set(1.0 / 60.0);
/* this will give you a window with an Evas canvas under the first
* engine available */
app.x = 0;
app.y = 0;
app.focal = 50;
- app.ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
- ecore_evas_callback_destroy_set(app.ee, _on_destroy);
- ecore_evas_callback_resize_set(app.ee, _canvas_resize_cb);
- ecore_evas_title_set(app.ee, "Edje Box Example");
- ecore_evas_show(app.ee);
+ ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+ if (!ee)
+ goto free_prefix;
+
+ ecore_evas_callback_destroy_set(ee, _on_destroy);
+ ecore_evas_callback_resize_set(ee, _on_canvas_resize);
+ ecore_evas_title_set(ee, "Edje Box Example");
- ecore_evas_data_set(app.ee, "app", &app);
+ ecore_evas_data_set(ee, "app", &app);
- evas = ecore_evas_get(app.ee);
+ evas = ecore_evas_get(ee);
app.bg = evas_object_rectangle_add(evas);
evas_object_color_set(app.bg, 255, 255, 255, 255);
evas_object_focus_set(app.bg, EINA_TRUE);
evas_object_show(app.bg);
- evas_object_event_callback_add(app.bg, EVAS_CALLBACK_KEY_DOWN, _bg_key_down, &app);
+ evas_object_event_callback_add(app.bg, EVAS_CALLBACK_KEY_DOWN, _on_bg_key_down, &app);
- app.edje = edje_object_add(evas);
+ app.edje_obj = edje_object_add(evas);
- edje_object_file_set(app.edje, edje_file_path, "example/group");
- evas_object_move(app.edje, 0, 0);
- evas_object_resize(app.edje, WIDTH, HEIGHT);
- evas_object_show(app.edje);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
+ edje_object_file_set(app.edje_obj, edje_file_path, "example/group");
+ evas_object_move(app.edje_obj, 0, 0);
+ evas_object_resize(app.edje_obj, WIDTH, HEIGHT);
+ evas_object_show(app.edje_obj);
- edje_object_signal_callback_add(app.edje, "animation,end", "", _animation_end_cb, &app);
+ edje_object_signal_callback_add(app.edje_obj, "animation,end", "", _animation_end_cb, &app);
app.ps = edje_perspective_new(evas);
edje_perspective_set(app.ps, 240, 160, 0, app.focal);
edje_perspective_global_set(app.ps, EINA_TRUE);
+ fprintf(stdout, commands);
+
+ ecore_evas_show(ee);
+
ecore_main_loop_begin();
- ecore_evas_free(app.ee);
+ eina_prefix_free(pfx);
+ ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
+
+ return EXIT_SUCCESS;
+
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
}
#define MSG_COLOR 1
#define MSG_TEXT 2
-static const char *border_img_path = PACKAGE_EXAMPLES_DIR "/red.png";
-static const char *edje_file_path = \
- PACKAGE_EXAMPLES_DIR "/signals-messages.edj";
-
-static Ecore_Evas *ee;
-static Evas_Object *edje_obj;
-static Eina_Bool right_rect_show = EINA_TRUE;
-
-static const char *commands = \
+static const char commands[] = \
"commands are:\n"
"\tt - toggle right rectangle's visibility\n"
+ "\tEsc - exit\n"
"\th - print help\n";
+static Eina_Bool right_rect_show = EINA_TRUE;
+
static void
-_on_keydown(void *data __UNUSED__,
+_on_keydown(void *data,
Evas *evas __UNUSED__,
Evas_Object *o __UNUSED__,
void *einfo)
{
- Evas_Event_Key_Down *ev = einfo;
+ Evas_Event_Key_Down *ev;
+ Evas_Object *edje_obj;
+
+ ev = (Evas_Event_Key_Down *)einfo;
+ edje_obj = (Evas_Object *)data;
- if (strcmp(ev->keyname, "h") == 0) /* print help */
+ if (!strcmp(ev->keyname, "h")) /* print help */
{
fprintf(stdout, commands);
return;
}
-
- if (strcmp(ev->keyname, "t") == 0) /* toggle right rectangle's visibility */
+ else if (!strcmp(ev->keyname, "t")) /* toggle right rectangle's visibility */
{
char buf[1024];
return;
}
+ else if (!strcmp(ev->keyname, "Escape"))
+ ecore_main_loop_quit();
+ else
+ {
+ printf("unhandled key: %s\n", ev->keyname);
+ fprintf(stdout, commands);
+ }
}
static void
}
static void
-_mouse_wheel_cb(void *data __UNUSED__,
+_on_mouse_wheel(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
const char *emission,
const char *source)
/* mouse over signals */
static void
-_mouse_over_cb(void *data __UNUSED__,
- Evas_Object *obj __UNUSED__,
+_on_mouse_over(void *data __UNUSED__,
+ Evas_Object *edje_obj,
const char *emission,
const char *source)
{
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- Evas_Object *border, *bg;
- Evas *evas;
-
- srand(time(NULL));
+ char border_img_path[PATH_MAX];
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "signals-messages.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+ Evas_Object *border;
+ Eina_Prefix *pfx;
if (!ecore_evas_init())
return EXIT_FAILURE;
if (!edje_init())
- return EXIT_FAILURE;
+ 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, WIDTH, HEIGHT, NULL);
if (!ee)
- goto error;
+ goto free_prefix;
ecore_evas_callback_delete_request_set(ee, _on_delete);
ecore_evas_title_set(ee, "Edje Basics Example");
- ecore_evas_show(ee);
evas = ecore_evas_get(ee);
evas_object_move(bg, 0, 0); /* at canvas' origin */
evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
evas_object_show(bg);
- ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
-
evas_object_focus_set(bg, EINA_TRUE);
- evas_object_event_callback_add(
- bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL);
+ ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
edje_obj = edje_object_add(evas);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
if (!edje_object_file_set(edje_obj, edje_file_path, "example_group"))
{
int err = edje_object_load_error_get(edje_obj);
"signals-messages.edj: %s\n", errmsg);
evas_object_del(edje_obj);
- goto error_edj;
+ goto free_prefix;
}
edje_object_signal_callback_add(edje_obj, "mouse,wheel,*", "part_left",
- _mouse_wheel_cb, NULL);
+ _on_mouse_wheel, NULL);
edje_object_signal_callback_add(edje_obj, "mouse,over", "part_right",
- _mouse_over_cb, NULL);
+ _on_mouse_over, NULL);
edje_object_message_handler_set(edje_obj, _message_handle, NULL);
evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
evas_object_show(edje_obj);
+ evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, edje_obj);
+
+ snprintf(border_img_path, sizeof(border_img_path),
+ "%s/edje/examples/red.png", eina_prefix_data_get(pfx));
+
/* this is a border around the Edje object above, here just to
* emphasize its geometry */
border = evas_object_image_filled_add(evas);
evas_object_show(border);
fprintf(stdout, commands);
+
+ ecore_evas_show(ee);
+
ecore_main_loop_begin();
+ eina_prefix_free(pfx);
ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
-
-error:
- fprintf(stderr, "You got to have at least one Evas engine built"
- " and linked up to ecore-evas for this example to run"
- " properly.\n");
- ecore_evas_shutdown();
- return -1;
-error_edj:
- fprintf(stderr, "Failed to load signals-messages.edj!\n");
+ return EXIT_SUCCESS;
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
ecore_evas_shutdown();
- return -2;
-}
+ return EXIT_FAILURE;
+}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
#include <Ecore.h>
#define WIDTH (300)
#define HEIGHT (300)
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/swallow.edj";
-
-static Ecore_Evas *ee;
-static Evas_Object *bg;
-
static void
_on_delete(Ecore_Evas *ee __UNUSED__)
{
/* here just to keep our example's window size and background image's
* size in synchrony */
static void
-_canvas_resize_cb(Ecore_Evas *ee)
+_on_canvas_resize(Ecore_Evas *ee)
{
- int w, h;
+ Evas_Object *bg;
+ int w;
+ int h;
+ bg = ecore_evas_data_get(ee, "background");
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
evas_object_resize(bg, w, h);
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- Evas_Object *edje_obj, *rect, *obj;
- Evas *evas;
-
- ecore_evas_init();
- edje_init();
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "swallow.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *rect;
+ Evas_Object *obj;
+ Evas_Object *edje_obj;
+ Eina_Prefix *pfx;
+
+ 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, WIDTH, HEIGHT, NULL);
+ if (!ee)
+ goto free_prefix;
ecore_evas_callback_delete_request_set(ee, _on_delete);
- ecore_evas_callback_resize_set(ee, _canvas_resize_cb);
+ ecore_evas_callback_resize_set(ee, _on_canvas_resize);
ecore_evas_title_set(ee, "Edje Swallow Example");
- ecore_evas_show(ee);
evas = ecore_evas_get(ee);
evas_object_move(bg, 0, 0); /* at canvas' origin */
evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
evas_object_show(bg);
+ ecore_evas_data_set(ee, "background", bg);
edje_obj = edje_object_add(evas);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
edje_object_file_set(edje_obj, edje_file_path, "example_group");
evas_object_move(edje_obj, 20, 20);
evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
if(obj == rect)
printf("Swallowing worked!\n");
+ ecore_evas_show(ee);
+
ecore_main_loop_begin();
+ eina_prefix_free(pfx);
ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
+
+ return EXIT_SUCCESS;
+
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
#include <Ecore.h>
#define WIDTH (400)
#define HEIGHT (400)
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/table.edj";
-
-static Ecore_Evas *ee;
-static Evas *evas;
-static Evas_Object *bg, *edje_obj, *rects[4];
-
static void
_on_delete(Ecore_Evas *ee __UNUSED__)
{
/* Try to get the number of columns and rows of the table
* and print them. */
static void
-_columns_rows_print(void)
+_columns_rows_print(Evas_Object *edje_obj)
{
int cols, rows;
/* here just to keep our example's window size and table items
* size in synchrony. */
static void
-_canvas_resize_cb(Ecore_Evas *ee)
+_on_canvas_resize(Ecore_Evas *ee)
{
- int i, w, h;
-
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+ Evas_Object **rects;
+ int i;
+ int w;
+ int h;
+
+ bg = ecore_evas_data_get(ee, "background");
+ edje_obj = ecore_evas_data_get(ee, "edje_obj");
+ rects = ecore_evas_data_get(ee, "rects");
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
evas_object_resize(bg, w, h);
/* Mouse button 1 = remove the clicked item
* any other button = remove all items. */
static void
-_on_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+_on_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
{
- Evas_Event_Mouse_Down *ev = event_info;
+ Evas_Event_Mouse_Down *ev;
+ Evas_Object *edje_obj;
+
+ ev = (Evas_Event_Mouse_Down *)event_info;
+ edje_obj = (Evas_Object *)data;
if (ev->button != 1)
edje_object_part_table_clear(edje_obj, "table_part", EINA_TRUE);
fprintf(stderr, "Cannot remove the selected rectangle\n");
evas_object_del(obj);
- _columns_rows_print();
+ _columns_rows_print(edje_obj);
}
static void
-_rects_create(void)
+_rects_create(Evas *evas, Evas_Object **rects, Evas_Object *edje_obj)
{
int i;
evas_object_size_hint_weight_set(rects[i], 1.0, 1.0);
evas_object_show(rects[i]);
evas_object_event_callback_add(rects[i], EVAS_CALLBACK_MOUSE_DOWN,
- _on_mouse_down, NULL);
+ _on_mouse_down, edje_obj);
}
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- int i;
-
- ecore_evas_init();
- edje_init();
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "table.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+ Evas_Object *rects[4];
+ Eina_Prefix *pfx;
+
+ 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, WIDTH, HEIGHT, NULL);
+ if (!ee)
+ goto free_prefix;
ecore_evas_callback_delete_request_set(ee, _on_delete);
- ecore_evas_callback_resize_set(ee, _canvas_resize_cb);
+ ecore_evas_callback_resize_set(ee, _on_canvas_resize);
ecore_evas_title_set(ee, "Edje Table Example");
- ecore_evas_show(ee);
evas = ecore_evas_get(ee);
evas_object_move(bg, 0, 0); /* at canvas' origin */
evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
evas_object_show(bg);
+ ecore_evas_data_set(ee, "background", bg);
edje_obj = edje_object_add(evas);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
edje_object_file_set(edje_obj, edje_file_path, "example_table");
evas_object_move(edje_obj, 0, 0); /* at canvas' origin */
evas_object_resize(edje_obj, WIDTH, HEIGHT);
evas_object_show(edje_obj);
+ ecore_evas_data_set(ee, "edje_obj", edje_obj);
- _rects_create();
+ _rects_create(evas, rects, edje_obj);
+ ecore_evas_data_set(ee, "rects", rects);
/* Colouring the rectangles */
evas_object_color_set(rects[0], 255, 0, 0, 255);
1, 1, 1, 1))
fprintf(stderr, "Cannot add the rectangle 4 to table\n");
- _columns_rows_print();
+ _columns_rows_print(edje_obj);
+
+ ecore_evas_show(ee);
ecore_main_loop_begin();
+ eina_prefix_free(pfx);
ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
+
+ return EXIT_SUCCESS;
+
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
}
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#else
-#define PACKAGE_EXAMPLES_DIR "."
-#define __UNUSED__
+# define __UNUSED__
#endif
#include <Ecore.h>
#define WIDTH (300)
#define HEIGHT (300)
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/text.edj";
-
-static Ecore_Evas *ee;
-static Evas_Object *bg;
-
static void
_on_delete(Ecore_Evas *ee __UNUSED__)
{
}
static void
-_cb(void *data, Evas_Object *obj, const char *part)
+_on_text_change(void *data __UNUSED__, Evas_Object *obj, const char *part)
{
printf("text: %s\n", edje_object_part_text_unescaped_get(obj, part));
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- Evas_Object *edje_obj, *rect, *obj;
- Evas *evas;
-
- ecore_evas_init();
- edje_init();
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "text.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+ Eina_Prefix *pfx;
+
+ 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, WIDTH, HEIGHT, NULL);
+ if (!ee)
+ goto free_prefix;
ecore_evas_callback_delete_request_set(ee, _on_delete);
ecore_evas_title_set(ee, "Edje text Example");
- ecore_evas_show(ee);
evas = ecore_evas_get(ee);
edje_obj = edje_object_add(evas);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
edje_object_file_set(edje_obj, edje_file_path, "example_group");
evas_object_move(edje_obj, 20, 20);
evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
evas_object_show(edje_obj);
- edje_object_text_change_cb_set(edje_obj, _cb, NULL);
+ edje_object_text_change_cb_set(edje_obj, _on_text_change, NULL);
edje_object_part_text_set(edje_obj, "part_one", "one");
edje_object_part_text_set(edje_obj, "part_two", "<b>two");
edje_object_part_text_select_none(edje_obj, "part_two");
printf("selection: %s\n", edje_object_part_text_selection_get(edje_obj, "part_two"));
+ ecore_evas_show(ee);
+
ecore_main_loop_begin();
+ eina_prefix_free(pfx);
ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
+
+ return EXIT_SUCCESS;
+
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
}
#define WIDTH (300)
#define HEIGHT (300)
-static const char *border_img_path = PACKAGE_EXAMPLES_DIR "/red.png";
-static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/sigtest.edj";
-
-static Ecore_Evas *ee;
-static Evas_Object *edje_obj;
-
static const char commands[] = \
"commands are:\n"
"\te - change te edje base\n"
"\tl - change to lua base\n"
"\tm - send message\n"
"\ts - send signal\n"
+ "\tEsc - exit\n"
"\th - print help\n";
static void
-_on_keydown(void *data __UNUSED__,
+_on_keydown(void *data,
Evas *evas __UNUSED__,
Evas_Object *o __UNUSED__,
void *einfo)
{
- Evas_Event_Key_Down *ev = einfo;
+ Ecore_Evas *ee;
+ Evas_Event_Key_Down *ev;
+ Evas_Object *edje_obj;
+ char *edje_file_path;
+
+ ee = (Ecore_Evas *)data;
+ ev = (Evas_Event_Key_Down *)einfo;
+ edje_obj = ecore_evas_data_get(ee, "edje_obj");
+ edje_file_path = ecore_evas_data_get(ee, "file_path");
- if (strcmp(ev->keyname, "h") == 0)
+ if (!strcmp(ev->keyname, "h"))
{
fprintf(stdout, commands);
return;
}
-
- if (strcmp(ev->keyname, "e") == 0)
+ else if (!strcmp(ev->keyname, "e"))
{
if (!edje_object_file_set(edje_obj, edje_file_path, "plain/edje/group"))
{
" file sigtest.edj with success!\n");
return;
}
-
- if (strcmp(ev->keyname, "l") == 0)
+ else if (!strcmp(ev->keyname, "l"))
{
if (!edje_object_file_set(edje_obj, edje_file_path, "lua_base"))
{
" file sigtest.edj with success!\n");
return;
}
-
- if (strcmp(ev->keyname, "m") == 0)
+ else if (!strcmp(ev->keyname, "m"))
{
Edje_Message_String *msg = malloc(sizeof(*msg));
fprintf(stdout, "C message sent\n");
return;
}
-
- if (strcmp(ev->keyname, "s") == 0)
+ else if (!strcmp(ev->keyname, "s"))
{
fprintf(stdout, "\n");
edje_object_signal_emit(edje_obj, "C signal 1", "Csource");
fprintf(stdout, "C signal sent\n");
return;
}
+ else if (!strcmp(ev->keyname, "Escape"))
+ ecore_main_loop_quit();
+ else
+ {
+ printf("unhandled key: %s\n", ev->keyname);
+ fprintf(stdout, commands);
+ }
}
static void
-_on_message(void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg)
+_on_message(void *data __UNUSED__, Evas_Object *obj __UNUSED__, Edje_Message_Type type, int id, void *msg)
{
int i;
}
static void
-_on_signal(void *data, Evas_Object *obj __UNUSED__, const char *emission, const char *source)
+_on_signal(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *emission, const char *source)
{
fprintf(stdout, "C::signal sig=|%s| src=|%s|\n", emission, source);
}
}
int
-main(void)
+main(int argc __UNUSED__, char *argv[])
{
- Evas_Object *border, *bg;
- Evas *evas;
+ char border_img_path[PATH_MAX];
+ char edje_file_path[PATH_MAX];
+ const char *edje_file = "sigtest.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *border;
+ Evas_Object *edje_obj;
+ Eina_Prefix *pfx;
if (!ecore_evas_init())
return EXIT_FAILURE;
if (!edje_init())
- return EXIT_FAILURE;
+ 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, WIDTH, HEIGHT, NULL);
if (!ee)
- goto error;
+ goto free_prefix;
ecore_evas_callback_delete_request_set(ee, _on_delete);
ecore_evas_title_set(ee, "Signals and wessages tester");
- ecore_evas_show(ee);
evas = ecore_evas_get(ee);
ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
evas_object_focus_set(bg, EINA_TRUE);
- evas_object_event_callback_add(
- bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL);
edje_obj = edje_object_add(evas);
edje_object_message_handler_set(edje_obj, _on_message, NULL);
edje_object_signal_callback_add(edje_obj, "*", "*", _on_signal, NULL);
+ snprintf(edje_file_path, sizeof(edje_file_path),
+ "%s/examples/%s", eina_prefix_data_get(pfx), edje_file);
if (!edje_object_file_set(edje_obj, edje_file_path, "lua_base"))
{
int err = edje_object_load_error_get(edje_obj);
errmsg);
evas_object_del(edje_obj);
- goto error_edj;
+ goto free_prefix;
}
fprintf(stdout, "Loaded Edje object bound to group 'lua_base' from"
evas_object_move(edje_obj, 20, 20);
evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
evas_object_show(edje_obj);
+ ecore_evas_data_set(ee, "edje_obj", edje_obj);
+ ecore_evas_data_set(ee, "file_path", edje_file_path);
+
+ evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, ee);
+
+ snprintf(border_img_path, sizeof(border_img_path),
+ "%s/edje/examples/red.png", eina_prefix_data_get(pfx));
/* this is a border around the Edje object above, here just to
* emphasize its geometry */
evas_object_move(border, 20 - 2, 20 - 2);
evas_object_show(border);
+ fprintf(stdout, commands);
+
+ ecore_evas_show(ee);
+
ecore_main_loop_begin();
+ eina_prefix_free(pfx);
ecore_evas_free(ee);
ecore_evas_shutdown();
edje_shutdown();
- return 0;
-
-error:
- fprintf(stderr, "You got to have at least one evas engine built"
- " and linked up to ecore-evas for this example to run"
- " properly.\n");
- ecore_evas_shutdown();
- return -1;
-error_edj:
- fprintf(stderr, "Failed to load sigtest.edj!\n");
+ return EXIT_SUCCESS;
+ free_prefix:
+ eina_prefix_free(pfx);
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
ecore_evas_shutdown();
- return -2;
+
+ return EXIT_FAILURE;
}