[elm_cbhm] move cbhm_help from Elementary.h.in to elm_priv.h
[framework/uifw/elementary.git] / src / lib / elm_priv.h
1 #ifndef ELM_PRIV_H
2 #define ELM_PRIV_H
3 #ifdef HAVE_CONFIG_H
4 # include "elementary_config.h"
5 #endif
6 #ifdef HAVE_ELEMENTARY_X
7 # include <Ecore_X.h>
8 #endif
9 #ifdef HAVE_ELEMENTARY_FB
10 # include <Ecore_Fb.h>
11 #endif
12 #ifdef HAVE_ELEMENTARY_WINCE
13 # include <Ecore_WinCE.h>
14 #endif
15
16 #include "els_pan.h"
17 #include "els_scroller.h"
18 #include "els_box.h"
19 #include "els_icon.h"
20 #include "els_hor_scroller.h"
21 #include "els_touch.h"
22 #include "els_webview.h"
23 #include "els_webview_container.h"
24
25 // FIXME: totally disorganised. clean this up!
26 // 
27 // Why EAPI in a private header ?
28 // EAPI is temporaty - that widget api will change, but makign it EAPI right now to indicate its bound for externalness
29
30 typedef struct _Elm_Config    Elm_Config;
31 typedef struct _Elm_Module    Elm_Module;
32 typedef struct _Elm_Drop_Data Elm_Drop_Data;
33
34 typedef Eina_Bool (*Elm_Drop_Cb) (void *d, Evas_Object *o, Elm_Drop_Data *data);
35
36 struct _Elm_Theme
37 {
38    Eina_List *overlay;
39    Eina_List *themes;
40    Eina_List *extension;
41    Eina_Hash *cache;
42    const char *theme;
43    int ref;
44 };
45
46 typedef enum _Elm_Engine
47 {
48    ELM_SOFTWARE_X11,
49    ELM_SOFTWARE_FB,
50    ELM_SOFTWARE_DIRECTFB,
51    ELM_SOFTWARE_16_X11,
52    ELM_XRENDER_X11,
53    ELM_OPENGL_X11,
54    ELM_SOFTWARE_WIN32,
55    ELM_SOFTWARE_16_WINCE,
56    ELM_SOFTWARE_SDL,
57    ELM_SOFTWARE_16_SDL,
58    ELM_OPENGL_SDL
59 } Elm_Engine;
60
61 typedef enum _Elm_Sel_Type
62 {
63    ELM_SEL_PRIMARY,
64    ELM_SEL_SECONDARY,
65    ELM_SEL_CLIPBOARD,
66    ELM_SEL_XDND,
67    
68    ELM_SEL_MAX,
69 } Elm_Sel_Type;
70
71 typedef enum _Elm_Sel_Format
72 {
73    /** Plain unformated text: Used for things that don't want rich markup */
74    ELM_SEL_FORMAT_TEXT   = 0x01,
75    /** Edje textblock markup, including inline images */
76    ELM_SEL_FORMAT_MARKUP = 0x02,
77    /** Images */
78    ELM_SEL_FORMAT_IMAGE  = 0x04,
79 } Elm_Sel_Format;
80
81 struct _Elm_Drop_Data
82 {
83    int                   x, y;
84    Elm_Sel_Format        format;
85    void                 *data;
86    int                   len;
87 };
88
89 struct _Elm_Config
90 {
91    int engine;
92    int thumbscroll_enable;
93    int thumbscroll_threshhold;
94    double thumbscroll_momentum_threshhold;
95    double thumbscroll_friction;
96    double thumbscroll_bounce_friction;
97    double page_scroll_friction;
98    double bring_in_scroll_friction;
99    double zoom_friction;
100    int thumbscroll_bounce_enable;
101    double scale;
102    int bgpixmap;
103    int compositing;
104    Eina_List *font_dirs;
105    int font_hinting;
106    int image_cache;
107    int font_cache;
108    int finger_size;
109    double fps;
110    const char *theme;
111    const char *modules;
112    int input_panel_enable;
113    int autocapital_allow;
114    int autoperiod_allow;   
115 };
116
117 struct _Elm_Module
118 {
119    int version;
120    const char *name;
121    const char *as;
122    const char *so_path;
123    const char *data_dir;
124    const char *bin_dir;
125    void *handle;
126    void *data;
127    void *api;
128    int (*init_func) (Elm_Module *m);
129    int (*shutdown_func) (Elm_Module *m);
130    int references;
131 };
132
133 #define ELM_NEW(t) calloc(1, sizeof(t))
134
135 void _elm_win_shutdown(void);
136 void _elm_win_rescale(void);
137
138 int _elm_theme_object_set(Evas_Object *parent, Evas_Object *o, const char *clas, const char *group, const char *style);
139 int _elm_theme_object_icon_set(Evas_Object *parent, Evas_Object *o, const char *group, const char *style);
140 int _elm_theme_set(Elm_Theme *th, Evas_Object *o, const char *clas, const char *group, const char *style);
141 int _elm_theme_icon_set(Elm_Theme *th, Evas_Object *o, const char *group, const char *style);
142 int _elm_theme_parse(Elm_Theme *th, const char *theme);
143 void _elm_theme_shutdown(void);
144
145 void _elm_module_init(void);
146 void _elm_module_shutdown(void);
147 void _elm_module_parse(const char *s);
148 Elm_Module *_elm_module_find_as(const char *as);
149 Elm_Module *_elm_module_add(const char *name, const char *as);
150 void _elm_module_del(Elm_Module *m);
151 const void *_elm_module_symbol_get(Elm_Module *m, const char *name);
152     
153 /* FIXME: should this be public? for now - private (but public symbols) */
154 EAPI Evas_Object *elm_widget_add(Evas *evas);
155 EAPI void         elm_widget_del_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj));
156 EAPI void         elm_widget_del_pre_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj));
157 EAPI void         elm_widget_focus_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj));
158 EAPI void         elm_widget_activate_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj));
159 EAPI void         elm_widget_disable_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj));
160 EAPI void         elm_widget_theme_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj));
161 EAPI void         elm_widget_changed_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj));
162 EAPI void         elm_widget_signal_emit_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source));
163 EAPI void         elm_widget_signal_callback_add_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data));
164 EAPI void         elm_widget_signal_callback_del_hook_set(Evas_Object *obj, void *(*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)));
165 EAPI void         elm_widget_theme(Evas_Object *obj);
166 EAPI void         elm_widget_on_focus_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
167 EAPI void         elm_widget_on_change_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
168 #ifdef HAVE_CONFORMANT_AUTOSCROLL
169 EAPI void         elm_widget_imp_region_get_hook_set(Evas_Object *obj, Evas_Object * (*func) (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h), void *data);
170 #endif
171 EAPI void         elm_widget_on_show_region_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data);
172 EAPI void         elm_widget_data_set(Evas_Object *obj, void *data);
173 EAPI void        *elm_widget_data_get(const Evas_Object *obj);
174 EAPI void         elm_widget_sub_object_add(Evas_Object *obj, Evas_Object *sobj);
175 EAPI void         elm_widget_sub_object_del(Evas_Object *obj, Evas_Object *sobj);
176 EAPI void         elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj);
177 EAPI void         elm_widget_hover_object_set(Evas_Object *obj, Evas_Object *sobj);
178 EAPI void         elm_widget_signal_emit(Evas_Object *obj, const char *emission, const char *source);
179 EAPI void         elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data);
180 EAPI void         *elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source));
181 EAPI void         elm_widget_can_focus_set(Evas_Object *obj, int can_focus);
182 EAPI int          elm_widget_can_focus_get(const Evas_Object *obj);
183 EAPI int          elm_widget_focus_get(const Evas_Object *obj);
184 EAPI Evas_Object *elm_widget_focused_object_get(const Evas_Object *obj);
185 EAPI Evas_Object *elm_widget_top_get(const Evas_Object *obj);
186 EAPI int          elm_widget_focus_jump(Evas_Object *obj, int forward);
187 EAPI void         elm_widget_focus_set(Evas_Object *obj, int first);
188 EAPI void         elm_widget_focused_object_clear(Evas_Object *obj);
189 EAPI Evas_Object *elm_widget_parent_get(const Evas_Object *obj);
190 EAPI void         elm_widget_focus_steal(Evas_Object *obj);
191 EAPI void         elm_widget_activate(Evas_Object *obj);
192 EAPI void         elm_widget_change(Evas_Object *obj);
193 EAPI void         elm_widget_disabled_set(Evas_Object *obj, int disabled);
194 EAPI int          elm_widget_disabled_get(const Evas_Object *obj);
195 #ifdef HAVE_CONFORMANT_AUTOSCROLL
196 EAPI Evas_Object *elm_widget_imp_region_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
197 #endif
198 EAPI void         elm_widget_show_region_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
199 EAPI void         elm_widget_show_region_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
200 EAPI void         elm_widget_scroll_hold_push(Evas_Object *obj);
201 EAPI void         elm_widget_scroll_hold_pop(Evas_Object *obj);
202 EAPI int          elm_widget_scroll_hold_get(const Evas_Object *obj);
203 EAPI void         elm_widget_scroll_freeze_push(Evas_Object *obj);
204 EAPI void         elm_widget_scroll_freeze_pop(Evas_Object *obj);
205 EAPI int          elm_widget_scroll_freeze_get(const Evas_Object *obj);
206 EAPI void         elm_widget_scale_set(Evas_Object *obj, double scale);
207 EAPI double       elm_widget_scale_get(const Evas_Object *obj);
208 EAPI void         elm_widget_theme_set(Evas_Object *obj, Elm_Theme *th);
209 EAPI Elm_Theme   *elm_widget_theme_get(const Evas_Object *obj);
210 EAPI void         elm_widget_style_set(Evas_Object *obj, const char *style);
211 EAPI const char  *elm_widget_style_get(const Evas_Object *obj);
212 EAPI void         elm_widget_type_set(Evas_Object *obj, const char *type);
213 EAPI const char  *elm_widget_type_get(const Evas_Object *obj);
214 EAPI void         elm_widget_drag_lock_x_set(Evas_Object *obj, Eina_Bool lock);
215 EAPI void         elm_widget_drag_lock_y_set(Evas_Object *obj, Eina_Bool lock);
216 EAPI Eina_Bool    elm_widget_drag_lock_x_get(const Evas_Object *obj);
217 EAPI Eina_Bool    elm_widget_drag_lock_y_get(const Evas_Object *obj);
218 EAPI int          elm_widget_drag_child_locked_x_get(const Evas_Object *obj);
219 EAPI int          elm_widget_drag_child_locked_y_get(const Evas_Object *obj);
220     
221 EAPI Eina_Bool    elm_widget_is(const Evas_Object *obj);
222 EAPI Evas_Object *elm_widget_parent_widget_get(const Evas_Object *obj);
223
224 EAPI Eina_List   *_elm_stringlist_get(const char *str);
225 EAPI void         _elm_stringlist_free(Eina_List *list);
226
227 Eina_Bool         _elm_widget_type_check(const Evas_Object *obj, const char *type);
228
229 void              _elm_unneed_ethumb(void);
230
231 void              _elm_rescale(void);
232
233 void              _elm_config_init(void);
234 void              _elm_config_sub_init(void);
235 void              _elm_config_shutdown(void);
236
237 Eina_Bool            elm_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const char *buf);
238 Eina_Bool            elm_selection_clear(Elm_Sel_Type selection, Evas_Object *widget);
239 Eina_Bool            elm_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format, Evas_Object *widget);
240 Eina_Bool            elm_drop_target_add(Evas_Object *widget, Elm_Sel_Type, Elm_Drop_Cb, void *);
241 Eina_Bool            elm_drop_target_del(Evas_Object *widget);
242 Eina_Bool            elm_drag_start(Evas_Object *, Elm_Sel_Format, const char *, void (*)(void *,Evas_Object*),void*);
243
244 Eina_Bool         _elm_dangerous_call_check(const char *call);
245
246 void              _elm_widtype_register(const char **ptr);
247
248
249 /* do not use except clipboard history module */
250 EAPI Eina_Bool    elm_cbhm_helper_init(Evas_Object *self);
251 EAPI void         elm_cbhm_send_raw_data(char *cmd);
252
253 #define ELM_SET_WIDTYPE(widtype, type) \
254    do { \
255       if (!widtype) { \
256          widtype = eina_stringshare_add(type); \
257          _elm_widtype_register(&widtype); \
258       } \
259    } while (0)
260
261 //#define ELM_CHECK_WIDTYPE(obj, widtype) if (elm_widget_type_get(obj) != widtype) return
262 #define ELM_CHECK_WIDTYPE(obj, widtype) if (!_elm_widget_type_check((obj), (widtype))) return
263
264 extern char *_elm_appname;
265 extern Elm_Config *_elm_config;
266 extern const char *_elm_data_dir;
267 extern const char *_elm_lib_dir;
268 extern int _elm_log_dom;
269
270 extern Eina_List *_elm_win_list;
271
272 #define CRITICAL(...) EINA_LOG_DOM_CRIT(_elm_log_dom, __VA_ARGS__)
273 #define ERR(...) EINA_LOG_DOM_ERR(_elm_log_dom, __VA_ARGS__)
274 #define WRN(...) EINA_LOG_DOM_WARN(_elm_log_dom, __VA_ARGS__)
275 #define INF(...) EINA_LOG_DOM_INFO(_elm_log_dom, __VA_ARGS__)
276 #define DBG(...) EINA_LOG_DOM_DBG(_elm_log_dom, __VA_ARGS__)
277
278 #endif