another useful function

SVN revision: 47564
This commit is contained in:
Gustavo Sverzut Barbieri 2010-03-29 19:32:45 +00:00
parent 4981652e8c
commit 1bb3339188
2 changed files with 49 additions and 0 deletions

View File

@ -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);

View File

@ -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.
*