Hi,
I was writing an application using edje and I needed to change the
style from an external elementary widget inside edje. So I wrote this
patch to add a param 'style' to elementary widget.
With this patch, you can change the style doing:
params.string: "style" "name_of_style";
Or calling external_param_set_str in embryo script.
--
Otavio Pontes
ProFUSION embedded systems
http://www.profusion.mobi
From 88857db6a8ccfabc445c806a3192e1e3cc311b31 Mon Sep 17 00:00:00 2001
From: Otavio Pontes <[email protected]>
Date: Fri, 15 Oct 2010 08:15:25 -0300
Subject: [PATCH] Adding support for changing style from one elm widget in edje external.
To: [email protected]
This patch creates a param 'style' that can be used in edje external
to change the style of one object.
---
TMP/st/elementary/src/edje_externals/elm.c | 44 ++++++++++++++++++++
.../src/edje_externals/elm_anchorblock.c | 6 ++-
.../elementary/src/edje_externals/elm_anchorview.c | 6 ++-
TMP/st/elementary/src/edje_externals/elm_bubble.c | 1 +
TMP/st/elementary/src/edje_externals/elm_button.c | 1 +
TMP/st/elementary/src/edje_externals/elm_check.c | 1 +
TMP/st/elementary/src/edje_externals/elm_clock.c | 6 ++-
.../src/edje_externals/elm_fileselector.c | 6 ++-
.../src/edje_externals/elm_fileselector_button.c | 1 +
.../src/edje_externals/elm_fileselector_entry.c | 1 +
TMP/st/elementary/src/edje_externals/elm_genlist.c | 6 ++-
.../elementary/src/edje_externals/elm_hoversel.c | 1 +
TMP/st/elementary/src/edje_externals/elm_list.c | 6 ++-
TMP/st/elementary/src/edje_externals/elm_map.c | 6 ++-
TMP/st/elementary/src/edje_externals/elm_notify.c | 1 +
TMP/st/elementary/src/edje_externals/elm_panes.c | 1 +
.../elementary/src/edje_externals/elm_photocam.c | 6 ++-
.../src/edje_externals/elm_progressbar.c | 1 +
TMP/st/elementary/src/edje_externals/elm_radio.c | 1 +
.../src/edje_externals/elm_scrolled_entry.c | 6 ++-
TMP/st/elementary/src/edje_externals/elm_slider.c | 1 +
.../elementary/src/edje_externals/elm_slideshow.c | 6 ++-
TMP/st/elementary/src/edje_externals/elm_spinner.c | 6 ++-
TMP/st/elementary/src/edje_externals/elm_thumb.c | 6 ++-
TMP/st/elementary/src/edje_externals/elm_toggle.c | 1 +
TMP/st/elementary/src/edje_externals/elm_toolbar.c | 6 ++-
TMP/st/elementary/src/edje_externals/private.h | 19 ++++++++-
27 files changed, 125 insertions(+), 28 deletions(-)
diff --git a/TMP/st/elementary/src/edje_externals/elm.c b/TMP/st/elementary/src/edje_externals/elm.c
index af91e60..7605280 100644
--- a/TMP/st/elementary/src/edje_externals/elm.c
+++ b/TMP/st/elementary/src/edje_externals/elm.c
@@ -69,6 +69,34 @@ _external_signal_proxy_cb(void *data, Evas_Object *obj __UNUSED__, void *event_i
edje_object_signal_emit(ctxt->edje, ctxt->emission, ctxt->source);
}
+Eina_Bool
+external_common_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
+{
+ if (!strcmp(param->name, "style"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
+ {
+ param->s = elm_object_style_get(obj);
+ return EINA_TRUE;
+ }
+ }
+ return EINA_FALSE;
+}
+
+Eina_Bool
+external_common_param_set(void *data __UNUSED__, Evas_Object *obj, Edje_External_Param *param)
+{
+ if (!strcmp(param->name, "style"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
+ {
+ elm_object_style_set(obj, param->s);
+ return EINA_TRUE;
+ }
+ }
+ return EINA_FALSE;
+}
+
void
external_signals_proxy(Evas_Object *obj, Evas_Object *edje, const char *part_name)
{
@@ -125,10 +153,24 @@ external_common_params_parse_internal(size_t params_size, void *data __UNUSED__,
{
if (!strcmp(param->name, "label"))
p->label = param->s;
+ else if (!strcmp(param->name, "style"))
+ p->style = eina_stringshare_add(param->s);
}
return p;
}
+void
+external_common_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
+{
+ const Elm_Params *p;
+ if (to_params) p = to_params;
+ else if (from_params) p = from_params;
+ else return;
+
+ if (p->style)
+ elm_object_style_set(obj, p->style);
+}
+
Evas_Object *
external_common_param_icon_get(Evas_Object *obj, const Edje_External_Param *p)
{
@@ -191,6 +233,8 @@ void
external_common_params_free(void *params)
{
Elm_Params *p = params;
+ if (p->style)
+ eina_stringshare_del(p->style);
free(p);
};
diff --git a/TMP/st/elementary/src/edje_externals/elm_anchorblock.c b/TMP/st/elementary/src/edje_externals/elm_anchorblock.c
index 0e0c2eb..d8cda65 100644
--- a/TMP/st/elementary/src/edje_externals/elm_anchorblock.c
+++ b/TMP/st/elementary/src/edje_externals/elm_anchorblock.c
@@ -2,6 +2,7 @@
typedef struct _Elm_Params_Anchorblock
{
+ Elm_Params base;
const char *text;
} Elm_Params_Anchorblock;
@@ -10,6 +11,7 @@ external_anchorblock_state_set(void *data __UNUSED__, Evas_Object *obj, const vo
{
const Elm_Params_Anchorblock *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -63,7 +65,7 @@ external_anchorblock_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUS
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Anchorblock));
+ mem = external_common_params_parse(Elm_Params_Anchorblock, data, obj, params);
if (!mem)
return NULL;
@@ -90,7 +92,7 @@ external_anchorblock_params_free(void *params)
if (mem->text)
eina_stringshare_del(mem->text);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_anchorblock_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_anchorview.c b/TMP/st/elementary/src/edje_externals/elm_anchorview.c
index f4f3d9a..1c78a7f 100644
--- a/TMP/st/elementary/src/edje_externals/elm_anchorview.c
+++ b/TMP/st/elementary/src/edje_externals/elm_anchorview.c
@@ -2,6 +2,7 @@
typedef struct _Elm_Params_Anchorview
{
+ Elm_Params base;
const char *text;
} Elm_Params_Anchorview;
@@ -10,6 +11,7 @@ external_anchorview_state_set(void *data __UNUSED__, Evas_Object *obj, const voi
{
const Elm_Params_Anchorview *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -63,7 +65,7 @@ external_anchorview_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSE
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Anchorview));
+ mem = external_common_params_parse(Elm_Params_Anchorview, data, obj, params);
if (!mem)
return NULL;
@@ -90,7 +92,7 @@ external_anchorview_params_free(void *params)
if (mem->text)
eina_stringshare_del(mem->text);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_anchorview_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_bubble.c b/TMP/st/elementary/src/edje_externals/elm_bubble.c
index f8f0f2d..c811d37 100644
--- a/TMP/st/elementary/src/edje_externals/elm_bubble.c
+++ b/TMP/st/elementary/src/edje_externals/elm_bubble.c
@@ -13,6 +13,7 @@ external_bubble_state_set(void *data __UNUSED__, Evas_Object *obj, const void *f
{
const Elm_Params_Bubble *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_button.c b/TMP/st/elementary/src/edje_externals/elm_button.c
index 2ed7987..0440e03 100644
--- a/TMP/st/elementary/src/edje_externals/elm_button.c
+++ b/TMP/st/elementary/src/edje_externals/elm_button.c
@@ -11,6 +11,7 @@ external_button_state_set(void *data __UNUSED__, Evas_Object *obj, const void *f
{
const Elm_Params_Button *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_check.c b/TMP/st/elementary/src/edje_externals/elm_check.c
index fca2b87..636375f 100644
--- a/TMP/st/elementary/src/edje_externals/elm_check.c
+++ b/TMP/st/elementary/src/edje_externals/elm_check.c
@@ -13,6 +13,7 @@ external_check_state_set(void *data __UNUSED__, Evas_Object *obj, const void *fr
{
const Elm_Params_Check *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_clock.c b/TMP/st/elementary/src/edje_externals/elm_clock.c
index 13bda6d..ecb1b53 100644
--- a/TMP/st/elementary/src/edje_externals/elm_clock.c
+++ b/TMP/st/elementary/src/edje_externals/elm_clock.c
@@ -2,6 +2,7 @@
typedef struct _Elm_Params_Clock
{
+ Elm_Params base;
int hrs, min, sec;
Eina_Bool hrs_exists:1;
Eina_Bool min_exists:1;
@@ -16,6 +17,7 @@ external_clock_state_set(void *data __UNUSED__, Evas_Object *obj, const void *fr
{
const Elm_Params_Clock *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -178,7 +180,7 @@ external_clock_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Clock));
+ mem = external_common_params_parse(Elm_Params_Clock, data, obj, params);
if (!mem)
return NULL;
@@ -222,7 +224,7 @@ external_clock_params_free(void *params)
{
Elm_Params_Clock *mem = params;
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_clock_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_fileselector.c b/TMP/st/elementary/src/edje_externals/elm_fileselector.c
index c955bc4..03b4906 100644
--- a/TMP/st/elementary/src/edje_externals/elm_fileselector.c
+++ b/TMP/st/elementary/src/edje_externals/elm_fileselector.c
@@ -4,6 +4,7 @@
typedef struct _Elm_Params_Fileselector
{
+ Elm_Params base;
Eina_Bool is_save:1;
Eina_Bool is_save_set:1;
Eina_Bool folder_only:1;
@@ -19,6 +20,7 @@ external_fileselector_state_set(void *data __UNUSED__, Evas_Object *obj, const v
{
const Elm_Params_Fileselector *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -124,7 +126,7 @@ external_fileselector_params_parse(void *data __UNUSED__, Evas_Object *obj __UNU
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Fileselector));
+ mem = external_common_params_parse(Elm_Params_Fileselector, data, obj, params);
if (!mem)
return NULL;
@@ -166,7 +168,7 @@ static void
external_fileselector_params_free(void *params)
{
Elm_Params_Fileselector *mem = params;
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_fileselector_params[] =
diff --git a/TMP/st/elementary/src/edje_externals/elm_fileselector_button.c b/TMP/st/elementary/src/edje_externals/elm_fileselector_button.c
index f17e6bd..a3504b9 100644
--- a/TMP/st/elementary/src/edje_externals/elm_fileselector_button.c
+++ b/TMP/st/elementary/src/edje_externals/elm_fileselector_button.c
@@ -23,6 +23,7 @@ external_fileselector_button_state_set(void *data __UNUSED__, Evas_Object *obj,
{
const Elm_Params_fileselector_button *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_fileselector_entry.c b/TMP/st/elementary/src/edje_externals/elm_fileselector_entry.c
index ee278d2..2a1196a 100644
--- a/TMP/st/elementary/src/edje_externals/elm_fileselector_entry.c
+++ b/TMP/st/elementary/src/edje_externals/elm_fileselector_entry.c
@@ -23,6 +23,7 @@ external_fileselector_entry_state_set(void *data __UNUSED__, Evas_Object *obj, c
{
const Elm_Params_fileselector_entry *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_genlist.c b/TMP/st/elementary/src/edje_externals/elm_genlist.c
index a8b2405..f01eedd 100644
--- a/TMP/st/elementary/src/edje_externals/elm_genlist.c
+++ b/TMP/st/elementary/src/edje_externals/elm_genlist.c
@@ -4,6 +4,7 @@
typedef struct _Elm_Params_Genlist
{
+ Elm_Params base;
const char *horizontal_mode;
Eina_Bool multi:1;
Eina_Bool multi_exists:1;
@@ -43,6 +44,7 @@ external_genlist_state_set(void *data __UNUSED__, Evas_Object *obj, const void *
{
const Elm_Params_Genlist *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -249,7 +251,7 @@ external_genlist_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Genlist));
+ mem = external_common_params_parse(Elm_Params_Genlist, data, obj, params);
if (!mem)
return NULL;
@@ -312,7 +314,7 @@ external_genlist_params_free(void *params)
if (mem->horizontal_mode)
eina_stringshare_del(mem->horizontal_mode);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_genlist_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_hoversel.c b/TMP/st/elementary/src/edje_externals/elm_hoversel.c
index 08b2dce..ab69d62 100644
--- a/TMP/st/elementary/src/edje_externals/elm_hoversel.c
+++ b/TMP/st/elementary/src/edje_externals/elm_hoversel.c
@@ -13,6 +13,7 @@ external_hoversel_state_set(void *data __UNUSED__, Evas_Object *obj, const void
{
const Elm_Params_Hoversel *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_list.c b/TMP/st/elementary/src/edje_externals/elm_list.c
index 8f782af..77cb0fd 100644
--- a/TMP/st/elementary/src/edje_externals/elm_list.c
+++ b/TMP/st/elementary/src/edje_externals/elm_list.c
@@ -4,6 +4,7 @@
typedef struct _Elm_Params_List
{
+ Elm_Params base;
const char *policy_h;
const char *policy_v;
const char *horizontal_mode;
@@ -48,6 +49,7 @@ external_list_state_set(void *data __UNUSED__, Evas_Object *obj, const void *fro
const Elm_Params_List *p;
Elm_Scroller_Policy policy_h, policy_v;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -216,7 +218,7 @@ external_list_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, c
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_List));
+ mem = external_common_params_parse(Elm_Params_List, data, obj, params);
if (!mem)
return NULL;
@@ -261,7 +263,7 @@ external_list_params_free(void *params)
if (mem->policy_v)
eina_stringshare_del(mem->policy_v);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_list_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_map.c b/TMP/st/elementary/src/edje_externals/elm_map.c
index 3077cf2..4500e7c 100644
--- a/TMP/st/elementary/src/edje_externals/elm_map.c
+++ b/TMP/st/elementary/src/edje_externals/elm_map.c
@@ -4,6 +4,7 @@
typedef struct _Elm_Params_Map
{
+ Elm_Params base;
const char *map_source;
const char *zoom_mode;
double zoom;
@@ -50,6 +51,7 @@ external_map_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from
{
const Elm_Params_Map *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -152,7 +154,7 @@ external_map_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, co
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Map));
+ mem = external_common_params_parse(Elm_Params_Map, data, obj, params);
if (!mem)
return NULL;
@@ -188,7 +190,7 @@ external_map_params_free(void *params)
eina_stringshare_del(mem->map_source);
if (mem->zoom_mode)
eina_stringshare_del(mem->zoom_mode);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_map_params[] =
diff --git a/TMP/st/elementary/src/edje_externals/elm_notify.c b/TMP/st/elementary/src/edje_externals/elm_notify.c
index 3efaa37..0f4673e 100644
--- a/TMP/st/elementary/src/edje_externals/elm_notify.c
+++ b/TMP/st/elementary/src/edje_externals/elm_notify.c
@@ -48,6 +48,7 @@ static void external_notify_state_set(void *data __UNUSED__,
{
const Elm_Params_Notify *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_panes.c b/TMP/st/elementary/src/edje_externals/elm_panes.c
index 38112e1..a1e7201 100644
--- a/TMP/st/elementary/src/edje_externals/elm_panes.c
+++ b/TMP/st/elementary/src/edje_externals/elm_panes.c
@@ -20,6 +20,7 @@ static void external_panes_state_set(void *data __UNUSED__,
{
const Elm_Params_Panes *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_photocam.c b/TMP/st/elementary/src/edje_externals/elm_photocam.c
index f4b942f..c5e2f84 100644
--- a/TMP/st/elementary/src/edje_externals/elm_photocam.c
+++ b/TMP/st/elementary/src/edje_externals/elm_photocam.c
@@ -4,6 +4,7 @@
typedef struct _Elm_Params_Photocam
{
+ Elm_Params base;
const char *file;
double zoom;
const char *zoom_mode;
@@ -34,6 +35,7 @@ external_photocam_state_set(void *data __UNUSED__, Evas_Object *obj, const void
{
const Elm_Params_Photocam *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -150,7 +152,7 @@ external_photocam_params_parse(void *data, Evas_Object *obj, const Eina_List *pa
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Photocam));
+ mem = external_common_params_parse(Elm_Params_Photocam, data, obj, params);
if (!mem)
return NULL;
@@ -191,7 +193,7 @@ external_photocam_params_free(void *params)
eina_stringshare_del(mem->file);
if (mem->zoom_mode)
eina_stringshare_del(mem->zoom_mode);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_photocam_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_progressbar.c b/TMP/st/elementary/src/edje_externals/elm_progressbar.c
index 295ce61..001230b 100644
--- a/TMP/st/elementary/src/edje_externals/elm_progressbar.c
+++ b/TMP/st/elementary/src/edje_externals/elm_progressbar.c
@@ -20,6 +20,7 @@ external_progressbar_state_set(void *data __UNUSED__, Evas_Object *obj, const vo
{
const Elm_Params_Progressbar *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_radio.c b/TMP/st/elementary/src/edje_externals/elm_radio.c
index ab847e4..85ab375 100644
--- a/TMP/st/elementary/src/edje_externals/elm_radio.c
+++ b/TMP/st/elementary/src/edje_externals/elm_radio.c
@@ -14,6 +14,7 @@ external_radio_state_set(void *data __UNUSED__, Evas_Object *obj, const void *fr
{
const Elm_Params_Radio *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_scrolled_entry.c b/TMP/st/elementary/src/edje_externals/elm_scrolled_entry.c
index f81ca62..c441651 100644
--- a/TMP/st/elementary/src/edje_externals/elm_scrolled_entry.c
+++ b/TMP/st/elementary/src/edje_externals/elm_scrolled_entry.c
@@ -2,6 +2,7 @@
typedef struct _Elm_Params_Entry
{
+ Elm_Params base;
const char *text;
Eina_Bool text_set:1;
Eina_Bool editable:1;
@@ -17,6 +18,7 @@ external_scrolled_entry_state_set(void *data __UNUSED__, Evas_Object *obj, const
{
const Elm_Params_Entry *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -125,7 +127,7 @@ external_scrolled_entry_params_parse(void *data __UNUSED__, Evas_Object *obj __U
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Entry));
+ mem = external_common_params_parse(Elm_Params_Entry, data, obj, params);
if (!mem)
return NULL;
@@ -167,7 +169,7 @@ external_scrolled_entry_params_free(void *params)
if (mem->text)
eina_stringshare_del(mem->text);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_scrolled_entry_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_slider.c b/TMP/st/elementary/src/edje_externals/elm_slider.c
index ba76cd4..99280f6 100644
--- a/TMP/st/elementary/src/edje_externals/elm_slider.c
+++ b/TMP/st/elementary/src/edje_externals/elm_slider.c
@@ -22,6 +22,7 @@ external_slider_state_set(void *data __UNUSED__, Evas_Object *obj, const void *f
{
const Elm_Params_Slider *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_slideshow.c b/TMP/st/elementary/src/edje_externals/elm_slideshow.c
index 569f814..fc4a0bf 100644
--- a/TMP/st/elementary/src/edje_externals/elm_slideshow.c
+++ b/TMP/st/elementary/src/edje_externals/elm_slideshow.c
@@ -2,6 +2,7 @@
typedef struct _Elm_Params_Slideshow
{
+ Elm_Params base;
int timeout;
const char *transition;
const char *layout;
@@ -19,6 +20,7 @@ external_slideshow_state_set(void *data __UNUSED__, Evas_Object *obj, const void
{
const Elm_Params_Slideshow *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -126,7 +128,7 @@ external_slideshow_params_parse(void *data, Evas_Object *obj, const Eina_List *p
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Slideshow));
+ mem = external_common_params_parse(Elm_Params_Slideshow, data, obj, params);
if (!mem)
return NULL;
@@ -165,7 +167,7 @@ static Evas_Object *external_slideshow_content_get(void *data __UNUSED__,
static void
external_slideshow_params_free(void *params)
{
- return;
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_slideshow_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_spinner.c b/TMP/st/elementary/src/edje_externals/elm_spinner.c
index e63e45b..6094201 100644
--- a/TMP/st/elementary/src/edje_externals/elm_spinner.c
+++ b/TMP/st/elementary/src/edje_externals/elm_spinner.c
@@ -2,6 +2,7 @@
typedef struct _Elm_Params_Spinner
{
+ Elm_Params base;
const char *label_format;
double min, max, step, value;
Eina_Bool min_exists:1;
@@ -17,6 +18,7 @@ external_spinner_state_set(void *data __UNUSED__, Evas_Object *obj, const void *
{
const Elm_Params_Spinner *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -173,7 +175,7 @@ external_spinner_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Spinner));
+ mem = external_common_params_parse(Elm_Params_Spinner, data, obj, params);
if (!mem)
return NULL;
@@ -225,7 +227,7 @@ external_spinner_params_free(void *params)
if (mem->label_format)
eina_stringshare_del(mem->label_format);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_spinner_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/elm_thumb.c b/TMP/st/elementary/src/edje_externals/elm_thumb.c
index 311ecc9..c3c1092 100644
--- a/TMP/st/elementary/src/edje_externals/elm_thumb.c
+++ b/TMP/st/elementary/src/edje_externals/elm_thumb.c
@@ -4,6 +4,7 @@
typedef struct _Elm_Params_Thumb
{
+ Elm_Params base;
const char *animate;
} Elm_Params_Thumb;
@@ -29,6 +30,7 @@ external_thumb_state_set(void *data __UNUSED__, Evas_Object *obj, const void *fr
{
const Elm_Params_Thumb *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -91,7 +93,7 @@ external_thumb_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Thumb));
+ mem = external_common_params_parse(Elm_Params_Thumb, data, obj, params);
if (!mem)
return NULL;
@@ -118,7 +120,7 @@ external_thumb_params_free(void *params)
if (mem->animate)
eina_stringshare_del(mem->animate);
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_thumb_params[] =
diff --git a/TMP/st/elementary/src/edje_externals/elm_toggle.c b/TMP/st/elementary/src/edje_externals/elm_toggle.c
index 90c4d2c..f45facf 100644
--- a/TMP/st/elementary/src/edje_externals/elm_toggle.c
+++ b/TMP/st/elementary/src/edje_externals/elm_toggle.c
@@ -16,6 +16,7 @@ external_toggle_state_set(void *data __UNUSED__, Evas_Object *obj, const void *f
{
const Elm_Params_Toggle *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
diff --git a/TMP/st/elementary/src/edje_externals/elm_toolbar.c b/TMP/st/elementary/src/edje_externals/elm_toolbar.c
index 27c6f24..b08714b 100644
--- a/TMP/st/elementary/src/edje_externals/elm_toolbar.c
+++ b/TMP/st/elementary/src/edje_externals/elm_toolbar.c
@@ -2,6 +2,7 @@
typedef struct _Elm_Params_Toolbar
{
+ Elm_Params base;
int icon_size;
Eina_Bool icon_size_exists:1;
double align;
@@ -13,6 +14,7 @@ external_toolbar_state_set(void *data __UNUSED__, Evas_Object *obj, const void *
{
const Elm_Params_Toolbar *p;
+ external_common_state_set(data, obj, from_params, to_params, pos);
if (to_params) p = to_params;
else if (from_params) p = from_params;
else return;
@@ -82,7 +84,7 @@ external_toolbar_params_parse(void *data, Evas_Object *obj, const Eina_List *par
Edje_External_Param *param;
const Eina_List *l;
- mem = calloc(1, sizeof(Elm_Params_Toolbar));
+ mem = external_common_params_parse(Elm_Params_Toolbar, data, obj, params);
if (!mem)
return NULL;
@@ -114,7 +116,7 @@ static void
external_toolbar_params_free(void *params)
{
Elm_Params_Toolbar *mem = params;
- free(mem);
+ external_common_params_free(params);
}
static Edje_External_Param_Info external_toolbar_params[] = {
diff --git a/TMP/st/elementary/src/edje_externals/private.h b/TMP/st/elementary/src/edje_externals/private.h
index a4b5a88..5133483 100644
--- a/TMP/st/elementary/src/edje_externals/private.h
+++ b/TMP/st/elementary/src/edje_externals/private.h
@@ -6,6 +6,7 @@
typedef struct {
const char *label;
+ const char *style;
} Elm_Params;
void external_signal(void *data, Evas_Object *obj, const char *signal, const char *source);
@@ -21,6 +22,20 @@ void external_common_icon_param_parse(Evas_Object **icon, Evas_Object *obj, cons
#define DEFINE_EXTERNAL_TYPE(type_name, name) \
+static Eina_Bool \
+_external_##type_name##_param_set(void *data, Evas_Object *obj, const Edje_External_Param *param) \
+{ \
+ if (external_common_param_set(data, obj, param)) \
+ return EINA_TRUE; \
+ return external_##type_name##_param_set(data, obj, param); \
+} \
+static Eina_Bool \
+_external_##type_name##_param_get(void *data, const Evas_Object *obj, Edje_External_Param *param) \
+{ \
+ if (external_common_param_get(data, obj, param)) \
+ return EINA_TRUE; \
+ return external_##type_name##_param_get(data, obj, param); \
+} \
static const char * \
external_##type_name##_label_get(void *data __UNUSED__) \
{ \
@@ -34,8 +49,8 @@ const Edje_External_Type external_##type_name##_type = {\
.add = external_##type_name##_add, \
.state_set = external_##type_name##_state_set, \
.signal_emit = external_signal, \
- .param_set = external_##type_name##_param_set, \
- .param_get = external_##type_name##_param_get, \
+ .param_set = _external_##type_name##_param_set, \
+ .param_get = _external_##type_name##_param_get, \
.params_parse = external_##type_name##_params_parse,\
.params_free = external_##type_name##_params_free, \
.label_get = external_##type_name##_label_get, \
--
1.7.3.1
------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly
Flex(R) Builder(TM)) enable the development of rich applications that run
across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel