1 #ifndef _EFL_UI_H
2 #define _EFL_UI_H
3 
4 #include <Efl_Config.h>
5 #include <Elementary_Options.h>
6 
7 /* Standard headers for standard system calls etc. */
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <unistd.h>
11 #include <string.h>
12 #include <sys/types.h>
13 #include <sys/stat.h>
14 #include <sys/time.h>
15 #include <sys/param.h>
16 #include <math.h>
17 #include <fnmatch.h>
18 #include <limits.h>
19 #include <ctype.h>
20 #include <time.h>
21 #ifdef ELM_DIRENT_H
22 #include <dirent.h>
23 #endif
24 #ifndef _WIN32
25 # include <pwd.h>
26 #endif
27 #include <errno.h>
28 
29 #ifdef ELM_UNIX
30 #include <locale.h>
31 #ifdef ELM_LIBINTL_H
32 #include <libintl.h>
33 #endif
34 #include <signal.h>
35 #include <grp.h>
36 #include <glob.h>
37 #endif
38 
39 #ifdef ELM_ALLOCA_H
40 #include <alloca.h>
41 #endif
42 
43 #ifdef _WIN32
44 # define WIN32_LEAN_AND_MEAN
45 # include <winsock2.h>
46 # undef WIN32_LEAN_AND_MEAN
47 #elif defined (__FreeBSD__) || defined (__OpenBSD__)
48 # include <sys/select.h>
49 # include <signal.h>
50 #elif defined (__ANDROID__)
51 # include <sys/select.h>
52 #elif defined (__sun)
53 # include <sys/siginfo.h>
54 #else
55 # include <sys/time.h>
56 # include <signal.h>
57 #endif
58 
59 #include <sys/types.h>
60 
61 #define __EFL_UI_IS_REQUIRED
62 
63 #include <Efl_Core.h>
64 #include <Efl_Net.h>
65 
66 #include <Efl_Canvas.h>
67 #include <Efl_Layout.h>
68 
69 #ifdef EAPI
70 # undef EAPI
71 #endif
72 #ifdef EWAPI
73 # undef EWAPI
74 #endif
75 
76 #ifdef _WIN32
77 # ifdef EFL_BUILD
78 #  ifdef DLL_EXPORT
79 #   define EAPI __declspec(dllexport)
80 #  else
81 #   define EAPI
82 #  endif
83 # else
84 #  define EAPI __declspec(dllimport)
85 # endif
86 # define EAPI_WEAK
87 #else
88 # ifdef __GNUC__
89 #  if __GNUC__ >= 4
90 #   define EAPI __attribute__ ((visibility("default")))
91 #   define EAPI_WEAK __attribute__ ((weak))
92 #  else
93 #   define EAPI
94 #   define EAPI_WEAK
95 # endif
96 # else
97 #  define EAPI
98 #  define EAPI_WEAK
99 # endif
100 #endif
101 
102 #define EWAPI EAPI EAPI_WEAK
103 
104 #ifdef __cplusplus
105 extern "C" {
106 #endif
107 
108 EAPI extern double _efl_startup_time;
109 
110 /** Successfully applied the requested style from the current theme. */
111 EAPI extern Eina_Error EFL_UI_THEME_APPLY_ERROR_NONE;
112 
113 // EO types. Defined for legacy-only builds as legacy uses typedef of EO types.
114 #include "efl_ui.eot.h"
115 
116 //define focus manager earlier since focus object and manager is circular
117 typedef Eo Efl_Ui_Focus_Manager;
118 #define _EFL_UI_FOCUS_MANAGER_EO_CLASS_TYPE
119 
120 # include <efl_ui_focus_object.eo.h>
121 # include <efl_ui_focus_manager.eo.h>
122 # ifdef EFL_BETA_API_SUPPORT
123 EAPI void efl_ui_focus_relation_free(Efl_Ui_Focus_Relations *rel);
124 # endif
125 # include <efl_ui_focus_manager_window_root.eo.h>
126 # include <efl_ui_focus_manager_calc.eo.h>
127 # include <efl_ui_focus_manager_sub.eo.h>
128 # include <efl_ui_focus_manager_root_focus.eo.h>
129 # include <efl_ui_focus_util.eo.h>
130 # include <efl_ui_textpath.eo.h>
131 # include <efl_ui_l10n.eo.h>
132 # include <efl_ui_focus_composition.eo.h>
133 # include <efl_ui_focus_layer.eo.h>
134 # include <efl_access_object.h>
135 # include <efl_access_text.h>
136 # include <efl_access_window.h>
137 
138 # include <efl_access_action.eo.h>
139 # include <efl_access_component.eo.h>
140 # include <efl_access_editable_text.eo.h>
141 # include <efl_access_selection.eo.h>
142 
143 # include <efl_ui_theme.eo.h>
144 # include <efl_config_global.eo.h>
145 # include <efl_ui_widget.eo.h>
146 # include <efl_ui_widget_scrollable_content.eo.h>
147 # include <efl_ui_widget_common.h>
148 # include <efl_ui_widget_part.eo.h>
149 # include <efl_ui_widget_part_bg.eo.h>
150 # include <efl_ui_widget_part_shadow.eo.h>
151 # include <efl_ui_layout_base.eo.h>
152 # include <efl_ui_layout.eo.h>
153 # include <efl_ui_layout_part.eo.h>
154 # include <efl_ui_layout_part_bg.eo.h>
155 # include <efl_ui_layout_part_box.eo.h>
156 # include <efl_ui_layout_part_content.eo.h>
157 # include <efl_ui_layout_part_text.eo.h>
158 # include <efl_ui_layout_part_table.eo.h>
159 # include <efl_ui_item.eo.h>
160 # include <efl_ui_default_item.eo.h>
161 # include <efl_ui_group_item.eo.h>
162 # include <efl_ui_win_part.eo.h>
163 # include <efl_ui_bg.eo.h>
164 # include <efl_ui_box.eo.h>
165 # include <efl_ui_box_flow.eo.h>
166 # include <efl_ui_box_stack.eo.h>
167 # include <efl_ui_table.eo.h>
168 # include <efl_ui_table_static.eo.h>
169 # include <efl_ui_image.eo.h>
170 # include <efl_ui_image_zoomable.eo.h>
171 # include <efl_ui_win.eo.h>
172 /* FIXME: what the actual fuck. */
173 #ifdef EFL_BETA_API_SUPPORT
174 /**
175  * @brief Set the window's autodel state.
176  *
177  * When closing the window in any way outside of the program control, like
178  * pressing the X button in the titlebar or using a command from the Window
179  * Manager, a "delete,request" signal is emitted to indicate that this event
180  * occurred and the developer can take any action, which may include, or not,
181  * destroying the window object.
182  *
183  * When the @c autodel parameter is set, the window will be automatically
184  * destroyed when this event occurs, after the signal is emitted. If @c autodel
185  * is @c false, then the window will not be destroyed and is up to the program
186  * to do so when it's required.
187  *
188  * @param[in] obj The object.
189  * @param[in] autodel If @c true, the window will automatically delete itself
190  * when closed.
191  *
192  * Note: This function is only available in C.
193  *
194  * @ingroup Efl_Ui_Win
195  */
196 EAPI void efl_ui_win_autodel_set(Efl_Ui_Win *obj, Eina_Bool autodel);
197 
198 /**
199  * @brief Get the window's autodel state.
200  *
201  * @param[in] obj The object.
202  *
203  * @return If @c true, the window will automatically delete itself when closed.
204  *
205  * Note: This function is only available in C.
206  *
207  * @ingroup Efl_Ui_Win
208  */
209 EAPI Eina_Bool efl_ui_win_autodel_get(const Efl_Ui_Win *obj);
210 #endif
211 # include <efl_ui_win_inlined.eo.h>
212 # include <efl_ui_win_socket.eo.h>
213 # include <efl_ui_relative_container.eo.h>
214 
215 // FIXME - Text object must stop using Context_Item_Clicked_Cb!
216 typedef void (*Context_Item_Clicked_Cb)(void *data, Eo *obj, void *event_info);
217 
218 # include <efl_text_interactive.eo.h>
219 # include <efl_ui_textbox.eo.h>
220 # include <efl_ui_textbox_async.eo.h>
221 
222 # include <efl_ui_vg_animation.eo.h>
223 # include <efl_ui_clock.eo.h>
224 # include <efl_ui_video.eo.h>
225 
226 # include <efl_ui_widget_factory.eo.h>
227 # include <efl_ui_image_factory.eo.h>
228 # include <efl_ui_layout_factory.eo.h>
229 # include <efl_ui_caching_factory.eo.h>
230 # include <efl_ui_text_factory_fallback.eo.h>
231 # include <efl_ui_text_factory_images.eo.h>
232 # include <efl_ui_text_factory_emoticons.eo.h>
233 
234 /* FIXME: Multibuttonentry must not use elm_widget_item */
235 
236 # include <efl_ui_tags.eo.h>
237 # include <efl_ui_button.eo.h>
238 # include <efl_ui_check.eo.h>
239 # include <efl_ui_radio.eo.h>
240 # include <efl_ui_radio_group.eo.h>
241 # include <efl_ui_radio_group_impl.eo.h>
242 # include <efl_ui_radio_box.eo.h>
243 # include <efl_ui_progressbar.eo.h>
244 
245 # include <efl_ui_flip.eo.h>
246 # include <efl_ui_frame.eo.h>
247 # include <efl_ui_panel.eo.h>
248 # include <efl_ui_panes.eo.h>
249 # include <efl_ui_panes_part.eo.h>
250 
251 #define _EFL_UI_SPOTLIGHT_MANAGEREO_EO_CLASS_TYPE
252 typedef Eo Efl_Ui_Spotlight_Manager;
253 #define _EFL_UI_SPOTLIGHT_INDICATOR_EO_CLASS_TYPE
254 typedef Eo Efl_Ui_Spotlight_Indicator;
255 
256 # include <efl_ui_spotlight_container.eo.h>
257 # include <efl_ui_spotlight_manager.eo.h>
258 # include <efl_ui_spotlight_indicator.eo.h>
259 # include <efl_ui_spotlight_icon_indicator.eo.h>
260 # include <efl_ui_spotlight_scroll_manager.eo.h>
261 # include <efl_ui_spotlight_fade_manager.eo.h>
262 # include <efl_ui_spotlight_animation_manager.eo.h>
263 # include <efl_ui_spotlight_util.eo.h>
264 # include <efl_ui_stack.eo.h>
265 # include <efl_ui_pager.eo.h>
266 
267 # include <efl_ui_navigation_bar.eo.h>
268 # include <efl_ui_navigation_bar_part.eo.h>
269 # include <efl_ui_navigation_bar_part_back_button.eo.h>
270 # include <efl_ui_navigation_layout.eo.h>
271 # include <efl_ui_action_connector.eo.h>
272 # include <efl_ui_format.eo.h>
273 # include <efl_ui_spin.eo.h>
274 # include <efl_ui_spin_button.eo.h>
275 # include <efl_ui_slider.eo.h>
276 # include <efl_ui_slider_interval.eo.h>
277 # include <efl_ui_item.eo.h>
278 # include <efl_ui_position_manager_entity.eo.h>
279 # include <efl_ui_position_manager_data_access_v1.eo.h>
280 # include <canvas/efl_input_clickable.eo.h>
281 # include <efl_ui_item_clickable.eo.h>
282 # include <efl_ui_collection.eo.h>
283 # include <efl_ui_position_manager_list.eo.h>
284 # include <efl_ui_position_manager_grid.eo.h>
285 # include <efl_ui_list_default_item.eo.h>
286 # include <efl_ui_grid_default_item.eo.h>
287 # include <efl_ui_list_placeholder_item.eo.h>
288 # include <efl_ui_selectable.eo.h>
289 # include <efl_ui_single_selectable.eo.h>
290 # include <efl_ui_multi_selectable.eo.h>
291 # include <efl_ui_multi_selectable_object_range.eo.h>
292 # include <efl_ui_multi_selectable_index_range.eo.h>
293 # include <efl_ui_popup.eo.h>
294 # include <efl_ui_alert_popup.eo.h>
295 # include <efl_ui_popup_part_backwall.eo.h>
296 # include <efl_ui_grid.eo.h>
297 # include <efl_ui_list.eo.h>
298 # include <efl_ui_tab_bar_default_item.eo.h>
299 # include <efl_ui_tab_bar.eo.h>
300 # include <efl_ui_tab_page.eo.h>
301 # include <efl_ui_tab_pager.eo.h>
302 # include <efl_ui_select_model.eo.h>
303 
304 # include <efl_ui_list_view.eo.h>
305 # include <efl_ui_view_model.eo.h>
306 # include <efl_ui_collection_view.eo.h>
307 # include <efl_ui_list_view.eo.h>
308 # include <efl_ui_grid_view.eo.h>
309 
310 # include <efl_ui_scroller.eo.h>
311 # include <efl_ui_pan.eo.h>
312 # include <efl_ui_scroll_manager.eo.h>
313 
314 # include <efl_ui_widget_focus_manager.eo.h>
315 # include <efl_ui_selection.eo.h>
316 # include <efl_ui_dnd.eo.h>
317 
318 # include <efl_ui_timepicker.eo.h>
319 # include <efl_ui_datepicker.eo.h>
320 # include <efl_ui_calendar.eo.h>
321 # include <efl_ui_separator.eo.h>
322 
323 /**
324  * Initialize Elementary
325  *
326  * @param[in] argc System's argument count value
327  * @param[in] argv System's pointer to array of argument strings
328  * @return The init counter value.
329  *
330  * This function initializes Elementary and increments a counter of
331  * the number of calls to it. It returns the new counter's value.
332  *
333  * @warning This call is exported only for use by the @c ELM_MAIN()
334  * macro. There is no need to use this if you use this macro (which
335  * is highly advisable). An elm_main() should contain the entry
336  * point code for your application, having the same prototype as
337  * elm_init(), and @b not being static (putting the @c EAPI_MAIN symbol
338  * in front of its type declaration is advisable). The @c
339  * ELM_MAIN() call should be placed just after it.
340  *
341  * Example:
342  * @dontinclude bg_example_01.c
343  * @skip static void
344  * @until ELM_MAIN
345  *
346  * See the full @ref bg_example_01_c "example".
347  *
348  * @see elm_shutdown().
349  * @ingroup Elm_General
350  */
351 EAPI int       elm_init(int argc, char **argv);
352 
353 /**
354  * Shut down Elementary
355  *
356  * @return The init counter value.
357  *
358  * This should be called at the end of your application, just
359  * before it ceases to do any more processing. This will clean up
360  * any permanent resources your application may have allocated via
361  * Elementary that would otherwise persist.
362  *
363  * @see elm_init() for an example
364  *
365  * @note elm_shutdown() will iterate main loop until all ecore_evas are freed.
366  * There is a possibility to call your ecore callbacks(timer, animator, event,
367  * job, and etc.) in elm_shutdown()
368  *
369  * @ingroup Elm_General
370  */
371 EAPI int       elm_shutdown(void);
372 
373 #ifdef __cplusplus
374 }
375 #endif
376 
377 #undef EAPI
378 #define EAPI
379 
380 #endif
381 
382 // We are including efl_general.h again, just in case Efl_Core.h was already included before this
383 // and the __EFL_*_IS_REQUIRED changed since then.
384 #include <efl_general.h>
385