forked from enlightenment/efl
edje_codegen: Adding a basic example
Patch by: Flavio Ceolin <flavio.ceolin@profusion.mobi> SVN revision: 76148
This commit is contained in:
parent
d626583b92
commit
6237f9ec9d
|
@ -97,6 +97,7 @@ AC_ARG_ENABLE([amalgamation],
|
||||||
AM_CONDITIONAL([EDJE_AMALGAMATION], [test "x${do_amalgamation}" = "xyes"])
|
AM_CONDITIONAL([EDJE_AMALGAMATION], [test "x${do_amalgamation}" = "xyes"])
|
||||||
|
|
||||||
EFL_WITH_BIN([edje], [edje-cc], [edje_cc])
|
EFL_WITH_BIN([edje], [edje-cc], [edje_cc])
|
||||||
|
EFL_WITH_BIN([edje], [edje-codegen], [edje_codegen])
|
||||||
|
|
||||||
EFL_ENABLE_BIN([edje-cc])
|
EFL_ENABLE_BIN([edje-cc])
|
||||||
EFL_ENABLE_BIN([edje-decc])
|
EFL_ENABLE_BIN([edje-decc])
|
||||||
|
|
|
@ -5,6 +5,9 @@ EDJE_CC_FLAGS_VERBOSE_0 =
|
||||||
EDJE_CC_FLAGS_VERBOSE_1 = -v
|
EDJE_CC_FLAGS_VERBOSE_1 = -v
|
||||||
EDJE_CC_FLAGS = $(EDJE_CC_FLAGS_$(V)) -id $(srcdir) -fd $(srcdir)
|
EDJE_CC_FLAGS = $(EDJE_CC_FLAGS_$(V)) -id $(srcdir) -fd $(srcdir)
|
||||||
|
|
||||||
|
EDJE_CODEGEN = @edje_codegen@
|
||||||
|
EDJE_CODEGEN_FLAGS = --prefix=codegen_example
|
||||||
|
|
||||||
examplesdir = $(datadir)/$(PACKAGE)/examples
|
examplesdir = $(datadir)/$(PACKAGE)/examples
|
||||||
|
|
||||||
if ENABLE_MULTISENSE
|
if ENABLE_MULTISENSE
|
||||||
|
@ -21,6 +24,7 @@ EDCS = \
|
||||||
text.edc \
|
text.edc \
|
||||||
table.edc \
|
table.edc \
|
||||||
box.edc \
|
box.edc \
|
||||||
|
codegen.edc \
|
||||||
drag.edc \
|
drag.edc \
|
||||||
edje_example.edc \
|
edje_example.edc \
|
||||||
embryo_custom_state.edc \
|
embryo_custom_state.edc \
|
||||||
|
@ -60,6 +64,7 @@ files_DATA = \
|
||||||
test.png \
|
test.png \
|
||||||
Vera.ttf \
|
Vera.ttf \
|
||||||
duck.wav \
|
duck.wav \
|
||||||
|
edje-codegen-example.c \
|
||||||
edje_example.c \
|
edje_example.c \
|
||||||
edje-basic.c \
|
edje-basic.c \
|
||||||
edje-swallow.c \
|
edje-swallow.c \
|
||||||
|
@ -92,6 +97,13 @@ AM_CPPFLAGS = \
|
||||||
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
|
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
|
||||||
@EDJE_CFLAGS@
|
@EDJE_CFLAGS@
|
||||||
|
|
||||||
|
codegen_example_generated.c codegen_example_generated.h: codegen.edj
|
||||||
|
$(EDJE_CODEGEN) $(EDJE_CODEGEN_FLAGS) codegen.edj example_group $(builddir)/codegen_example_generated.c $(builddir)/codegen_example_generated.h
|
||||||
|
|
||||||
|
edje_codegen_example_SOURCES = \
|
||||||
|
codegen_example_generated.c \
|
||||||
|
edje-codegen-example.c
|
||||||
|
|
||||||
files_DATA += $(EDJS)
|
files_DATA += $(EDJS)
|
||||||
|
|
||||||
examples_PROGRAMS = \
|
examples_PROGRAMS = \
|
||||||
|
@ -99,6 +111,7 @@ examples_PROGRAMS = \
|
||||||
edje-basic \
|
edje-basic \
|
||||||
edje-box \
|
edje-box \
|
||||||
edje-box2 \
|
edje-box2 \
|
||||||
|
edje-codegen-example \
|
||||||
edje-color-class \
|
edje-color-class \
|
||||||
edje-drag\
|
edje-drag\
|
||||||
edje-perspective \
|
edje-perspective \
|
||||||
|
@ -118,4 +131,4 @@ LDADD = $(top_builddir)/src/lib/libedje.la @EDJE_LIBS@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
rm -f *.edj
|
rm -f *.edj codegen_example_generated.*
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
collections {
|
||||||
|
group {
|
||||||
|
name: "sel_group";
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "rect";
|
||||||
|
type: RECT;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 255 0 255; /* green */
|
||||||
|
rel1.relative: 0.0 0.0;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group {
|
||||||
|
name: "example_group";
|
||||||
|
max: 500 500;
|
||||||
|
min: 50 50;
|
||||||
|
|
||||||
|
styles {
|
||||||
|
style {
|
||||||
|
name: "textblock_style";
|
||||||
|
base: "font=Sans font_size=22 color=#600 wrap=word";
|
||||||
|
tag: "br" "\n";
|
||||||
|
tag: "hilight" "+ font_weight=Bold";
|
||||||
|
tag: "b" "+ font_weight=Bold";
|
||||||
|
tag: "tab" "\t";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "part_one";
|
||||||
|
type: TEXT;
|
||||||
|
api: "part_one";
|
||||||
|
description {
|
||||||
|
min: 50 50;
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 0 255 255; /* blue */
|
||||||
|
rel1.relative: 0.0 0.0;
|
||||||
|
rel2.relative: 1.0 0.3;
|
||||||
|
text {
|
||||||
|
font: "arial";
|
||||||
|
size: 22;
|
||||||
|
min: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "part_two";
|
||||||
|
type: SWALLOW;
|
||||||
|
api: "part_two" "The swallow";
|
||||||
|
description {
|
||||||
|
min: 50 50;
|
||||||
|
state: "default" 0.0;
|
||||||
|
rel1.relative: 0.0 0.6;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "part_below.hovered";
|
||||||
|
signal: "mouse,move";
|
||||||
|
source: "part_one";
|
||||||
|
action: SIGNAL_EMIT "mouse,over" "part_below";
|
||||||
|
api: "part_below_over" "mouse over";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,144 @@
|
||||||
|
/**
|
||||||
|
* @since 1.8.0
|
||||||
|
* Simple Edje example illustrating the edje_codegen usage.
|
||||||
|
*
|
||||||
|
* edje_codegen is a tool that generates code to acessing the parts and programs
|
||||||
|
* with the keyword "api" of a specified group. This tool make easier working
|
||||||
|
* with edje avoiding common errors caused by typos when acessing the parts
|
||||||
|
* and/or programs.
|
||||||
|
*
|
||||||
|
* To use the edje_codegen:
|
||||||
|
* edje_codegen --prefix <myapp_myobj> <input.edj> <a_group> <source.c> <header.h>
|
||||||
|
*
|
||||||
|
* In case of this example:
|
||||||
|
* edje_codegen --prefix=codegen_example codegen.edj group_example \
|
||||||
|
codegen_example_generated.c codegen_example_generated.h
|
||||||
|
*
|
||||||
|
* @verbatim
|
||||||
|
* edje_cc codegen.edc && edje_codegen --prefix=codegen_example codegen.edj \
|
||||||
|
* example_group codegen_example_generated.c codegen_example_generated.h
|
||||||
|
* gcc -c codegen_example_generated.c `pkg-config --libs --cflags ecore-evas edje`
|
||||||
|
* gcc -o edje-codegen-example codegen_example_generated.o \
|
||||||
|
* edje-codegen-example.c `pkg-config --libs --cflags ecore-evas edje`
|
||||||
|
* @endverbatim
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#else
|
||||||
|
# define __UNUSED__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "codegen_example_generated.h"
|
||||||
|
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <Ecore_Evas.h>
|
||||||
|
#include <Edje.h>
|
||||||
|
|
||||||
|
#define WIDTH (300)
|
||||||
|
#define HEIGHT (300)
|
||||||
|
|
||||||
|
static void
|
||||||
|
_on_delete(Ecore_Evas *ee)
|
||||||
|
{
|
||||||
|
ecore_main_loop_quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_on_mouse_over(void *data, Evas_Object *obj, const char *emission,
|
||||||
|
const char *source)
|
||||||
|
{
|
||||||
|
static int i = 0;
|
||||||
|
|
||||||
|
printf("Mouse over, source: %s - emission: %s\n",
|
||||||
|
source, emission);
|
||||||
|
if (i++ == 5)
|
||||||
|
{
|
||||||
|
Evas_Object *rect = codegen_example_part_two_get(obj);
|
||||||
|
evas_object_color_set(rect, 0, 255, 0, 255);
|
||||||
|
codegen_example_part_below_over_callback_del_full(obj,_on_mouse_over,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
char edje_file_path[PATH_MAX];
|
||||||
|
const char *edje_file = "codegen.edj";
|
||||||
|
Ecore_Evas *ee;
|
||||||
|
Evas *evas;
|
||||||
|
Evas_Object *bg;
|
||||||
|
Evas_Object *edje_obj;
|
||||||
|
Evas_Object *red_rect;
|
||||||
|
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");
|
||||||
|
|
||||||
|
evas = ecore_evas_get(ee);
|
||||||
|
|
||||||
|
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);
|
||||||
|
ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
|
||||||
|
|
||||||
|
edje_obj = edje_object_add(evas);
|
||||||
|
edje_object_file_set(edje_obj, edje_file, "example_group");
|
||||||
|
evas_object_move(edje_obj, 20, 20);
|
||||||
|
evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
|
||||||
|
evas_object_show(edje_obj);
|
||||||
|
|
||||||
|
codegen_example_part_one_set(edje_obj, "CODEGEN_EXAMPLE");
|
||||||
|
codegen_example_part_below_over_callback_add(edje_obj, _on_mouse_over, NULL);
|
||||||
|
|
||||||
|
red_rect = evas_object_rectangle_add(evas);
|
||||||
|
evas_object_color_set(red_rect, 255, 0, 0, 255); /* white bg */
|
||||||
|
codegen_example_part_two_set(edje_obj, red_rect);
|
||||||
|
evas_object_show(red_rect);
|
||||||
|
|
||||||
|
ecore_evas_show(ee);
|
||||||
|
|
||||||
|
ecore_main_loop_begin();
|
||||||
|
|
||||||
|
eina_prefix_free(pfx);
|
||||||
|
ecore_evas_free(ee);
|
||||||
|
ecore_evas_shutdown();
|
||||||
|
edje_shutdown();
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
|
||||||
|
free_prefix:
|
||||||
|
eina_prefix_free(pfx);
|
||||||
|
shutdown_edje:
|
||||||
|
edje_shutdown();
|
||||||
|
shutdown_ecore_evas:
|
||||||
|
ecore_evas_shutdown();
|
||||||
|
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
|
@ -93,6 +93,7 @@ You may use different tools to edit and view the generated ".edj"
|
||||||
files, for instance:
|
files, for instance:
|
||||||
|
|
||||||
- edje_player (provided by Edje)
|
- edje_player (provided by Edje)
|
||||||
|
- edje_codegen (provided by Edje) @since 1.8.0
|
||||||
- editje (http://trac.enlightenment.org/e/wiki/Editje)
|
- editje (http://trac.enlightenment.org/e/wiki/Editje)
|
||||||
- edje_viewer (http://trac.enlightenment.org/e/wiki/Edje_Viewer)
|
- edje_viewer (http://trac.enlightenment.org/e/wiki/Edje_Viewer)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue