aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/elementary/src/edje_externals/private.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/elementary/src/edje_externals/private.h')
-rw-r--r--libraries/elementary/src/edje_externals/private.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/libraries/elementary/src/edje_externals/private.h b/libraries/elementary/src/edje_externals/private.h
new file mode 100644
index 0000000..4d63b0c
--- /dev/null
+++ b/libraries/elementary/src/edje_externals/private.h
@@ -0,0 +1,135 @@
1#ifdef HAVE_CONFIG_H
2# include "elementary_config.h"
3#endif
4#include "Elementary.h"
5#include "elm_priv.h"
6
7#undef CRITICAL
8#undef ERR
9#undef WRN
10#undef INF
11#undef DBG
12
13#define CRITICAL(...) EINA_LOG_DOM_CRIT(_elm_ext_log_dom, __VA_ARGS__)
14#define ERR(...) EINA_LOG_DOM_ERR (_elm_ext_log_dom, __VA_ARGS__)
15#define WRN(...) EINA_LOG_DOM_WARN(_elm_ext_log_dom, __VA_ARGS__)
16#define INF(...) EINA_LOG_DOM_INFO(_elm_ext_log_dom, __VA_ARGS__)
17#define DBG(...) EINA_LOG_DOM_DBG (_elm_ext_log_dom, __VA_ARGS__)
18
19typedef struct {
20 const char *style;
21 Eina_Bool disabled:1;
22 Eina_Bool disabled_exists:1;
23} Elm_Params;
24
25extern int _elm_ext_log_dom;
26
27void external_elm_init(void);
28void external_signal(void *data, Evas_Object *obj, const char *signal, const char *source);
29void external_signals_proxy(Evas_Object *obj, Evas_Object *edje, const char *part_name);
30const char *external_translate(void *data, const char *orig);
31void external_common_params_free(void *params);
32void *external_common_params_parse_internal(size_t params_size, void *data, Evas_Object *obj, const Eina_List *params);
33Evas_Object *external_common_param_icon_get(Evas_Object *obj, const Edje_External_Param *param);
34Evas_Object *external_common_param_edje_object_get(Evas_Object *obj, const Edje_External_Param *p);
35void external_common_icon_param_parse(Evas_Object **icon, Evas_Object *obj, const Eina_List *params);
36Eina_Bool external_common_param_get(void *data, const Evas_Object *obj, Edje_External_Param *param);
37Eina_Bool external_common_param_set(void *data, Evas_Object *obj, const Edje_External_Param *param);
38void external_common_state_set(void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos);
39void external_common_params_parse(void *mem, void *data, Evas_Object *obj, const Eina_List *params);
40
41#define DEFINE_EXTERNAL_TYPE(type_name, name) \
42static Eina_Bool \
43_external_##type_name##_param_set(void *data, Evas_Object *obj, const Edje_External_Param *param) \
44{ \
45 if (external_common_param_set(data, obj, param)) \
46 return EINA_TRUE; \
47 return external_##type_name##_param_set(data, obj, param); \
48} \
49static Eina_Bool \
50_external_##type_name##_param_get(void *data, const Evas_Object *obj, Edje_External_Param *param) \
51{ \
52 if (external_common_param_get(data, obj, param)) \
53 return EINA_TRUE; \
54 return external_##type_name##_param_get(data, obj, param); \
55} \
56static const char * \
57external_##type_name##_label_get(void *data __UNUSED__) \
58{ \
59 return name; \
60} \
61 \
62static void \
63_external_##type_name##_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) \
64{ \
65 external_common_state_set(data, obj, from_params, to_params, pos); \
66 external_##type_name##_state_set(data, obj, from_params, to_params, pos); \
67} \
68 \
69static void * \
70_external_##type_name##_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params) \
71{ \
72 void *mem = external_##type_name##_params_parse(data, obj, params); \
73 external_common_params_parse(mem, data, obj, params); \
74 return mem; \
75} \
76static void \
77_external_##type_name##_params_free(void *params) \
78{ \
79 external_common_params_free(params); \
80 external_##type_name##_params_free(params); \
81} \
82 \
83const Edje_External_Type external_##type_name##_type = {\
84 .abi_version = EDJE_EXTERNAL_TYPE_ABI_VERSION, \
85 .module = "elm", \
86 .module_name = "Elementary", \
87 .add = external_##type_name##_add, \
88 .state_set = _external_##type_name##_state_set, \
89 .signal_emit = external_signal, \
90 .param_set = _external_##type_name##_param_set, \
91 .param_get = _external_##type_name##_param_get, \
92 .params_parse = _external_##type_name##_params_parse,\
93 .params_free = _external_##type_name##_params_free, \
94 .label_get = external_##type_name##_label_get, \
95 .content_get = external_##type_name##_content_get, \
96 .description_get = NULL, \
97 .icon_add = external_##type_name##_icon_add, \
98 .preview_add = NULL, \
99 .translate = external_translate, \
100 .parameters_info = external_##type_name##_params, \
101 .data = NULL \
102};
103
104#define DEFINE_EXTERNAL_TYPE_SIMPLE(type_name, name) \
105static Evas_Object * \
106external_##type_name##_add(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *edje, const Eina_List *params __UNUSED__, const char *part_name) \
107{ \
108 Evas_Object *parent, *obj; \
109 external_elm_init(); \
110 parent = elm_widget_parent_widget_get(edje); \
111 if (!parent) parent = edje; \
112 obj = elm_##type_name##_add(parent); \
113 external_signals_proxy(obj, edje, part_name); \
114 return obj; \
115} \
116 \
117DEFINE_EXTERNAL_TYPE(type_name, name)
118
119#define DEFINE_EXTERNAL_ICON_ADD(type_name, name) \
120Evas_Object * \
121external_##type_name##_icon_add(void *data __UNUSED__, Evas *e) { \
122 Evas_Object *ic; \
123 int w = 20, h = 10; \
124 \
125 ic = edje_object_add(e); \
126 edje_object_file_set(ic, PACKAGE_DATA_DIR"/edje_externals/icons.edj", "ico_"name);\
127 evas_object_size_hint_min_set(ic, w, h); \
128 evas_object_size_hint_max_set(ic, w, h); \
129 \
130 return ic; \
131}
132
133#define DEFINE_EXTERNAL_COMMON_PARAMS \
134 EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT("style", "default"), \
135 EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT("disabled", EINA_FALSE)