From: Jeonghyun Yun <jh0506.yun@samsung.com>
[framework/uifw/elementary.git] / src / lib / Elementary.h.in
1 /*
2  *
3  * vim:ts=8:sw=3:sts=3:expandtab:cino=>5n-3f0^-2{2(0W1st0
4  */
5
6 /**
7 @file elementary.dox
8 @brief Elementary Widget Library
9 */
10
11 /**
12 @mainpage Elementary
13 @image html  elementary.png
14 @version @PACKAGE_VERSION@
15 @author Carsten Haitzler <raster@@rasterman.com>
16 @author Gustavo Sverzut Barbieri <barbieri@@profusion.mobi>
17 @author Cedric Bail <cedric.bail@@free.fr>
18 @author Vincent Torri <vtorri@@univ-evry.fr>
19 @author Daniel Kolesa <quaker66@@gmail.com>
20 @author Jaime Thomas <avi.thomas@@gmail.com>
21 @author Swisscom - http://www.swisscom.ch/
22 @author Christopher Michael <devilhorns@@comcast.net>
23 @author Marco Trevisan (Treviño) <mail@@3v1n0.net>
24 @author Michael Bouchaud <michael.bouchaud@@gmail.com>
25 @author Jonathan Atton (Watchwolf) <jonathan.atton@@gmail.com>
26 @author Brian Wang <brian.wang.0721@@gmail.com>
27 @author Mike Blumenkrantz (zmike) <mike@@zentific.com>
28 @author Samsung Electronics <tbd>
29 @author Samsung SAIT <tbd>
30 @author Brett Nash <nash@@nash.id.au>
31 @author Bruno Dilly <bdilly@@profusion.mobi>
32 @author Rafael Fonseca <rfonseca@@profusion.mobi>
33 @author Chuneon Park <chuneon.park@@samsung.com>
34 @author Woohyun Jung <wh0705.jung@@samsung.com>
35 @author Jaehwan Kim <jae.hwan.kim@@samsung.com>
36 @author Wonguk Jeong <wonguk.jeong@@samsung.com>
37 @author Leandro A. F. Pereira <leandro@@profusion.mobi>
38 @author Helen Fornazier <helen.fornazier@@profusion.mobi>
39 @author Gustavo Lima Chaves <glima@@profusion.mobi>
40 @author Fabiano Fidêncio <fidencio@@profusion.mobi>
41 @author Tiago Falcão <tiago@@profusion.mobi>
42 @author Otavio Pontes <otavio@@profusion.mobi>
43 @author Viktor Kojouharov <vkojouharov@@gmail.com>
44 @author Daniel Juyung Seo (SeoZ) <juyung.seo@@samsung.com> <seojuyung2@@gmail.com>
45 @author Sangho Park <sangho.g.park@@samsung.com> <gouache95@@gmail.com>
46 @author Rajeev Ranjan (Rajeev) <rajeev.r@@samsung.com> <rajeev.jnnce@@gmail.com>
47 @author Seunggyun Kim <sgyun.kim@@samsung.com> <tmdrbs@@gmail.com>
48 @author Sohyun Kim <anna1014.kim@@samsung.com> <sohyun.anna@@gmail.com>
49 @author Jihoon Kim <jihoon48.kim@@samsung.com>
50 @author Jeonghyun Yun (arosis) <jh0506.yun@@samsung.com>
51 @author Tom Hacohen <tom@@stosb.com>
52 @author Aharon Hillel <a.hillel@@partner.samsung.com>
53 @author Jonathan Atton (Watchwolf) <jonathan.atton@@gmail.com>
54 @author Shinwoo Kim <kimcinoo@@gmail.com>
55 @author Govindaraju SM <govi.sm@@samsung.com> <govism@@gmail.com>
56 @author Prince Kumar Dubey <prince.dubey@@samsung.com> <prince.dubey@@gmail.com>
57 @date 2008-2011
58
59 @section intro What is Elementary?
60
61 This is a VERY SIMPLE toolkit. It is not meant for writing extensive desktop
62 applications (yet). Small simple ones with simple needs.
63
64 It is meant to make the programmers work almost brainless but give them lots
65 of flexibility.
66
67 License: LGPL v2 (see COPYING in the base of Elementary's source). This
68 applies to all files in the source here.
69
70 Acknowledgements: There is a lot that goes into making a widget set, and
71 they don't happen out of nothing. It's like trying to make everyone
72 everywhere happy, regardless of age, gender, race or nationality - and
73 that is really tough. So thanks to people and organisations behind this,
74 aslisted in the Authors section above.
75
76 @verbatim
77 Pants
78 @endverbatim
79 */
80
81 #ifndef ELEMENTARY_H
82 #define ELEMENTARY_H
83
84 /**
85  * @file Elementary.h
86  * @brief Elementary's API
87  *
88  * Elementary API.
89  */
90
91 @ELM_UNIX_DEF@ ELM_UNIX
92 @ELM_WIN32_DEF@ ELM_WIN32
93 @ELM_WINCE_DEF@ ELM_WINCE
94 @ELM_EDBUS_DEF@ ELM_EDBUS
95 @ELM_EFREET_DEF@ ELM_EFREET
96 @ELM_ETHUMB_DEF@ ELM_ETHUMB
97 @ELM_DEBUG_DEF@ ELM_DEBUG
98 @ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H
99 @ELM_LIBINTL_H_DEF@ ELM_LIBINTL_H
100
101 /* Standard headers for standard system calls etc. */
102 #include <stdio.h>
103 #include <stdlib.h>
104 #include <unistd.h>
105 #include <string.h>
106 #include <sys/types.h>
107 #include <sys/stat.h>
108 #include <sys/time.h>
109 #include <sys/param.h>
110 #include <dlfcn.h>
111 #include <math.h>
112 #include <fnmatch.h>
113 #include <limits.h>
114 #include <ctype.h>
115 #include <time.h>
116 #include <dirent.h>
117 #include <pwd.h>
118 #include <errno.h>
119
120 #ifdef ELM_UNIX
121 # include <locale.h>
122 # ifdef ELM_LIBINTL_H
123 #  include <libintl.h>
124 # endif
125 # include <signal.h>
126 # include <grp.h>
127 # include <glob.h>
128 #endif
129
130 #ifdef ELM_ALLOCA_H
131 # include <alloca.h>
132 #endif
133
134 #if defined (ELM_WIN32) || defined (ELM_WINCE)
135 # include <malloc.h>
136 # ifndef alloca
137 #  define alloca _alloca
138 # endif
139 #endif
140
141
142 /* EFL headers */
143 #include <Eina.h>
144 #include <Eet.h>
145 #include <Evas.h>
146 #include <Ecore.h>
147 #include <Ecore_Evas.h>
148 #include <Ecore_File.h>
149 #include <Ecore_IMF.h>
150 #include <Edje.h>
151
152 #ifdef ELM_EDBUS
153 # include <E_DBus.h>
154 #endif
155
156 #ifdef ELM_EFREET
157 # include <Efreet.h>
158 # include <Efreet_Mime.h>
159 # include <Efreet_Trash.h>
160 #endif
161
162 #ifdef ELM_ETHUMB
163 # include <Ethumb_Client.h>
164 #endif
165
166 #ifdef EAPI
167 # undef EAPI
168 #endif
169
170 #ifdef _WIN32
171 # ifdef ELEMENTARY_BUILD
172 #  ifdef DLL_EXPORT
173 #   define EAPI __declspec(dllexport)
174 #  else
175 #   define EAPI
176 #  endif /* ! DLL_EXPORT */
177 # else
178 #  define EAPI __declspec(dllimport)
179 # endif /* ! EFL_EVAS_BUILD */
180 #else
181 # ifdef __GNUC__
182 #  if __GNUC__ >= 4
183 #   define EAPI __attribute__ ((visibility("default")))
184 #  else
185 #   define EAPI
186 #  endif
187 # else
188 #  define EAPI
189 # endif
190 #endif /* ! _WIN32 */
191
192
193 /* allow usage from c++ */
194 #ifdef __cplusplus
195 extern "C" {
196 #endif
197
198 #define ELM_VERSION_MAJOR @VMAJ@
199 #define ELM_VERSION_MINOR @VMIN@
200
201    typedef struct _Elm_Version
202      {
203         int major;
204         int minor;
205         int micro;
206         int revision;
207      } Elm_Version;
208
209    EAPI extern Elm_Version *elm_version;
210
211 /* handy macros */
212 #define ELM_RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) (((x) < ((xx) + (ww))) && ((y) < ((yy) + (hh))) && (((x) + (w)) > (xx)) && (((y) + (h)) > (yy)))
213 #define ELM_PI 3.14159265358979323846
214
215   /**
216    * Defines couple of standard Evas_Object layers to be used
217    * with evas_object_layer_set().
218    *
219    * @note whenever extending with new values, try to keep some padding
220    *       to siblings so there is room for further extensions.
221    */
222   typedef enum _Elm_Object_Layer
223     {
224        ELM_OBJECT_LAYER_BACKGROUND = EVAS_LAYER_MIN + 64, /**< where to place backgrounds */
225        ELM_OBJECT_LAYER_DEFAULT = 0, /**< Evas_Object default layer (and thus for Elementary) */
226        ELM_OBJECT_LAYER_FOCUS = EVAS_LAYER_MAX - 128, /**< where focus object visualization is */
227        ELM_OBJECT_LAYER_TOOLTIP = EVAS_LAYER_MAX - 64, /**< where to show tooltips */
228        ELM_OBJECT_LAYER_CURSOR = EVAS_LAYER_MAX - 32, /**< where to show cursors */
229        ELM_OBJECT_LAYER_LAST /**< last layer known by Elementary */
230     } Elm_Object_Layer;
231
232 /**************************************************************************/
233    EAPI extern int ELM_ECORE_EVENT_ETHUMB_CONNECT;
234
235    /* Objects */
236    /**
237     * Emitted when policy value changed.
238     */
239    EAPI extern int ELM_EVENT_POLICY_CHANGED;
240    typedef struct _Elm_Event_Policy_Changed
241      {
242         unsigned int policy;
243         int          new_value;
244         int          old_value;
245      } Elm_Event_Policy_Changed;
246
247    /**
248     * Policy identifiers.
249     *
250     * @see elm_policy_set()
251     */
252    typedef enum _Elm_Policy
253      {
254         ELM_POLICY_QUIT, /**< when should quit application automatically.
255                           * @see Elm_Policy_Quit.
256                           */
257         ELM_POLICY_LAST
258      } Elm_Policy;
259
260    typedef enum _Elm_Policy_Quit
261      {
262         ELM_POLICY_QUIT_NONE = 0, /**< never quit application automatically */
263         ELM_POLICY_QUIT_LAST_WINDOW_CLOSED /**< quit when last window is closed */
264      } Elm_Policy_Quit;
265
266    typedef enum _Elm_Focus_Direction
267      {
268         ELM_FOCUS_PREVIOUS,
269         ELM_FOCUS_NEXT
270      } Elm_Focus_Direction;
271
272    typedef enum _Elm_Text_Format
273      {
274         ELM_TEXT_FORMAT_PLAIN_UTF8,
275         ELM_TEXT_FORMAT_MARKUP_UTF8
276      } Elm_Text_Format;
277
278    /**
279     * Line wrapping types.
280     */
281    typedef enum _Elm_Wrap_Type
282      {
283         ELM_WRAP_NONE = 0, /**< No wrap - value is zero */
284         ELM_WRAP_CHAR, /**< Char wrap - wrap between graphmes */
285         ELM_WRAP_WORD, /**< Word wrap - wrap in allowed wrapping points (as defined in the unicode standard) */
286         ELM_WRAP_MIXED, /**< Mixed wrap - Word wrap, and if that fails, char wrap. */
287         ELM_WRAP_LAST
288      } Elm_Wrap_Type;
289
290
291    /**
292     * Called back when a widget's tooltip is activated and needs content.
293     * @param data user-data given to elm_object_tooltip_content_cb_set()
294     * @param obj owner widget.
295     */
296    typedef Evas_Object *(*Elm_Tooltip_Content_Cb) (void *data, Evas_Object *obj);
297
298    /**
299     * Called back when a widget's item tooltip is activated and needs content.
300     * @param data user-data given to elm_object_tooltip_content_cb_set()
301     * @param obj owner widget.
302     * @param item context dependent item. As an example, if tooltip was
303     *        set on Elm_List_Item, then it is of this type.
304     */
305    typedef Evas_Object *(*Elm_Tooltip_Item_Content_Cb) (void *data, Evas_Object *obj, void *item);
306
307    typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info);
308
309 #ifndef ELM_LIB_QUICKLAUNCH
310 #define ELM_MAIN() int main(int argc, char **argv) {elm_init(argc, argv); return elm_main(argc, argv);}
311 #else
312 #define ELM_MAIN() int main(int argc, char **argv) {return elm_quicklaunch_fallback(argc, argv);}
313 #endif
314
315 /**************************************************************************/
316    /* General calls */
317    EAPI int          elm_init(int argc, char **argv);
318    EAPI int          elm_shutdown(void);
319    EAPI void         elm_run(void);
320    EAPI void         elm_exit(void);
321
322    EAPI void         elm_app_info_set(void *mainfunc, const char *dom, const char *checkfile);
323    EAPI void         elm_app_compile_bin_dir_set(const char *dir);
324    EAPI void         elm_app_compile_lib_dir_set(const char *dir);
325    EAPI void         elm_app_compile_data_dir_set(const char *dir);
326    EAPI void         elm_app_compile_locale_set(const char *dir);
327    EAPI const char  *elm_app_prefix_dir_get(void);
328    EAPI const char  *elm_app_bin_dir_get(void);
329    EAPI const char  *elm_app_lib_dir_get(void);
330    EAPI const char  *elm_app_data_dir_get(void);
331    EAPI const char  *elm_app_locale_dir_get(void);
332
333    EAPI void         elm_quicklaunch_mode_set(Eina_Bool ql_on);
334    EAPI Eina_Bool    elm_quicklaunch_mode_get(void);
335    EAPI int          elm_quicklaunch_init(int argc, char **argv);
336    EAPI int          elm_quicklaunch_sub_init(int argc, char **argv);
337    EAPI int          elm_quicklaunch_sub_shutdown(void);
338    EAPI int          elm_quicklaunch_shutdown(void);
339    EAPI void         elm_quicklaunch_seed(void);
340    EAPI Eina_Bool    elm_quicklaunch_prepare(int argc, char **argv);
341    EAPI Eina_Bool    elm_quicklaunch_fork(int argc, char **argv, char *cwd, void (postfork_func) (void *data), void *postfork_data);
342    EAPI void         elm_quicklaunch_cleanup(void);
343    EAPI int          elm_quicklaunch_fallback(int argc, char **argv);
344    EAPI char        *elm_quicklaunch_exe_path_get(const char *exe);
345
346    EAPI Eina_Bool    elm_need_efreet(void);
347    EAPI Eina_Bool    elm_need_e_dbus(void);
348    EAPI Eina_Bool    elm_need_ethumb(void);
349
350    EAPI Eina_Bool    elm_policy_set(unsigned int policy, int value);
351    EAPI int          elm_policy_get(unsigned int policy);
352
353    EAPI void         elm_all_flush(void);
354    EAPI int          elm_cache_flush_interval_get(void);
355    EAPI void         elm_cache_flush_interval_set(int size);
356    EAPI void         elm_cache_flush_interval_all_set(int size);
357    EAPI Eina_Bool    elm_cache_flush_enabled_get(void);
358    EAPI void         elm_cache_flush_enabled_set(Eina_Bool enabled);
359    EAPI void         elm_cache_flush_enabled_all_set(Eina_Bool enabled);
360    EAPI int          elm_font_cache_get(void);
361    EAPI void         elm_font_cache_set(int size);
362    EAPI void         elm_font_cache_all_set(int size);
363    EAPI int          elm_image_cache_get(void);
364    EAPI void         elm_image_cache_set(int size);
365    EAPI void         elm_image_cache_all_set(int size);
366    EAPI int          elm_edje_file_cache_get(void);
367    EAPI void         elm_edje_file_cache_set(int size);
368    EAPI void         elm_edje_file_cache_all_set(int size);
369    EAPI int          elm_edje_collection_cache_get(void);
370    EAPI void         elm_edje_collection_cache_set(int size);
371    EAPI void         elm_edje_collection_cache_all_set(int size);
372
373    EAPI void         elm_object_scale_set(Evas_Object *obj, double scale) EINA_ARG_NONNULL(1);
374    EAPI double       elm_object_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
375    EAPI Eina_Bool    elm_object_mirrored_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
376    EAPI void         elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored) EINA_ARG_NONNULL(1);
377    EAPI Eina_Bool    elm_object_mirrored_automatic_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
378    EAPI void         elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic) EINA_ARG_NONNULL(1);
379    EAPI void         elm_object_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
380    EAPI const char  *elm_object_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
381    EAPI void         elm_object_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
382    EAPI Eina_Bool    elm_object_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
383
384    EAPI Eina_Bool    elm_object_widget_check(const Evas_Object *obj) EINA_ARG_NONNULL(1);
385    EAPI Evas_Object *elm_object_parent_widget_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
386    EAPI Evas_Object *elm_object_top_widget_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
387    EAPI const char  *elm_object_widget_type_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
388
389    EAPI double       elm_scale_get(void);
390    EAPI void         elm_scale_set(double scale);
391    EAPI void         elm_scale_all_set(double scale);
392
393    EAPI Eina_Bool    elm_mirrored_get(void);
394    EAPI void         elm_mirrored_set(Eina_Bool mirrored);
395
396    EAPI Eina_Bool    elm_config_save(void);
397    EAPI void         elm_config_reload(void);
398
399    EAPI const char  *elm_profile_current_get(void);
400    EAPI const char  *elm_profile_dir_get(const char *profile, Eina_Bool is_user);
401    EAPI void         elm_profile_dir_free(const char *p_dir);
402    EAPI Eina_List   *elm_profile_list_get(void);
403    EAPI void         elm_profile_list_free(Eina_List *l);
404    EAPI void         elm_profile_set(const char *profile);
405    EAPI void         elm_profile_all_set(const char *profile);
406
407    EAPI const char  *elm_engine_current_get(void);
408    EAPI void         elm_engine_set(const char *engine);
409
410   typedef struct _Elm_Text_Class
411     {
412        const char *name;
413        const char *desc;
414     } Elm_Text_Class;
415
416   typedef struct _Elm_Font_Overlay
417     {
418        const char     *text_class;
419        const char     *font;
420        Evas_Font_Size  size;
421     } Elm_Font_Overlay;
422
423   typedef struct _Elm_Font_Properties
424     {
425        const char *name;
426        Eina_List  *styles;
427     } Elm_Font_Properties;
428
429    EAPI const Eina_List     *elm_text_classes_list_get(void);
430    EAPI void                 elm_text_classes_list_free(const Eina_List *list);
431
432    EAPI const Eina_List     *elm_font_overlay_list_get(void);
433    EAPI void                 elm_font_overlay_set(const char *text_class, const char *font, Evas_Font_Size size);
434    EAPI void                 elm_font_overlay_unset(const char *text_class);
435    EAPI void                 elm_font_overlay_apply(void);
436    EAPI void                 elm_font_overlay_all_apply(void);
437
438    EAPI Elm_Font_Properties *elm_font_properties_get(const char *font) EINA_ARG_NONNULL(1);
439    EAPI void                 elm_font_properties_free(Elm_Font_Properties *efp) EINA_ARG_NONNULL(1);
440    EAPI const char          *elm_font_fontconfig_name_get(const char *name, const char *style) EINA_ARG_NONNULL(1);
441    EAPI void                 elm_font_fontconfig_name_free(const char *name) EINA_ARG_NONNULL(1);
442    EAPI Eina_Hash           *elm_font_available_hash_add(Eina_List *list);
443    EAPI void                 elm_font_available_hash_del(Eina_Hash *hash);
444
445    EAPI Evas_Coord       elm_finger_size_get(void);
446    EAPI void             elm_finger_size_set(Evas_Coord size);
447    EAPI void             elm_finger_size_all_set(Evas_Coord size);
448
449    EAPI Eina_Bool        elm_focus_highlight_enabled_get(void);
450    EAPI void             elm_focus_highlight_enabled_set(Eina_Bool enable);
451    EAPI Eina_Bool        elm_focus_highlight_animate_get(void);
452    EAPI void             elm_focus_highlight_animate_set(Eina_Bool animate);
453
454    EAPI Eina_Bool        elm_object_focus_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
455    EAPI void             elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1);
456    EAPI void             elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1);
457    EAPI void             elm_object_focus_allow_set(Evas_Object *obj, Eina_Bool enable) EINA_ARG_NONNULL(1);
458    EAPI Eina_Bool        elm_object_focus_allow_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
459
460    EAPI void             elm_object_focus_custom_chain_set(Evas_Object *obj, Eina_List *objs) EINA_ARG_NONNULL(1);
461    EAPI void             elm_object_focus_custom_chain_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
462    EAPI const Eina_List *elm_object_focus_custom_chain_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
463    EAPI void             elm_object_focus_custom_chain_append(Evas_Object *obj, Evas_Object *child, Evas_Object *relative_child) EINA_ARG_NONNULL(1, 2);
464    EAPI void             elm_object_focus_custom_chain_prepend(Evas_Object *obj, Evas_Object *child, Evas_Object *relative_child) EINA_ARG_NONNULL(1, 2);
465    EAPI void             elm_object_focus_cycle(Evas_Object *obj, Elm_Focus_Direction dir) EINA_ARG_NONNULL(1);
466    EAPI void             elm_object_focus_direction_go(Evas_Object *obj, int x, int y) EINA_ARG_NONNULL(1);
467
468    EAPI Eina_Bool        elm_scroll_bounce_enabled_get(void);
469    EAPI void             elm_scroll_bounce_enabled_set(Eina_Bool enabled);
470    EAPI void             elm_scroll_bounce_enabled_all_set(Eina_Bool enabled);
471    EAPI double           elm_scroll_bounce_friction_get(void);
472    EAPI void             elm_scroll_bounce_friction_set(double friction);
473    EAPI void             elm_scroll_bounce_friction_all_set(double friction);
474    EAPI double           elm_scroll_page_scroll_friction_get(void);
475    EAPI void             elm_scroll_page_scroll_friction_set(double friction);
476    EAPI void             elm_scroll_page_scroll_friction_all_set(double friction);
477    EAPI double           elm_scroll_bring_in_scroll_friction_get(void);
478    EAPI void             elm_scroll_bring_in_scroll_friction_set(double friction);
479    EAPI void             elm_scroll_bring_in_scroll_friction_all_set(double friction);
480    EAPI double           elm_scroll_zoom_friction_get(void);
481    EAPI void             elm_scroll_zoom_friction_set(double friction);
482    EAPI void             elm_scroll_zoom_friction_all_set(double friction);
483    EAPI Eina_Bool        elm_scroll_thumbscroll_enabled_get(void);
484    EAPI void             elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled);
485    EAPI void             elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled);
486    EAPI unsigned int     elm_scroll_thumbscroll_threshold_get(void);
487    EAPI void             elm_scroll_thumbscroll_threshold_set(unsigned int threshold);
488    EAPI void             elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold);
489    EAPI double           elm_scroll_thumbscroll_momentum_threshold_get(void);
490    EAPI void             elm_scroll_thumbscroll_momentum_threshold_set(double threshold);
491    EAPI void             elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold);
492    EAPI double           elm_scroll_thumbscroll_friction_get(void);
493    EAPI void             elm_scroll_thumbscroll_friction_set(double friction);
494    EAPI void             elm_scroll_thumbscroll_friction_all_set(double friction);
495    EAPI double           elm_scroll_thumbscroll_border_friction_get(void);
496    EAPI void             elm_scroll_thumbscroll_border_friction_set(double friction);
497    EAPI void             elm_scroll_thumbscroll_border_friction_all_set(double friction);
498
499    EAPI void             elm_object_scroll_hold_push(Evas_Object *obj) EINA_ARG_NONNULL(1);
500    EAPI void             elm_object_scroll_hold_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
501    EAPI void             elm_object_scroll_freeze_push(Evas_Object *obj) EINA_ARG_NONNULL(1);
502    EAPI void             elm_object_scroll_freeze_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
503    EAPI void             elm_object_scroll_lock_x_set(Evas_Object *obj, Eina_Bool lock) EINA_ARG_NONNULL(1);
504    EAPI void             elm_object_scroll_lock_y_set(Evas_Object *obj, Eina_Bool lock) EINA_ARG_NONNULL(1);
505    EAPI Eina_Bool        elm_object_scroll_lock_x_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
506    EAPI Eina_Bool        elm_object_scroll_lock_y_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
507
508    EAPI void             elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source) EINA_ARG_NONNULL(1);
509    EAPI void             elm_object_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) EINA_ARG_NONNULL(1, 4);
510    EAPI void            *elm_object_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)) EINA_ARG_NONNULL(1, 4);
511
512    EAPI void             elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
513    EAPI void            *elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
514
515    EAPI void             elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h);
516
517    EAPI double           elm_longpress_timeout_get(void);
518    EAPI void             elm_longpress_timeout_set(double longpress_timeout);
519
520    /* debug
521     * don't use it unless you are sure
522     */
523    EAPI void             elm_object_tree_dump(const Evas_Object *top);
524    EAPI void             elm_object_tree_dot_dump(const Evas_Object *top, const char *file);
525
526
527    /* theme */
528    typedef struct _Elm_Theme Elm_Theme;
529
530    EAPI Elm_Theme       *elm_theme_new(void);
531    EAPI void             elm_theme_free(Elm_Theme *th);
532    EAPI void             elm_theme_copy(Elm_Theme *th, Elm_Theme *thdst);
533    EAPI void             elm_theme_ref_set(Elm_Theme *th, Elm_Theme *thref);
534    EAPI Elm_Theme       *elm_theme_ref_get(Elm_Theme *th);
535    EAPI Elm_Theme       *elm_theme_default_get(void);
536    EAPI void             elm_theme_overlay_add(Elm_Theme *th, const char *item);
537    EAPI void             elm_theme_overlay_del(Elm_Theme *th, const char *item);
538    EAPI void             elm_theme_extension_add(Elm_Theme *th, const char *item);
539    EAPI void             elm_theme_extension_del(Elm_Theme *th, const char *item);
540    EAPI void             elm_theme_set(Elm_Theme *th, const char *theme);
541    EAPI const char      *elm_theme_get(Elm_Theme *th);
542    EAPI const Eina_List *elm_theme_list_get(const Elm_Theme *th);
543    EAPI char            *elm_theme_list_item_path_get(const char *f, Eina_Bool *in_search_path);
544    EAPI void             elm_theme_flush(Elm_Theme *th);
545    EAPI void             elm_theme_full_flush(void);
546
547    EAPI void             elm_theme_all_set(const char *theme);
548
549    EAPI Eina_List       *elm_theme_name_available_list_new(void);
550    EAPI void             elm_theme_name_available_list_free(Eina_List *list);
551
552    EAPI void             elm_object_theme_set(Evas_Object *obj, Elm_Theme *th) EINA_ARG_NONNULL(1);
553    EAPI Elm_Theme       *elm_object_theme_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
554
555    /* win */
556    typedef enum _Elm_Win_Type
557      {
558         ELM_WIN_BASIC,
559         ELM_WIN_DIALOG_BASIC,
560         ELM_WIN_DESKTOP,
561         ELM_WIN_DOCK,
562         ELM_WIN_TOOLBAR,
563         ELM_WIN_MENU,
564         ELM_WIN_UTILITY,
565         ELM_WIN_SPLASH,
566         ELM_WIN_DROPDOWN_MENU,
567         ELM_WIN_POPUP_MENU,
568         ELM_WIN_TOOLTIP,
569         ELM_WIN_NOTIFICATION,
570         ELM_WIN_COMBO,
571         ELM_WIN_DND,
572         ELM_WIN_INLINED_IMAGE,
573      } Elm_Win_Type;
574
575    typedef enum _Elm_Win_Keyboard_Mode
576      {
577         ELM_WIN_KEYBOARD_UNKNOWN,
578         ELM_WIN_KEYBOARD_OFF,
579         ELM_WIN_KEYBOARD_ON,
580         ELM_WIN_KEYBOARD_ALPHA,
581         ELM_WIN_KEYBOARD_NUMERIC,
582         ELM_WIN_KEYBOARD_PIN,
583         ELM_WIN_KEYBOARD_PHONE_NUMBER,
584         ELM_WIN_KEYBOARD_HEX,
585         ELM_WIN_KEYBOARD_TERMINAL,
586         ELM_WIN_KEYBOARD_PASSWORD,
587         ELM_WIN_KEYBOARD_IP,
588         ELM_WIN_KEYBOARD_HOST,
589         ELM_WIN_KEYBOARD_FILE,
590         ELM_WIN_KEYBOARD_URL,
591         ELM_WIN_KEYBOARD_KEYPAD,
592         ELM_WIN_KEYBOARD_J2ME
593      } Elm_Win_Keyboard_Mode;
594
595    typedef enum _Elm_Illume_Command
596      {
597         ELM_ILLUME_COMMAND_FOCUS_BACK,
598         ELM_ILLUME_COMMAND_FOCUS_FORWARD,
599         ELM_ILLUME_COMMAND_FOCUS_HOME,
600         ELM_ILLUME_COMMAND_CLOSE
601      } Elm_Illume_Command;
602
603    EAPI Evas_Object *elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type);
604    EAPI void         elm_win_resize_object_add(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
605    EAPI void         elm_win_resize_object_del(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
606    EAPI void         elm_win_title_set(Evas_Object *obj, const char *title) EINA_ARG_NONNULL(1);
607    EAPI const char  *elm_win_title_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
608    EAPI void         elm_win_autodel_set(Evas_Object *obj, Eina_Bool autodel) EINA_ARG_NONNULL(1);
609    EAPI Eina_Bool    elm_win_autodel_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
610    EAPI void         elm_win_activate(Evas_Object *obj) EINA_ARG_NONNULL(1);
611    EAPI void         elm_win_lower(Evas_Object *obj) EINA_ARG_NONNULL(1);
612    EAPI void         elm_win_raise(Evas_Object *obj) EINA_ARG_NONNULL(1);
613    EAPI void         elm_win_borderless_set(Evas_Object *obj, Eina_Bool borderless) EINA_ARG_NONNULL(1);
614    EAPI Eina_Bool    elm_win_borderless_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
615    EAPI void         elm_win_shaped_set(Evas_Object *obj, Eina_Bool shaped) EINA_ARG_NONNULL(1);
616    EAPI Eina_Bool    elm_win_shaped_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
617    EAPI void         elm_win_alpha_set(Evas_Object *obj, Eina_Bool alpha) EINA_ARG_NONNULL(1);
618    EAPI Eina_Bool    elm_win_transparent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
619    EAPI void         elm_win_transparent_set(Evas_Object *obj, Eina_Bool transparent) EINA_ARG_NONNULL(1);
620    EAPI Eina_Bool    elm_win_alpha_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
621    EAPI void         elm_win_override_set(Evas_Object *obj, Eina_Bool override) EINA_ARG_NONNULL(1);
622    EAPI Eina_Bool    elm_win_override_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
623    EAPI void         elm_win_fullscreen_set(Evas_Object *obj, Eina_Bool fullscreen) EINA_ARG_NONNULL(1);
624    EAPI Eina_Bool    elm_win_fullscreen_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
625    EAPI void         elm_win_maximized_set(Evas_Object *obj, Eina_Bool maximized) EINA_ARG_NONNULL(1);
626    EAPI Eina_Bool    elm_win_maximized_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
627    EAPI void         elm_win_iconified_set(Evas_Object *obj, Eina_Bool iconified) EINA_ARG_NONNULL(1);
628    EAPI Eina_Bool    elm_win_iconified_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
629    EAPI void         elm_win_layer_set(Evas_Object *obj, int layer) EINA_ARG_NONNULL(1);
630    EAPI int          elm_win_layer_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
631    EAPI void         elm_win_rotation_set(Evas_Object *obj, int rotation) EINA_ARG_NONNULL(1);
632    EAPI void         elm_win_rotation_with_resize_set(Evas_Object *obj, int rotation) EINA_ARG_NONNULL(1);
633    EAPI int          elm_win_rotation_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
634    EAPI void         elm_win_sticky_set(Evas_Object *obj, Eina_Bool sticky) EINA_ARG_NONNULL(1);
635    EAPI Eina_Bool    elm_win_sticky_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
636    EAPI void         elm_win_conformant_set(Evas_Object *obj, Eina_Bool conformant) EINA_ARG_NONNULL(1);
637    EAPI Eina_Bool    elm_win_conformant_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
638    EAPI void         elm_win_quickpanel_set(Evas_Object *obj, Eina_Bool quickpanel) EINA_ARG_NONNULL(1);
639    EAPI Eina_Bool    elm_win_quickpanel_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
640    EAPI void         elm_win_quickpanel_priority_major_set(Evas_Object *obj, int priority) EINA_ARG_NONNULL(1);
641    EAPI int          elm_win_quickpanel_priority_major_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
642    EAPI void         elm_win_quickpanel_priority_minor_set(Evas_Object *obj, int priority) EINA_ARG_NONNULL(1);
643    EAPI int          elm_win_quickpanel_priority_minor_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
644    EAPI void         elm_win_quickpanel_zone_set(Evas_Object *obj, int zone) EINA_ARG_NONNULL(1);
645    EAPI int          elm_win_quickpanel_zone_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
646    EAPI void         elm_win_prop_focus_skip_set(Evas_Object *obj, Eina_Bool skip); EINA_ARG_NONNULL(1);
647    EAPI void         elm_win_illume_command_send(Evas_Object *obj, Elm_Illume_Command command, void *params); EINA_ARG_NONNULL(1);
648    EAPI Evas_Object *elm_win_inlined_image_object_get(Evas_Object *obj);
649    EAPI void         elm_win_focus_highlight_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
650    EAPI Eina_Bool    elm_win_focus_highlight_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
651    EAPI void         elm_win_focus_highlight_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
652    EAPI const char  *elm_win_focus_highlight_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
653    /*...
654     * ecore_x_icccm_hints_set -> accepts_focus (add to ecore_evas)
655     * ecore_x_icccm_hints_set -> window_group (add to ecore_evas)
656     * ecore_x_icccm_size_pos_hints_set -> request_pos (add to ecore_evas)
657     * ecore_x_icccm_client_leader_set -> l (add to ecore_evas)
658     * ecore_x_icccm_window_role_set -> role (add to ecore_evas)
659     * ecore_x_icccm_transient_for_set -> forwin (add to ecore_evas)
660     * ecore_x_netwm_window_type_set -> type (add to ecore_evas)
661     *
662     * (add to ecore_x) set netwm argb icon! (add to ecore_evas)
663     * (blank mouse, private mouse obj, defaultmouse)
664     *
665     */
666    EAPI void                  elm_win_keyboard_mode_set(Evas_Object *obj, Elm_Win_Keyboard_Mode mode) EINA_ARG_NONNULL(1);
667    EAPI Elm_Win_Keyboard_Mode elm_win_keyboard_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
668    EAPI void                  elm_win_keyboard_win_set(Evas_Object *obj, Eina_Bool is_keyboard) EINA_ARG_NONNULL(1);
669    EAPI Eina_Bool             elm_win_keyboard_win_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
670
671    EAPI void                  elm_win_screen_position_get(const Evas_Object *obj, int *x, int *y) EINA_ARG_NONNULL(1);
672
673    EAPI Evas_Object          *elm_win_inwin_add(Evas_Object *obj) EINA_ARG_NONNULL(1);
674    EAPI void                  elm_win_inwin_activate(Evas_Object *obj) EINA_ARG_NONNULL(1);
675    EAPI void                  elm_win_inwin_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
676    EAPI Evas_Object          *elm_win_inwin_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
677    EAPI Evas_Object          *elm_win_inwin_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
678    /* available styles:
679     * default
680     * minimal
681     * minimal_vertical
682     */
683    /* X specific calls - won't work on non-x engines (return 0) */
684    EAPI Ecore_X_Window elm_win_xwindow_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
685    /* smart callbacks called:
686     * "delete,request" - the user requested to delete the window
687     * "focus,in" - window got focus
688     * "focus,out" - window lost focus
689     * "moved" - window that holds the canvas was moved
690     */
691
692    /* bg */
693    typedef enum _Elm_Bg_Option
694      {
695         ELM_BG_OPTION_CENTER,  /**< center the background */
696         ELM_BG_OPTION_SCALE,   /**< scale the background retaining aspect ratio */
697         ELM_BG_OPTION_STRETCH, /**< stretch the background to fill */
698         ELM_BG_OPTION_TILE     /**< tile background at its original size */
699      } Elm_Bg_Option;
700
701    EAPI Evas_Object  *elm_bg_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
702    EAPI void          elm_bg_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1);
703    EAPI void          elm_bg_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
704    EAPI void          elm_bg_option_set(Evas_Object *obj, Elm_Bg_Option option) EINA_ARG_NONNULL(1);
705    EAPI Elm_Bg_Option elm_bg_option_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
706    EAPI void          elm_bg_color_set(Evas_Object *obj, int r, int g, int b) EINA_ARG_NONNULL(1);
707    EAPI void          elm_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b) EINA_ARG_NONNULL(1);
708    EAPI void          elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1);
709    EAPI Evas_Object  *elm_bg_overlay_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
710    EAPI Evas_Object  *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
711    EAPI void          elm_bg_load_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
712    /* smart callbacks called:
713     */
714
715    /* icon */
716    typedef enum _Elm_Icon_Lookup_Order
717      {
718         ELM_ICON_LOOKUP_FDO_THEME, /**< icon look up order: freedesktop, theme */
719         ELM_ICON_LOOKUP_THEME_FDO, /**< icon look up order: theme, freedesktop */
720         ELM_ICON_LOOKUP_FDO,       /**< icon look up order: freedesktop */
721         ELM_ICON_LOOKUP_THEME      /**< icon look up order: theme */
722      } Elm_Icon_Lookup_Order;
723
724    EAPI Evas_Object          *elm_icon_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
725    EAPI Eina_Bool             elm_icon_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
726    EAPI void                  elm_icon_thumb_set(const Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
727    EAPI void                  elm_icon_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
728    EAPI Eina_Bool             elm_icon_standard_set(Evas_Object *obj, const char *name) EINA_ARG_NONNULL(1);
729    EAPI const char           *elm_icon_standard_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
730    EAPI void                  elm_icon_smooth_set(Evas_Object *obj, Eina_Bool smooth) EINA_ARG_NONNULL(1);
731    EAPI Eina_Bool             elm_icon_smooth_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
732    EAPI void                  elm_icon_no_scale_set(Evas_Object *obj, Eina_Bool no_scale) EINA_ARG_NONNULL(1);
733    EAPI Eina_Bool             elm_icon_no_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
734    EAPI void                  elm_icon_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down) EINA_ARG_NONNULL(1);
735    EAPI void                  elm_icon_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down) EINA_ARG_NONNULL(1);
736    EAPI void                  elm_icon_fill_outside_set(Evas_Object *obj, Eina_Bool fill_outside) EINA_ARG_NONNULL(1);
737    EAPI Eina_Bool             elm_icon_fill_outside_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
738    EAPI void                  elm_icon_prescale_set(Evas_Object *obj, int size) EINA_ARG_NONNULL(1);
739    EAPI int                   elm_icon_prescale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
740    EAPI void                  elm_icon_order_lookup_set(Evas_Object *obj, Elm_Icon_Lookup_Order order) EINA_ARG_NONNULL(1);
741    EAPI Elm_Icon_Lookup_Order elm_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
742    /* smart callbacks called:
743     * "clicked" - the user clicked the icon
744     */
745
746    /* image */
747    typedef enum _Elm_Image_Orient
748      {
749         ELM_IMAGE_ORIENT_NONE,
750         ELM_IMAGE_ROTATE_90_CW,
751         ELM_IMAGE_ROTATE_180_CW,
752         ELM_IMAGE_ROTATE_90_CCW,
753         ELM_IMAGE_FLIP_HORIZONTAL,
754         ELM_IMAGE_FLIP_VERTICAL,
755         ELM_IMAGE_FLIP_TRANSPOSE,
756         ELM_IMAGE_FLIP_TRANSVERSE
757      } Elm_Image_Orient;
758    EAPI Evas_Object     *elm_image_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
759    EAPI Eina_Bool        elm_image_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
760    EAPI void             elm_image_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
761    EAPI void             elm_image_smooth_set(Evas_Object *obj, Eina_Bool smooth) EINA_ARG_NONNULL(1);
762    EAPI Eina_Bool        elm_image_smooth_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
763    EAPI void             elm_image_object_size_get(const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1);
764    EAPI void             elm_image_no_scale_set(Evas_Object *obj, Eina_Bool no_scale) EINA_ARG_NONNULL(1);
765    EAPI Eina_Bool        elm_image_no_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
766    EAPI void             elm_image_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down) EINA_ARG_NONNULL(1);
767    EAPI void             elm_image_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down) EINA_ARG_NONNULL(1);
768    EAPI void             elm_image_fill_outside_set(Evas_Object *obj, Eina_Bool fill_outside) EINA_ARG_NONNULL(1);
769    EAPI Eina_Bool        elm_image_fill_outside_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
770    EAPI void             elm_image_prescale_set(Evas_Object *obj, int size) EINA_ARG_NONNULL(1);
771    EAPI int              elm_image_prescale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
772    EAPI void             elm_image_orient_set(Evas_Object *obj, Elm_Image_Orient orient) EINA_ARG_NONNULL(1);
773    EAPI Elm_Image_Orient elm_image_orient_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
774    EAPI void             elm_image_editable_set(Evas_Object *obj, Eina_Bool set) EINA_ARG_NONNULL(1);
775    EAPI Eina_Bool        elm_image_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
776    EAPI Evas_Object     *elm_image_object_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
777    /* smart callbacks called:
778     * "clicked" - the user clicked the image
779     */
780
781    /* box */
782    typedef struct _Elm_Box_Transition Elm_Box_Transition;
783
784    EAPI Evas_Object        *elm_box_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
785    EAPI void                elm_box_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
786    EAPI Eina_Bool           elm_box_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
787    EAPI void                elm_box_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) EINA_ARG_NONNULL(1);
788    EAPI Eina_Bool           elm_box_homogeneous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
789    EINA_DEPRECATED EAPI void elm_box_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
790    EINA_DEPRECATED EAPI Eina_Bool elm_box_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
791    EAPI void                elm_box_pack_start(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
792    EAPI void                elm_box_pack_end(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
793    EAPI void                elm_box_pack_before(Evas_Object *obj, Evas_Object *subobj, Evas_Object *before) EINA_ARG_NONNULL(1);
794    EAPI void                elm_box_pack_after(Evas_Object *obj, Evas_Object *subobj, Evas_Object *after) EINA_ARG_NONNULL(1);
795    EAPI void                elm_box_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
796    EAPI void                elm_box_unpack(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
797    EAPI void                elm_box_unpack_all(Evas_Object *obj) EINA_ARG_NONNULL(1);
798    EAPI const Eina_List    *elm_box_children_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
799    EAPI void                elm_box_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
800    EAPI void                elm_box_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
801    EAPI void                elm_box_align_set(Evas_Object *obj, double horizontal, double vertical) EINA_ARG_NONNULL(1);
802    EAPI void                elm_box_align_get(const Evas_Object *obj, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
803
804    EAPI void                elm_box_layout_set(Evas_Object *obj, Evas_Object_Box_Layout cb, const void *data, void (*free_data)(void *data)) EINA_ARG_NONNULL(1);
805    EAPI void                elm_box_layout_transition(Evas_Object *obj, Evas_Object_Box_Data *priv, void *data);
806    EAPI Elm_Box_Transition *elm_box_transition_new(const double duration, Evas_Object_Box_Layout start_layout, void *start_layout_data, void(*start_layout_free_data)(void *data), Evas_Object_Box_Layout end_layout, void *end_layout_data, void(*end_layout_free_data)(void *data), void(*transition_end_cb)(void *data), void *transition_end_data) EINA_ARG_NONNULL(2, 5);
807    EAPI void                elm_box_transition_free(void *data);
808    /* smart callbacks called:
809     */
810
811    /* button */
812    EAPI Evas_Object *elm_button_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
813    EAPI void         elm_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
814    EAPI const char  *elm_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
815    EAPI void         elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
816    EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
817    EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
818    EAPI void         elm_button_autorepeat_set(Evas_Object *obj, Eina_Bool on) EINA_ARG_NONNULL(1);
819    EAPI Eina_Bool    elm_button_autorepeat_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
820    EAPI void         elm_button_autorepeat_initial_timeout_set(Evas_Object *obj, double t) EINA_ARG_NONNULL(1);
821    EAPI double       elm_button_autorepeat_initial_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
822    EAPI void         elm_button_autorepeat_gap_timeout_set(Evas_Object *obj, double t) EINA_ARG_NONNULL(1);
823    EAPI double       elm_button_autorepeat_gap_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
824    /* available styles:
825     * default
826     * anchor
827     * hoversel_vertical
828     * hoversel_vertical_entry
829     */
830    /* smart callbacks called:
831     * "clicked" - the user clicked the button
832     * "repeated" - the user pressed the button without releasing it
833     * "unpressed" - when the button is unpressed (released)
834     */
835
836    /* fileselector */
837    EAPI Evas_Object *elm_fileselector_button_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
838    EAPI void         elm_fileselector_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
839    EAPI const char  *elm_fileselector_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
840    EAPI void         elm_fileselector_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
841    EAPI Evas_Object *elm_fileselector_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
842    EAPI Evas_Object *elm_fileselector_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
843    EAPI void         elm_fileselector_button_window_title_set(Evas_Object *obj, const char *title) EINA_ARG_NONNULL(1);
844    EAPI const char  *elm_fileselector_button_window_title_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
845    EAPI void         elm_fileselector_button_window_size_set(Evas_Object *obj, Evas_Coord width, Evas_Coord height) EINA_ARG_NONNULL(1);
846    EAPI void         elm_fileselector_button_window_size_get(const Evas_Object *obj, Evas_Coord *width, Evas_Coord *height) EINA_ARG_NONNULL(1);
847    EAPI void         elm_fileselector_button_path_set(Evas_Object *obj, const char *path) EINA_ARG_NONNULL(1);
848    EAPI const char  *elm_fileselector_button_path_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
849    EAPI void         elm_fileselector_button_expandable_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
850    EAPI Eina_Bool    elm_fileselector_button_expandable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
851    EAPI void         elm_fileselector_button_folder_only_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
852    EAPI Eina_Bool    elm_fileselector_button_folder_only_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
853    EAPI void         elm_fileselector_button_is_save_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
854    EAPI Eina_Bool    elm_fileselector_button_is_save_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
855    EAPI void         elm_fileselector_button_inwin_mode_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
856    EAPI Eina_Bool    elm_fileselector_button_inwin_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
857    /* available styles:
858     * default
859     * anchor
860     * hoversel_vertical
861     * hoversel_vertical_entry
862     */
863    /* smart callbacks called:
864     * "file,chosen" - the user has selected a path, whose string pointer comes
865                       as event info
866     */
867
868    EAPI Evas_Object *elm_fileselector_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
869    EAPI void         elm_fileselector_entry_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
870    EAPI const char  *elm_fileselector_entry_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
871    EAPI void         elm_fileselector_entry_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
872    EAPI Evas_Object *elm_fileselector_entry_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
873    EAPI Evas_Object *elm_fileselector_entry_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
874    EAPI void         elm_fileselector_entry_window_title_set(Evas_Object *obj, const char *title) EINA_ARG_NONNULL(1);
875    EAPI const char  *elm_fileselector_entry_window_title_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
876    EAPI void         elm_fileselector_entry_window_size_set(Evas_Object *obj, Evas_Coord width, Evas_Coord height) EINA_ARG_NONNULL(1);
877    EAPI void         elm_fileselector_entry_window_size_get(const Evas_Object *obj, Evas_Coord *width, Evas_Coord *height) EINA_ARG_NONNULL(1);
878    EAPI void         elm_fileselector_entry_path_set(Evas_Object *obj, const char *path) EINA_ARG_NONNULL(1);
879    EAPI const char  *elm_fileselector_entry_path_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
880    EAPI void         elm_fileselector_entry_expandable_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
881    EAPI Eina_Bool    elm_fileselector_entry_expandable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
882    EAPI void         elm_fileselector_entry_folder_only_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
883    EAPI Eina_Bool    elm_fileselector_entry_folder_only_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
884    EAPI void         elm_fileselector_entry_is_save_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
885    EAPI Eina_Bool    elm_fileselector_entry_is_save_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
886    EAPI void         elm_fileselector_entry_inwin_mode_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
887    EAPI Eina_Bool    elm_fileselector_entry_inwin_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
888    EAPI void         elm_fileselector_entry_selected_set(Evas_Object *obj, const char *path) EINA_ARG_NONNULL(1);
889    EAPI const char  *elm_fileselector_entry_selected_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
890
891    /* scroller policy */
892    typedef enum _Elm_Scroller_Policy
893      {
894         ELM_SCROLLER_POLICY_AUTO = 0,
895         ELM_SCROLLER_POLICY_ON,
896         ELM_SCROLLER_POLICY_OFF,
897         ELM_SCROLLER_POLICY_LAST
898      } Elm_Scroller_Policy;
899
900    EAPI Evas_Object *elm_scroller_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
901    EAPI void         elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1);
902    EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
903    EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
904    EAPI void         elm_scroller_custom_widget_base_theme_set(Evas_Object *obj, const char *widget, const char *base) EINA_ARG_NONNULL(1, 2, 3);
905    EAPI void         elm_scroller_content_min_limit(Evas_Object *obj, Eina_Bool w, Eina_Bool h) EINA_ARG_NONNULL(1);
906    EAPI void         elm_scroller_region_show(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
907    EAPI void         elm_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
908    EAPI void         elm_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
909    EAPI void         elm_scroller_region_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
910    EAPI void         elm_scroller_child_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
911    EAPI void         elm_scroller_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
912    EAPI void         elm_scroller_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
913    EAPI void         elm_scroller_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1);
914    EAPI void         elm_scroller_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize) EINA_ARG_NONNULL(1);
915    EAPI void         elm_scroller_region_bring_in(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
916    EAPI void         elm_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation);
917    EAPI Eina_Bool    elm_scroller_propagate_events_get(const Evas_Object *obj);
918    /* smart callbacks called:
919     * "edge,left" - the left edge of the content has been reached
920     * "edge,right" - the right edge of the content has been reached
921     * "edge,top" - the top edge of the content has been reached
922     * "edge,bottom" - the bottom edge of the content has been reached
923     * "scroll" - the content has been scrolled (moved)
924     * "scroll,anim,start" - scrolling animation has started
925     * "scroll,anim,stop" - scrolling animation has stopped
926     * "scroll,drag,start" - dragging the contents around has started
927     * "scroll,drag,stop" - dragging the contents around has stopped
928     */
929
930    /* label */
931    EAPI Evas_Object *elm_label_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
932    EAPI void         elm_label_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
933    EAPI const char  *elm_label_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
934    EAPI void         elm_label_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
935    EAPI Elm_Wrap_Type elm_label_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
936    EAPI void         elm_label_wrap_width_set(Evas_Object *obj, Evas_Coord w) EINA_ARG_NONNULL(1);
937    EAPI Evas_Coord   elm_label_wrap_width_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
938    EAPI void         elm_label_wrap_height_set(Evas_Object *obj, Evas_Coord h) EINA_ARG_NONNULL(1);
939    EAPI Evas_Coord   elm_label_wrap_height_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
940    EAPI void         elm_label_fontsize_set(Evas_Object *obj, int fontsize) EINA_ARG_NONNULL(1);
941    EAPI void         elm_label_text_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1);
942    EAPI void         elm_label_text_align_set(Evas_Object *obj, const char *alignmode) EINA_ARG_NONNULL(1);
943    EAPI void         elm_label_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1);
944    EAPI void         elm_label_ellipsis_set(Evas_Object *obj, Eina_Bool ellipsis) EINA_ARG_NONNULL(1);
945    EAPI void         elm_label_slide_set(Evas_Object *obj, Eina_Bool slide) EINA_ARG_NONNULL(1);
946    EAPI Eina_Bool    elm_label_slide_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
947    EAPI void         elm_label_slide_duration_set(Evas_Object *obj, double duration) EINA_ARG_NONNULL(1);
948    EAPI double       elm_label_slide_duration_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
949    /* available styles:
950     * default
951     * marker
952     */
953    /* smart callbacks called:
954     */
955
956    /* toggle */
957    EAPI Evas_Object *elm_toggle_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
958    EAPI void         elm_toggle_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
959    EAPI const char  *elm_toggle_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
960    EAPI void         elm_toggle_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
961    EAPI Evas_Object *elm_toggle_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
962    EAPI Evas_Object *elm_toggle_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
963    EAPI void         elm_toggle_states_labels_set(Evas_Object *obj, const char *onlabel, const char *offlabel) EINA_ARG_NONNULL(1);
964    EAPI void         elm_toggle_states_labels_get(const Evas_Object *obj, const char **onlabel, const char **offlabel) EINA_ARG_NONNULL(1);
965    EAPI void         elm_toggle_state_set(Evas_Object *obj, Eina_Bool state) EINA_ARG_NONNULL(1);
966    EAPI Eina_Bool    elm_toggle_state_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
967    EAPI void         elm_toggle_state_pointer_set(Evas_Object *obj, Eina_Bool *statep) EINA_ARG_NONNULL(1);
968    /* smart callbacks called:
969     * "changed" - Whenever the toggle value has been changed.  Is not called
970     *             until the toggle is released by the cursor (assuming it has been triggered
971     *             by the cursor in the first place).
972     */
973
974    /* frame */
975    EAPI Evas_Object *elm_frame_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
976    EAPI void         elm_frame_label_set(Evas_Object *obj, const char *label); EINA_ARG_NONNULL(1)
977    EAPI const char  *elm_frame_label_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
978    EAPI void         elm_frame_content_set(Evas_Object *obj, Evas_Object *content); EINA_ARG_NONNULL(1)
979    EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
980    EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj); EINA_ARG_NONNULL(1)
981    /* available styles:
982     * default
983     * pad_small
984     * pad_medium
985     * pad_large
986     * pad_huge
987     * outdent_top
988     * outdent_bottom
989     */
990    /* smart callbacks called:
991     */
992
993    /* table */
994    EAPI Evas_Object *elm_table_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
995    EAPI void         elm_table_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) EINA_ARG_NONNULL(1);
996    EAPI Eina_Bool    elm_table_homogeneous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
997    EINA_DEPRECATED EAPI void elm_table_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
998    EINA_DEPRECATED EAPI Eina_Bool elm_table_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
999    EAPI void         elm_table_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
1000    EAPI void         elm_table_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
1001    EAPI void         elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
1002    EAPI void         elm_table_unpack(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
1003    EAPI void         elm_table_clear(Evas_Object *obj, Eina_Bool clear) EINA_ARG_NONNULL(1);
1004
1005    /* gengrid */
1006    typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class;
1007    typedef struct _Elm_Gengrid_Item_Class_Func Elm_Gengrid_Item_Class_Func;
1008    typedef struct _Elm_Gengrid_Item Elm_Gengrid_Item; /**< Item of Elm_Gengrid. Sub-type of Elm_Widget_Item */
1009    typedef char        *(*GridItemLabelGetFunc) (void *data, Evas_Object *obj, const char *part);
1010    typedef Evas_Object *(*GridItemIconGetFunc)  (void *data, Evas_Object *obj, const char *part);
1011    typedef Eina_Bool    (*GridItemStateGetFunc) (void *data, Evas_Object *obj, const char *part);
1012    typedef void         (*GridItemDelFunc)      (void *data, Evas_Object *obj);
1013
1014    struct _Elm_Gengrid_Item_Class
1015      {
1016         const char             *item_style;
1017         struct _Elm_Gengrid_Item_Class_Func
1018           {
1019              GridItemLabelGetFunc  label_get;
1020              GridItemIconGetFunc   icon_get;
1021              GridItemStateGetFunc  state_get;
1022              GridItemDelFunc       del;
1023           } func;
1024      };
1025
1026    EAPI Evas_Object       *elm_gengrid_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1027    EAPI void               elm_gengrid_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
1028    EAPI void               elm_gengrid_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
1029    EAPI void               elm_gengrid_align_set(Evas_Object *obj, double align_x, double align_y) EINA_ARG_NONNULL(1);
1030    EAPI void               elm_gengrid_align_get(const Evas_Object *obj, double *align_x, double *align_y) EINA_ARG_NONNULL(1);
1031
1032    EAPI void               elm_gengrid_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode) EINA_ARG_NONNULL(1);
1033    EAPI Eina_Bool          elm_gengrid_reorder_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1034    EAPI void               elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
1035    EAPI Eina_Bool          elm_gengrid_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1036    EAPI void               elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
1037    EAPI Eina_Bool          elm_gengrid_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1038    EAPI void               elm_gengrid_multi_select_set(Evas_Object *obj, Eina_Bool multi) EINA_ARG_NONNULL(1);
1039    EAPI Eina_Bool          elm_gengrid_multi_select_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1040    EAPI void               elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
1041    EAPI void               elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
1042    EAPI void               elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1);
1043    EAPI void               elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1);
1044    EAPI void               elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize) EINA_ARG_NONNULL(1);
1045    EAPI void               elm_gengrid_horizontal_set(Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
1046    EAPI Eina_Bool          elm_gengrid_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1047
1048    EAPI Elm_Gengrid_Item  *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1049    EAPI Elm_Gengrid_Item  *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1050
1051    EAPI Elm_Gengrid_Item  *elm_gengrid_item_next_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1052    EAPI Elm_Gengrid_Item  *elm_gengrid_item_prev_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1053    EAPI Evas_Object       *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1054    EAPI void               elm_gengrid_item_del(Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1055    EAPI void               elm_gengrid_item_update(Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1056    EAPI void              *elm_gengrid_item_data_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1057    EAPI void               elm_gengrid_item_data_set(Elm_Gengrid_Item *item, const void *data) EINA_ARG_NONNULL(1);
1058    EAPI void               elm_gengrid_item_pos_get(const Elm_Gengrid_Item *item, unsigned int *x, unsigned int *y) EINA_ARG_NONNULL(1);
1059    EAPI void               elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
1060    EAPI Eina_Bool          elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1061    EAPI const Evas_Object *elm_gengrid_item_object_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1062    EAPI void               elm_gengrid_item_show(Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1063    EAPI void               elm_gengrid_item_bring_in(Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1064    EAPI void               elm_gengrid_item_disabled_set(Elm_Gengrid_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
1065    EAPI Eina_Bool          elm_gengrid_item_disabled_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1066
1067    EAPI void               elm_gengrid_item_tooltip_text_set(Elm_Gengrid_Item *item, const char *text) EINA_ARG_NONNULL(1);
1068    EAPI void               elm_gengrid_item_tooltip_content_cb_set(Elm_Gengrid_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
1069    EAPI void               elm_gengrid_item_tooltip_unset(Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1070    EAPI void               elm_gengrid_item_tooltip_style_set(Elm_Gengrid_Item *item, const char *style) EINA_ARG_NONNULL(1);
1071    EAPI const char        *elm_gengrid_item_tooltip_style_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1072    EAPI void               elm_gengrid_item_cursor_set(Elm_Gengrid_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
1073    EAPI const char        *elm_gengrid_item_cursor_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1074    EAPI void               elm_gengrid_item_cursor_unset(Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1075    EAPI void               elm_gengrid_item_cursor_style_set(Elm_Gengrid_Item *item, const char *style) EINA_ARG_NONNULL(1);
1076    EAPI const char        *elm_gengrid_item_cursor_style_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1077    EAPI void               elm_gengrid_item_cursor_engine_only_set(Elm_Gengrid_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
1078    EAPI Eina_Bool          elm_gengrid_item_cursor_engine_only_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
1079
1080    EAPI void               elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
1081    EAPI Elm_Gengrid_Item  *elm_gengrid_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1082    EAPI const Eina_List   *elm_gengrid_selected_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1083
1084    EAPI Elm_Gengrid_Item  *elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic,  const void *data, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
1085    EAPI Elm_Gengrid_Item  *elm_gengrid_item_prepend(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
1086    EAPI Elm_Gengrid_Item  *elm_gengrid_item_insert_before(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Elm_Gengrid_Item *relative, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
1087    EAPI Elm_Gengrid_Item  *elm_gengrid_item_insert_after(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Elm_Gengrid_Item *relative, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
1088    /* smart callbacks called:
1089     *
1090     * selected - User has selected an item.
1091     * unselected - User has unselected an item.
1092     * clicked,double - User has double-clicked or pressed enter on an item.
1093     * realized - An evas object for an item was built.
1094     * unrealized - An evas object for an item was deleted.
1095     * changed - An item has been added, removed, resized or moved,
1096     * or gengrid has been resized or horizontal property has been changed.
1097     * scroll - the content has been scrolled (moved).
1098     * "scroll,drag,start" - dragging the contents around has started.
1099     * "scroll,drat,stop" - dragging the contents around has stopped.
1100     * drag - Gengrid is being dragged.
1101     * "drag,start,up" - Gengrid has been dragged (not scrolled) up.
1102     * "drag,start,down" - Gengrid has been dragged (not scrolled) down.
1103     * "drag,start,left" - Gengrid has been dragged (not scrolled) left.
1104     * "drag,start,rigth" - Gengrid has been dragged (nto scrolled) right.
1105     * "drag,stop" - Gengrid is not being dragged.
1106     */
1107
1108    /* clock */
1109    typedef enum _Elm_Clock_Digedit
1110      {
1111         ELM_CLOCK_NONE         = 0,
1112         ELM_CLOCK_HOUR_DECIMAL = 1 << 0,
1113         ELM_CLOCK_HOUR_UNIT    = 1 << 1,
1114         ELM_CLOCK_MIN_DECIMAL  = 1 << 2,
1115         ELM_CLOCK_MIN_UNIT     = 1 << 3,
1116         ELM_CLOCK_SEC_DECIMAL  = 1 << 4,
1117         ELM_CLOCK_SEC_UNIT     = 1 << 5,
1118         ELM_CLOCK_ALL          = (1 << 6) - 1
1119      } Elm_Clock_Digedit;
1120
1121    EAPI Evas_Object      *elm_clock_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1122    EAPI void              elm_clock_time_set(Evas_Object *obj, int hrs, int min, int sec) EINA_ARG_NONNULL(1);
1123    EAPI void              elm_clock_time_get(const Evas_Object *obj, int *hrs, int *min, int *sec) EINA_ARG_NONNULL(1);
1124    EAPI void              elm_clock_edit_set(Evas_Object *obj, Eina_Bool edit) EINA_ARG_NONNULL(1);
1125    EAPI Eina_Bool         elm_clock_edit_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1126    EAPI void              elm_clock_digit_edit_set(Evas_Object *obj, Elm_Clock_Digedit digedit) EINA_ARG_NONNULL(1);
1127    EAPI Elm_Clock_Digedit elm_clock_digit_edit_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1128    EAPI void              elm_clock_show_am_pm_set(Evas_Object *obj, Eina_Bool am_pm) EINA_ARG_NONNULL(1);
1129    EAPI Eina_Bool         elm_clock_show_am_pm_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1130    EAPI void              elm_clock_show_seconds_set(Evas_Object *obj, Eina_Bool seconds) EINA_ARG_NONNULL(1);
1131    EAPI Eina_Bool         elm_clock_show_seconds_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1132    EAPI void              elm_clock_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
1133    EAPI double            elm_clock_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1134    /* smart callbacks called:
1135     * "changed" - the user changed the time
1136     */
1137
1138    /* layout */
1139    EAPI Evas_Object       *elm_layout_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1140    EAPI Eina_Bool          elm_layout_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1);
1141    EAPI Eina_Bool          elm_layout_theme_set(Evas_Object *obj, const char *clas, const char *group, const char *style) EINA_ARG_NONNULL(1);
1142    EAPI void               elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
1143    EAPI Evas_Object       *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
1144    EAPI Evas_Object       *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
1145    EAPI void               elm_layout_text_set(Evas_Object *obj, const char *part, const char *text) EINA_ARG_NONNULL(1);
1146    EAPI const char        *elm_layout_text_get(const Evas_Object *obj, const char *part) EINA_ARG_NONNULL(1);
1147    EAPI void               elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1);
1148    EAPI void               elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1);
1149    EAPI void               elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference) EINA_ARG_NONNULL(1);
1150    EAPI void               elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos) EINA_ARG_NONNULL(1);
1151    EAPI Evas_Object       *elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1, 2, 3);
1152    EAPI void               elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear) EINA_ARG_NONNULL(1, 2);
1153    EAPI void               elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) EINA_ARG_NONNULL(1);
1154    EAPI Evas_Object       *elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj) EINA_ARG_NONNULL(1, 2, 3);
1155    EAPI void               elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear) EINA_ARG_NONNULL(1, 2);
1156    EAPI Evas_Object       *elm_layout_edje_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1157    EAPI const char        *elm_layout_data_get(const Evas_Object *obj, const char *key) EINA_ARG_NONNULL(1, 2);
1158    EAPI void               elm_layout_sizing_eval(Evas_Object *obj) EINA_ARG_NONNULL(1);
1159    EAPI Eina_Bool          elm_layout_part_cursor_set(Evas_Object *obj, const char *part_name, const char *cursor) EINA_ARG_NONNULL(1, 2);
1160    EAPI const char        *elm_layout_part_cursor_get(const Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
1161    EAPI void               elm_layout_part_cursor_unset(Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
1162    EAPI Eina_Bool          elm_layout_part_cursor_style_set(Evas_Object *obj, const char *part_name, const char *style) EINA_ARG_NONNULL(1, 2);
1163    EAPI const char        *elm_layout_part_cursor_style_get(const Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
1164    EAPI Eina_Bool          elm_layout_part_cursor_engine_only_set(Evas_Object *obj, const char *part_name, Eina_Bool engine_only) EINA_ARG_NONNULL(1, 2);
1165    EAPI Eina_Bool          elm_layout_part_cursor_engine_only_get(const Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
1166 /**
1167  * @def elm_layout_icon_set
1168  * Convienience macro to set the icon object in a layout that follows the
1169  * Elementary naming convention for its parts.
1170  *
1171  * @ingroup Layout
1172  */
1173 #define elm_layout_icon_set(_ly, _obj) \
1174   do { \
1175     const char *sig; \
1176     elm_layout_content_set((_ly), "elm.swallow.icon", (_obj)); \
1177     if ((_obj)) sig = "elm,state,icon,visible"; \
1178     else sig = "elm,state,icon,hidden"; \
1179     elm_object_signal_emit((_ly), sig, "elm"); \
1180   } while (0)
1181
1182 /**
1183  * @def elm_layout_icon_get
1184  * Convienience macro to get the icon object from a layout that follows the
1185  * Elementary naming convention for its parts.
1186  *
1187  * @ingroup Layout
1188  */
1189 #define elm_layout_icon_get(_ly) \
1190   elm_layout_content_get((_ly), "elm.swallow.icon")
1191
1192 /**
1193  * @def elm_layout_end_set
1194  * Convienience macro to set the end object in a layout that follows the
1195  * Elementary naming convention for its parts.
1196  *
1197  * @ingroup Layout
1198  */
1199 #define elm_layout_end_set(_ly, _obj) \
1200   do { \
1201     const char *sig; \
1202     elm_layout_content_set((_ly), "elm.swallow.end", (_obj)); \
1203     if ((_obj)) sig = "elm,state,end,visible"; \
1204     else sig = "elm,state,end,hidden"; \
1205     elm_object_signal_emit((_ly), sig, "elm"); \
1206   } while (0)
1207
1208 /**
1209  * @def elm_layout_end_get
1210  * Convienience macro to get the end object in a layout that follows the
1211  * Elementary naming convention for its parts.
1212  *
1213  * @ingroup Layout
1214  */
1215 #define elm_layout_end_get(_ly) \
1216   elm_layout_content_get((_ly), "elm.swallow.end")
1217
1218 /**
1219  * @def elm_layout_label_set
1220  * Convienience macro to set the label in a layout that follows the
1221  * Elementary naming convention for its parts.
1222  *
1223  * @ingroup Layout
1224  */
1225 #define elm_layout_label_set(_ly, _txt) \
1226   elm_layout_text_set((_ly), "elm.text", (_txt))
1227
1228 /**
1229  * @def elm_layout_label_get
1230  * Convienience macro to get the label in a layout that follows the
1231  * Elementary naming convention for its parts.
1232  *
1233  * @ingroup Layout
1234  */
1235 #define elm_layout_label_get(_ly) \
1236   elm_layout_text_get((_ly), "elm.text")
1237
1238    /* smart callbacks called:
1239     */
1240
1241    /* notify */
1242    typedef enum _Elm_Notify_Orient
1243      {
1244         ELM_NOTIFY_ORIENT_TOP,
1245         ELM_NOTIFY_ORIENT_CENTER,
1246         ELM_NOTIFY_ORIENT_BOTTOM,
1247         ELM_NOTIFY_ORIENT_LEFT,
1248         ELM_NOTIFY_ORIENT_RIGHT,
1249         ELM_NOTIFY_ORIENT_TOP_LEFT,
1250         ELM_NOTIFY_ORIENT_TOP_RIGHT,
1251         ELM_NOTIFY_ORIENT_BOTTOM_LEFT,
1252         ELM_NOTIFY_ORIENT_BOTTOM_RIGHT,
1253         ELM_NOTIFY_ORIENT_LAST
1254      } Elm_Notify_Orient;
1255    EAPI Evas_Object      *elm_notify_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1256    EAPI void              elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
1257    EAPI Evas_Object      *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
1258    EAPI Evas_Object      *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1259    EAPI void              elm_notify_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
1260    EAPI Evas_Object      *elm_notify_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1261    EAPI void              elm_notify_orient_set(Evas_Object *obj, Elm_Notify_Orient orient) EINA_ARG_NONNULL(1);
1262    EAPI Elm_Notify_Orient elm_notify_orient_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1263    EAPI void              elm_notify_timeout_set(Evas_Object *obj, double timeout) EINA_ARG_NONNULL(1);
1264    EAPI double            elm_notify_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1265    EAPI void              elm_notify_repeat_events_set(Evas_Object *obj, Eina_Bool repeat) EINA_ARG_NONNULL(1);
1266    EAPI Eina_Bool         elm_notify_repeat_events_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1267    /* smart callbacks called:
1268     * "timeout" - when timeout happens on notify and it's hidden
1269     * "block,clicked" - when it's hidden by a click outside of the notify's view
1270     */
1271
1272    /* hover */
1273    typedef enum _Elm_Hover_Axis
1274      {
1275         ELM_HOVER_AXIS_NONE,
1276         ELM_HOVER_AXIS_HORIZONTAL,
1277         ELM_HOVER_AXIS_VERTICAL,
1278         ELM_HOVER_AXIS_BOTH
1279      } Elm_Hover_Axis;
1280    EAPI Evas_Object *elm_hover_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1281    EAPI void         elm_hover_target_set(Evas_Object *obj, Evas_Object *target) EINA_ARG_NONNULL(1);
1282    EAPI Evas_Object *elm_hover_target_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1283    EAPI void         elm_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
1284    EAPI Evas_Object *elm_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1285    EAPI void         elm_hover_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
1286    EAPI Evas_Object *elm_hover_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
1287    EAPI Evas_Object *elm_hover_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
1288    EAPI const char  *elm_hover_best_content_location_get(const Evas_Object *obj, Elm_Hover_Axis pref_axis) EINA_ARG_NONNULL(1);
1289    /* available styles:
1290     * default
1291     * popout
1292     * menu
1293     * hoversel_vertical
1294     */
1295    /* smart callbacks called:
1296     * "clicked" - the user clicked the empty space in the hover to dismiss
1297     * "smart,changed" - a content object placed under the "smart"
1298     *                   policy was replaced to a new slot direction.
1299     */
1300
1301    /* entry */
1302    typedef struct _Elm_Entry_Anchor_Info Elm_Entry_Anchor_Info;
1303    struct _Elm_Entry_Anchor_Info
1304      {
1305         const char *name;
1306         int         button;
1307         Evas_Coord  x, y, w, h;
1308      };
1309    typedef enum _Elm_Icon_Type
1310      {
1311         ELM_ICON_NONE,
1312         ELM_ICON_FILE,
1313         ELM_ICON_STANDARD
1314      } Elm_Icon_Type;
1315    typedef struct _Elm_Hoversel_Item Elm_Hoversel_Item; /**< Item of Elm_Hoversel. Sub-type of Elm_Widget_Item */
1316
1317    EAPI Evas_Object *elm_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1318    EAPI void         elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line) EINA_ARG_NONNULL(1);
1319    EAPI Eina_Bool    elm_entry_single_line_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1320    EAPI void         elm_entry_password_set(Evas_Object *obj, Eina_Bool password) EINA_ARG_NONNULL(1);
1321    EAPI Eina_Bool    elm_entry_password_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1322    EAPI void         elm_entry_entry_set(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
1323    EAPI const char  *elm_entry_entry_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1324    EAPI Eina_Bool    elm_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1325    EAPI const char  *elm_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1326    EAPI void         elm_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
1327    EAPI void         elm_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
1328    EAPI void         elm_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
1329    EAPI Eina_Bool    elm_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1330    EAPI void         elm_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1);
1331    EAPI void         elm_entry_select_all(Evas_Object *obj) EINA_ARG_NONNULL(1);
1332    EAPI Eina_Bool    elm_entry_cursor_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
1333    EAPI Eina_Bool    elm_entry_cursor_prev(Evas_Object *obj) EINA_ARG_NONNULL(1);
1334    EAPI Eina_Bool    elm_entry_cursor_up(Evas_Object *obj) EINA_ARG_NONNULL(1);
1335    EAPI Eina_Bool    elm_entry_cursor_down(Evas_Object *obj) EINA_ARG_NONNULL(1);
1336    EAPI void         elm_entry_cursor_begin_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
1337    EAPI void         elm_entry_cursor_end_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
1338    EAPI void         elm_entry_cursor_line_begin_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
1339    EAPI void         elm_entry_cursor_line_end_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
1340    EAPI void         elm_entry_cursor_selection_begin(Evas_Object *obj) EINA_ARG_NONNULL(1);
1341    EAPI void         elm_entry_cursor_selection_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
1342    EAPI Eina_Bool    elm_entry_cursor_is_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1343    EAPI Eina_Bool    elm_entry_cursor_is_visible_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1344    EAPI const char  *elm_entry_cursor_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1345    EAPI Eina_Bool    elm_entry_cursor_geometry_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
1346    EAPI void         elm_entry_cursor_pos_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
1347    EAPI int          elm_entry_cursor_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1348    EAPI void         elm_entry_selection_cut(Evas_Object *obj) EINA_ARG_NONNULL(1);
1349    EAPI void         elm_entry_selection_copy(Evas_Object *obj) EINA_ARG_NONNULL(1);
1350    EAPI void         elm_entry_selection_paste(Evas_Object *obj) EINA_ARG_NONNULL(1);
1351    EAPI void         elm_entry_context_menu_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
1352    EAPI void         elm_entry_context_menu_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1353    EAPI void         elm_entry_context_menu_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
1354    EAPI Eina_Bool    elm_entry_context_menu_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1355    EAPI void         elm_entry_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1356    EAPI void         elm_entry_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1357    EAPI void         elm_entry_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1358    EAPI void         elm_entry_text_filter_append(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
1359    EAPI void         elm_entry_text_filter_prepend(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
1360    EAPI void         elm_entry_text_filter_remove(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
1361    EAPI char        *elm_entry_markup_to_utf8(const char *s) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
1362    EAPI char        *elm_entry_utf8_to_markup(const char *s) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
1363    EAPI void         elm_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format) EINA_ARG_NONNULL(1);
1364    EAPI void         elm_entry_file_get(const Evas_Object *obj, const char **file, Elm_Text_Format *format) EINA_ARG_NONNULL(1);
1365    EAPI void         elm_entry_file_save(Evas_Object *obj) EINA_ARG_NONNULL(1);
1366    EAPI void         elm_entry_autosave_set(Evas_Object *obj, Eina_Bool autosave) EINA_ARG_NONNULL(1);
1367    EAPI Eina_Bool    elm_entry_autosave_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1368    EAPI void         elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly) EINA_ARG_NONNULL(1);
1369    EAPI Eina_Bool    elm_entry_cnp_textonly_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
1370
1371    /* pre-made filters for entries */
1372    typedef struct _Elm_Entry_Filter_Limit_Size Elm_Entry_Filter_Limit_Size;
1373    struct _Elm_Entry_Filter_Limit_Size
1374      {
1375         int max_char_count;
1376         int max_byte_count;
1377      };
1378    EAPI void         elm_entry_filter_limit_size(void *data, Evas_Object *entry, char **text) EINA_ARG_NONNULL(1, 2, 3);
1379    typedef struct _Elm_Entry_Filter_Accept_Set Elm_Entry_Filter_Accept_Set;
1380    struct _Elm_Entry_Filter_Accept_Set
1381      {
1382         const char *accepted;
1383         const char *rejected;
1384      };
1385    EAPI void         elm_entry_filter_accept_set(void *data, Evas_Object *entry, char **text) EINA_ARG_NONNULL(1, 3);
1386    /* smart callbacks called:
1387     * "changed" - the text content changed
1388     * "selection,start" - the user started selecting text
1389     * "selection,changed" - the user modified the selection size/location
1390     * "selection,cleared" - the user cleared the selection
1391     * "selection,paste" - the user requested a paste of text
1392     * "selection,copy" - the user copied the text
1393     * "selection,cut" - the user cut the text
1394     * "cursor,changed" - the cursor changed position
1395     * "anchor,clicked" - achor called was clicked | event_info = Elm_Entry_Anchor_Info
1396     * "activated" - when the enter key is pressed (useful for single line)
1397     * "press" - when finger/mouse is pressed down
1398     * "clicked" - when finger/mouse is pressed and released (without a drag etc.)
1399     * "clicked,double" - when finger/mouse is double-pressed
1400     * "longpressed" - the entry has been longpressed
1401     * "focused" - the entry has received keyboard focus
1402     * "unfocused" - keyboard focus is gone
1403     */
1404
1405    /* composite widgets - these basically put together basic widgets above
1406     * in convenient packages that do more than basic stuff */
1407
1408    /* anchorview */
1409    typedef struct _Elm_Entry_Anchorview_Info Elm_Entry_Anchorview_Info;
1410    struct _Elm_Entry_Anchorview_Info
1411      {
1412         const char     *name;
1413         int             button;
1414         Evas_Object    *hover;
1415         struct {
1416              Evas_Coord    x, y, w, h;
1417         } anchor, hover_parent;
1418         Eina_Bool       hover_left : 1;
1419         Eina_Bool       hover_right : 1;
1420         Eina_Bool       hover_top : 1;
1421         Eina_Bool       hover_bottom : 1;
1422      };
1423    EAPI Evas_Object *elm_anchorview_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1424    EAPI void         elm_anchorview_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
1425    EAPI const char  *elm_anchorview_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1426
1427    EAPI void         elm_anchorview_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
1428    EAPI Evas_Object *elm_anchorview_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1429    EAPI void         elm_anchorview_hover_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
1430    EAPI const char  *elm_anchorview_hover_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1431    EAPI void         elm_anchorview_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
1432    EAPI void         elm_anchorview_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
1433    EAPI void         elm_anchorview_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
1434    EAPI void         elm_anchorview_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorview, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1435    EAPI void         elm_anchorview_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorview, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1436    EAPI void         elm_anchorview_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorview, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1437    /* smart callbacks called:
1438     * "anchor,clicked" - achor called was clicked | event_info = Elm_Entry_Anchorview_Info
1439     */
1440
1441    /* anchorblock */
1442    typedef struct _Elm_Entry_Anchorblock_Info Elm_Entry_Anchorblock_Info;
1443    struct _Elm_Entry_Anchorblock_Info
1444      {
1445         const char     *name;
1446         int             button;
1447         Evas_Object    *hover;
1448         struct {
1449              Evas_Coord    x, y, w, h;
1450         } anchor, hover_parent;
1451         Eina_Bool       hover_left : 1;
1452         Eina_Bool       hover_right : 1;
1453         Eina_Bool       hover_top : 1;
1454         Eina_Bool       hover_bottom : 1;
1455      };
1456    EAPI Evas_Object *elm_anchorblock_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1457    EAPI void         elm_anchorblock_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
1458    EAPI const char  *elm_anchorblock_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1459    EAPI void         elm_anchorblock_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
1460    EAPI Evas_Object *elm_anchorblock_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1461    EAPI void         elm_anchorblock_hover_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
1462    EAPI const char  *elm_anchorblock_hover_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1463    EAPI void         elm_anchorblock_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
1464    EAPI void         elm_anchorblock_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorblock, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1465    EAPI void         elm_anchorblock_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorblock, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1466    EAPI void         elm_anchorblock_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorblock, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
1467    /* smart callbacks called:
1468     * "anchor,clicked" - achor called was clicked | event_info = Elm_Entry_Anchorblock_Info
1469     */
1470
1471    /* bubble */
1472    EAPI Evas_Object *elm_bubble_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1473    EAPI void         elm_bubble_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
1474    EAPI const char  *elm_bubble_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1475    EAPI void         elm_bubble_info_set(Evas_Object *obj, const char *info) EINA_ARG_NONNULL(1);
1476    EAPI const char  *elm_bubble_info_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1477
1478    EAPI void         elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
1479    EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1480    EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
1481    EAPI void         elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
1482    EAPI Evas_Object *elm_bubble_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1483    EAPI Evas_Object *elm_bubble_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
1484    EAPI void         elm_bubble_corner_set(Evas_Object *obj, const char *corner) EINA_ARG_NONNULL(1, 2);
1485    EAPI const char  *elm_bubble_corner_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1486    /* smart callbacks called:
1487     * "clicked" - the user clicked the bubble
1488     */
1489
1490    /* photo */
1491    EAPI Evas_Object *elm_photo_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1492    EAPI Eina_Bool    elm_photo_file_set(Evas_Object *obj, const char *file) EINA_ARG_NONNULL(1);
1493    EAPI void         elm_photo_size_set(Evas_Object *obj, int size) EINA_ARG_NONNULL(1);
1494    EAPI void         elm_photo_fill_inside_set(Evas_Object *obj, Eina_Bool fill) EINA_ARG_NONNULL(1);
1495    EAPI void         elm_photo_editable_set(Evas_Object *obj, Eina_Bool set) EINA_ARG_NONNULL(1);
1496    /* smart callbacks called:
1497     * "clicked" - the user clicked the icon
1498     * "drag,start" - Someone started dragging the image out of the object
1499     * "drag,end" - Dragged item was dropped (somewhere)
1500     */
1501
1502    /* thumb */
1503    typedef enum _Elm_Thumb_Animation_Setting
1504      {
1505         ELM_THUMB_ANIMATION_START = 0, /* Play animation once */
1506         ELM_THUMB_ANIMATION_LOOP,      /* Keep playing animation until stop is requested */
1507         ELM_THUMB_ANIMATION_STOP,
1508         ELM_THUMB_ANIMATION_LAST
1509      } Elm_Thumb_Animation_Setting;
1510
1511    EAPI Evas_Object                 *elm_thumb_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1512    EAPI void                         elm_thumb_reload(Evas_Object *obj) EINA_ARG_NONNULL(1);
1513    EAPI void                         elm_thumb_file_set(Evas_Object *obj, const char *file, const char *key) EINA_ARG_NONNULL(1);
1514    EAPI void                         elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1);
1515    EAPI void                         elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1);
1516    EAPI void                         elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s) EINA_ARG_NONNULL(1);
1517    EAPI Elm_Thumb_Animation_Setting  elm_thumb_animate_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1518    EAPI void                        *elm_thumb_ethumb_client_get(void);
1519    EAPI Eina_Bool                    elm_thumb_ethumb_client_connected(void);
1520    EAPI Eina_Bool                    elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit) EINA_ARG_NONNULL(1);
1521    EAPI Eina_Bool                    elm_thumb_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1522    /* available styles:
1523     * default
1524     * noframe
1525     */
1526    /* smart callbacks called:
1527     * "clicked" - This is called when a user has clicked the thumb without dragging around.
1528     * "clicked,double" - This is called when a user has double-clicked the thumb.
1529     * "press" - This is called when a user has pressed down the thumb.
1530     * "generate,start" - The thumbnail generation started.
1531     * "generate,stop" - The generation process stopped.
1532     * "generate,error" - The generation failed.
1533     * "load,error" - The thumbnail image loading failed.
1534     */
1535
1536    /* hoversel */
1537    EAPI Evas_Object       *elm_hoversel_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1538    EAPI void               elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
1539    EAPI Eina_Bool          elm_hoversel_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1540    EAPI void               elm_hoversel_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
1541    EAPI Evas_Object       *elm_hoversel_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1542    EAPI void               elm_hoversel_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
1543    EAPI const char        *elm_hoversel_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1544    EAPI void               elm_hoversel_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
1545    EAPI Evas_Object       *elm_hoversel_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1546    EAPI Evas_Object       *elm_hoversel_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
1547    EAPI void               elm_hoversel_hover_begin(Evas_Object *obj) EINA_ARG_NONNULL(1);
1548    EAPI void               elm_hoversel_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
1549    EAPI Eina_Bool          elm_hoversel_expanded_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1550    EAPI void               elm_hoversel_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
1551    EAPI const Eina_List   *elm_hoversel_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1552    EAPI Elm_Hoversel_Item *elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1553    EAPI void               elm_hoversel_item_del(Elm_Hoversel_Item *item) EINA_ARG_NONNULL(1);
1554    EAPI void               elm_hoversel_item_del_cb_set(Elm_Hoversel_Item *it, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
1555    EAPI void              *elm_hoversel_item_data_get(const Elm_Hoversel_Item *it) EINA_ARG_NONNULL(1);
1556    EAPI const char        *elm_hoversel_item_label_get(const Elm_Hoversel_Item *it) EINA_ARG_NONNULL(1);
1557    EAPI void               elm_hoversel_item_icon_set(Elm_Hoversel_Item *it, const char *icon_file, const char *icon_group, Elm_Icon_Type icon_type) EINA_ARG_NONNULL(1);
1558    EAPI void               elm_hoversel_item_icon_get(const Elm_Hoversel_Item *it, const char **icon_file, const char **icon_group, Elm_Icon_Type *icon_type) EINA_ARG_NONNULL(1);
1559    /* smart callbacks called:
1560     * "clicked" - the user clicked the hoversel button and popped up the sel
1561     * "selected" - an item in the hoversel list is selected
1562     * "dismissed" - the hover is dismissed
1563     */
1564
1565    /* toolbar */
1566    typedef enum _Elm_Toolbar_Shrink_Mode
1567      {
1568         ELM_TOOLBAR_SHRINK_NONE,   /**< set toolbar minimun size to fit all the items */
1569         ELM_TOOLBAR_SHRINK_HIDE,   /**< hide excess items */
1570         ELM_TOOLBAR_SHRINK_SCROLL, /**< allow accessing excess items through a scroller */
1571         ELM_TOOLBAR_SHRINK_MENU    /**< inserts a button to pop up a menu with excess items */
1572      } Elm_Toolbar_Shrink_Mode;
1573
1574    typedef struct _Elm_Toolbar_Item Elm_Toolbar_Item; /**< Item of Elm_Toolbar. Sub-type of Elm_Widget_Item */
1575    typedef struct _Elm_Toolbar_Item_State Elm_Toolbar_Item_State; /** State of a Elm_Toolbar_Item */
1576
1577    EAPI Evas_Object            *elm_toolbar_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1578    EAPI void                    elm_toolbar_icon_size_set(Evas_Object *obj, int icon_size) EINA_ARG_NONNULL(1);
1579    EAPI int                     elm_toolbar_icon_size_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1580    EAPI void                    elm_toolbar_icon_order_lookup_set(Evas_Object *obj, Elm_Icon_Lookup_Order order) EINA_ARG_NONNULL(1);
1581    EAPI Elm_Icon_Lookup_Order   elm_toolbar_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1582    EAPI void                    elm_toolbar_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
1583    EAPI Eina_Bool               elm_toolbar_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1584    EAPI Elm_Toolbar_Item       *elm_toolbar_item_append(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1585    EAPI Elm_Toolbar_Item       *elm_toolbar_item_prepend(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1586    EAPI Elm_Toolbar_Item       *elm_toolbar_item_insert_before(Evas_Object *obj, Elm_Toolbar_Item *before, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1587    EAPI Elm_Toolbar_Item       *elm_toolbar_item_insert_after(Evas_Object *obj, Elm_Toolbar_Item *after, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1588    EAPI Elm_Toolbar_Item       *elm_toolbar_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1589    EAPI Elm_Toolbar_Item       *elm_toolbar_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1590    EAPI Elm_Toolbar_Item       *elm_toolbar_item_next_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1591    EAPI Elm_Toolbar_Item       *elm_toolbar_item_prev_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1592    EAPI Evas_Object            *elm_toolbar_item_toolbar_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1593    EAPI void                    elm_toolbar_item_priority_set(Elm_Toolbar_Item *item, int priority) EINA_ARG_NONNULL(1);
1594    EAPI int                     elm_toolbar_item_priority_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1595    EAPI const char             *elm_toolbar_item_icon_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1596    EAPI const char             *elm_toolbar_item_label_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1597    EAPI void                    elm_toolbar_item_label_set(Elm_Toolbar_Item *item, const char *label) EINA_ARG_NONNULL(1);
1598    EAPI void                   *elm_toolbar_item_data_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1599    EAPI void                    elm_toolbar_item_data_set(Elm_Toolbar_Item *item, const void *data) EINA_ARG_NONNULL(1);
1600    EAPI Elm_Toolbar_Item       *elm_toolbar_item_find_by_label(const Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
1601    EAPI Eina_Bool               elm_toolbar_item_selected_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1602    EAPI void                    elm_toolbar_item_selected_set(Elm_Toolbar_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
1603    EAPI Elm_Toolbar_Item       *elm_toolbar_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1604    EAPI void                    elm_toolbar_item_icon_set(Elm_Toolbar_Item *item, const char *icon) EINA_ARG_NONNULL(1);
1605    EAPI void                    elm_toolbar_item_del(Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1606    EAPI void                    elm_toolbar_item_del_cb_set(Elm_Toolbar_Item *item, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
1607    EAPI Eina_Bool               elm_toolbar_item_disabled_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1608    EAPI void                    elm_toolbar_item_disabled_set(Elm_Toolbar_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
1609    EAPI void                    elm_toolbar_item_separator_set(Elm_Toolbar_Item *item, Eina_Bool separator) EINA_ARG_NONNULL(1);
1610    EAPI Eina_Bool               elm_toolbar_item_separator_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1611    EAPI void                    elm_toolbar_mode_shrink_set(Evas_Object *obj, Elm_Toolbar_Shrink_Mode shrink_mode) EINA_ARG_NONNULL(1);
1612    EAPI Elm_Toolbar_Shrink_Mode elm_toolbar_mode_shrink_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1613    EAPI void                    elm_toolbar_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) EINA_ARG_NONNULL(1);
1614    EAPI Eina_Bool               elm_toolbar_homogeneous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1615    EINA_DEPRECATED EAPI void    elm_toolbar_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
1616    EINA_DEPRECATED EAPI Eina_Bool elm_toolbar_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1617    EAPI void                    elm_toolbar_menu_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
1618    EAPI Evas_Object            *elm_toolbar_menu_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1619    EAPI void                    elm_toolbar_align_set(Evas_Object *obj, double align) EINA_ARG_NONNULL(1);
1620    EAPI double                  elm_toolbar_align_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1621    EAPI void                    elm_toolbar_item_menu_set(Elm_Toolbar_Item *item, Eina_Bool menu) EINA_ARG_NONNULL(1);
1622    EAPI Evas_Object            *elm_toolbar_item_menu_get(Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1623    EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_add(Elm_Toolbar_Item *item, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1624    EAPI Eina_Bool               elm_toolbar_item_state_del(Elm_Toolbar_Item *item, Elm_Toolbar_Item_State *state) EINA_ARG_NONNULL(1);
1625    EAPI Eina_Bool               elm_toolbar_item_state_set(Elm_Toolbar_Item *it, Elm_Toolbar_Item_State *state) EINA_ARG_NONNULL(1);
1626    EAPI void                    elm_toolbar_item_state_unset(Elm_Toolbar_Item *it) EINA_ARG_NONNULL(1);
1627    EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_get(const Elm_Toolbar_Item *it) EINA_ARG_NONNULL(1);
1628    EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_next(Elm_Toolbar_Item *it) EINA_ARG_NONNULL(1);
1629    EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_prev(Elm_Toolbar_Item *it) EINA_ARG_NONNULL(1);
1630    EAPI void                    elm_toolbar_item_tooltip_text_set(Elm_Toolbar_Item *item, const char *text) EINA_ARG_NONNULL(1);
1631    EAPI void                    elm_toolbar_item_tooltip_content_cb_set(Elm_Toolbar_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
1632    EAPI void                    elm_toolbar_item_tooltip_unset(Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1633    EAPI void                    elm_toolbar_item_tooltip_style_set(Elm_Toolbar_Item *item, const char *style) EINA_ARG_NONNULL(1);
1634    EAPI const char             *elm_toolbar_item_tooltip_style_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1635    EAPI void                    elm_toolbar_item_cursor_set(Elm_Toolbar_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
1636    EAPI const char             *elm_toolbar_item_cursor_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1637    EAPI void                    elm_toolbar_item_cursor_unset(Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1638    EAPI void                    elm_toolbar_item_cursor_style_set(Elm_Toolbar_Item *item, const char *style) EINA_ARG_NONNULL(1);
1639    EAPI const char             *elm_toolbar_item_cursor_style_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1640    EAPI void                    elm_toolbar_item_cursor_engine_only_set(Elm_Toolbar_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
1641    EAPI Eina_Bool               elm_toolbar_item_cursor_engine_only_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
1642    /* smart callbacks called:
1643     * "clicked" - when the user clicks on a toolbar item and becomes selected
1644     */
1645    /* available styles:
1646     * default
1647     * transparent (no background or shadow, just show the provided content)
1648     */
1649
1650    /* tooltip */
1651    EAPI double       elm_tooltip_delay_get(void);
1652    EAPI Eina_Bool    elm_tooltip_delay_set(double delay);
1653    EAPI void         elm_object_tooltip_show(Evas_Object *obj) EINA_ARG_NONNULL(1);
1654    EAPI void         elm_object_tooltip_hide(Evas_Object *obj) EINA_ARG_NONNULL(1);
1655    EAPI void         elm_object_tooltip_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1, 2);
1656    EAPI void         elm_object_tooltip_content_cb_set(Evas_Object *obj, Elm_Tooltip_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
1657    EAPI void         elm_object_tooltip_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
1658    EAPI void         elm_object_tooltip_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
1659    EAPI const char  *elm_object_tooltip_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1660    EAPI void         elm_object_cursor_set(Evas_Object *obj, const char *cursor) EINA_ARG_NONNULL(1);
1661    EAPI const char  *elm_object_cursor_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1662    EAPI void         elm_object_cursor_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
1663    EAPI void         elm_object_cursor_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
1664    EAPI const char  *elm_object_cursor_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1665    EAPI void         elm_object_cursor_engine_only_set(Evas_Object *obj, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
1666    EAPI Eina_Bool    elm_object_cursor_engine_only_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1667
1668    /* cursors */
1669    EAPI int          elm_cursor_engine_only_get(void);
1670    EAPI Eina_Bool    elm_cursor_engine_only_set(int engine_only);
1671
1672    /* menu */
1673    typedef struct _Elm_Menu_Item Elm_Menu_Item; /**< Item of Elm_Menu. Sub-type of Elm_Widget_Item */
1674    EAPI Evas_Object       *elm_menu_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1675    EAPI void               elm_menu_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
1676    EAPI Evas_Object       *elm_menu_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1677    EAPI void               elm_menu_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
1678    EAPI void               elm_menu_close(Evas_Object *obj) EINA_ARG_NONNULL(1);
1679    EAPI const Eina_List   *elm_menu_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1680    EAPI Evas_Object       *elm_menu_item_object_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
1681    EAPI Elm_Menu_Item     *elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1682    EAPI void               elm_menu_item_label_set(Elm_Menu_Item *item, const char *label) EINA_ARG_NONNULL(1);
1683    EAPI const char        *elm_menu_item_label_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
1684    EAPI void               elm_menu_item_icon_set(Elm_Menu_Item *item, const char *icon) EINA_ARG_NONNULL(1, 2);
1685    EAPI const char        *elm_menu_item_icon_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
1686    EAPI const Evas_Object *elm_menu_item_object_icon_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
1687    EAPI void               elm_menu_item_selected_set(Elm_Menu_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
1688    EAPI Eina_Bool          elm_menu_item_selected_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
1689    EAPI void               elm_menu_item_disabled_set(Elm_Menu_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
1690    EAPI Eina_Bool          elm_menu_item_disabled_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
1691    EAPI Elm_Menu_Item     *elm_menu_item_separator_add(Evas_Object *obj, Elm_Menu_Item *parent) EINA_ARG_NONNULL(1);
1692    EAPI Eina_Bool          elm_menu_item_is_separator(Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
1693    EAPI void               elm_menu_item_del(Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
1694    EAPI void               elm_menu_item_del_cb_set(Elm_Menu_Item *it, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
1695    EAPI void              *elm_menu_item_data_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
1696    EAPI void               elm_menu_item_data_set(Elm_Menu_Item *item, const void *data) EINA_ARG_NONNULL(1);
1697    EAPI const Eina_List   *elm_menu_item_subitems_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
1698    EAPI const Elm_Menu_Item *elm_menu_selected_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
1699    EAPI const Elm_Menu_Item *elm_menu_last_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
1700    EAPI const Elm_Menu_Item *elm_menu_first_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
1701    EAPI const Elm_Menu_Item *elm_menu_item_next_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
1702    EAPI const Elm_Menu_Item *elm_menu_item_prev_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
1703
1704    /* smart callbacks called:
1705     * "clicked" - the user clicked the empty space in the menu to dismiss. event_info is NULL.
1706     */
1707
1708    /* list */
1709    typedef enum _Elm_List_Mode
1710      {
1711         ELM_LIST_COMPRESS = 0,
1712         ELM_LIST_SCROLL,
1713         ELM_LIST_LIMIT,
1714         ELM_LIST_EXPAND,
1715         ELM_LIST_LAST
1716      } Elm_List_Mode;
1717    typedef struct _Elm_List_Item Elm_List_Item; /**< Item of Elm_List. Sub-type of Elm_Widget_Item */
1718    EAPI Evas_Object     *elm_list_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1719    EAPI Elm_List_Item   *elm_list_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1720    EAPI Elm_List_Item   *elm_list_item_prepend(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
1721    EAPI Elm_List_Item   *elm_list_item_insert_before(Evas_Object *obj, Elm_List_Item *before, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
1722    EAPI Elm_List_Item   *elm_list_item_insert_after(Evas_Object *obj, Elm_List_Item *after, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
1723    EAPI Elm_List_Item   *elm_list_item_sorted_insert(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Object *end, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func) EINA_ARG_NONNULL(1);
1724    EAPI void             elm_list_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
1725    EAPI void             elm_list_go(Evas_Object *obj) EINA_ARG_NONNULL(1);
1726    EAPI void             elm_list_multi_select_set(Evas_Object *obj, Eina_Bool multi) EINA_ARG_NONNULL(1);
1727    EAPI Eina_Bool        elm_list_multi_select_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1728    EAPI void             elm_list_mode_set(Evas_Object *obj, Elm_List_Mode mode) EINA_ARG_NONNULL(1);
1729    EAPI Elm_List_Mode    elm_list_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1730    EAPI void             elm_list_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
1731    EAPI Eina_Bool        elm_list_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1732    EAPI void             elm_list_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
1733    EAPI Eina_Bool        elm_list_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1734    EAPI const Eina_List *elm_list_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1735    EAPI Elm_List_Item   *elm_list_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1736    EAPI const Eina_List *elm_list_selected_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1737    EAPI void             elm_list_item_separator_set(Elm_List_Item *it, Eina_Bool setting) EINA_ARG_NONNULL(1);
1738    EAPI Eina_Bool        elm_list_item_separator_get(const Elm_List_Item *it) EINA_ARG_NONNULL(1);
1739    EAPI void             elm_list_item_selected_set(Elm_List_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
1740    EAPI Eina_Bool        elm_list_item_selected_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1741    EAPI void             elm_list_item_show(Elm_List_Item *item) EINA_ARG_NONNULL(1);
1742    EAPI void             elm_list_item_bring_in(Elm_List_Item *item) EINA_ARG_NONNULL(1);
1743    EAPI void             elm_list_item_del(Elm_List_Item *item) EINA_ARG_NONNULL(1);
1744    EAPI void             elm_list_item_del_cb_set(Elm_List_Item *item, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
1745    EAPI void            *elm_list_item_data_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1746    EAPI Evas_Object     *elm_list_item_icon_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1747    EAPI void             elm_list_item_icon_set(Elm_List_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
1748    EAPI Evas_Object     *elm_list_item_end_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1749    EAPI void             elm_list_item_end_set(Elm_List_Item *item, Evas_Object *end) EINA_ARG_NONNULL(1);
1750    EAPI Evas_Object     *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1751    EAPI const char      *elm_list_item_label_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1752    EAPI void             elm_list_item_label_set(Elm_List_Item *item, const char *text) EINA_ARG_NONNULL(1);
1753    EAPI Elm_List_Item   *elm_list_item_prev(const Elm_List_Item *it) EINA_ARG_NONNULL(1);
1754    EAPI Elm_List_Item   *elm_list_item_next(const Elm_List_Item *it) EINA_ARG_NONNULL(1);
1755    EAPI void             elm_list_item_tooltip_text_set(Elm_List_Item *item, const char *text) EINA_ARG_NONNULL(1);
1756    EAPI void             elm_list_item_tooltip_content_cb_set(Elm_List_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
1757    EAPI void             elm_list_item_tooltip_unset(Elm_List_Item *item) EINA_ARG_NONNULL(1);
1758    EAPI void             elm_list_item_tooltip_style_set(Elm_List_Item *item, const char *style) EINA_ARG_NONNULL(1);
1759    EAPI const char      *elm_list_item_tooltip_style_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1760    EAPI void             elm_list_item_cursor_set(Elm_List_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
1761    EAPI const char      *elm_list_item_cursor_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1762    EAPI void             elm_list_item_cursor_unset(Elm_List_Item *item) EINA_ARG_NONNULL(1);
1763    EAPI void             elm_list_item_cursor_style_set(Elm_List_Item *item, const char *style) EINA_ARG_NONNULL(1);
1764    EAPI const char      *elm_list_item_cursor_style_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1765    EAPI void             elm_list_item_cursor_engine_only_set(Elm_List_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
1766    EAPI Eina_Bool        elm_list_item_cursor_engine_only_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
1767    EAPI void             elm_list_item_disabled_set(Elm_List_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
1768    EAPI Eina_Bool        elm_list_item_disabled_get(const Elm_List_Item *it) EINA_ARG_NONNULL(1);
1769    EAPI void             elm_list_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
1770    EAPI void             elm_list_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
1771    EAPI void             elm_list_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
1772    EAPI void             elm_list_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
1773    /* smart callbacks called:
1774     * "clicked,double" - when the user double-clicked an item
1775     * "selected" - when the user selected an item
1776     * "unselected" - when the user selected an item
1777     * "longpressed" - an item in the hoversel list is long-pressed
1778     * "scroll,edge,top" - the list is scrolled until the top edge
1779     * "scroll,edge,bottom" - the list is scrolled until the bottom edge
1780     * "scroll,edge,left" - the list is scrolled until the left edge
1781     * "scroll,edge,right" - the list is scrolled until the right edge
1782     */
1783
1784    /* slider */
1785    EAPI Evas_Object       *elm_slider_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1786    EAPI void               elm_slider_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
1787    EAPI const char        *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1788    EAPI void               elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
1789    EAPI Evas_Object       *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
1790    EAPI Evas_Object       *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1791    EAPI void               elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1);
1792    EAPI Evas_Object       *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
1793    EAPI Evas_Object       *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1794    EAPI void               elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size) EINA_ARG_NONNULL(1);
1795    EAPI Evas_Coord         elm_slider_span_size_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1796    EAPI void               elm_slider_unit_format_set(Evas_Object *obj, const char *format) EINA_ARG_NONNULL(1);
1797    EAPI const char        *elm_slider_unit_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1798    EAPI void               elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator) EINA_ARG_NONNULL(1);
1799    EAPI const char        *elm_slider_indicator_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1800    EAPI void               elm_slider_indicator_format_function_set(Evas_Object *obj, const char *(*func)(double val)) EINA_ARG_NONNULL(1);
1801    EAPI void               elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
1802    EAPI Eina_Bool          elm_slider_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1803    EAPI void               elm_slider_min_max_set(Evas_Object *obj, double min, double max) EINA_ARG_NONNULL(1);
1804    EAPI void               elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max) EINA_ARG_NONNULL(1);
1805    EAPI void               elm_slider_value_set(Evas_Object *obj, double val) EINA_ARG_NONNULL(1);
1806    EAPI double             elm_slider_value_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1807    EAPI void               elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted) EINA_ARG_NONNULL(1);
1808    EAPI Eina_Bool          elm_slider_inverted_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1809    EAPI void               elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show) EINA_ARG_NONNULL(1);
1810    EAPI Eina_Bool          elm_slider_indicator_show_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1811    /* smart callbacks called:
1812     * "changed" - Whenever the slider value is changed by the user.
1813     * "slider,drag,start" - dragging the slider indicator around has started
1814     * "slider,drag,stop" - dragging the slider indicator around has stopped
1815     * "delay,changed" - A short time after the value is changed by the user.
1816     *                   This will be called only when the user stops dragging for a very short
1817     *                   period or when they release their finger/mouse, so it avoids possibly
1818     *                   expensive reactions to the value change.
1819     */
1820
1821    /* actionslider */
1822    typedef enum _Elm_Actionslider_Pos
1823      {
1824         ELM_ACTIONSLIDER_NONE = 0,
1825         ELM_ACTIONSLIDER_LEFT = 1 << 0,
1826         ELM_ACTIONSLIDER_CENTER = 1 << 1,
1827         ELM_ACTIONSLIDER_RIGHT = 1 << 2,
1828         ELM_ACTIONSLIDER_ALL = (1 << 3) -1
1829      } Elm_Actionslider_Pos;
1830
1831    EAPI Evas_Object          *elm_actionslider_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1832    EAPI void                  elm_actionslider_labels_set(Evas_Object *obj, const char *left_label, const char *center_label, const char *right_label) EINA_ARG_NONNULL(1);
1833    EAPI void                  elm_actionslider_labels_get(const Evas_Object *obj, const char **left_label, const char **center_label, const char **right_label) EINA_ARG_NONNULL(1);
1834    EAPI const char           *elm_actionslider_selected_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1835    EAPI void                  elm_actionslider_indicator_pos_set(Evas_Object *obj, Elm_Actionslider_Pos pos) EINA_ARG_NONNULL(1);
1836    EAPI Elm_Actionslider_Pos  elm_actionslider_indicator_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1837    EAPI void                  elm_actionslider_magnet_pos_set(Evas_Object *obj, Elm_Actionslider_Pos pos) EINA_ARG_NONNULL(1);
1838    EAPI Elm_Actionslider_Pos  elm_actionslider_magnet_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1839    EAPI void                  elm_actionslider_enabled_pos_set(Evas_Object *obj, Elm_Actionslider_Pos pos) EINA_ARG_NONNULL(1);
1840    EAPI Elm_Actionslider_Pos  elm_actionslider_enabled_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1841    EAPI void                  elm_actionslider_indicator_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
1842    EAPI const char           *elm_actionslider_indicator_label_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
1843    /* smart callbacks called:
1844     * "selected" - when user selects a position (the label is passed as
1845     * event info)".
1846     * "pos_changed" - when a button reaches to the special position like
1847     * "left", "right" and "center".
1848     */
1849
1850    /* genlist */
1851    typedef enum _Elm_Genlist_Item_Flags
1852      {
1853         ELM_GENLIST_ITEM_NONE = 0,
1854         ELM_GENLIST_ITEM_SUBITEMS = (1 << 0),
1855         ELM_GENLIST_ITEM_GROUP = (1 << 1)
1856      } Elm_Genlist_Item_Flags;
1857    typedef struct _Elm_Genlist_Item_Class Elm_Genlist_Item_Class;
1858    typedef struct _Elm_Genlist_Item       Elm_Genlist_Item; /**< Item of Elm_Genlist. Sub-type of Elm_Widget_Item */
1859    typedef struct _Elm_Genlist_Item_Class_Func Elm_Genlist_Item_Class_Func;
1860    typedef char        *(*GenlistItemLabelGetFunc) (void *data, Evas_Object *obj, const char *part);
1861    typedef Evas_Object *(*GenlistItemIconGetFunc)  (void *data, Evas_Object *obj, const char *part);
1862    typedef Eina_Bool    (*GenlistItemStateGetFunc) (void *data, Evas_Object *obj, const char *part);
1863    typedef void         (*GenlistItemDelFunc)      (void *data, Evas_Object *obj);
1864    typedef void         (*GenlistItemMovedFunc)    (Evas_Object *obj, Elm_Genlist_Item *item, Elm_Genlist_Item *rel_item, Eina_Bool move_after);
1865
1866    struct _Elm_Genlist_Item_Class
1867      {
1868         const char                *item_style;
1869         struct
1870           {
1871              GenlistItemLabelGetFunc  label_get;
1872              GenlistItemIconGetFunc   icon_get;
1873              GenlistItemStateGetFunc  state_get;
1874              GenlistItemDelFunc       del;
1875              GenlistItemMovedFunc     moved;
1876           } func;
1877         const char                *mode_item_style;
1878      };
1879
1880    EAPI Evas_Object      *elm_genlist_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
1881    EAPI void              elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
1882    EAPI void              elm_genlist_multi_select_set(Evas_Object *obj, Eina_Bool multi) EINA_ARG_NONNULL(1);
1883    EAPI Eina_Bool         elm_genlist_multi_select_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1884    EAPI void              elm_genlist_horizontal_mode_set(Evas_Object *obj, Elm_List_Mode mode) EINA_ARG_NONNULL(1);
1885    EAPI Elm_List_Mode     elm_genlist_horizontal_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1886    EAPI void              elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
1887    EAPI Eina_Bool         elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1888    EAPI void              elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
1889    EAPI Eina_Bool         elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1890    EAPI void              elm_genlist_compress_mode_set(Evas_Object *obj, Eina_Bool compress) EINA_ARG_NONNULL(1);
1891    EAPI Eina_Bool         elm_genlist_compress_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1892    EAPI void              elm_genlist_height_for_width_mode_set(Evas_Object *obj, Eina_Bool height_for_width) EINA_ARG_NONNULL(1);
1893    EAPI Eina_Bool         elm_genlist_height_for_width_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1894    EAPI void              elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
1895    EAPI void              elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
1896    EAPI void              elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) EINA_ARG_NONNULL(1);
1897    EAPI Eina_Bool         elm_genlist_homogeneous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1898    EAPI void              elm_genlist_block_count_set(Evas_Object *obj, int n) EINA_ARG_NONNULL(1);
1899    EAPI int               elm_genlist_block_count_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1900    EAPI void              elm_genlist_longpress_timeout_set(Evas_Object *obj, double timeout) EINA_ARG_NONNULL(1);
1901    EAPI double            elm_genlist_longpress_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1902    /* operations to add items */
1903    EAPI Elm_Genlist_Item *elm_genlist_item_append(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
1904    EAPI Elm_Genlist_Item *elm_genlist_item_prepend(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
1905    EAPI Elm_Genlist_Item *elm_genlist_item_insert_before(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item *before, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1, 5);
1906    EAPI Elm_Genlist_Item *elm_genlist_item_insert_after(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item *after, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1, 5);
1907 EAPI Elm_Genlist_Item *elm_genlist_item_sorted_insert(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent, Elm_Genlist_Item_Flags flags, Eina_Compare_Cb comp, Evas_Smart_Cb func,const void *func_data);
1908    /* operations to retrieve existing items */
1909    EAPI Elm_Genlist_Item *elm_genlist_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1910    EAPI const Eina_List  *elm_genlist_selected_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1911    EAPI Eina_List        *elm_genlist_realized_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1912    EAPI Elm_Genlist_Item *elm_genlist_at_xy_item_get(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *posret) EINA_ARG_NONNULL(1);
1913    EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1914    EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1915    EAPI void              elm_genlist_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
1916    EAPI void              elm_genlist_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
1917    /* available item styles:
1918     * default
1919     * default_style - The text part is a textblock
1920     * double_label
1921     * icon_top_text_bottom
1922     */
1923    /* Genlist Item operation */
1924    EAPI Elm_Genlist_Item  *elm_genlist_item_next_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1925    EAPI Elm_Genlist_Item  *elm_genlist_item_prev_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1926    EAPI Evas_Object       *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1927    EAPI Elm_Genlist_Item  *elm_genlist_item_parent_get(const Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
1928    EAPI void               elm_genlist_item_subitems_clear(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1929    EAPI void               elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
1930    EAPI Eina_Bool          elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1931    EAPI void               elm_genlist_item_expanded_set(Elm_Genlist_Item *item, Eina_Bool expanded) EINA_ARG_NONNULL(1);
1932    EAPI Eina_Bool          elm_genlist_item_expanded_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1933    EAPI int                elm_genlist_item_expanded_depth_get(const Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
1934    EAPI void               elm_genlist_item_disabled_set(Elm_Genlist_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
1935    EAPI Eina_Bool          elm_genlist_item_disabled_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1936    EAPI void               elm_genlist_item_display_only_set(Elm_Genlist_Item *it, Eina_Bool display_only) EINA_ARG_NONNULL(1);
1937    EAPI Eina_Bool          elm_genlist_item_display_only_get(const Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
1938    EAPI void               elm_genlist_item_show(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1939    EAPI void               elm_genlist_item_bring_in(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1940    EAPI void               elm_genlist_item_top_show(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1941    EAPI void               elm_genlist_item_top_bring_in(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1942    EAPI void               elm_genlist_item_middle_show(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
1943    EAPI void               elm_genlist_item_middle_bring_in(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
1944    EAPI void               elm_genlist_item_del(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1945    EAPI void              *elm_genlist_item_data_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1946    EAPI void               elm_genlist_item_data_set(Elm_Genlist_Item *it, const void *data) EINA_ARG_NONNULL(1);
1947    EAPI void               elm_genlist_item_icons_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
1948    EAPI const Evas_Object *elm_genlist_item_object_get(const Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
1949    EAPI void               elm_genlist_item_update(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1950    EAPI void               elm_genlist_item_item_class_update(Elm_Genlist_Item *it, const Elm_Genlist_Item_Class *itc) EINA_ARG_NONNULL(1, 2);
1951    EAPI void               elm_genlist_item_tooltip_text_set(Elm_Genlist_Item *item, const char *text) EINA_ARG_NONNULL(1);
1952    EAPI void               elm_genlist_item_tooltip_content_cb_set(Elm_Genlist_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
1953    EAPI void               elm_genlist_item_tooltip_unset(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1954    EAPI void               elm_genlist_item_tooltip_style_set(Elm_Genlist_Item *item, const char *style) EINA_ARG_NONNULL(1);
1955    EAPI const char        *elm_genlist_item_tooltip_style_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1956    EAPI void               elm_genlist_item_cursor_set(Elm_Genlist_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
1957    EAPI const char        *elm_genlist_item_cursor_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1958    EAPI void               elm_genlist_item_cursor_unset(Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1959    EAPI void               elm_genlist_item_cursor_style_set(Elm_Genlist_Item *item, const char *style) EINA_ARG_NONNULL(1);
1960    EAPI const char        *elm_genlist_item_cursor_style_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1961    EAPI void               elm_genlist_item_cursor_engine_only_set(Elm_Genlist_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
1962    EAPI Eina_Bool          elm_genlist_item_cursor_engine_only_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
1963    EAPI void               elm_genlist_realized_items_update(Evas_Object *obj) EINA_ARG_NONNULL(1);
1964    EAPI void               elm_genlist_item_mode_set(Elm_Genlist_Item *it, const char *mode_type, Eina_Bool mode_set) EINA_ARG_NONNULL(1, 2);
1965    EAPI const char        *elm_genlist_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1966    EAPI const Elm_Genlist_Item *elm_genlist_mode_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1967    EAPI void               elm_genlist_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode) EINA_ARG_NONNULL(1);
1968    EAPI Eina_Bool          elm_genlist_reorder_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
1969    /** Signals that you can add callbacks for are:
1970     * "clicked,double" - This is called when a user has double-clicked an item.
1971     *                    The event_info parameter is the genlist item that was
1972     *                    double-clicked.
1973     * "selected" - This is called when a user has made an item selected. The
1974     *              event_info parameter is the genlist item that was selected.
1975     * "unselected" - This is called when a user has made an item unselected. The
1976     *                 event_info parameter is the genlist item that was
1977     *                 unselected.
1978     * "expanded" - This is called when elm_genlist_item_expanded_set() is called
1979     *              and the item is now meant to be expanded. The event_info
1980     *              parameter is the genlist item that was indicated to expand.
1981     *              It is the job of this callback to then fill in the child
1982     *              items.
1983     * "contracted" - This is called when elm_genlist_item_expanded_set() is
1984     *                called and the item is now meant to be contracted. The
1985     *                event_info parameter is the genlist item that was indicated
1986     *                to contract. It is the job of this callback to then delete
1987     *                the child items.
1988     * "expand,request" - This is called when a user has indicated they want to
1989     *                    expand a tree branch item. The callback should decide
1990     *                    if the item can expand (has any children) and then call
1991     *                    elm_genlist_item_expanded_set() appropriately to set
1992     *                    the state. The event_info parameter is the genlist item
1993     *                    that was indicated to expand.
1994     * "contract,request" - This is called when a user has indicated they want to
1995     *                      contract a tree branch item. The callback should
1996     *                      decide if the item can contract (has any children)
1997     *                      and then call elm_genlist_item_expanded_set()
1998     *                      appropriately to set the state. The event_info
1999     *                      parameter is the genlist item that was indicated to
2000     *                      contract.
2001     * "realized" - This is called when the item in the list is created as a real
2002     *              evas object. event_info parameter is the genlist item that
2003     *              was created. The object may be deleted at any time, so it is
2004     *              up to the caller to not use the object pointer from
2005     *              elm_genlist_item_object_get() in a way where it may point to
2006     *              freed objects.
2007     * "unrealized" - This is called just before an item is unrealized. After
2008     *                this call icon objects provided will be deleted and the
2009     *                item object itself delete or be put into a floating cache.
2010     * "drag,start,up" - This is called when the item in the list has been
2011     *                   dragged (not scrolled) up.
2012     * "drag,start,down" - This is called when the item in the list has been
2013     *                     dragged (not scrolled) down.
2014     * "drag,start,left" - This is called when the item in the list has been
2015     *                     dragged (not scrolled) left.
2016     * "drag,start,right" - This is called when the item in the list has been
2017     *                      dragged (not scrolled) right.
2018     * "drag,stop" - This is called when the item in the list has stopped being
2019     *               dragged.
2020     * "drag" - This is called when the item in the list is being dragged.
2021     * "longpressed" - This is called when the item is pressed for a certain
2022     *                 amount of time. By default it's 1 second.
2023     * "scroll,edge,top" - This is called when the genlist is scrolled until the
2024     *                     top edge.
2025     * "scroll,edge,bottom" - This is called when the genlist is scrolled until
2026     *                        the bottom edge.
2027     * "scroll,edge,left" - This is called when the genlist is scrolled until the
2028     *                      left edge.
2029     * "scroll,edge,right" - This is called when the genlist is scrolled until
2030     *                       the right edge.
2031     * "multi,swipe,left" - This is called when the genlist is multi-touch swiped
2032     *                       left.
2033     * "multi,swipe,right" - This is called when the genlist is multi-touch
2034     *                       swiped right.
2035     * "multi,swipe,up" - This is called when the genlist is multi-touch swiped
2036     *                    up.
2037     * "multi,swipe,down" - This is called when the genlist is multi-touch swiped
2038     *                      down.
2039     * "multi,pinch,out" - This is called when the genlist is multi-touch pinched
2040     *                     out.
2041     * "multi,pinch,in" - This is called when the genlist is multi-touch pinched
2042     *                    in.
2043     * "swipe" - This is called when the genlist is swiped.
2044     */
2045
2046    /* check */
2047    EAPI Evas_Object *elm_check_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2048    EAPI void         elm_check_label_set(Evas_Object *obj, const char *label); EINA_ARG_NONNULL(1)
2049    EAPI const char  *elm_check_label_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
2050    EAPI void         elm_check_icon_set(Evas_Object *obj, Evas_Object *icon); EINA_ARG_NONNULL(1)
2051    EAPI Evas_Object *elm_check_icon_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
2052    EAPI Evas_Object *elm_check_icon_unset(Evas_Object *obj); EINA_ARG_NONNULL(1)
2053    EAPI void         elm_check_state_set(Evas_Object *obj, Eina_Bool state); EINA_ARG_NONNULL(1)
2054    EAPI Eina_Bool    elm_check_state_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
2055    EAPI void         elm_check_state_pointer_set(Evas_Object *obj, Eina_Bool *statep); EINA_ARG_NONNULL(1)
2056    /* smart callbacks called:
2057     * "changed" - This is called whenever the user changes the state of one of the check object.
2058     */
2059
2060    /* radio */
2061    EAPI Evas_Object *elm_radio_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2062    EAPI void         elm_radio_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
2063    EAPI const char  *elm_radio_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2064    EAPI void         elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
2065    EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2066    EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2067    EAPI void         elm_radio_group_add(Evas_Object *obj, Evas_Object *group) EINA_ARG_NONNULL(1);
2068    EAPI void         elm_radio_state_value_set(Evas_Object *obj, int value) EINA_ARG_NONNULL(1);
2069    EAPI int          elm_radio_state_value_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2070    EAPI void         elm_radio_value_set(Evas_Object *obj, int value) EINA_ARG_NONNULL(1);
2071    EAPI int          elm_radio_value_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2072    EAPI void         elm_radio_value_pointer_set(Evas_Object *obj, int *valuep) EINA_ARG_NONNULL(1);
2073    /* smart callbacks called:
2074     * "changed" - when the radio status is changed
2075     */
2076
2077    /* pager */
2078    EAPI Evas_Object *elm_pager_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2079    EAPI void         elm_pager_content_push(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2080    EAPI void         elm_pager_content_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
2081    EAPI void         elm_pager_content_promote(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2082    EAPI Evas_Object *elm_pager_content_bottom_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2083    EAPI Evas_Object *elm_pager_content_top_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2084    /* available item styles:
2085     * default
2086     * fade
2087     * fade_translucide
2088     * fade_invisible
2089     */
2090    /* smart callbacks called:
2091     * "hide,finished" - when the previous page is hided
2092     */
2093
2094    typedef struct _Elm_Slideshow_Item_Class Elm_Slideshow_Item_Class;
2095    typedef struct _Elm_Slideshow_Item_Class_Func Elm_Slideshow_Item_Class_Func;
2096    typedef struct _Elm_Slideshow_Item       Elm_Slideshow_Item; /**< Item of Elm_Slideshow. Sub-type of Elm_Widget_Item */
2097    typedef Evas_Object *(*SlideshowItemGetFunc) (void *data, Evas_Object *obj);
2098    typedef void         (*SlideshowItemDelFunc) (void *data, Evas_Object *obj);
2099
2100    struct _Elm_Slideshow_Item_Class
2101      {
2102         struct _Elm_Slideshow_Item_Class_Func
2103           {
2104              SlideshowItemGetFunc get;
2105              SlideshowItemDelFunc del;
2106           } func;
2107      };
2108
2109    EAPI Evas_Object        *elm_slideshow_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2110    EAPI Elm_Slideshow_Item *elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data) EINA_ARG_NONNULL(1);
2111    EAPI Elm_Slideshow_Item *elm_slideshow_item_sorted_insert(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data, Eina_Compare_Cb func) EINA_ARG_NONNULL(1);
2112    EAPI void                elm_slideshow_show(Elm_Slideshow_Item *item) EINA_ARG_NONNULL(1);
2113    EAPI void                elm_slideshow_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
2114    EAPI void                elm_slideshow_previous(Evas_Object *obj) EINA_ARG_NONNULL(1);
2115    EAPI const Eina_List    *elm_slideshow_transitions_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2116    EAPI void                elm_slideshow_transition_set(Evas_Object *obj, const char *transition) EINA_ARG_NONNULL(1);
2117    EAPI const char         *elm_slideshow_transition_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2118    EAPI void                elm_slideshow_timeout_set(Evas_Object *obj, double timeout) EINA_ARG_NONNULL(1);
2119    EAPI double              elm_slideshow_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2120    EAPI void                elm_slideshow_loop_set(Evas_Object *obj, Eina_Bool loop) EINA_ARG_NONNULL(1);
2121    EAPI Eina_Bool           elm_slideshow_loop_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2122    EAPI void                elm_slideshow_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
2123    EAPI const Eina_List    *elm_slideshow_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2124    EAPI void                elm_slideshow_item_del(Elm_Slideshow_Item *item) EINA_ARG_NONNULL(1);
2125    EAPI void               *elm_slideshow_item_data_get(const Elm_Slideshow_Item *item) EINA_ARG_NONNULL(1);
2126    EAPI Elm_Slideshow_Item *elm_slideshow_item_current_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2127    EAPI Evas_Object*        elm_slideshow_item_object_get(const Elm_Slideshow_Item* item) EINA_ARG_NONNULL(1);
2128    EAPI Elm_Slideshow_Item *elm_slideshow_item_nth_get(const Evas_Object *obj, unsigned int nth) EINA_ARG_NONNULL(1);
2129    EAPI const char         *elm_slideshow_layout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2130    EAPI void                elm_slideshow_layout_set(Evas_Object *obj, const char *layout) EINA_ARG_NONNULL(1);
2131    EAPI const Eina_List    *elm_slideshow_layouts_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2132    EAPI void                elm_slideshow_cache_before_set(Evas_Object *obj, int count) EINA_ARG_NONNULL(1);
2133    EAPI int                 elm_slideshow_cache_before_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2134    EAPI void                elm_slideshow_cache_after_set(Evas_Object *obj, int count) EINA_ARG_NONNULL(1);
2135    EAPI int                 elm_slideshow_cache_after_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2136    EAPI unsigned int        elm_slideshow_count_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2137    /* smart callbacks called:
2138     * "changed" - when the slideshow switch to another item
2139     */
2140
2141    /* file selector */
2142    typedef enum _Elm_Fileselector_Mode
2143      {
2144         ELM_FILESELECTOR_LIST = 0,
2145         ELM_FILESELECTOR_GRID,
2146         ELM_FILESELECTOR_LAST
2147      } Elm_Fileselector_Mode;
2148
2149    EAPI Evas_Object          *elm_fileselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2150    EAPI void                  elm_fileselector_is_save_set(Evas_Object *obj, Eina_Bool is_save) EINA_ARG_NONNULL(1);
2151    EAPI Eina_Bool             elm_fileselector_is_save_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2152    EAPI void                  elm_fileselector_folder_only_set(Evas_Object *obj, Eina_Bool only) EINA_ARG_NONNULL(1);
2153    EAPI Eina_Bool             elm_fileselector_folder_only_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2154    EAPI void                  elm_fileselector_buttons_ok_cancel_set(Evas_Object *obj, Eina_Bool buttons) EINA_ARG_NONNULL(1);
2155    EAPI Eina_Bool             elm_fileselector_buttons_ok_cancel_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2156    EAPI Eina_Bool             elm_fileselector_expandable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2157    EAPI void                  elm_fileselector_expandable_set(Evas_Object *obj, Eina_Bool expand) EINA_ARG_NONNULL(1);
2158    EAPI void                  elm_fileselector_path_set(Evas_Object *obj, const char *path) EINA_ARG_NONNULL(1);
2159    EAPI const char           *elm_fileselector_path_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2160    EAPI const char           *elm_fileselector_selected_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2161    EAPI Eina_Bool             elm_fileselector_selected_set(Evas_Object *obj, const char *path) EINA_ARG_NONNULL(1);
2162    EAPI void                  elm_fileselector_mode_set(Evas_Object *obj, Elm_Fileselector_Mode mode) EINA_ARG_NONNULL(1);
2163    EAPI Elm_Fileselector_Mode elm_fileselector_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2164    /* smart callbacks called:
2165     * "selected" - the user click on a file
2166     * "directory,open" - the list is populate with a new content. event_info is a directory.
2167     * "done" - the user click on the ok or cancel buttons
2168     */
2169
2170    /* progressbar */
2171    EAPI Evas_Object *elm_progressbar_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2172    EAPI void         elm_progressbar_pulse_set(Evas_Object *obj, Eina_Bool pulse) EINA_ARG_NONNULL(1);
2173    EAPI Eina_Bool    elm_progressbar_pulse_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2174    EAPI void         elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state) EINA_ARG_NONNULL(1);
2175    EAPI void         elm_progressbar_value_set(Evas_Object *obj, double val) EINA_ARG_NONNULL(1);
2176    EAPI double       elm_progressbar_value_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2177    EAPI void         elm_progressbar_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
2178    EAPI const char  *elm_progressbar_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2179    EAPI void         elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
2180    EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2181    EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2182    EAPI void         elm_progressbar_span_size_set(Evas_Object *obj, Evas_Coord size) EINA_ARG_NONNULL(1);
2183    EAPI Evas_Coord   elm_progressbar_span_size_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2184    EAPI void         elm_progressbar_unit_format_set(Evas_Object *obj, const char *format) EINA_ARG_NONNULL(1);
2185    EAPI const char  *elm_progressbar_unit_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2186    EAPI void         elm_progressbar_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
2187    EAPI Eina_Bool    elm_progressbar_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2188    EAPI void         elm_progressbar_inverted_set(Evas_Object *obj, Eina_Bool inverted) EINA_ARG_NONNULL(1);
2189    EAPI Eina_Bool    elm_progressbar_inverted_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2190    /* smart callbacks called:
2191     */
2192    /* available item styles:
2193     * default
2194     * wheel (simple style, no text, no progression, only pulse is available)
2195     */
2196
2197    /* separator */
2198    EAPI Evas_Object *elm_separator_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2199    EAPI void         elm_separator_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
2200    EAPI Eina_Bool    elm_separator_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2201    /* smart callbacks called:
2202     */
2203
2204    /* spinner */
2205    EAPI Evas_Object *elm_spinner_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2206    EAPI void         elm_spinner_label_format_set(Evas_Object *obj, const char *fmt) EINA_ARG_NONNULL(1);
2207    EAPI const char  *elm_spinner_label_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2208    EAPI void         elm_spinner_min_max_set(Evas_Object *obj, double min, double max) EINA_ARG_NONNULL(1);
2209    EAPI void         elm_spinner_min_max_get(const Evas_Object *obj, double *min, double *max) EINA_ARG_NONNULL(1);
2210    EAPI void         elm_spinner_step_set(Evas_Object *obj, double step) EINA_ARG_NONNULL(1);
2211    EAPI double       elm_spinner_step_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2212    EAPI void         elm_spinner_value_set(Evas_Object *obj, double val) EINA_ARG_NONNULL(1);
2213    EAPI double       elm_spinner_value_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2214    EAPI void         elm_spinner_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
2215    EAPI Eina_Bool    elm_spinner_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2216    EAPI void         elm_spinner_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
2217    EAPI Eina_Bool    elm_spinner_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2218    EAPI void         elm_spinner_special_value_add(Evas_Object *obj, double value, const char *label) EINA_ARG_NONNULL(1);
2219    EAPI void         elm_spinner_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
2220    EAPI double       elm_spinner_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2221    /* smart callbacks called:
2222     * "changed" - when the spinner value changes
2223     * "delay,changed" - when the spinner value changed, but a small time after a change (use this if you only want to respond to a change once the spinner is held still for a short while).
2224     */
2225    /* available item styles:
2226     * default
2227     * vertical (two up/down buttons at the right side and text left aligned)
2228     */
2229
2230    /* index */
2231    typedef struct _Elm_Index_Item Elm_Index_Item; /**< Item of Elm_Index. Sub-type of Elm_Widget_Item */
2232
2233    EAPI Evas_Object    *elm_index_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2234    EAPI void            elm_index_active_set(Evas_Object *obj, Eina_Bool active) EINA_ARG_NONNULL(1);
2235    EAPI Eina_Bool       elm_index_active_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2236    EAPI void            elm_index_item_level_set(Evas_Object *obj, int level) EINA_ARG_NONNULL(1);
2237    EAPI int             elm_index_item_level_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2238    EAPI void           *elm_index_item_selected_get(const Evas_Object *obj, int level) EINA_ARG_NONNULL(1);
2239    EAPI void            elm_index_item_append(Evas_Object *obj, const char *letter, const void *item) EINA_ARG_NONNULL(1);
2240    EAPI void            elm_index_item_prepend(Evas_Object *obj, const char *letter, const void *item) EINA_ARG_NONNULL(1);
2241    EAPI void            elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const void *relative) EINA_ARG_NONNULL(1);
2242    EAPI void            elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const void *relative) EINA_ARG_NONNULL(1);
2243    EAPI void            elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func) EINA_ARG_NONNULL(1);
2244    EAPI void            elm_index_item_del(Evas_Object *obj, const void *item) EINA_ARG_NONNULL(1);
2245    EAPI Elm_Index_Item *elm_index_item_find(Evas_Object *obj, const void *item) EINA_ARG_NONNULL(1);
2246    EAPI void            elm_index_item_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
2247    EAPI void            elm_index_item_go(Evas_Object *obj, int level) EINA_ARG_NONNULL(1);
2248    EAPI void           *elm_index_item_data_get(const Elm_Index_Item *item) EINA_ARG_NONNULL(1);
2249    EAPI void            elm_index_item_data_set(Elm_Index_Item *it, const void *data) EINA_ARG_NONNULL(1);
2250    EAPI void            elm_index_item_del_cb_set(Elm_Index_Item *it, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
2251    EAPI const char     *elm_index_item_letter_get(const Elm_Index_Item *item) EINA_ARG_NONNULL(1);
2252    /* smart callbacks called:
2253     * "changed" - when the selected index item changes
2254     * "delay,changed" - when the selected index item changes, but after some small idle period
2255     * "selected" - when the user releases a finger and selects an item
2256     * "level,up" - when the user moves a finger from the first level to the second level
2257     * "level,down" - when the user moves a finger from the second level to the first level
2258     */
2259
2260    /* photocam */
2261    typedef enum _Elm_Photocam_Zoom_Mode
2262      {
2263         ELM_PHOTOCAM_ZOOM_MODE_MANUAL = 0,
2264         ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT,
2265         ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL,
2266         ELM_PHOTOCAM_ZOOM_MODE_LAST
2267      } Elm_Photocam_Zoom_Mode;
2268
2269    EAPI Evas_Object           *elm_photocam_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2270    EAPI Evas_Load_Error        elm_photocam_file_set(Evas_Object *obj, const char *file) EINA_ARG_NONNULL(1);
2271    EAPI const char            *elm_photocam_file_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2272    EAPI void                   elm_photocam_zoom_set(Evas_Object *obj, double zoom) EINA_ARG_NONNULL(1);
2273    EAPI double                 elm_photocam_zoom_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2274    EAPI void                   elm_photocam_zoom_mode_set(Evas_Object *obj, Elm_Photocam_Zoom_Mode mode) EINA_ARG_NONNULL(1);
2275    EAPI Elm_Photocam_Zoom_Mode elm_photocam_zoom_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2276    EAPI void                   elm_photocam_image_size_get(const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1);
2277    EAPI void                   elm_photocam_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1);
2278    EAPI void                   elm_photocam_image_region_show(Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
2279    EAPI void                   elm_photocam_image_region_bring_in(Evas_Object *obj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
2280    EAPI void                   elm_photocam_paused_set(Evas_Object *obj, Eina_Bool paused) EINA_ARG_NONNULL(1);
2281    EAPI Eina_Bool              elm_photocam_paused_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2282    EAPI Evas_Object           *elm_photocam_internal_image_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2283    EAPI void                   elm_photocam_bounce_set(Evas_Object *obj,  Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
2284    EAPI void                   elm_photocam_bounce_get(const Evas_Object *obj,  Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
2285    /* smart callbacks called:
2286     * "clicked" - when image clicked
2287     * "press" - when mouse/finger held down initially on image
2288     * "longpressed" - when mouse/finger held for long time on image
2289     * "clicked,double" - when mouse/finger double-clicked
2290     * "load" - when photo load begins
2291     * "loaded" - when photo load done
2292     * "load,detail" - when detailed image load begins
2293     * "loaded,detail" - when detailed image load done
2294     * "zoom,start" - when zooming started
2295     * "zoom,stop" - when zooming stopped
2296     * "zoom,change" - when auto zoom mode changed zoom level
2297     * "scroll - the content has been scrolled (moved)
2298     * "scroll,anim,start" - scrolling animation has started
2299     * "scroll,anim,stop" - scrolling animation has stopped
2300     * "scroll,drag,start" - dragging the contents around has started
2301     * "scroll,drag,stop" - dragging the contents around has stopped
2302     */
2303
2304    /* map */
2305    typedef enum _Elm_Map_Zoom_Mode
2306      {
2307         ELM_MAP_ZOOM_MODE_MANUAL,
2308         ELM_MAP_ZOOM_MODE_AUTO_FIT,
2309         ELM_MAP_ZOOM_MODE_AUTO_FILL,
2310         ELM_MAP_ZOOM_MODE_LAST
2311      } Elm_Map_Zoom_Mode;
2312
2313    typedef enum _Elm_Map_Route_Sources
2314      {
2315         ELM_MAP_ROUTE_SOURCE_YOURS,
2316         ELM_MAP_ROUTE_SOURCE_MONAV,
2317         ELM_MAP_ROUTE_SOURCE_ORS,
2318         ELM_MAP_ROUTE_SOURCE_LAST
2319      } Elm_Map_Route_Sources;
2320
2321    typedef enum _Elm_Map_Name_Sources
2322      {
2323         ELM_MAP_NAME_SOURCE_NOMINATIM,
2324         ELM_MAP_NAME_SOURCE_LAST
2325      } Elm_Map_Name_Sources;
2326
2327    typedef enum _Elm_Map_Route_Type
2328      {
2329         ELM_MAP_ROUTE_TYPE_MOTOCAR,
2330         ELM_MAP_ROUTE_TYPE_BICYCLE,
2331         ELM_MAP_ROUTE_TYPE_FOOT,
2332         ELM_MAP_ROUTE_TYPE_LAST
2333      } Elm_Map_Route_Type;
2334
2335    typedef enum _Elm_Map_Route_Method
2336      {
2337         ELM_MAP_ROUTE_METHOD_FASTEST,
2338         ELM_MAP_ROUTE_METHOD_SHORTEST,
2339         ELM_MAP_ROUTE_METHOD_LAST
2340      } Elm_Map_Route_Method;
2341
2342    typedef enum _Elm_Map_Name_Method
2343      {
2344         ELM_MAP_NAME_METHOD_SEARCH,
2345         ELM_MAP_NAME_METHOD_REVERSE,
2346         ELM_MAP_NAME_METHOD_LAST
2347      } Elm_Map_Name_Method;
2348
2349    typedef struct _Elm_Map_Marker          Elm_Map_Marker;
2350    typedef struct _Elm_Map_Marker_Class    Elm_Map_Marker_Class;
2351    typedef struct _Elm_Map_Group_Class     Elm_Map_Group_Class;
2352    typedef struct _Elm_Map_Route           Elm_Map_Route;
2353    typedef struct _Elm_Map_Name            Elm_Map_Name;
2354    typedef struct _Elm_Map_Track           Elm_Map_Track;
2355
2356    typedef Evas_Object *(*ElmMapMarkerGetFunc)      (Evas_Object *obj, Elm_Map_Marker *marker, void *data);
2357    typedef void         (*ElmMapMarkerDelFunc)      (Evas_Object *obj, Elm_Map_Marker *marker, void *data, Evas_Object *o);
2358    typedef Evas_Object *(*ElmMapMarkerIconGetFunc)  (Evas_Object *obj, Elm_Map_Marker *marker, void *data);
2359    typedef Evas_Object *(*ElmMapGroupIconGetFunc)   (Evas_Object *obj, void *data);
2360
2361    typedef char        *(*ElmMapModuleSourceFunc) (void);
2362    typedef int          (*ElmMapModuleZoomMinFunc) (void);
2363    typedef int          (*ElmMapModuleZoomMaxFunc) (void);
2364    typedef char        *(*ElmMapModuleUrlFunc) (Evas_Object *obj, int x, int y, int zoom);
2365    typedef int          (*ElmMapModuleRouteSourceFunc) (void);
2366    typedef char        *(*ElmMapModuleRouteUrlFunc) (Evas_Object *obj, char *type_name, int method, double flon, double flat, double tlon, double tlat);
2367    typedef char        *(*ElmMapModuleNameUrlFunc) (Evas_Object *obj, int method, char *name, double lon, double lat);
2368    typedef Eina_Bool    (*ElmMapModuleGeoIntoCoordFunc) (const Evas_Object *obj, int zoom, double lon, double lat, int size, int *x, int *y);
2369    typedef Eina_Bool    (*ElmMapModuleCoordIntoGeoFunc) (const Evas_Object *obj, int zoom, int x, int y, int size, double *lon, double *lat);
2370
2371    EAPI Evas_Object          *elm_map_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2372    EAPI void                  elm_map_zoom_set(Evas_Object *obj, int zoom) EINA_ARG_NONNULL(1);
2373    EAPI int                   elm_map_zoom_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2374    EAPI void                  elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode) EINA_ARG_NONNULL(1);
2375    EAPI Elm_Map_Zoom_Mode     elm_map_zoom_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2376    EAPI void                  elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat) EINA_ARG_NONNULL(1);
2377    EAPI void                  elm_map_geo_region_bring_in(Evas_Object *obj, double lon, double lat) EINA_ARG_NONNULL(1);
2378    EAPI void                  elm_map_geo_region_show(Evas_Object *obj, double lon, double lat) EINA_ARG_NONNULL(1);
2379    EAPI void                  elm_map_paused_set(Evas_Object *obj, Eina_Bool paused) EINA_ARG_NONNULL(1);
2380    EAPI Eina_Bool             elm_map_paused_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2381    EAPI void                  elm_map_paused_markers_set(Evas_Object *obj, Eina_Bool paused) EINA_ARG_NONNULL(1);
2382    EAPI Eina_Bool             elm_map_paused_markers_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2383    EAPI void                  elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *finish_num) EINA_ARG_NONNULL(1, 2, 3);
2384    EAPI void                  elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat) EINA_ARG_NONNULL(1, 5, 6);
2385    EAPI void                  elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double lat, int size, int *x, int *y) EINA_ARG_NONNULL(1, 5, 6);
2386    EAPI Elm_Map_Name         *elm_map_utils_convert_coord_into_name(const Evas_Object *obj, double lon, double lat) EINA_ARG_NONNULL(1);
2387    EAPI Elm_Map_Name         *elm_map_utils_convert_name_into_coord(const Evas_Object *obj, char *address) EINA_ARG_NONNULL(1, 2);
2388    EAPI void                  elm_map_utils_rotate_coord(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, const Evas_Coord cx, const Evas_Coord cy, const double degree, Evas_Coord *xx, Evas_Coord *yy) EINA_ARG_NONNULL(1);
2389    EAPI Elm_Map_Marker       *elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Class *clas, Elm_Map_Group_Class *clas_group, void *data) EINA_ARG_NONNULL(1, 4, 5);
2390    EAPI void                  elm_map_max_marker_per_group_set(Evas_Object *obj, int max) EINA_ARG_NONNULL(1);
2391    EAPI void                  elm_map_marker_remove(Elm_Map_Marker *marker) EINA_ARG_NONNULL(1);
2392    EAPI void                  elm_map_marker_region_get(const Elm_Map_Marker *marker, double *lon, double *lat) EINA_ARG_NONNULL(1);
2393    EAPI void                  elm_map_marker_bring_in(Elm_Map_Marker *marker) EINA_ARG_NONNULL(1);
2394    EAPI void                  elm_map_marker_show(Elm_Map_Marker *marker) EINA_ARG_NONNULL(1);
2395    EAPI void                  elm_map_markers_list_show(Eina_List *markers) EINA_ARG_NONNULL(1);
2396    EAPI Evas_Object          *elm_map_marker_object_get(const Elm_Map_Marker *marker) EINA_ARG_NONNULL(1);
2397    EAPI void                  elm_map_marker_update(Elm_Map_Marker *marker) EINA_ARG_NONNULL(1);
2398    EAPI void                  elm_map_bubbles_close(Evas_Object *obj) EINA_ARG_NONNULL(1);
2399    EAPI Elm_Map_Group_Class  *elm_map_group_class_new(Evas_Object *obj) EINA_ARG_NONNULL(1);
2400    EAPI void                  elm_map_group_class_style_set(Elm_Map_Group_Class *clas, const char *style) EINA_ARG_NONNULL(1);
2401    EAPI void                  elm_map_group_class_icon_cb_set(Elm_Map_Group_Class *clas, ElmMapGroupIconGetFunc icon_get) EINA_ARG_NONNULL(1);
2402    EAPI void                  elm_map_group_class_data_set(Elm_Map_Group_Class *clas, void *data) EINA_ARG_NONNULL(1);
2403    EAPI void                  elm_map_group_class_zoom_displayed_set(Elm_Map_Group_Class *clas, int zoom) EINA_ARG_NONNULL(1);
2404    EAPI void                  elm_map_group_class_zoom_grouped_set(Elm_Map_Group_Class *clas, int zoom) EINA_ARG_NONNULL(1);
2405    EAPI void                  elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide) EINA_ARG_NONNULL(1, 2);
2406    EAPI Elm_Map_Marker_Class *elm_map_marker_class_new(Evas_Object *obj) EINA_ARG_NONNULL(1);
2407    EAPI void                  elm_map_marker_class_style_set(Elm_Map_Marker_Class *clas, const char *style) EINA_ARG_NONNULL(1);
2408    EAPI void                  elm_map_marker_class_icon_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerIconGetFunc icon_get) EINA_ARG_NONNULL(1);
2409    EAPI void                  elm_map_marker_class_get_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerGetFunc get) EINA_ARG_NONNULL(1);
2410    EAPI void                  elm_map_marker_class_del_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerDelFunc del) EINA_ARG_NONNULL(1);
2411    EAPI const char          **elm_map_source_names_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2412    EAPI void                  elm_map_source_name_set(Evas_Object *obj, const char *source_name) EINA_ARG_NONNULL(1);
2413    EAPI const char           *elm_map_source_name_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2414    EAPI void                  elm_map_route_source_set(Evas_Object *obj, Elm_Map_Route_Sources source) EINA_ARG_NONNULL(1);
2415    EAPI Elm_Map_Route_Sources elm_map_route_source_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2416    EAPI void                  elm_map_source_zoom_min_set(Evas_Object *obj, int zoom) EINA_ARG_NONNULL(1);
2417    EAPI int                   elm_map_source_zoom_min_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2418    EAPI void                  elm_map_source_zoom_max_set(Evas_Object *obj, int zoom) EINA_ARG_NONNULL(1);
2419    EAPI int                   elm_map_source_zoom_max_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2420    EAPI void                  elm_map_user_agent_set(Evas_Object *obj, const char *user_agent) EINA_ARG_NONNULL(1, 2);
2421    EAPI const char           *elm_map_user_agent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2422    EAPI Elm_Map_Route        *elm_map_route_add(Evas_Object *obj, Elm_Map_Route_Type type, Elm_Map_Route_Method method, double flon, double flat, double tlon, double tlat) EINA_ARG_NONNULL(1);
2423    EAPI void                  elm_map_route_remove(Elm_Map_Route *route) EINA_ARG_NONNULL(1);
2424    EAPI void                  elm_map_route_color_set(Elm_Map_Route *route, int r, int g , int b, int a) EINA_ARG_NONNULL(1);
2425    EAPI void                  elm_map_route_color_get(const Elm_Map_Route *route, int *r, int *g , int *b, int *a) EINA_ARG_NONNULL(1);
2426    EAPI double                elm_map_route_distance_get(const Elm_Map_Route *route) EINA_ARG_NONNULL(1);
2427    EAPI const char           *elm_map_route_node_get(const Elm_Map_Route *route) EINA_ARG_NONNULL(1);
2428    EAPI const char           *elm_map_route_waypoint_get(const Elm_Map_Route *route) EINA_ARG_NONNULL(1);
2429    EAPI const char           *elm_map_name_address_get(const Elm_Map_Name *name) EINA_ARG_NONNULL(1);
2430    EAPI void                  elm_map_name_region_get(const Elm_Map_Name *name, double *lon, double *lat) EINA_ARG_NONNULL(1);
2431    EAPI void                  elm_map_name_remove(Elm_Map_Name *name) EINA_ARG_NONNULL(1);
2432    EAPI void                  elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy) EINA_ARG_NONNULL(1);
2433    EAPI void                  elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy) EINA_ARG_NONNULL(1, 2, 3, 4);
2434    EAPI void                  elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
2435    EAPI Eina_Bool             elm_map_wheel_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2436    EAPI Elm_Map_Track        *elm_map_track_add(Evas_Object *obj, const char *gpx_file) EINA_ARG_NONNULL(1);
2437    EAPI void                  elm_map_track_remove(Elm_Map_Track *track) EINA_ARG_NONNULL(1);
2438    EAPI void                  elm_map_track_color_set(Elm_Map_Track *track, int r, int g , int b, int a) EINA_ARG_NONNULL(1);
2439    EAPI void                  elm_map_track_color_get(const Elm_Map_Track *track, int *r, int *g , int *b, int *a) EINA_ARG_NONNULL(1);
2440
2441    /* smart callbacks called:
2442     * "clicked" - when image clicked
2443     * "press" - when mouse/finger held down initially on image
2444     * "longpressed" - when mouse/finger held for long time on image
2445     * "clicked,double" - when mouse/finger double-clicked
2446     * "load,details" - when detailed image load begins
2447     * "loaded,details" - when detailed image load done
2448     * "zoom,start" - when zooming started
2449     * "zoom,stop" - when zooming stopped
2450     * "zoom,change" - when auto zoom mode changed zoom level
2451     * "scroll - the content has been scrolled (moved)
2452     * "scroll,anim,start" - scrolling animation has started
2453     * "scroll,anim,stop" - scrolling animation has stopped
2454     * "scroll,drag,start" - dragging the contents around has started
2455     * "scroll,drag,stop" - dragging the contents around has stopped
2456     */
2457
2458    /* panel */
2459    typedef enum _Elm_Panel_Orient
2460      {
2461         ELM_PANEL_ORIENT_TOP,
2462         ELM_PANEL_ORIENT_BOTTOM,
2463         ELM_PANEL_ORIENT_LEFT,
2464         ELM_PANEL_ORIENT_RIGHT,
2465      } Elm_Panel_Orient;
2466
2467    EAPI Evas_Object          *elm_panel_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2468    EAPI void                  elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient) EINA_ARG_NONNULL(1);
2469    EAPI Elm_Panel_Orient      elm_panel_orient_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2470    EAPI void                  elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2471    EAPI Evas_Object          *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2472    EAPI Evas_Object          *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2473    EAPI void                  elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden) EINA_ARG_NONNULL(1);
2474    EAPI Eina_Bool             elm_panel_hidden_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2475    EAPI void                  elm_panel_toggle(Evas_Object *obj) EINA_ARG_NONNULL(1);
2476
2477    /* panes */
2478    /**
2479     * TODO
2480     *
2481     * Update the minimun height of the bar in the theme. No minimun should be set in the vertical theme
2482     * Add events (move, start ...)
2483     */
2484    EAPI Evas_Object          *elm_panes_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2485    EAPI void                  elm_panes_content_left_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2486    EAPI void                  elm_panes_content_right_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2487    EAPI Evas_Object          *elm_panes_content_left_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2488    EAPI Evas_Object          *elm_panes_content_right_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2489    EAPI Evas_Object          *elm_panes_content_left_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2490    EAPI Evas_Object          *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2491    EAPI double                elm_panes_content_left_size_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2492    EAPI void                  elm_panes_content_left_size_set(Evas_Object *obj, double size) EINA_ARG_NONNULL(1);
2493    EAPI void                  elm_panes_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
2494    EAPI Eina_Bool             elm_panes_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2495
2496    /* flip */
2497    typedef enum _Elm_Flip_Mode
2498      {
2499         ELM_FLIP_ROTATE_Y_CENTER_AXIS,
2500         ELM_FLIP_ROTATE_X_CENTER_AXIS,
2501         ELM_FLIP_ROTATE_XZ_CENTER_AXIS,
2502         ELM_FLIP_ROTATE_YZ_CENTER_AXIS,
2503         ELM_FLIP_CUBE_LEFT,
2504         ELM_FLIP_CUBE_RIGHT,
2505         ELM_FLIP_CUBE_UP,
2506         ELM_FLIP_CUBE_DOWN,
2507         ELM_FLIP_PAGE_LEFT,
2508         ELM_FLIP_PAGE_RIGHT,
2509         ELM_FLIP_PAGE_UP,
2510         ELM_FLIP_PAGE_DOWN
2511      } Elm_Flip_Mode;
2512    typedef enum _Elm_Flip_Interaction
2513      {
2514         ELM_FLIP_INTERACTION_NONE,
2515         ELM_FLIP_INTERACTION_ROTATE,
2516         ELM_FLIP_INTERACTION_CUBE,
2517         ELM_FLIP_INTERACTION_PAGE
2518      } Elm_Flip_Interaction;
2519    typedef enum _Elm_Flip_Direction
2520      {
2521         ELM_FLIP_DIRECTION_UP,
2522         ELM_FLIP_DIRECTION_DOWN,
2523         ELM_FLIP_DIRECTION_LEFT,
2524         ELM_FLIP_DIRECTION_RIGHT
2525      } Elm_Flip_Direction;
2526
2527    EAPI Evas_Object *elm_flip_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2528    EAPI void         elm_flip_content_front_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2529    EAPI void         elm_flip_content_back_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2530    EAPI Evas_Object *elm_flip_content_front_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2531    EAPI Evas_Object *elm_flip_content_back_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2532    EAPI Evas_Object *elm_flip_content_front_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2533    EAPI Evas_Object *elm_flip_content_back_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2534    EAPI Eina_Bool    elm_flip_front_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2535    EAPI void         elm_flip_perspective_set(Evas_Object *obj, Evas_Coord foc, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
2536    EAPI void         elm_flip_go(Evas_Object *obj, Elm_Flip_Mode mode) EINA_ARG_NONNULL(1);
2537    EAPI void         elm_flip_interaction_set(Evas_Object *obj, Elm_Flip_Interaction mode);
2538    EAPI Elm_Flip_Interaction elm_flip_interaction_get(const Evas_Object *obj);
2539    EAPI void         elm_flip_interacton_direction_enabled_set(Evas_Object *obj, Elm_Flip_Direction dir, Eina_Bool enabled);
2540    EAPI Eina_Bool    elm_flip_interacton_direction_enabled_get(Evas_Object *obj, Elm_Flip_Direction dir);
2541    EAPI void         elm_flip_interacton_direction_hitsize_set(Evas_Object *obj, Elm_Flip_Direction dir, double hitsize);
2542    EAPI double       elm_flip_interacton_direction_hitsize_get(Evas_Object *obj, Elm_Flip_Direction dir);
2543    /* smart callbacks called:
2544     * "animate,begin" - when a flip animation was started
2545     * "animate,done" - when a flip animation is finished
2546     */
2547
2548    /* scrolledentry */
2549    EAPI Evas_Object *elm_scrolled_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2550    EAPI void         elm_scrolled_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line) EINA_ARG_NONNULL(1);
2551    EAPI Eina_Bool    elm_scrolled_entry_single_line_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2552    EAPI void         elm_scrolled_entry_password_set(Evas_Object *obj, Eina_Bool password) EINA_ARG_NONNULL(1);
2553    EAPI Eina_Bool    elm_scrolled_entry_password_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2554    EAPI void         elm_scrolled_entry_entry_set(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
2555    EAPI const char  *elm_scrolled_entry_entry_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2556    EAPI Eina_Bool    elm_scrolled_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2557    EAPI const char  *elm_scrolled_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2558    EAPI void         elm_scrolled_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
2559    EAPI void         elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
2560    EAPI void         elm_scrolled_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
2561    EAPI Eina_Bool    elm_scrolled_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2562    EAPI void         elm_scrolled_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1);
2563    EAPI void         elm_scrolled_entry_select_all(Evas_Object *obj) EINA_ARG_NONNULL(1);
2564    EAPI Eina_Bool    elm_scrolled_entry_cursor_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
2565    EAPI Eina_Bool    elm_scrolled_entry_cursor_prev(Evas_Object *obj) EINA_ARG_NONNULL(1);
2566    EAPI Eina_Bool    elm_scrolled_entry_cursor_up(Evas_Object *obj) EINA_ARG_NONNULL(1);
2567    EAPI Eina_Bool    elm_scrolled_entry_cursor_down(Evas_Object *obj) EINA_ARG_NONNULL(1);
2568    EAPI void         elm_scrolled_entry_cursor_begin_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
2569    EAPI void         elm_scrolled_entry_cursor_end_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
2570    EAPI void         elm_scrolled_entry_cursor_line_begin_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
2571    EAPI void         elm_scrolled_entry_cursor_line_end_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
2572    EAPI void         elm_scrolled_entry_cursor_selection_begin(Evas_Object *obj) EINA_ARG_NONNULL(1);
2573    EAPI void         elm_scrolled_entry_cursor_selection_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
2574    EAPI Eina_Bool    elm_scrolled_entry_cursor_is_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2575    EAPI Eina_Bool    elm_scrolled_entry_cursor_is_visible_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2576    EAPI const char  *elm_scrolled_entry_cursor_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2577    EAPI void         elm_scrolled_entry_cursor_pos_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
2578    EAPI int          elm_scrolled_entry_cursor_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2579    EAPI void         elm_scrolled_entry_selection_cut(Evas_Object *obj) EINA_ARG_NONNULL(1);
2580    EAPI void         elm_scrolled_entry_selection_copy(Evas_Object *obj) EINA_ARG_NONNULL(1);
2581    EAPI void         elm_scrolled_entry_selection_paste(Evas_Object *obj) EINA_ARG_NONNULL(1);
2582    EAPI void         elm_scrolled_entry_context_menu_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
2583    EAPI void         elm_scrolled_entry_context_menu_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
2584    EAPI void         elm_scrolled_entry_context_menu_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
2585    EAPI Eina_Bool    elm_scrolled_entry_context_menu_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2586    EAPI void         elm_scrolled_entry_scrollbar_policy_set(Evas_Object *obj, Elm_Scroller_Policy h, Elm_Scroller_Policy v) EINA_ARG_NONNULL(1);
2587    EAPI void         elm_scrolled_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
2588    EAPI void         elm_scrolled_entry_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
2589    EAPI void         elm_scrolled_entry_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1, 2);
2590    EAPI Evas_Object *elm_scrolled_entry_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2591    EAPI Evas_Object *elm_scrolled_entry_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2592    EAPI void         elm_scrolled_entry_icon_visible_set(Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
2593    EAPI void         elm_scrolled_entry_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1, 2);
2594    EAPI Evas_Object *elm_scrolled_entry_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2595    EAPI Evas_Object *elm_scrolled_entry_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2596    EAPI void         elm_scrolled_entry_end_visible_set(Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
2597    EAPI void         elm_scrolled_entry_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
2598    EAPI void         elm_scrolled_entry_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
2599    EAPI void         elm_scrolled_entry_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
2600    EAPI void         elm_scrolled_entry_text_filter_append(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
2601    EAPI void         elm_scrolled_entry_text_filter_prepend(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
2602    EAPI void         elm_scrolled_entry_text_filter_remove(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
2603    EAPI void         elm_scrolled_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format) EINA_ARG_NONNULL(1);
2604    EAPI void         elm_scrolled_entry_file_get(const Evas_Object *obj, const char **file, Elm_Text_Format *format) EINA_ARG_NONNULL(1);
2605    EAPI void         elm_scrolled_entry_file_save(Evas_Object *obj) EINA_ARG_NONNULL(1);
2606    EAPI void         elm_scrolled_entry_autosave_set(Evas_Object *obj, Eina_Bool autosave) EINA_ARG_NONNULL(1);
2607    EAPI Eina_Bool    elm_scrolled_entry_autosave_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2608    EAPI void         elm_scrolled_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly) EINA_ARG_NONNULL(1);
2609    EAPI Eina_Bool    elm_scrolled_entry_cnp_textonly_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
2610
2611    /* conformant */
2612    EAPI Evas_Object *elm_conformant_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2613    EAPI void         elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2614    EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2615    EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2616    EAPI Evas_Object *elm_conformant_content_area_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2617
2618    /* mapbuf */
2619    EAPI Evas_Object *elm_mapbuf_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2620    EAPI void         elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
2621    EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2622    EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2623    EAPI void         elm_mapbuf_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
2624    EAPI Eina_Bool    elm_mapbuf_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2625    EAPI void         elm_mapbuf_smooth_set(Evas_Object *obj, Eina_Bool smooth) EINA_ARG_NONNULL(1);
2626    EAPI Eina_Bool    elm_mapbuf_smooth_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2627    EAPI void         elm_mapbuf_alpha_set(Evas_Object *obj, Eina_Bool alpha) EINA_ARG_NONNULL(1);
2628    EAPI Eina_Bool    elm_mapbuf_alpha_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2629
2630    /* flipselector */
2631    typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item;
2632
2633    EAPI Evas_Object               *elm_flipselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2634    EAPI void                       elm_flipselector_flip_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
2635    EAPI void                       elm_flipselector_flip_prev(Evas_Object *obj) EINA_ARG_NONNULL(1);
2636    EAPI Elm_Flipselector_Item     *elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data) EINA_ARG_NONNULL(1);
2637    EAPI Elm_Flipselector_Item     *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data) EINA_ARG_NONNULL(1);
2638    EAPI const Eina_List           *elm_flipselector_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2639    EAPI Elm_Flipselector_Item     *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2640    EAPI Elm_Flipselector_Item     *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2641    EAPI Elm_Flipselector_Item     *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2642    EAPI void                       elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
2643    EAPI Eina_Bool                  elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
2644    EAPI void                       elm_flipselector_item_del(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
2645    EAPI const char                *elm_flipselector_item_label_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
2646    EAPI void                       elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
2647    EAPI Elm_Flipselector_Item     *elm_flipselector_item_prev_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
2648    EAPI Elm_Flipselector_Item     *elm_flipselector_item_next_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
2649    EAPI void                       elm_flipselector_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
2650    EAPI double                     elm_flipselector_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2651    /* smart callbacks called:
2652     * "selected" - when flipselector selected item is changed
2653     * "overflowed" - when flipselector item is changed to first item
2654     *                from last item
2655     * "underflowed" - when flipselector item is changed to last item
2656     *                 from first item.
2657     */
2658    /* available styles:
2659     * default
2660     */
2661
2662    /* animator */
2663    typedef enum
2664      {
2665         ELM_ANIMATOR_CURVE_LINEAR,
2666         ELM_ANIMATOR_CURVE_IN_OUT,
2667         ELM_ANIMATOR_CURVE_IN,
2668         ELM_ANIMATOR_CURVE_OUT
2669      } Elm_Animator_Curve_Style;
2670    typedef struct _Elm_Animator Elm_Animator;
2671   /**
2672    * Called back per loop of an elementary animators cycle
2673    * @param data user-data given to elm_animator_operation_callback_set()
2674    * @param animator the animator being run
2675    * @param double the position in the animation
2676    */
2677    typedef void (*Elm_Animator_Operation_Cb) (void *data, Elm_Animator *animator, double frame);
2678   /**
2679    * Called back when an elementary animator finishes
2680    * @param data user-data given to elm_animator_completion_callback_set()
2681    */
2682    typedef void (*Elm_Animator_Completion_Cb) (void *data);
2683
2684    EAPI Elm_Animator*            elm_animator_add(Evas_Object *parent);
2685    EAPI void                     elm_animator_del(Elm_Animator *animator) EINA_ARG_NONNULL(1);
2686    EAPI void                     elm_animator_duration_set(Elm_Animator *animator, double duration) EINA_ARG_NONNULL(1);
2687    EAPI void                     elm_animator_operation_callback_set(Elm_Animator *animator, Elm_Animator_Operation_Cb func, void *data) EINA_ARG_NONNULL(1);
2688    EAPI void                     elm_animator_completion_callback_set(Elm_Animator *animator, Elm_Animator_Completion_Cb func, void *data) EINA_ARG_NONNULL(1);
2689    EAPI void                     elm_animator_stop(Elm_Animator *animator) EINA_ARG_NONNULL(1);
2690    EAPI void                     elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt) EINA_ARG_NONNULL(1);
2691    EAPI void                     elm_animator_animate(Elm_Animator *animator) EINA_ARG_NONNULL(1);
2692    EAPI void                     elm_animator_curve_style_set(Elm_Animator *animator, Elm_Animator_Curve_Style cs) EINA_ARG_NONNULL(1);
2693    EAPI Elm_Animator_Curve_Style elm_animator_curve_style_get(const Elm_Animator *animator); EINA_ARG_NONNULL(1);
2694    EAPI void                     elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse) EINA_ARG_NONNULL(1);
2695    EAPI Eina_Bool                elm_animator_auto_reverse_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
2696    EAPI Eina_Bool                elm_animator_operating_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
2697    EAPI unsigned int             elm_animator_repeat_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
2698    EAPI void                     elm_animator_pause(Elm_Animator *animator) EINA_ARG_NONNULL(1);
2699    EAPI void                     elm_animator_resume(Elm_Animator *animator) EINA_ARG_NONNULL(1);
2700
2701    /* calendar */
2702    typedef enum
2703      {
2704         ELM_CALENDAR_UNIQUE,
2705         ELM_CALENDAR_DAILY,
2706         ELM_CALENDAR_WEEKLY,
2707         ELM_CALENDAR_MONTHLY,
2708         ELM_CALENDAR_ANNUALLY
2709      } Elm_Calendar_Mark_Repeat;
2710    typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark;
2711
2712    EAPI Evas_Object       *elm_calendar_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2713    EAPI const char       **elm_calendar_weekdays_names_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2714    EAPI void               elm_calendar_weekdays_names_set(Evas_Object *obj, const char *weekdays[]) EINA_ARG_NONNULL(1, 2);
2715    EAPI double             elm_calendar_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2716    EAPI void               elm_calendar_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
2717    EAPI void               elm_calendar_min_max_year_get(const Evas_Object *obj, int *min, int *max) EINA_ARG_NONNULL(1);
2718    EAPI void               elm_calendar_min_max_year_set(Evas_Object *obj, int min, int max) EINA_ARG_NONNULL(1);
2719    EAPI Eina_Bool          elm_calendar_day_selection_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2720    EAPI void               elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
2721    EAPI Eina_Bool          elm_calendar_selected_time_get(const Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1, 2);
2722    EAPI void               elm_calendar_selected_time_set(Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1);
2723    EAPI void               elm_calendar_format_function_set(Evas_Object *obj, char * (*format_function) (struct tm *stime)) EINA_ARG_NONNULL(1);
2724    EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat repeat) EINA_ARG_NONNULL(1);
2725    EAPI void               elm_calendar_mark_del(Elm_Calendar_Mark *mark) EINA_ARG_NONNULL(1);
2726    EAPI void               elm_calendar_marks_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
2727    EAPI const Eina_List   *elm_calendar_marks_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2728    EAPI void               elm_calendar_marks_draw(Evas_Object *obj) EINA_ARG_NONNULL(1);
2729    EINA_DEPRECATED EAPI void               elm_calendar_text_saturday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
2730    EINA_DEPRECATED EAPI void               elm_calendar_text_sunday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
2731    EINA_DEPRECATED EAPI void               elm_calendar_text_weekday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
2732    /* smart callbacks called:
2733     * changed - emitted when the user select a day or change the displayed
2734     * month.
2735     */
2736
2737    /* diskselector */
2738    typedef struct _Elm_Diskselector_Item Elm_Diskselector_Item;
2739
2740    EAPI Evas_Object           *elm_diskselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2741    EAPI Eina_Bool              elm_diskselector_round_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2742    EAPI void                   elm_diskselector_round_set(Evas_Object *obj, Eina_Bool round) EINA_ARG_NONNULL(1);
2743    EAPI int                    elm_diskselector_side_label_lenght_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2744    EAPI void                   elm_diskselector_side_label_lenght_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
2745    EAPI void                   elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
2746    EAPI void                   elm_diskselector_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
2747    EAPI void                   elm_diskselector_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
2748    EAPI void                   elm_diskselector_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
2749    EAPI void                   elm_diskselector_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
2750    EAPI const Eina_List       *elm_diskselector_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2751    EAPI Elm_Diskselector_Item *elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
2752    EAPI void                   elm_diskselector_item_del(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2753    EAPI void                   elm_diskselector_item_del_cb_set(Elm_Diskselector_Item *item, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
2754    EAPI void                  *elm_diskselector_item_data_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2755    EAPI Evas_Object           *elm_diskselector_item_icon_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2756    EAPI void                   elm_diskselector_item_icon_set(Elm_Diskselector_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
2757    EAPI const char            *elm_diskselector_item_label_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2758    EAPI void                   elm_diskselector_item_label_set(Elm_Diskselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
2759    EAPI Elm_Diskselector_Item *elm_diskselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2760    EAPI void                   elm_diskselector_item_selected_set(Elm_Diskselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
2761    EAPI Eina_Bool              elm_diskselector_item_selected_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2762    EAPI Elm_Diskselector_Item *elm_diskselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2763    EAPI Elm_Diskselector_Item *elm_diskselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2764    EAPI Elm_Diskselector_Item *elm_diskselector_item_prev_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2765    EAPI Elm_Diskselector_Item *elm_diskselector_item_next_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2766    EAPI void                   elm_diskselector_item_tooltip_text_set(Elm_Diskselector_Item *item, const char *text) EINA_ARG_NONNULL(1);
2767    EAPI void                   elm_diskselector_item_tooltip_content_cb_set(Elm_Diskselector_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
2768    EAPI void                   elm_diskselector_item_tooltip_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2769    EAPI void                   elm_diskselector_item_tooltip_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
2770    EAPI const char            *elm_diskselector_item_tooltip_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2771    EAPI void                   elm_diskselector_item_cursor_set(Elm_Diskselector_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
2772    EAPI const char            *elm_diskselector_item_cursor_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2773    EAPI void                   elm_diskselector_item_cursor_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2774    EAPI void                   elm_diskselector_item_cursor_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
2775    EAPI const char            *elm_diskselector_item_cursor_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2776    EAPI void                   elm_diskselector_item_cursor_engine_only_set(Elm_Diskselector_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
2777    EAPI Eina_Bool              elm_diskselector_item_cursor_engine_only_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
2778    EAPI void                   elm_diskselector_display_item_num_set(Evas_Object *obj, int num) EINA_ARG_NONNULL(1);
2779    /* smart callbacks called:
2780     * "selected" - when item is selected (scroller stops)
2781     */
2782
2783    /* colorselector */
2784    EAPI Evas_Object *elm_colorselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2785    EAPI void         elm_colorselector_color_set(Evas_Object *obj, int r, int g , int b, int a) EINA_ARG_NONNULL(1);
2786    EAPI void         elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g , int *b, int *a) EINA_ARG_NONNULL(1);
2787    /* smart callbacks called:
2788     * "changed" - when the color value changes
2789     */
2790
2791    /* Contextual Popup */
2792    typedef struct _Elm_Ctxpopup_Item Elm_Ctxpopup_Item;
2793
2794    typedef enum _Elm_Ctxpopup_Direction
2795      {
2796         ELM_CTXPOPUP_DIRECTION_DOWN,
2797         ELM_CTXPOPUP_DIRECTION_RIGHT,
2798         ELM_CTXPOPUP_DIRECTION_LEFT,
2799         ELM_CTXPOPUP_DIRECTION_UP,
2800      } Elm_Ctxpopup_Direction;
2801
2802    EAPI Evas_Object  *elm_ctxpopup_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
2803    EAPI Evas_Object  *elm_ctxpopup_item_icon_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
2804    EAPI void          elm_ctxpopup_item_icon_set(Elm_Ctxpopup_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
2805    EAPI const char   *elm_ctxpopup_item_label_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
2806    EAPI void          elm_ctxpopup_item_label_set(Elm_Ctxpopup_Item *item, const char *label) EINA_ARG_NONNULL(1);
2807    EAPI void          elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1, 2);
2808    EAPI Evas_Object  *elm_ctxpopup_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2809    EAPI void          elm_ctxpopup_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
2810    EAPI void          elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
2811    EAPI Eina_Bool     elm_ctxpopup_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
2812    Elm_Ctxpopup_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
2813    EAPI void          elm_ctxpopup_item_del(Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
2814    EAPI void          elm_ctxpopup_item_disabled_set(Elm_Ctxpopup_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
2815    EAPI Eina_Bool     elm_ctxpopup_item_disabled_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
2816    EAPI void          elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
2817    EAPI Evas_Object  *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
2818    EAPI void          elm_ctxpopup_direction_priority_set(Evas_Object *obj, Elm_Ctxpopup_Direction first, Elm_Ctxpopup_Direction second, Elm_Ctxpopup_Direction third, Elm_Ctxpopup_Direction fourth) EINA_ARG_NONNULL(1);
2819    EAPI void          elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth) EINA_ARG_NONNULL(1);
2820    /* smart callbacks called:
2821     * "dismissed" - the ctxpopup was dismissed
2822     */
2823
2824    /* transit */
2825    typedef enum
2826      {
2827         ELM_TRANSIT_TWEEN_MODE_LINEAR,
2828         ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL,
2829         ELM_TRANSIT_TWEEN_MODE_DECELERATE,
2830         ELM_TRANSIT_TWEEN_MODE_ACCELERATE
2831      } Elm_Transit_Tween_Mode;
2832    typedef enum
2833      {
2834         ELM_TRANSIT_EFFECT_FLIP_AXIS_X,
2835         ELM_TRANSIT_EFFECT_FLIP_AXIS_Y
2836      } Elm_Transit_Effect_Flip_Axis;
2837    typedef enum
2838      {
2839         ELM_TRANSIT_EFFECT_WIPE_DIR_LEFT,
2840         ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT,
2841         ELM_TRANSIT_EFFECT_WIPE_DIR_UP,
2842         ELM_TRANSIT_EFFECT_WIPE_DIR_DOWN
2843      } Elm_Transit_Effect_Wipe_Dir;
2844    typedef enum
2845      {
2846         ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
2847         ELM_TRANSIT_EFFECT_WIPE_TYPE_SHOW
2848      } Elm_Transit_Effect_Wipe_Type;
2849
2850    typedef struct _Elm_Transit Elm_Transit;
2851    typedef void Elm_Transit_Effect;
2852    typedef void (*Elm_Transit_Effect_Transition_Cb) (Elm_Transit_Effect *effect, Elm_Transit *transit, double progress);
2853    typedef void (*Elm_Transit_Effect_End_Cb) (Elm_Transit_Effect *effect, Elm_Transit *transit);
2854
2855    EAPI Elm_Transit                *elm_transit_add(void);
2856    EAPI void                        elm_transit_del(Elm_Transit *transit) EINA_ARG_NONNULL(1);
2857    EAPI void                        elm_transit_effect_add(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect, Elm_Transit_Effect_End_Cb end_cb) EINA_ARG_NONNULL(1, 2);
2858    EAPI void                        elm_transit_effect_del(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect) EINA_ARG_NONNULL(1, 2);
2859    EAPI void                        elm_transit_object_add(Elm_Transit *transit, Evas_Object *obj) EINA_ARG_NONNULL(1, 2);
2860    EAPI void                        elm_transit_object_remove(Elm_Transit *transit, Evas_Object *obj) EINA_ARG_NONNULL(1, 2);
2861    EAPI const Eina_List            *elm_transit_objects_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2862    EAPI void                        elm_transit_objects_final_state_keep_set(Elm_Transit *transit, Eina_Bool state_keep) EINA_ARG_NONNULL(1);
2863    EAPI Eina_Bool                   elm_transit_objects_final_state_keep_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2864    EINA_DEPRECATED EAPI void                elm_transit_event_block_set(Elm_Transit *transit, Eina_Bool disabled) EINA_ARG_NONNULL(1);
2865    EINA_DEPRECATED EAPI Eina_Bool           elm_transit_event_block_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2866    EAPI void                        elm_transit_event_enabled_set(Elm_Transit *transit, Eina_Bool enabled) EINA_ARG_NONNULL(1);
2867    EAPI Eina_Bool                   elm_transit_event_enabled_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2868    EAPI void                        elm_transit_del_cb_set(Elm_Transit *transit, void (*cb)(void *data, Elm_Transit* transit), void *data) EINA_ARG_NONNULL(1);
2869    EAPI void                        elm_transit_auto_reverse_set(Elm_Transit *transit, Eina_Bool reverse) EINA_ARG_NONNULL(1);
2870    EAPI Eina_Bool                   elm_transit_auto_reverse_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2871    EAPI void                        elm_transit_repeat_times_set(Elm_Transit *transit, int repeat) EINA_ARG_NONNULL(1);
2872    EAPI int                         elm_transit_repeat_times_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2873    EAPI void                        elm_transit_tween_mode_set(Elm_Transit *transit, Elm_Transit_Tween_Mode tween_mode) EINA_ARG_NONNULL(1);
2874    EAPI Elm_Transit_Tween_Mode      elm_transit_tween_mode_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2875    EAPI void                        elm_transit_duration_set(Elm_Transit *transit, double duration) EINA_ARG_NONNULL(1);
2876    EAPI double                      elm_transit_duration_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2877    EAPI void                        elm_transit_go(Elm_Transit *transit) EINA_ARG_NONNULL(1);
2878    EAPI void                        elm_transit_paused_set(Elm_Transit *transit, Eina_Bool paused) EINA_ARG_NONNULL(1);
2879    EAPI Eina_Bool                   elm_transit_paused_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2880    EAPI double                      elm_transit_progress_value_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
2881    EAPI void                        elm_transit_chain_transit_add(Elm_Transit *transit, Elm_Transit *chain_transit) EINA_ARG_NONNULL(1, 2);
2882    EAPI Eina_List                  *elm_transit_chain_transits_get(const Elm_Transit *transit);
2883
2884    EAPI Elm_Transit_Effect *elm_transit_effect_resizing_add(Elm_Transit* transit, Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h);
2885    EAPI Elm_Transit_Effect *elm_transit_effect_translation_add(Elm_Transit* transit, Evas_Coord from_dx, Evas_Coord dy, Evas_Coord to_dx, Evas_Coord to_dy);
2886    EAPI Elm_Transit_Effect *elm_transit_effect_zoom_add(Elm_Transit *transit, float from_rate, float to_rate);
2887    EAPI Elm_Transit_Effect *elm_transit_effect_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
2888    EAPI Elm_Transit_Effect *elm_transit_effect_resizable_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
2889    EAPI Elm_Transit_Effect *elm_transit_effect_wipe_add(Elm_Transit *transit, Elm_Transit_Effect_Wipe_Type type, Elm_Transit_Effect_Wipe_Dir dir);
2890    EAPI Elm_Transit_Effect *elm_transit_effect_color_add(Elm_Transit *transit, unsigned int from_r, unsigned int from_g, unsigned int from_b, unsigned int from_a, unsigned int to_r, unsigned int to_g, unsigned int to_b, unsigned int to_a);
2891    EAPI Elm_Transit_Effect *elm_transit_effect_fade_add(Elm_Transit *transit);
2892    EAPI Elm_Transit_Effect *elm_transit_effect_blend_add(Elm_Transit *transit);
2893    EAPI Elm_Transit_Effect *elm_transit_effect_rotation_add(Elm_Transit *transit, float from_degree, float to_degree);
2894    EAPI Elm_Transit_Effect *elm_transit_effect_image_animation_add(Elm_Transit *transit, Eina_List *images);
2895
2896   typedef struct _Elm_Store                      Elm_Store;
2897   typedef struct _Elm_Store_Filesystem           Elm_Store_Filesystem;
2898   typedef struct _Elm_Store_Item                 Elm_Store_Item;
2899   typedef struct _Elm_Store_Item_Filesystem      Elm_Store_Item_Filesystem;
2900   typedef struct _Elm_Store_Item_Info            Elm_Store_Item_Info;
2901   typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem;
2902   typedef struct _Elm_Store_Item_Mapping         Elm_Store_Item_Mapping;
2903   typedef struct _Elm_Store_Item_Mapping_Empty   Elm_Store_Item_Mapping_Empty;
2904   typedef struct _Elm_Store_Item_Mapping_Icon    Elm_Store_Item_Mapping_Icon;
2905   typedef struct _Elm_Store_Item_Mapping_Photo   Elm_Store_Item_Mapping_Photo;
2906   typedef struct _Elm_Store_Item_Mapping_Custom  Elm_Store_Item_Mapping_Custom;
2907
2908   typedef Eina_Bool (*Elm_Store_Item_List_Cb) (void *data, Elm_Store_Item_Info *info);
2909   typedef void      (*Elm_Store_Item_Fetch_Cb) (void *data, Elm_Store_Item *sti);
2910   typedef void      (*Elm_Store_Item_Unfetch_Cb) (void *data, Elm_Store_Item *sti);
2911   typedef void     *(*Elm_Store_Item_Mapping_Cb) (void *data, Elm_Store_Item *sti, const char *part);
2912
2913   typedef enum
2914     {
2915        ELM_STORE_ITEM_MAPPING_NONE = 0,
2916        ELM_STORE_ITEM_MAPPING_LABEL, // const char * -> label
2917        ELM_STORE_ITEM_MAPPING_STATE, // Eina_Bool -> state
2918        ELM_STORE_ITEM_MAPPING_ICON, // char * -> icon path
2919        ELM_STORE_ITEM_MAPPING_PHOTO, // char * -> photo path
2920        ELM_STORE_ITEM_MAPPING_CUSTOM, // item->custom(it->data, it, part) -> void * (-> any)
2921        // can add more here as needed by common apps
2922        ELM_STORE_ITEM_MAPPING_LAST
2923     } Elm_Store_Item_Mapping_Type;
2924
2925   struct _Elm_Store_Item_Mapping_Icon
2926     {
2927        // FIXME: allow edje file icons
2928        int                   w, h;
2929        Elm_Icon_Lookup_Order lookup_order;
2930        Eina_Bool             standard_name : 1;
2931        Eina_Bool             no_scale : 1;
2932        Eina_Bool             smooth : 1;
2933        Eina_Bool             scale_up : 1;
2934        Eina_Bool             scale_down : 1;
2935     };
2936
2937   struct _Elm_Store_Item_Mapping_Empty
2938     {
2939        Eina_Bool             dummy;
2940     };
2941
2942   struct _Elm_Store_Item_Mapping_Photo
2943     {
2944        int                   size;
2945     };
2946
2947   struct _Elm_Store_Item_Mapping_Custom
2948     {
2949        Elm_Store_Item_Mapping_Cb func;
2950     };
2951
2952   struct _Elm_Store_Item_Mapping
2953     {
2954        Elm_Store_Item_Mapping_Type     type;
2955        const char                     *part;
2956        int                             offset;
2957        union
2958          {
2959             Elm_Store_Item_Mapping_Empty  empty;
2960             Elm_Store_Item_Mapping_Icon   icon;
2961             Elm_Store_Item_Mapping_Photo  photo;
2962             Elm_Store_Item_Mapping_Custom custom;
2963             // add more types here
2964          } details;
2965     };
2966
2967   struct _Elm_Store_Item_Info
2968     {
2969       Elm_Genlist_Item_Class       *item_class;
2970       const Elm_Store_Item_Mapping *mapping;
2971       void                         *data;
2972       char                         *sort_id;
2973     };
2974
2975   struct _Elm_Store_Item_Info_Filesystem
2976     {
2977       Elm_Store_Item_Info  base;
2978       char                *path;
2979     };
2980
2981 #define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } }
2982 #define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it)
2983
2984   EAPI void                    elm_store_free(Elm_Store *st);
2985
2986   EAPI Elm_Store              *elm_store_filesystem_new(void);
2987   EAPI void                    elm_store_filesystem_directory_set(Elm_Store *st, const char *dir) EINA_ARG_NONNULL(1);
2988   EAPI const char             *elm_store_filesystem_directory_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
2989   EAPI const char             *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
2990
2991   EAPI void                    elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) EINA_ARG_NONNULL(1);
2992
2993   EAPI void                    elm_store_cache_set(Elm_Store *st, int max) EINA_ARG_NONNULL(1);
2994   EAPI int                     elm_store_cache_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
2995   EAPI void                    elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
2996   EAPI void                    elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
2997   EAPI void                    elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread) EINA_ARG_NONNULL(1);
2998   EAPI Eina_Bool               elm_store_fetch_thread_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
2999
3000   EAPI void                    elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
3001   EAPI void                    elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) EINA_ARG_NONNULL(1);
3002   EAPI Eina_Bool               elm_store_sorted_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
3003   EAPI void                    elm_store_item_data_set(Elm_Store_Item *sti, void *data) EINA_ARG_NONNULL(1);
3004   EAPI void                   *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
3005   EAPI const Elm_Store        *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
3006   EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
3007
3008    /* SegmentControl */
3009    typedef struct _Elm_Segment_Item Elm_Segment_Item;
3010    EAPI Evas_Object      *elm_segment_control_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
3011    EAPI Elm_Segment_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label) EINA_ARG_NONNULL(1);
3012    EAPI Elm_Segment_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index) EINA_ARG_NONNULL(1);
3013    EAPI void              elm_segment_control_item_del(Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
3014    EAPI void              elm_segment_control_item_del_at(Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
3015    EAPI int               elm_segment_control_item_count_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
3016    EAPI Elm_Segment_Item *elm_segment_control_item_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
3017    EAPI const char       *elm_segment_control_item_label_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
3018    EAPI void              elm_segment_control_item_label_set(Elm_Segment_Item* it, const char* label) EINA_ARG_NONNULL(1);
3019    EAPI Evas_Object      *elm_segment_control_item_icon_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
3020    EAPI void              elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
3021    EAPI int               elm_segment_control_item_index_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
3022    EAPI Evas_Object      *elm_segment_control_item_object_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
3023    EAPI Elm_Segment_Item *elm_segment_control_item_selected_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
3024    EAPI void              elm_segment_control_item_selected_set(Elm_Segment_Item *it, Eina_Bool select) EINA_ARG_NONNULL(1);
3025    /* smart callbacks called:
3026     * "changed" -when the user clicks on a segment item which is not previously
3027     *            selected and get selected. The event_info parameter is the
3028     *            segment item index.
3029     */
3030    
3031    EAPI Evas_Object *elm_grid_add(Evas_Object *parent);
3032    EAPI void         elm_grid_size_set(Evas_Object *obj, int w, int h);
3033    EAPI void         elm_grid_size_get(Evas_Object *obj, int *w, int *h);
3034    EAPI void         elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h);
3035    EAPI void         elm_grid_unpack(Evas_Object *obj, Evas_Object *subobj);
3036    EAPI void         elm_grid_clear(Evas_Object *obj, Eina_Bool clear);
3037    EAPI void         elm_grid_pack_set(Evas_Object *subobj, int x, int y, int w, int h);
3038    EAPI void         elm_grid_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h);
3039          
3040 #ifdef __cplusplus
3041 }
3042 #endif
3043
3044 #endif