diff options
Diffstat (limited to 'libraries/elementary/src/edje_externals/private.h')
-rw-r--r-- | libraries/elementary/src/edje_externals/private.h | 135 |
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 | |||
19 | typedef struct { | ||
20 | const char *style; | ||
21 | Eina_Bool disabled:1; | ||
22 | Eina_Bool disabled_exists:1; | ||
23 | } Elm_Params; | ||
24 | |||
25 | extern int _elm_ext_log_dom; | ||
26 | |||
27 | void external_elm_init(void); | ||
28 | void external_signal(void *data, Evas_Object *obj, const char *signal, const char *source); | ||
29 | void external_signals_proxy(Evas_Object *obj, Evas_Object *edje, const char *part_name); | ||
30 | const char *external_translate(void *data, const char *orig); | ||
31 | void external_common_params_free(void *params); | ||
32 | void *external_common_params_parse_internal(size_t params_size, void *data, Evas_Object *obj, const Eina_List *params); | ||
33 | Evas_Object *external_common_param_icon_get(Evas_Object *obj, const Edje_External_Param *param); | ||
34 | Evas_Object *external_common_param_edje_object_get(Evas_Object *obj, const Edje_External_Param *p); | ||
35 | void external_common_icon_param_parse(Evas_Object **icon, Evas_Object *obj, const Eina_List *params); | ||
36 | Eina_Bool external_common_param_get(void *data, const Evas_Object *obj, Edje_External_Param *param); | ||
37 | Eina_Bool external_common_param_set(void *data, Evas_Object *obj, const Edje_External_Param *param); | ||
38 | void external_common_state_set(void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos); | ||
39 | void external_common_params_parse(void *mem, void *data, Evas_Object *obj, const Eina_List *params); | ||
40 | |||
41 | #define DEFINE_EXTERNAL_TYPE(type_name, name) \ | ||
42 | static 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 | } \ | ||
49 | static 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 | } \ | ||
56 | static const char * \ | ||
57 | external_##type_name##_label_get(void *data __UNUSED__) \ | ||
58 | { \ | ||
59 | return name; \ | ||
60 | } \ | ||
61 | \ | ||
62 | static 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 | \ | ||
69 | static 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 | } \ | ||
76 | static 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 | \ | ||
83 | const 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) \ | ||
105 | static Evas_Object * \ | ||
106 | external_##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 | \ | ||
117 | DEFINE_EXTERNAL_TYPE(type_name, name) | ||
118 | |||
119 | #define DEFINE_EXTERNAL_ICON_ADD(type_name, name) \ | ||
120 | Evas_Object * \ | ||
121 | external_##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) | ||