eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
eep.i = 0;
- _edje_external_param_get(rp->swallowed_object, &eep);
+ _edje_external_param_get(NULL, rp, &eep);
return eep.i;
}
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
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[]) */
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
eep.d = 0.0;
- _edje_external_param_get(rp->swallowed_object, &eep);
+ _edje_external_param_get(NULL, rp, &eep);
v = eep.d;
return EMBRYO_FLOAT_TO_CELL(v);
}
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
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[]) */
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
eep.s = NULL;
- _edje_external_param_get(rp->swallowed_object, &eep);
+ _edje_external_param_get(NULL, rp, &eep);
if (!eep.s) return 0;
return strlen(eep.s);
}
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
eep.s = NULL;
- _edje_external_param_get(rp->swallowed_object, &eep);
+ _edje_external_param_get(NULL, rp, &eep);
if (!eep.s) goto error;
src_len = strlen(eep.s);
if (src_len < dst_len)
GETSTR(val, params[3]);
if (!val) return 0;
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[]) */
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
eep.s = NULL;
- _edje_external_param_get(rp->swallowed_object, &eep);
+ _edje_external_param_get(NULL, rp, &eep);
if (!eep.s) return 0;
return strlen(eep.s);
}
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE;
eep.s = NULL;
- _edje_external_param_get(rp->swallowed_object, &eep);
+ _edje_external_param_get(NULL, rp, &eep);
if (!eep.s) goto error;
src_len = strlen(eep.s);
if (src_len < dst_len)
GETSTR(val, params[3]);
if (!val) return 0;
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[]) */
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
eep.i = 0;
- _edje_external_param_get(rp->swallowed_object, &eep);
+ _edje_external_param_get(NULL, rp, &eep);
return eep.i;
}
eep.name = param_name;
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
eep.i = params[3];
- return _edje_external_param_set(rp->swallowed_object, &eep);
+ return _edje_external_param_set(NULL, rp, &eep);
}
void
return EINA_FALSE;
}
- return _edje_external_param_set(rp->swallowed_object, param);
+ return _edje_external_param_set(obj, rp, param);
}
/**
return EINA_FALSE;
}
- return _edje_external_param_get(rp->swallowed_object, param);
+ return _edje_external_param_get(obj, rp, param);
}
}
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)
{
- 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;
}
if (!type->param_set)
type->module_name, type->module);
return EINA_FALSE;
}
- return type->param_set(type->data, obj, param);
+ return type->param_set(type->data, swallowed_object, param);
}
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)
{
- 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;
}
if (!type->param_get)
type->module_name, type->module);
return EINA_FALSE;
}
- return type->param_get(type->data, obj, param);
+ return type->param_get(type->data, swallowed_object, param);
}
Evas_Object*
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);
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_get(const Evas_Object *obj, 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_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);
void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings);
void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep,
}
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;
- info = _edje_external_param_info_get(obj, name);
+ info = _edje_external_param_info_get(swallowed_object, name);
if (!info) return NULL;
memset(param, 0, sizeof(*param));
param->name = info->name;
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;
}
if (src_part->part->type == EDJE_PART_TYPE_EXTERNAL)
{
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'",
src_param, src_part->part->name);
if (dst_part->part->type == EDJE_PART_TYPE_EXTERNAL)
{
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'",
dst_param, edje_external_param_type_str(dst_info->type),
if (part->part->type == EDJE_PART_TYPE_EXTERNAL)
{
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'",
param, edje_external_param_type_str(info->type),