Add type bool to external parameters

Patch by glima


SVN revision: 44308
This commit is contained in:
Iván Briano 2009-12-09 06:51:13 +00:00
parent aad24b249c
commit 836496c265
2 changed files with 35 additions and 4 deletions

View File

@ -244,6 +244,7 @@ enum _Edje_External_Param_Type
EDJE_EXTERNAL_PARAM_TYPE_INT,
EDJE_EXTERNAL_PARAM_TYPE_DOUBLE,
EDJE_EXTERNAL_PARAM_TYPE_STRING,
EDJE_EXTERNAL_PARAM_TYPE_BOOL,
EDJE_EXTERNAL_PARAM_TYPE_MAX
};
typedef enum _Edje_External_Param_Type Edje_External_Param_Type;
@ -287,6 +288,12 @@ struct _Edje_External_Param_Info
const char *accept_fmt;
const char *deny_fmt;
} s;
struct
{
int def;
const char *false_str;
const char *true_str;
} b;
} info;
};
typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
@ -297,6 +304,8 @@ typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
{name, EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, {.d = {def, min, max, step}}}
#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, accept, deny) \
{name, EDJE_EXTERNAL_PARAM_TYPE_STRING, {.s = {def, accept, deny}}}
#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, false_str, true_str) \
{name, EDJE_EXTERNAL_PARAM_TYPE_BOOL, {.b = {def, false_str, true_str}}}
#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, def) \
EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET)
@ -304,6 +313,8 @@ typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET)
#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, def) \
EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, NULL, NULL)
#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, def) \
EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, "false", "true")
#define EDJE_EXTERNAL_PARAM_INFO_INT(name) \
EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, 0)
@ -311,6 +322,8 @@ typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, 0.0)
#define EDJE_EXTERNAL_PARAM_INFO_STRING(name) \
EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, NULL)
#define EDJE_EXTERNAL_PARAM_INFO_BOOL(name) \
EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, 0)
#define EDJE_EXTERNAL_PARAM_INFO_SENTINEL {NULL, 0, {.s = {NULL, NULL, NULL}}}
@ -519,6 +532,7 @@ extern "C" {
EAPI Eina_Bool edje_external_param_int_get(const Eina_List *params, const char *key, int *ret);
EAPI Eina_Bool edje_external_param_double_get(const Eina_List *params, const char *key, double *ret);
EAPI Eina_Bool edje_external_param_string_get(const Eina_List *params, const char *key, const char **ret);
EAPI Eina_Bool edje_external_param_bool_get(const Eina_List *params, const char *key, const char **ret);
EAPI const Edje_External_Param_Info *edje_external_param_info_get(const char *type_name);
/* edje_module.c */

View File

@ -221,6 +221,23 @@ edje_external_param_string_get(const Eina_List *params, const char *key, const c
return EINA_FALSE;
}
EAPI Eina_Bool
edje_external_param_bool_get(const Eina_List *params, const char *key, const char **ret)
{
Edje_External_Param *param;
if (!params) return EINA_FALSE;
param = edje_external_param_find(params, key);
if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL && ret)
{
*ret = param->i;
return EINA_TRUE;
}
return EINA_FALSE;
}
EAPI const Edje_External_Param_Info *
edje_external_param_info_get(const char *type_name)
{