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