From 1bb33391885bd599125cfb39de110bb9e0905a45 Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Mon, 29 Mar 2010 19:32:45 +0000 Subject: [PATCH] another useful function SVN revision: 47564 --- legacy/edje/src/lib/Edje.h | 1 + legacy/edje/src/lib/edje_external.c | 48 +++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h index e3eb125664..9f8a1cd189 100644 --- a/legacy/edje/src/lib/Edje.h +++ b/legacy/edje/src/lib/Edje.h @@ -510,6 +510,7 @@ extern "C" { EAPI Evas_Object *edje_object_part_external_object_get(const Evas_Object *obj, const char *part); EAPI Eina_Bool edje_object_part_external_param_set(Evas_Object *obj, const char *part, const Edje_External_Param *param); EAPI Eina_Bool edje_object_part_external_param_get(const Evas_Object *obj, const char *part, Edje_External_Param *param); + EAPI Edje_External_Param_Type edje_object_part_external_param_type_get(const Evas_Object *obj, const char *part, const char *param); EAPI Eina_Bool edje_object_part_box_append (Evas_Object *obj, const char *part, Evas_Object *child); EAPI Eina_Bool edje_object_part_box_prepend (Evas_Object *obj, const char *part, Evas_Object *child); diff --git a/legacy/edje/src/lib/edje_external.c b/legacy/edje/src/lib/edje_external.c index 496ba31b8f..1512942815 100644 --- a/legacy/edje/src/lib/edje_external.c +++ b/legacy/edje/src/lib/edje_external.c @@ -173,6 +173,54 @@ edje_object_part_external_param_get(const Evas_Object *obj, const char *part, Ed return _edje_external_param_get(rp->swallowed_object, param); } +/** + * Facility to query the type of the given parameter of the given part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param param the parameter name to use. + * + * @return @c EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value + * from #Edje_External_Param_Type on success. + */ +EAPI Edje_External_Param_Type +edje_object_part_external_param_type_get(const Evas_Object *obj, const char *part, const char *param) +{ + Edje *ed; + Edje_Real_Part *rp; + Edje_External_Type *type; + Edje_External_Param_Info *info; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EDJE_EXTERNAL_PARAM_TYPE_MAX; + + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) + { + ERR("no part '%s'", part); + return EDJE_EXTERNAL_PARAM_TYPE_MAX; + } + type = evas_object_data_get(obj, "Edje_External_Type"); + if (!type) + { + ERR("no external type for object %p", obj); + return EDJE_EXTERNAL_PARAM_TYPE_MAX; + } + if (!type->parameters_info) + { + ERR("no parameters information for external type '%s'", + type->module_name); + return EDJE_EXTERNAL_PARAM_TYPE_MAX; + } + for (info = type->parameters_info; info->name != NULL; info++) + if (strcmp(info->name, param) == 0) + return info->type; + + ERR("no parameter '%s' external type '%s'", param, type->module_name); + return EDJE_EXTERNAL_PARAM_TYPE_MAX; +} + + /** * Register given type name to return the given information. *