forked from enlightenment/efl
allow to edje_object_part_external_param_set/edje_object_part_external_param_get with internal objects too. Currently implemented support for EDJE_PART_TYPE_TEXT and EDJE_PART_TYPE_TEXTBLOCK and param "text".
SVN revision: 54727
This commit is contained in:
parent
249a42185d
commit
f6b5aa850a
|
@ -2568,7 +2568,7 @@ _edje_embryo_fn_external_param_get_int(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
|
||||||
eep.i = 0;
|
eep.i = 0;
|
||||||
_edje_external_param_get(rp->swallowed_object, &eep);
|
_edje_external_param_get(NULL, rp, &eep);
|
||||||
return eep.i;
|
return eep.i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2594,7 +2594,7 @@ _edje_embryo_fn_external_param_set_int(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
|
||||||
eep.i = params[3];
|
eep.i = params[3];
|
||||||
return _edje_external_param_set(rp->swallowed_object, &eep);
|
return _edje_external_param_set(NULL, rp, &eep);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Float:external_param_get_float(id, param_name[]) */
|
/* Float:external_param_get_float(id, param_name[]) */
|
||||||
|
@ -2620,7 +2620,7 @@ _edje_embryo_fn_external_param_get_float(Embryo_Program *ep, Embryo_Cell *params
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
|
||||||
eep.d = 0.0;
|
eep.d = 0.0;
|
||||||
_edje_external_param_get(rp->swallowed_object, &eep);
|
_edje_external_param_get(NULL, rp, &eep);
|
||||||
v = eep.d;
|
v = eep.d;
|
||||||
return EMBRYO_FLOAT_TO_CELL(v);
|
return EMBRYO_FLOAT_TO_CELL(v);
|
||||||
}
|
}
|
||||||
|
@ -2647,7 +2647,7 @@ _edje_embryo_fn_external_param_set_float(Embryo_Program *ep, Embryo_Cell *params
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
|
||||||
eep.d = EMBRYO_CELL_TO_FLOAT(params[3]);
|
eep.d = EMBRYO_CELL_TO_FLOAT(params[3]);
|
||||||
return _edje_external_param_set(rp->swallowed_object, &eep);
|
return _edje_external_param_set(NULL, rp, &eep);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* external_param_get_strlen(id, param_name[]) */
|
/* external_param_get_strlen(id, param_name[]) */
|
||||||
|
@ -2672,7 +2672,7 @@ _edje_embryo_fn_external_param_get_strlen(Embryo_Program *ep, Embryo_Cell *param
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
|
||||||
eep.s = NULL;
|
eep.s = NULL;
|
||||||
_edje_external_param_get(rp->swallowed_object, &eep);
|
_edje_external_param_get(NULL, rp, &eep);
|
||||||
if (!eep.s) return 0;
|
if (!eep.s) return 0;
|
||||||
return strlen(eep.s);
|
return strlen(eep.s);
|
||||||
}
|
}
|
||||||
|
@ -2703,7 +2703,7 @@ _edje_embryo_fn_external_param_get_str(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
|
||||||
eep.s = NULL;
|
eep.s = NULL;
|
||||||
_edje_external_param_get(rp->swallowed_object, &eep);
|
_edje_external_param_get(NULL, rp, &eep);
|
||||||
if (!eep.s) goto error;
|
if (!eep.s) goto error;
|
||||||
src_len = strlen(eep.s);
|
src_len = strlen(eep.s);
|
||||||
if (src_len < dst_len)
|
if (src_len < dst_len)
|
||||||
|
@ -2748,7 +2748,7 @@ _edje_embryo_fn_external_param_set_str(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
GETSTR(val, params[3]);
|
GETSTR(val, params[3]);
|
||||||
if (!val) return 0;
|
if (!val) return 0;
|
||||||
eep.s = val;
|
eep.s = val;
|
||||||
return _edje_external_param_set(rp->swallowed_object, &eep);
|
return _edje_external_param_set(NULL, rp, &eep);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* external_param_get_choice_len(id, param_name[]) */
|
/* external_param_get_choice_len(id, param_name[]) */
|
||||||
|
@ -2773,7 +2773,7 @@ _edje_embryo_fn_external_param_get_choice_len(Embryo_Program *ep, Embryo_Cell *p
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
|
||||||
eep.s = NULL;
|
eep.s = NULL;
|
||||||
_edje_external_param_get(rp->swallowed_object, &eep);
|
_edje_external_param_get(NULL, rp, &eep);
|
||||||
if (!eep.s) return 0;
|
if (!eep.s) return 0;
|
||||||
return strlen(eep.s);
|
return strlen(eep.s);
|
||||||
}
|
}
|
||||||
|
@ -2804,7 +2804,7 @@ _edje_embryo_fn_external_param_get_choice(Embryo_Program *ep, Embryo_Cell *param
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
|
||||||
eep.s = NULL;
|
eep.s = NULL;
|
||||||
_edje_external_param_get(rp->swallowed_object, &eep);
|
_edje_external_param_get(NULL, rp, &eep);
|
||||||
if (!eep.s) goto error;
|
if (!eep.s) goto error;
|
||||||
src_len = strlen(eep.s);
|
src_len = strlen(eep.s);
|
||||||
if (src_len < dst_len)
|
if (src_len < dst_len)
|
||||||
|
@ -2849,7 +2849,7 @@ _edje_embryo_fn_external_param_set_choice(Embryo_Program *ep, Embryo_Cell *param
|
||||||
GETSTR(val, params[3]);
|
GETSTR(val, params[3]);
|
||||||
if (!val) return 0;
|
if (!val) return 0;
|
||||||
eep.s = val;
|
eep.s = val;
|
||||||
return _edje_external_param_set(rp->swallowed_object, &eep);
|
return _edje_external_param_set(NULL, rp, &eep);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* external_param_get_bool(id, param_name[]) */
|
/* external_param_get_bool(id, param_name[]) */
|
||||||
|
@ -2874,7 +2874,7 @@ _edje_embryo_fn_external_param_get_bool(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
|
||||||
eep.i = 0;
|
eep.i = 0;
|
||||||
_edje_external_param_get(rp->swallowed_object, &eep);
|
_edje_external_param_get(NULL, rp, &eep);
|
||||||
return eep.i;
|
return eep.i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2900,7 +2900,7 @@ _edje_embryo_fn_external_param_set_bool(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
eep.name = param_name;
|
eep.name = param_name;
|
||||||
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
|
||||||
eep.i = params[3];
|
eep.i = params[3];
|
||||||
return _edje_external_param_set(rp->swallowed_object, &eep);
|
return _edje_external_param_set(NULL, rp, &eep);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -125,7 +125,7 @@ edje_object_part_external_param_set(Evas_Object *obj, const char *part, const Ed
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _edje_external_param_set(rp->swallowed_object, param);
|
return _edje_external_param_set(obj, rp, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -174,7 +174,7 @@ edje_object_part_external_param_get(const Evas_Object *obj, const char *part, Ed
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _edje_external_param_get(rp->swallowed_object, param);
|
return _edje_external_param_get(obj, rp, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -585,12 +585,23 @@ _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *s
|
||||||
}
|
}
|
||||||
|
|
||||||
Eina_Bool
|
Eina_Bool
|
||||||
_edje_external_param_set(Evas_Object *obj, const Edje_External_Param *param)
|
_edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param)
|
||||||
{
|
{
|
||||||
Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
|
Evas_Object *swallowed_object = rp->swallowed_object;
|
||||||
|
Edje_External_Type *type = evas_object_data_get(swallowed_object, "Edje_External_Type");
|
||||||
if (!type)
|
if (!type)
|
||||||
{
|
{
|
||||||
ERR("no external type for object %p", obj);
|
if ((rp->part->type == EDJE_PART_TYPE_TEXT) ||
|
||||||
|
(rp->part->type == EDJE_PART_TYPE_TEXTBLOCK))
|
||||||
|
{
|
||||||
|
if ((param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) &&
|
||||||
|
(!strcmp (param->name, "text")) && (obj))
|
||||||
|
{
|
||||||
|
return edje_object_part_text_set(obj, rp->part->name, param->s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ERR("no external type for object %p", swallowed_object);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
if (!type->param_set)
|
if (!type->param_set)
|
||||||
|
@ -599,16 +610,28 @@ _edje_external_param_set(Evas_Object *obj, const Edje_External_Param *param)
|
||||||
type->module_name, type->module);
|
type->module_name, type->module);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
return type->param_set(type->data, obj, param);
|
return type->param_set(type->data, swallowed_object, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
Eina_Bool
|
Eina_Bool
|
||||||
_edje_external_param_get(const Evas_Object *obj, Edje_External_Param *param)
|
_edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param)
|
||||||
{
|
{
|
||||||
Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
|
Evas_Object *swallowed_object = rp->swallowed_object;
|
||||||
|
Edje_External_Type *type = evas_object_data_get(swallowed_object, "Edje_External_Type");
|
||||||
if (!type)
|
if (!type)
|
||||||
{
|
{
|
||||||
ERR("no external type for object %p", obj);
|
if ((rp->part->type == EDJE_PART_TYPE_TEXT) ||
|
||||||
|
(rp->part->type == EDJE_PART_TYPE_TEXTBLOCK))
|
||||||
|
{
|
||||||
|
const char *text;
|
||||||
|
param->type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
|
||||||
|
param->name = "text";
|
||||||
|
text = edje_object_part_text_get(obj, rp->part->name);
|
||||||
|
strcpy (param->s, text);
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ERR("no external type for object %p", swallowed_object);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
if (!type->param_get)
|
if (!type->param_get)
|
||||||
|
@ -617,7 +640,7 @@ _edje_external_param_get(const Evas_Object *obj, Edje_External_Param *param)
|
||||||
type->module_name, type->module);
|
type->module_name, type->module);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
return type->param_get(type->data, obj, param);
|
return type->param_get(type->data, swallowed_object, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
Evas_Object*
|
Evas_Object*
|
||||||
|
|
|
@ -1770,8 +1770,8 @@ void _edje_external_init();
|
||||||
void _edje_external_shutdown();
|
void _edje_external_shutdown();
|
||||||
Evas_Object *_edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name);
|
Evas_Object *_edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name);
|
||||||
void _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *source);
|
void _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *source);
|
||||||
Eina_Bool _edje_external_param_set(Evas_Object *obj, const Edje_External_Param *param) EINA_ARG_NONNULL(1, 2);
|
Eina_Bool _edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param) EINA_ARG_NONNULL(1, 2);
|
||||||
Eina_Bool _edje_external_param_get(const Evas_Object *obj, Edje_External_Param *param) EINA_ARG_NONNULL(1, 2);
|
Eina_Bool _edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param) EINA_ARG_NONNULL(1, 2);
|
||||||
Evas_Object *_edje_external_content_get(const Evas_Object *obj, const char *content) EINA_ARG_NONNULL(1, 2);
|
Evas_Object *_edje_external_content_get(const Evas_Object *obj, const char *content) EINA_ARG_NONNULL(1, 2);
|
||||||
void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings);
|
void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings);
|
||||||
void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
||||||
|
|
|
@ -1387,17 +1387,18 @@ _edje_external_param_info_get(const Evas_Object *obj, const char *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Edje_External_Param *
|
static Edje_External_Param *
|
||||||
_edje_param_external_get(const Evas_Object *obj, const char *name, Edje_External_Param *param)
|
_edje_param_external_get(Edje_Real_Part *rp, const char *name, Edje_External_Param *param)
|
||||||
{
|
{
|
||||||
|
Evas_Object *swallowed_object = rp->swallowed_object;
|
||||||
const Edje_External_Param_Info *info;
|
const Edje_External_Param_Info *info;
|
||||||
|
|
||||||
info = _edje_external_param_info_get(obj, name);
|
info = _edje_external_param_info_get(swallowed_object, name);
|
||||||
if (!info) return NULL;
|
if (!info) return NULL;
|
||||||
|
|
||||||
memset(param, 0, sizeof(*param));
|
memset(param, 0, sizeof(*param));
|
||||||
param->name = info->name;
|
param->name = info->name;
|
||||||
param->type = info->type;
|
param->type = info->type;
|
||||||
if (!_edje_external_param_get(obj, param)) return NULL;
|
if (!_edje_external_param_get(NULL, rp, param)) return NULL;
|
||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1999,7 +2000,7 @@ _edje_param_copy(Edje_Real_Part *src_part, const char *src_param, Edje_Real_Part
|
||||||
if (src_part->part->type == EDJE_PART_TYPE_EXTERNAL)
|
if (src_part->part->type == EDJE_PART_TYPE_EXTERNAL)
|
||||||
{
|
{
|
||||||
if (!_edje_param_external_get
|
if (!_edje_param_external_get
|
||||||
(src_part->swallowed_object, src_param, &val))
|
(src_part, src_param, &val))
|
||||||
{
|
{
|
||||||
ERR("cannot get parameter '%s' of part '%s'",
|
ERR("cannot get parameter '%s' of part '%s'",
|
||||||
src_param, src_part->part->name);
|
src_param, src_part->part->name);
|
||||||
|
@ -2034,7 +2035,7 @@ _edje_param_copy(Edje_Real_Part *src_part, const char *src_param, Edje_Real_Part
|
||||||
if (dst_part->part->type == EDJE_PART_TYPE_EXTERNAL)
|
if (dst_part->part->type == EDJE_PART_TYPE_EXTERNAL)
|
||||||
{
|
{
|
||||||
val.name = dst_param;
|
val.name = dst_param;
|
||||||
if (!_edje_external_param_set(dst_part->swallowed_object, &val))
|
if (!_edje_external_param_set(NULL, dst_part, &val))
|
||||||
{
|
{
|
||||||
ERR("failed to set parameter '%s' (%s) of part '%s'",
|
ERR("failed to set parameter '%s' (%s) of part '%s'",
|
||||||
dst_param, edje_external_param_type_str(dst_info->type),
|
dst_param, edje_external_param_type_str(dst_info->type),
|
||||||
|
@ -2099,7 +2100,7 @@ _edje_param_set(Edje_Real_Part *part, const char *param, const char *value)
|
||||||
if (part->part->type == EDJE_PART_TYPE_EXTERNAL)
|
if (part->part->type == EDJE_PART_TYPE_EXTERNAL)
|
||||||
{
|
{
|
||||||
val.name = param;
|
val.name = param;
|
||||||
if (!_edje_external_param_set(part->swallowed_object, &val))
|
if (!_edje_external_param_set(NULL, part, &val))
|
||||||
{
|
{
|
||||||
ERR("failed to set parameter '%s' (%s) of part '%s'",
|
ERR("failed to set parameter '%s' (%s) of part '%s'",
|
||||||
param, edje_external_param_type_str(info->type),
|
param, edje_external_param_type_str(info->type),
|
||||||
|
|
Loading…
Reference in New Issue