2 # include "elementary_config.h"
4 #include "Elementary.h"
11 void external_elm_init(void);
12 void external_signal(void *data, Evas_Object *obj, const char *signal, const char *source);
13 void external_signals_proxy(Evas_Object *obj, Evas_Object *edje, const char *part_name);
14 const char *external_translate(void *data, const char *orig);
15 void external_common_params_free(void *params);
16 void *external_common_params_parse_internal(size_t params_size, void *data, Evas_Object *obj, const Eina_List *params);
17 Evas_Object *external_common_param_icon_get(Evas_Object *obj, const Edje_External_Param *param);
18 Evas_Object *external_common_param_edje_object_get(Evas_Object *obj, const Edje_External_Param *p);
19 void external_common_icon_param_parse(Evas_Object **icon, Evas_Object *obj, const Eina_List *params);
20 Eina_Bool external_common_param_get(void *data, const Evas_Object *obj, Edje_External_Param *param);
21 Eina_Bool external_common_param_set(void *data, Evas_Object *obj, const Edje_External_Param *param);
22 void external_common_state_set(void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos);
23 void external_common_params_parse(void *mem, void *data, Evas_Object *obj, const Eina_List *params);
25 #define DEFINE_EXTERNAL_TYPE(type_name, name) \
27 _external_##type_name##_param_set(void *data, Evas_Object *obj, const Edje_External_Param *param) \
29 if (external_common_param_set(data, obj, param)) \
31 return external_##type_name##_param_set(data, obj, param); \
34 _external_##type_name##_param_get(void *data, const Evas_Object *obj, Edje_External_Param *param) \
36 if (external_common_param_get(data, obj, param)) \
38 return external_##type_name##_param_get(data, obj, param); \
41 external_##type_name##_label_get(void *data __UNUSED__) \
47 _external_##type_name##_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) \
49 external_common_state_set(data, obj, from_params, to_params, pos); \
50 external_##type_name##_state_set(data, obj, from_params, to_params, pos); \
54 _external_##type_name##_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params) \
56 void *mem = external_##type_name##_params_parse(data, obj, params); \
57 external_common_params_parse(mem, data, obj, params); \
61 _external_##type_name##_params_free(void *params) \
63 external_common_params_free(params); \
64 external_##type_name##_params_free(params); \
67 const Edje_External_Type external_##type_name##_type = {\
68 .abi_version = EDJE_EXTERNAL_TYPE_ABI_VERSION, \
70 .module_name = "Elementary", \
71 .add = external_##type_name##_add, \
72 .state_set = _external_##type_name##_state_set, \
73 .signal_emit = external_signal, \
74 .param_set = _external_##type_name##_param_set, \
75 .param_get = _external_##type_name##_param_get, \
76 .params_parse = _external_##type_name##_params_parse,\
77 .params_free = _external_##type_name##_params_free, \
78 .label_get = external_##type_name##_label_get, \
79 .content_get = external_##type_name##_content_get, \
80 .description_get = NULL, \
81 .icon_add = external_##type_name##_icon_add, \
82 .preview_add = NULL, \
83 .translate = external_translate, \
84 .parameters_info = external_##type_name##_params, \
88 #define DEFINE_EXTERNAL_TYPE_SIMPLE(type_name, name) \
89 static Evas_Object * \
90 external_##type_name##_add(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *edje, const Eina_List *params __UNUSED__, const char *part_name) \
92 Evas_Object *parent, *obj; \
93 external_elm_init(); \
94 parent = elm_widget_parent_widget_get(edje); \
95 if (!parent) parent = edje; \
96 obj = elm_##type_name##_add(parent); \
97 external_signals_proxy(obj, edje, part_name); \
101 DEFINE_EXTERNAL_TYPE(type_name, name)
103 #define DEFINE_EXTERNAL_ICON_ADD(type_name, name) \
105 external_##type_name##_icon_add(void *data __UNUSED__, Evas *e) { \
107 int w = 20, h = 10; \
109 ic = edje_object_add(e); \
110 edje_object_file_set(ic, PACKAGE_DATA_DIR"/edje_externals/icons.edj", "ico_"name);\
111 evas_object_size_hint_min_set(ic, w, h); \
112 evas_object_size_hint_max_set(ic, w, h); \
117 #define DEFINE_EXTERNAL_COMMON_PARAMS \
118 EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT("style", "default")