summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Zaoui <daniel.zaoui@samsung.com>2013-04-28 12:58:28 +0300
committerDaniel Zaoui <daniel.zaoui@samsung.com>2013-04-28 13:55:41 +0300
commit7ca91290f1352ba61e8b6d92e04abb54e72521c9 (patch)
tree82b37426ffbb3343467c47509ebc58a3d560c7e3
parent84eabc932d1806bc36983db68533cc1af3093b50 (diff)
downloadelementary-7ca91290f1352ba61e8b6d92e04abb54e72521c9.tar.gz
Elementary: Split headers for Map, Menu, Panel, Panes, Photocam, Plug,
Prefs, ProgressBar, Radio. Route, Segment Control, Separator, Slider, Slideshow, Spinner, Systray, Table, Thumb, Video, Web.
-rw-r--r--src/lib/Makefile.am48
-rw-r--r--src/lib/elm_map_common.h748
-rw-r--r--src/lib/elm_map_eo.h631
-rw-r--r--src/lib/elm_map_legacy.h723
-rw-r--r--src/lib/elm_menu.h382
-rw-r--r--src/lib/elm_menu_common.h119
-rw-r--r--src/lib/elm_menu_eo.h139
-rw-r--r--src/lib/elm_menu_legacy.h131
-rw-r--r--src/lib/elm_panel.h160
-rw-r--r--src/lib/elm_panel_common.h8
-rw-r--r--src/lib/elm_panel_eo.h87
-rw-r--r--src/lib/elm_panel_legacy.h64
-rw-r--r--src/lib/elm_panes.h278
-rw-r--r--src/lib/elm_panes_eo.h133
-rw-r--r--src/lib/elm_panes_legacy.h155
-rw-r--r--src/lib/elm_photocam.h465
-rw-r--r--src/lib/elm_photocam_eo.h247
-rw-r--r--src/lib/elm_photocam_legacy.h224
-rw-r--r--src/lib/elm_plug.h87
-rw-r--r--src/lib/elm_plug_eo.h46
-rw-r--r--src/lib/elm_plug_legacy.h39
-rw-r--r--src/lib/elm_prefs.h1042
-rw-r--r--src/lib/elm_prefs_common.h316
-rw-r--r--src/lib/elm_prefs_eo.h349
-rw-r--r--src/lib/elm_prefs_legacy.h368
-rw-r--r--src/lib/elm_progressbar.h462
-rw-r--r--src/lib/elm_progressbar_eo.h231
-rw-r--r--src/lib/elm_progressbar_legacy.h251
-rw-r--r--src/lib/elm_radio.h212
-rw-r--r--src/lib/elm_radio_eo.h118
-rw-r--r--src/lib/elm_radio_legacy.h100
-rw-r--r--src/lib/elm_route.h101
-rw-r--r--src/lib/elm_route_eo.h60
-rw-r--r--src/lib/elm_route_legacy.h53
-rw-r--r--src/lib/elm_segment_control.h367
-rw-r--r--src/lib/elm_segment_control_common.h49
-rw-r--r--src/lib/elm_segment_control_eo.h141
-rw-r--r--src/lib/elm_segment_control_legacy.h184
-rw-r--r--src/lib/elm_separator.h79
-rw-r--r--src/lib/elm_separator_eo.h43
-rw-r--r--src/lib/elm_separator_legacy.h32
-rw-r--r--src/lib/elm_slider.h594
-rw-r--r--src/lib/elm_slider_eo.h291
-rw-r--r--src/lib/elm_slider_legacy.h330
-rw-r--r--src/lib/elm_slideshow.h816
-rw-r--r--src/lib/elm_slideshow_common.h54
-rw-r--r--src/lib/elm_slideshow_eo.h373
-rw-r--r--src/lib/elm_slideshow_legacy.h425
-rw-r--r--src/lib/elm_spinner.h681
-rw-r--r--src/lib/elm_spinner_eo.h301
-rw-r--r--src/lib/elm_spinner_legacy.h411
-rw-r--r--src/lib/elm_systray.h326
-rw-r--r--src/lib/elm_systray_common.h31
-rw-r--r--src/lib/elm_systray_eo.h286
-rw-r--r--src/lib/elm_table.h280
-rw-r--r--src/lib/elm_table_eo.h162
-rw-r--r--src/lib/elm_table_legacy.h127
-rw-r--r--src/lib/elm_thumb.h340
-rw-r--r--src/lib/elm_thumb_common.h74
-rw-r--r--src/lib/elm_thumb_eo.h136
-rw-r--r--src/lib/elm_thumb_legacy.h137
-rw-r--r--src/lib/elm_video.h483
-rw-r--r--src/lib/elm_video_eo.h284
-rw-r--r--src/lib/elm_video_legacy.h228
-rw-r--r--src/lib/elm_web.h1586
-rw-r--r--src/lib/elm_web_common.h350
-rw-r--r--src/lib/elm_web_eo.h703
-rw-r--r--src/lib/elm_web_legacy.h610
68 files changed, 11267 insertions, 8624 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index e96600a75..622942bbb 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -253,43 +253,91 @@ elm_layout.h \
elm_list.h \
elm_macros.h \
elm_map.h \
+elm_map_common.h \
+elm_map_eo.h \
+elm_map_legacy.h \
elm_mapbuf.h \
elm_menu.h \
+elm_menu_common.h \
+elm_menu_eo.h \
+elm_menu_legacy.h \
elm_mirroring.h \
elm_need.h \
elm_notify.h \
elm_object.h \
elm_object_item.h \
elm_panel.h \
+elm_panel_common.h \
+elm_panel_eo.h \
+elm_panel_legacy.h \
elm_panes.h \
+elm_panes_eo.h \
+elm_panes_legacy.h \
elm_photo.h \
elm_photocam.h \
+elm_photocam_eo.h \
+elm_photocam_legacy.h \
elm_plug.h \
+elm_plug_eo.h \
+elm_plug_legacy.h \
elm_prefs.h \
+elm_prefs_common.h \
+elm_prefs_eo.h \
+elm_prefs_legacy.h \
elm_prefs_data.h \
elm_progressbar.h \
+elm_progressbar_eo.h \
+elm_progressbar_legacy.h \
elm_radio.h \
+elm_radio_eo.h \
+elm_radio_legacy.h \
elm_route.h \
+elm_route_eo.h \
+elm_route_legacy.h \
elm_scale.h \
elm_scroll.h \
elm_scroller.h \
elm_segment_control.h \
+elm_segment_control_common.h \
+elm_segment_control_eo.h \
+elm_segment_control_legacy.h \
elm_separator.h \
+elm_separator_eo.h \
+elm_separator_legacy.h \
elm_slider.h \
+elm_slider_eo.h \
+elm_slider_legacy.h \
elm_slideshow.h \
+elm_slideshow_common.h \
+elm_slideshow_eo.h \
+elm_slideshow_legacy.h \
elm_spinner.h \
+elm_spinner_eo.h \
+elm_spinner_legacy.h \
elm_store.h \
elm_systray.h \
+elm_systray_eo.h \
+elm_systray_common.h \
elm_systray_watcher.h \
elm_sys_notify.h \
elm_table.h \
+elm_table_eo.h \
+elm_table_legacy.h \
elm_theme.h \
elm_thumb.h \
+elm_thumb_common.h \
+elm_thumb_eo.h \
+elm_thumb_legacy.h \
elm_toolbar.h \
elm_tooltip.h \
elm_transit.h \
elm_video.h \
+elm_video_eo.h \
+elm_video_legacy.h \
elm_web.h \
+elm_web_common.h \
+elm_web_eo.h \
+elm_web_legacy.h \
elm_win.h
includesubdir = $(includedir)/elementary-@VMAJ@/
diff --git a/src/lib/elm_map_common.h b/src/lib/elm_map_common.h
new file mode 100644
index 000000000..71e87a67f
--- /dev/null
+++ b/src/lib/elm_map_common.h
@@ -0,0 +1,748 @@
+/**
+ * Set map's zoom behavior. It can be set to manual or automatic.
+ *
+ * Default value is #ELM_MAP_ZOOM_MODE_MANUAL.
+ *
+ * Values <b> don't </b> work as bitmask, only one can be chosen.
+ *
+ * @note Valid sizes are 2^zoom, consequently the map may be smaller
+ * than the scroller view.
+ *
+ * @see elm_map_zoom_mode_set()
+ * @see elm_map_zoom_mode_get()
+ *
+ * @ingroup Map
+ */
+typedef enum
+{
+ ELM_MAP_ZOOM_MODE_MANUAL, /**< Zoom controlled manually by elm_map_zoom_set(). It's set by default. */
+ ELM_MAP_ZOOM_MODE_AUTO_FIT, /**< Zoom until map fits inside the scroll frame with no pixels outside this area. */
+ ELM_MAP_ZOOM_MODE_AUTO_FILL, /**< Zoom until map fills scroll, ensuring no pixels are left unfilled. */
+ ELM_MAP_ZOOM_MODE_LAST
+} Elm_Map_Zoom_Mode;
+
+/**
+ * Set type of a external source (provider).
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_get()
+ * @see elm_map_source_set()
+ *
+ * @ingroup Map
+ */
+typedef enum
+{
+ ELM_MAP_SOURCE_TYPE_TILE, /**< Map tile provider. */
+ ELM_MAP_SOURCE_TYPE_ROUTE, /**< Route service provider. */
+ ELM_MAP_SOURCE_TYPE_NAME, /**< Name service provider. */
+ ELM_MAP_SOURCE_TYPE_LAST
+} Elm_Map_Source_Type;
+
+/**
+ * Set type of transport used on route.
+ *
+ * @see elm_map_route_add()
+ *
+ * @ingroup Map
+ */
+typedef enum
+{
+ ELM_MAP_ROUTE_TYPE_MOTOCAR, /**< Route should consider an automobile will be used. */
+ ELM_MAP_ROUTE_TYPE_BICYCLE, /**< Route should consider a bicycle will be used by the user. */
+ ELM_MAP_ROUTE_TYPE_FOOT, /**< Route should consider user will be walking. */
+ ELM_MAP_ROUTE_TYPE_LAST
+} Elm_Map_Route_Type;
+
+/**
+ * Set the routing method, what should be prioritized, time or distance.
+ *
+ * @see elm_map_route_add()
+ *
+ * @ingroup Map
+ */
+typedef enum
+{
+ ELM_MAP_ROUTE_METHOD_FASTEST, /**< Route should prioritize time. */
+ ELM_MAP_ROUTE_METHOD_SHORTEST, /**< Route should prioritize distance. */
+ ELM_MAP_ROUTE_METHOD_LAST
+} Elm_Map_Route_Method;
+
+/**
+ * Set the name search method.
+ *
+ * This is for name module interface.
+ *
+ * @ingroup Map
+ */
+typedef enum
+{
+ ELM_MAP_NAME_METHOD_SEARCH,
+ ELM_MAP_NAME_METHOD_REVERSE,
+ ELM_MAP_NAME_METHOD_LAST
+} Elm_Map_Name_Method;
+
+/**
+ * Set overlay type to be used. This type is resolved
+ * when the overlay is created.
+ * You can get this value by elm_map_overlay_type_get().
+ *
+ * @see elm_map_overlay_type_get()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+typedef enum _Elm_Map_Overlay_Type
+{
+ ELM_MAP_OVERLAY_TYPE_NONE = 0,
+ ELM_MAP_OVERLAY_TYPE_DEFAULT,
+ ELM_MAP_OVERLAY_TYPE_CLASS,
+ ELM_MAP_OVERLAY_TYPE_GROUP,
+ ELM_MAP_OVERLAY_TYPE_BUBBLE,
+ ELM_MAP_OVERLAY_TYPE_ROUTE,
+ ELM_MAP_OVERLAY_TYPE_LINE,
+ ELM_MAP_OVERLAY_TYPE_POLYGON,
+ ELM_MAP_OVERLAY_TYPE_CIRCLE,
+ ELM_MAP_OVERLAY_TYPE_SCALE
+
+} Elm_Map_Overlay_Type;
+
+typedef struct _Elm_Map_Marker Elm_Map_Marker; /**< A marker to be shown in a specific point of the map. Can be created with elm_map_marker_add() and deleted with elm_map_marker_remove(). */
+typedef struct _Elm_Map_Marker_Class Elm_Map_Marker_Class; /**< Each marker must be associated to a class. It's required to add a mark. The class defines the style of the marker when a marker is displayed alone (not grouped). A new class can be created with elm_map_marker_class_new(). */
+typedef struct _Elm_Map_Group_Class Elm_Map_Group_Class; /**< Each marker must be associated to a group class. It's required to add a mark. The group class defines the style of the marker when a marker is grouped to other markers. Markers with the same group are grouped if they are close. A new group class can be created with elm_map_marker_group_class_new(). */
+typedef struct _Elm_Map_Route Elm_Map_Route; /**< A route to be shown in the map. Can be created with elm_map_route_add() and deleted with elm_map_route_del(). */
+typedef struct _Elm_Map_Name Elm_Map_Name; /**< A handle for specific coordinates. */
+typedef struct _Elm_Map_Overlay Elm_Map_Overlay; /**< A overlay to be shown in a specific point of the map. This can be created by elm_map_overlay_add() and similar functions and deleted by elm_map_overlay_del(). */
+
+typedef Evas_Object *(*Elm_Map_Marker_Get_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data); /**< Bubble content fetching class function for marker classes. When the user click on a marker, a bubble is displayed with a content. */
+typedef void (*Elm_Map_Marker_Del_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data, Evas_Object *o); /**< Function to delete bubble content for marker classes. */
+typedef Evas_Object *(*Elm_Map_Marker_Icon_Get_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data); /**< Icon fetching class function for marker classes. */
+typedef Evas_Object *(*Elm_Map_Group_Icon_Get_Func)(Evas_Object *obj, void *data); /**< Icon fetching class function for markers group classes. */
+
+typedef void (*Elm_Map_Overlay_Get_Cb)(void *data, Evas_Object *map, Elm_Map_Overlay *overlay); /**< Get callback function for the overlay. */
+typedef void (*Elm_Map_Overlay_Del_Cb)(void *data, Evas_Object *map, Elm_Map_Overlay *overlay); /**< Det callback function for the overlay. @since 1.7 */
+typedef void (*Elm_Map_Name_Cb)(void *data, Evas_Object *map, Elm_Map_Name *name); /**< Async-callback function for the name request. */
+typedef void (*Elm_Map_Name_List_Cb)(void *data, Evas_Object *map, Eina_List *name_list); /**< Async-callback function for the name list request. */
+typedef void (*Elm_Map_Route_Cb)(void *data, Evas_Object *map, Elm_Map_Route *route); /**< Async-callback function for the route request. */
+
+/**
+ * Delete a overlay from the map. This function can delete all types
+ * of overlays.
+ *
+ * @param overlay The overlay to be deleted.
+ *
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_del(Elm_Map_Overlay *overlay);
+
+/**
+ * Get the overlay type.
+ *
+ * @param overlay The overlay to return type.
+ * @return Return the overlay type.
+ *
+ * This type is resolved when the overlay is created.
+ *
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay_Type elm_map_overlay_type_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * Set a pointer of user data for a overlay.
+ *
+ * @param overlay The overlay to own the user data.
+ * @param data A pointer of user data
+ *
+ * @see elm_map_overlay_data_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_data_set(Elm_Map_Overlay *overlay, void *data);
+
+/**
+ * Get the user data stored on a overlay.
+ *
+ * @param overlay The overlay to return the user data.
+ * @return A pointer to data stored using elm_map_overlay_data_set(),
+ * or @c NULL, if none has been set.
+ *
+ * @see elm_map_overlay_data_set()
+ *
+ * @ingroup Map
+ */
+EAPI void * elm_map_overlay_data_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * Set if the overlay is hidden or not.
+ *
+ * @param overlay The overlay to be hidden.
+ * @param hide Use @c EINA_TRUE to hide the overlay or @c EINA_FALSE to show.
+ *
+ * @see elm_map_overlay_hide_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_hide_set(Elm_Map_Overlay *overlay, Eina_Bool hide);
+
+/**
+ * Get a value whether the overlay is hidden or not.
+ *
+ * @param overlay The overlay to return the hidden state.
+ * @return @c EINA_TRUE means the overlay is hidden. @c EINA_FALSE indicates
+ * it is not.
+ *
+ * This gets the current hidden state for the overlay.
+ *
+ * @see elm_map_overlay_hide_set()
+ *
+ * @ingroup Map
+ */
+EAPI Eina_Bool elm_map_overlay_hide_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * Set the minimum zoom from where the overlay is displayed.
+ *
+ * @param overlay The overlay to be set the minimum zoom.
+ * @param zoom The minimum zoom.
+ *
+ * The overlay only will be displayed when the map is displayed at @p zoom
+ * or bigger.
+ *
+ * @see elm_map_overlay_displayed_zoom_min_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_displayed_zoom_min_set(Elm_Map_Overlay *overlay, int zoom);
+
+/**
+ * Get the minimum zoom from where the overlay is displayed.
+ *
+ * @param overlay The overlay to return the minimum zoom.
+ * @return zoom The minimum zoom.
+ *
+ * @see elm_map_overlay_displayed_zoom_min_set()
+ *
+ * @ingroup Map
+ */
+EAPI int elm_map_overlay_displayed_zoom_min_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * Pause or unpause the overlay.
+ *
+ * @param overlay The overlay to be paused.
+ * @param paused Use @c EINA_TRUE to pause the @p overlay or @c EINA_FALSE
+ * to unpause it.
+ *
+ * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for the overlay.
+ *
+ * The default is off.
+ *
+ * This will stop moving the overlay coordinates instantly.
+ * even if map being scrolled or zoomed.
+ *
+ * @see elm_map_overlay_paused_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_paused_set(Elm_Map_Overlay *overlay, Eina_Bool paused);
+
+/**
+ * Get a value whether the overlay is paused or not.
+ *
+ * @param overlay The overlay to return paused state.
+ * @return @c EINA_TRUE means overlay is paused. @c EINA_FALSE indicates
+ * it is not.
+ *
+ * This gets the current paused state for the overlay.
+ *
+ * @see elm_map_overlay_paused_set()
+ *
+ * @ingroup Map
+ */
+EAPI Eina_Bool elm_map_overlay_paused_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * Get a value whether the overlay is visible or not.
+ *
+ * @param overlay The overlay to return visible state.
+ * @return @c EINA_TRUE means overlay is visible. @c EINA_FALSE indicates
+ * it is not.
+ *
+ * The visible of the overlay can not be set.
+ * This value can be changed dynamically while zooming and panning
+ *
+ * @since 1.7
+ *
+ * @ingroup Map
+ */
+EAPI Eina_Bool elm_map_overlay_visible_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * Set the content object of the overlay.
+ *
+ * @param overlay The overlay to be set the content.
+ * @param obj The evas object will be used to display the overlay.
+ *
+ * Only default and class type overlay support this function.
+ *
+ * The content should be resized or set size hints before set to the overlay.
+ * <b> Do not modify this object</b> (move, show, hide, del, etc.),
+ * after set.
+ * You can only resize this.
+ *
+ * This content is what will be inside the overlay that will be displayed.
+ * If a content is set, icon and default style layout are no more used before
+ * the content is deleted.
+ *
+ * If @p obj is @c NULL, content inside the overlay is deleted.
+ *
+ * @see elm_map_overlay_content_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_content_set(Elm_Map_Overlay *overlay, Evas_Object *obj);
+
+/**
+ * Get the content object.
+ *
+ * @param overlay The overlay to return the content.
+ * @return Return the evas object if it exists, else @c NULL.
+ *
+ * Only default and class type overlay support this function.
+ *
+ * Returned content is what being inside the overlay that being displayed.
+ *
+ * <b> Do not modify this object</b> (move, show, hide, del, etc.).
+ * You can only resize this.
+ *
+ * The content can be set by elm_map_overlay_content_set().
+ *
+ * @see elm_map_overlay_content_set()
+ *
+ * @ingroup Map
+ */
+EAPI const Evas_Object * elm_map_overlay_content_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * Set a icon of the overlay.
+ *
+ * @param overlay The overlay to be set the icon.
+ * @param icon The icon will be used to display the overlay.
+ *
+ * Only default and class type overlay support this function.
+ *
+ * <b> Do not modify this object</b> (move, show, hide, resize, del, etc.),
+ * after set.
+ *
+ * If icon is set, default style layout will not be used.
+ *
+ * If @p icon is @c NULL, icon inside the overlay will be deleted.
+ *
+ * @see elm_map_overlay_icon_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_icon_set(Elm_Map_Overlay *overlay, Evas_Object *icon);
+
+/**
+ * Get the icon object.
+ *
+ * @param overlay The overlay to return the icon.
+ * @return Return the icon object if it exists, else @c NULL.
+ *
+ * Only default and class type overlay support this function.
+ *
+ * Returned icon is what being inside the overlay that being displayed.
+ *
+ * <b> Do not modify this icon </b> (move, show, hide, resize, del, etc.).
+ *
+ * The icon can be set by elm_map_overlay_icon_set().
+ *
+ * @see elm_map_overlay_icon_set()
+ *
+ * @ingroup Map
+ */
+EAPI const Evas_Object * elm_map_overlay_icon_get(const Elm_Map_Overlay *overlay);
+
+/**
+ * Set the geographic coordinates of the overlay.
+ *
+ * @param overlay The overlay to be set geographic coordinates.
+ * @param lon Longitude to be set.
+ * @param lat Latitude to be set.
+ *
+ * Only default and bubble type overlay support this function.
+ *
+ * This sets the center coordinates of the overlay. It can be
+ * get by elm_map_overlay_region_get().
+ *
+ * @see elm_map_overlay_region_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_region_set(Elm_Map_Overlay *overlay, double lon, double lat);
+
+/**
+ * Get the geographic coordinates of the overlay.
+ *
+ * @param overlay The overlay to return geographic coordinates.
+ * @param lon Pointer to store longitude.
+ * @param lat Pointer to store latitude.
+ *
+ * Only default and bubble type overlay support this function.
+ *
+ * This returns the center coordinates of the overlay. It can be
+ * set by elm_map_overlay_region_set().
+ *
+ * @see elm_map_overlay_region_set()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_region_get(const Elm_Map_Overlay *overlay, double *lon, double *lat);
+
+
+/**
+ * Set the object color of the overlay.
+ *
+ * @param overlay The overlay to be set color.
+ * @param r Red channel value, from 0 to 255.
+ * @param g Green channel value, from 0 to 255.
+ * @param b Blue channel value, from 0 to 255.
+ * @param a Alpha channel value, from 0 to 255.
+ *
+ * It uses an additive color model, so each color channel represents
+ * how much of each primary colors must to be used. 0 represents
+ * absence of this color, so if all of the three are set to 0,
+ * the color will be black.
+ *
+ * These component values should be integers in the range 0 to 255,
+ * (single 8-bit byte).
+ *
+ * This sets the color used for the overlay. By default, it is set to
+ * solid red (r = 255, g = 0, b = 0, a = 255).
+ *
+ * For alpha channel, 0 represents completely transparent, and 255, opaque.
+ *
+ * Function supports only ELM_MAP_OVERLAY_TYPE_CLASS, ELM_MAP_OVERLAY_TYPE_DEFAULT
+ * and ELM_MAP_OVERLAY_TYPE_ROUTE Elm_Map_Overlay_Type types.
+ *
+ * @see elm_map_overlay_color_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_color_set(Elm_Map_Overlay *overlay, int r, int g, int b, int a);
+
+/**
+ * Get the object color of the overlay.
+ *
+ * @param overlay The overlay to return color.
+ * @param r Pointer to store the red channel value.
+ * @param g Pointer to store the green channel value.
+ * @param b Pointer to store the blue channel value.
+ * @param a Pointer to store the alpha channel value.
+ *
+ * @see elm_map_overlay_color_set()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_color_get(const Elm_Map_Overlay *overlay, int *r, int *g, int *b, int *a);
+
+/**
+ * Show the given overlay at the center of the map, immediately.
+ *
+ * @param overlay The overlay to be center at.
+ *
+ * This causes map to @b redraw its viewport's contents to the
+ * region containing the given @p overlay's coordinates, that will be
+ * moved to the center of the map.
+ *
+ * @see elm_map_overlays_show() if more than one overlay need to be displayed.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_show(Elm_Map_Overlay *overlay);
+
+/**
+ * Move and zoom the map to display a list of overlays.
+ *
+ * @param overlays A list of #Elm_Map_Overlay handles.
+ *
+ * The map will be centered on the center point of the overlays in the list.
+ * Then the map will be zoomed in order to fit the overlays using the maximum
+ * zoom which allows display of all the overlays.
+ *
+ * @warning All the overlays should belong to the same map object.
+ *
+ * @see elm_map_overlay_show() to show a single overlay.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlays_show(Eina_List *overlays);
+
+/**
+ * Set the get callback function of the overlay.
+ *
+ * @param overlay The overlay to own the get callback function.
+ * @param get_cb The callback function.
+ * @param data The user callback data.
+ *
+ * If the overlay is clicked, the callback wll be called.
+ * The clicked overlay is returned by callback.
+ *
+ * You can add callback to the class overlay. If one of the group overlays in this class
+ * is clicked, callback will be called and return a virtual group overlays.
+ *
+ * You can delete this callback function by setting @c NULL.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_get_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Get_Cb get_cb, void *data);
+
+/**
+ * Set the get callback function to call when the overlay is deleted.
+ *
+ * @param overlay The overlay to own the del callback function.
+ * @param get_cb The callback function.
+ * @param data The user callback data.
+ *
+ * If the overlay is deleted, the callback wll be called.
+ * The deleted overlay is returned by callback.
+ *
+ * You can delete this callback function by setting @c NULL.
+ *
+ * @since 1.7
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_del_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Del_Cb del_cb, void *data);
+
+/**
+ * Add a new overlay member to the class overlay.
+ *
+ * @param clas The class overlay to add a new overlay.
+ * @param overlay The overlay to be added to the class overlay.
+ *
+ * @see elm_map_overlay_class_remove()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_class_append(Elm_Map_Overlay *clas, Elm_Map_Overlay *overlay);
+
+/**
+ * Remove a overlay from the class.
+ *
+ * @param clas The class overlay to delete the overlay.
+ * @param overlay The overlay to be deleted from the class overlay.
+ *
+ * @see elm_map_overlay_class_append()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_class_remove(Elm_Map_Overlay *clas, Elm_Map_Overlay *overlay);
+
+/**
+ * Set the maximum zoom from where the overlay members in the class can be
+ * grouped.
+ *
+ * @param clas The overlay class has overlay members.
+ * @param zoom The maximum zoom.
+ *
+ * Overlay members in the class only will be grouped when the map
+ * is displayed at less than @p zoom.
+ *
+ * @see elm_map_overlay_class_zoom_max_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_class_zoom_max_set(Elm_Map_Overlay *clas, int zoom);
+
+/**
+ * Get the maximum zoom from where the overlay members in the class can be
+ * grouped.
+ *
+ * @param clas The overlay class has overlay members.
+ *
+ * @return The maximum zoom.
+ *
+ * @see elm_map_overlay_class_zoom_max_set()
+ *
+ * @ingroup Map
+ */
+EAPI int elm_map_overlay_class_zoom_max_get(const Elm_Map_Overlay *clas);
+
+/**
+ * Get the overlay members of the group overlay.
+ *
+ * @param grp The group overlay has overlay members.
+ *
+ * @return The list of group overlay members.
+ *
+ * The group overlays are virtualy overlays. Those are shown and hidden dynamically.
+ * You can add callback to the class overlay. If one of the group overlays in this class
+ * is clicked, callback will be called and return a virtual group overlays.
+ *
+ * You can change the state (hidden, paused, etc.) or set the content
+ * or icon of the group overlays by chaning the state of the class overlay.
+ * Do not modifty the group overlay itself.
+ *
+ * @see elm_map_overlay_class_add()
+ *
+ * @ingroup Map
+ */
+EAPI Eina_List * elm_map_overlay_group_members_get(const Elm_Map_Overlay *grp);
+
+/**
+ * Follow a other overlay.
+ *
+ * @param bubble The bubble overlay to follow a parent overlay.
+ * @param parent The parent overlay to be followed by the bubble overlay.
+ *
+ * Bubble overlay will follow the parent overlay's movement (hide, show, move).
+ *
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_bubble_follow(Elm_Map_Overlay *bubble, const Elm_Map_Overlay *parent);
+
+/**
+ * Add a content object to the bubble overlay.
+ *
+ * @param bubble The bubble overlay to add a content.
+ * @param content The content to be added to the bubble overlay.
+ *
+ * Added contents will be displayed inside the bubble overlay.
+ *
+ * @see elm_map_overlay_bubble_content_clear()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_bubble_content_append(Elm_Map_Overlay *bubble, Evas_Object *content);
+
+/**
+ * Clear all contents inside the bubble overlay.
+ *
+ * @param bubble The bubble overlay to clear the contents.
+ *
+ * This will delete all contents inside the bubble overlay.
+ *
+ * @see elm_map_overlay_bubble_content_append()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_bubble_content_clear(Elm_Map_Overlay *bubble);
+
+/**
+ * Add a geographic coordinates to the polygon overlay.
+ *
+ * @param overlay The polygon overlay to get a region.
+ * @param lon The longitude.
+ * @param lat The latitude.
+ *
+ * At least 3 regions should be added to show the polygon overlay.
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_polygon_add()
+ * @see elm_map_overlay_del()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_overlay_polygon_region_add(Elm_Map_Overlay *overlay, double lon, double lat);
+
+/**
+ * Remove a route from the map.
+ *
+ * @param route The route to remove.
+ *
+ * @see elm_map_route_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_route_del(Elm_Map_Route *route);
+
+/**
+ * Get the route distance in kilometers.
+ *
+ * @param route The route object.
+ * @return The distance of route (unit : km).
+ *
+ * @ingroup Map
+ */
+EAPI double elm_map_route_distance_get(const Elm_Map_Route *route);
+
+/**
+ * Get the information of route nodes.
+ *
+ * @param route The route object.
+ * @return Returns a string with the nodes of route.
+ *
+ * @ingroup Map
+ */
+EAPI const char *elm_map_route_node_get(const Elm_Map_Route *route);
+
+/**
+ * Get the information of route waypoint.
+ *
+ * @param route the route object.
+ * @return Returns a string with information about waypoint of route.
+ *
+ * @ingroup Map
+ */
+EAPI const char *elm_map_route_waypoint_get(const Elm_Map_Route *route);
+
+/**
+ * Get the address of the name.
+ *
+ * @param name The name handle.
+ * @return Returns the address string of @p name.
+ *
+ * This gets the coordinates of the @p name, created with one of the
+ * conversion functions.
+ *
+ * @see elm_map_name_add()
+ *
+ * @ingroup Map
+ */
+EAPI const char *elm_map_name_address_get(const Elm_Map_Name *name);
+
+/**
+ * Get the current coordinates of the name.
+ *
+ * @param name The name handle.
+ * @param lat Pointer to store the latitude.
+ * @param lon Pointer to store The longitude.
+ *
+ * This gets the coordinates of the @p name, created with one of the
+ * conversion functions.
+ *
+ * @see elm_map_name_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_name_region_get(const Elm_Map_Name *name, double *lon, double *lat);
+
+/**
+ * Remove a name from the map.
+ *
+ * @param name The name to remove.
+ *
+ * Basically the struct handled by @p name will be freed, so conversions
+ * between address and coordinates will be lost.
+ *
+ * @see elm_map_name_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_name_del(Elm_Map_Name *name);
+
diff --git a/src/lib/elm_map_eo.h b/src/lib/elm_map_eo.h
new file mode 100644
index 000000000..ea34d632d
--- /dev/null
+++ b/src/lib/elm_map_eo.h
@@ -0,0 +1,631 @@
+#define ELM_OBJ_MAP_PAN_CLASS elm_obj_map_pan_class_get()
+
+const Eo_Class *elm_obj_map_pan_class_get(void) EINA_CONST;
+
+#define ELM_OBJ_MAP_CLASS elm_obj_map_class_get()
+
+const Eo_Class *elm_obj_map_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_MAP_BASE_ID;
+
+enum
+{
+ ELM_OBJ_MAP_SUB_ID_ZOOM_SET,
+ ELM_OBJ_MAP_SUB_ID_ZOOM_GET,
+ ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_SET,
+ ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_GET,
+ ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_SET,
+ ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_GET,
+ ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_SET,
+ ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_GET,
+ ELM_OBJ_MAP_SUB_ID_REGION_BRING_IN,
+ ELM_OBJ_MAP_SUB_ID_REGION_SHOW,
+ ELM_OBJ_MAP_SUB_ID_REGION_GET,
+ ELM_OBJ_MAP_SUB_ID_PAUSED_SET,
+ ELM_OBJ_MAP_SUB_ID_PAUSED_GET,
+ ELM_OBJ_MAP_SUB_ID_ROTATE_SET,
+ ELM_OBJ_MAP_SUB_ID_ROTATE_GET,
+ ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_SET,
+ ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_GET,
+ ELM_OBJ_MAP_SUB_ID_TILE_LOAD_STATUS_GET,
+ ELM_OBJ_MAP_SUB_ID_CANVAS_TO_REGION_CONVERT,
+ ELM_OBJ_MAP_SUB_ID_REGION_TO_CANVAS_CONVERT,
+ ELM_OBJ_MAP_SUB_ID_USER_AGENT_SET,
+ ELM_OBJ_MAP_SUB_ID_USER_AGENT_GET,
+ ELM_OBJ_MAP_SUB_ID_SOURCE_SET,
+ ELM_OBJ_MAP_SUB_ID_SOURCE_GET,
+ ELM_OBJ_MAP_SUB_ID_SOURCES_GET,
+ ELM_OBJ_MAP_SUB_ID_ROUTE_ADD,
+ ELM_OBJ_MAP_SUB_ID_NAME_ADD,
+ ELM_OBJ_MAP_SUB_ID_OVERLAY_ADD,
+ ELM_OBJ_MAP_SUB_ID_OVERLAYS_GET,
+ ELM_OBJ_MAP_SUB_ID_OVERLAY_CLASS_ADD,
+ ELM_OBJ_MAP_SUB_ID_OVERLAY_BUBBLE_ADD,
+ ELM_OBJ_MAP_SUB_ID_OVERLAY_ROUTE_ADD,
+ ELM_OBJ_MAP_SUB_ID_OVERLAY_LINE_ADD,
+ ELM_OBJ_MAP_SUB_ID_OVERLAY_POLYGON_ADD,
+ ELM_OBJ_MAP_SUB_ID_OVERLAY_CIRCLE_ADD,
+ ELM_OBJ_MAP_SUB_ID_OVERLAY_SCALE_ADD,
+ ELM_OBJ_MAP_SUB_ID_TRACK_ADD,
+ ELM_OBJ_MAP_SUB_ID_TRACK_REMOVE,
+ ELM_OBJ_MAP_SUB_ID_LAST
+};
+
+#define ELM_OBJ_MAP_ID(sub_id) (ELM_OBJ_MAP_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_map_zoom_set
+ * @since 1.8
+ *
+ * Set the zoom level of the map.
+ *
+ * @param[in] zoom
+ *
+ * @see elm_map_zoom_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_zoom_set(zoom) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_SET), EO_TYPECHECK(int, zoom)
+
+/**
+ * @def elm_obj_map_zoom_get
+ * @since 1.8
+ *
+ * Get the zoom level of the map.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_zoom_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_zoom_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_GET), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def elm_obj_map_zoom_mode_set
+ * @since 1.8
+ *
+ * Set the zoom mode used by the map object.
+ *
+ * @param[in] mode
+ *
+ * @see elm_map_zoom_mode_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_zoom_mode_set(mode) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Map_Zoom_Mode, mode)
+
+/**
+ * @def elm_obj_map_zoom_mode_get
+ * @since 1.8
+ *
+ * Get the zoom mode used by the map object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_zoom_mode_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_zoom_mode_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Map_Zoom_Mode *, ret)
+
+/**
+ * @def elm_obj_map_zoom_max_set
+ * @since 1.8
+ *
+ * Set the maximum zoom of the source.
+ *
+ * @param[in] zoom
+ *
+ * @see elm_map_zoom_max_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_zoom_max_set(zoom) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_SET), EO_TYPECHECK(int, zoom)
+
+/**
+ * @def elm_obj_map_zoom_max_get
+ * @since 1.8
+ *
+ * Get the maximum zoom of the source.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_zoom_max_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_zoom_max_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MAX_GET), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def elm_obj_map_zoom_min_set
+ * @since 1.8
+ *
+ * Set the minimum zoom of the source.
+ *
+ * @param[in] zoom
+ *
+ * @see elm_map_zoom_min_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_zoom_min_set(zoom) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_SET), EO_TYPECHECK(int, zoom)
+
+/**
+ * @def elm_obj_map_zoom_min_get
+ * @since 1.8
+ *
+ * Get the minimum zoom of the source.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_zoom_min_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_zoom_min_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ZOOM_MIN_GET), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def elm_obj_map_region_bring_in
+ * @since 1.8
+ *
+ * Animatedly bring in given coordinates to the center of the map.
+ *
+ * @param[in] lon
+ * @param[in] lat
+ *
+ * @see elm_map_region_bring_in
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_region_bring_in(lon, lat) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_BRING_IN), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat)
+
+/**
+ * @def elm_obj_map_region_show
+ * @since 1.8
+ *
+ * Show the given coordinates at the center of the map, immediately.
+ *
+ * @param[in] lon
+ * @param[in] lat
+ *
+ * @see elm_map_region_show
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_region_show(lon, lat) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_SHOW), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat)
+
+/**
+ * @def elm_obj_map_region_get
+ * @since 1.8
+ *
+ * Get the current geographic coordinates of the map.
+ *
+ * @param[out] lon
+ * @param[out] lat
+ *
+ * @see elm_map_region_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_region_get(lon, lat) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_GET), EO_TYPECHECK(double *, lon), EO_TYPECHECK(double *, lat)
+
+/**
+ * @def elm_obj_map_paused_set
+ * @since 1.8
+ *
+ * Pause or unpause the map.
+ *
+ * @param[in] paused
+ *
+ * @see elm_map_paused_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_paused_set(paused) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_PAUSED_SET), EO_TYPECHECK(Eina_Bool, paused)
+
+/**
+ * @def elm_obj_map_paused_get
+ * @since 1.8
+ *
+ * Get a value whether map is paused or not.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_paused_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_paused_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_PAUSED_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_map_rotate_set
+ * @since 1.8
+ *
+ * Rotate the map.
+ *
+ * @param[in] degree
+ * @param[in] cx
+ * @param[in] cy
+ *
+ * @see elm_map_rotate_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_rotate_set(degree, cx, cy) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROTATE_SET), EO_TYPECHECK(double, degree), EO_TYPECHECK(Evas_Coord, cx), EO_TYPECHECK(Evas_Coord, cy)
+
+/**
+ * @def elm_obj_map_rotate_get
+ * @since 1.8
+ *
+ * Get the rotate degree of the map
+ *
+ * @param[out] degree
+ * @param[out] cx
+ * @param[out] cy
+ *
+ * @see elm_map_rotate_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_rotate_get(degree, cx, cy) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROTATE_GET), EO_TYPECHECK(double *, degree), EO_TYPECHECK(Evas_Coord *, cx), EO_TYPECHECK(Evas_Coord *, cy)
+
+/**
+ * @def elm_obj_map_wheel_disabled_set
+ * @since 1.8
+ *
+ * Enable or disable mouse wheel to be used to zoom in / out the map.
+ *
+ * @param[in] disabled
+ *
+ * @see elm_map_wheel_disabled_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_wheel_disabled_set(disabled) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_SET), EO_TYPECHECK(Eina_Bool, disabled)
+
+/**
+ * @def elm_obj_map_wheel_disabled_get
+ * @since 1.8
+ *
+ * Get a value whether mouse wheel is enabled or not.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_wheel_disabled_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_wheel_disabled_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_WHEEL_DISABLED_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_map_tile_load_status_get
+ * @since 1.8
+ *
+ * Get the information of tile load status.
+ *
+ * @param[out] try_num
+ * @param[out] finish_num
+ *
+ * @see elm_map_tile_load_status_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_tile_load_status_get(try_num, finish_num) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TILE_LOAD_STATUS_GET), EO_TYPECHECK(int *, try_num), EO_TYPECHECK(int *, finish_num)
+
+/**
+ * @def elm_obj_map_canvas_to_region_convert
+ * @since 1.8
+ *
+ * Convert canvas coordinates into geographic coordinates
+ *
+ * @param[in] x
+ * @param[in] y
+ * @param[out] lon
+ * @param[out] lat
+ *
+ * @see elm_map_canvas_to_region_convert
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_canvas_to_region_convert(x, y, lon, lat) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_CANVAS_TO_REGION_CONVERT), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(double *, lon), EO_TYPECHECK(double *, lat)
+
+/**
+ * @def elm_obj_map_region_to_canvas_convert
+ * @since 1.8
+ *
+ * Convert geographic coordinates (longitude, latitude)
+ *
+ * @param[in] lon
+ * @param[in] lat
+ * @param[out] x
+ * @param[out] y
+ *
+ * @see elm_map_region_to_canvas_convert
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_region_to_canvas_convert(lon, lat, x, y) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_REGION_TO_CANVAS_CONVERT), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y)
+
+/**
+ * @def elm_obj_map_user_agent_set
+ * @since 1.8
+ *
+ * Set the user agent used by the map object to access routing services.
+ *
+ * @param[in] user_agent
+ *
+ * @see elm_map_user_agent_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_user_agent_set(user_agent) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_USER_AGENT_SET), EO_TYPECHECK(const char *, user_agent)
+
+/**
+ * @def elm_obj_map_user_agent_get
+ * @since 1.8
+ *
+ * Get the user agent used by the map object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_user_agent_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_user_agent_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_USER_AGENT_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_map_source_set
+ * @since 1.8
+ *
+ * Set the current source of the map for a specific type.
+ *
+ * @param[in] type
+ * @param[in] source_name
+ *
+ * @see elm_map_source_set
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_source_set(type, source_name) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCE_SET), EO_TYPECHECK(Elm_Map_Source_Type, type), EO_TYPECHECK(const char *, source_name)
+
+/**
+ * @def elm_obj_map_source_get
+ * @since 1.8
+ *
+ * Get the name of currently used source for a specific type.
+ *
+ * @param[in] type
+ * @param[out] ret
+ *
+ * @see elm_map_source_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_source_get(type, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCE_GET), EO_TYPECHECK(Elm_Map_Source_Type, type), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_map_sources_get
+ * @since 1.8
+ *
+ * Get the names of available sources for a specific type.
+ *
+ * @param[in] type
+ * @param[out] ret
+ *
+ * @see elm_map_sources_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_sources_get(type, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_SOURCES_GET), EO_TYPECHECK(Elm_Map_Source_Type, type), EO_TYPECHECK(const char ***, ret)
+
+/**
+ * @def elm_obj_map_route_add
+ * @since 1.8
+ *
+ * Add a new route to the map object.
+ *
+ * @param[in] type
+ * @param[in] method
+ * @param[in] flon
+ * @param[in] flat
+ * @param[in] tlon
+ * @param[in] tlat
+ * @param[in] route_cb
+ * @param[in] data
+ * @param[out] ret
+ *
+ * @see elm_map_route_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_route_add(type, method, flon, flat, tlon, tlat, route_cb, data, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_ROUTE_ADD), EO_TYPECHECK(Elm_Map_Route_Type, type), EO_TYPECHECK(Elm_Map_Route_Method, method), EO_TYPECHECK(double, flon), EO_TYPECHECK(double, flat), EO_TYPECHECK(double, tlon), EO_TYPECHECK(double, tlat), EO_TYPECHECK(Elm_Map_Route_Cb, route_cb), EO_TYPECHECK(void *, data), EO_TYPECHECK(Elm_Map_Route **, ret)
+
+/**
+ * @def elm_obj_map_name_add
+ * @since 1.8
+ *
+ * Request a address or geographic coordinates(longitude, latitude)
+ *
+ * @param[in] address
+ * @param[in] lon
+ * @param[in] lat
+ * @param[in] name_cb
+ * @param[in] data
+ * @param[out] ret
+ *
+ * @see elm_map_name_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_name_add(address, lon, lat, name_cb, data, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_NAME_ADD), EO_TYPECHECK(const char *, address), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat), EO_TYPECHECK(Elm_Map_Name_Cb, name_cb), EO_TYPECHECK(void *, data), EO_TYPECHECK(Elm_Map_Name **, ret)
+
+/**
+ * @def elm_obj_map_overlay_add
+ * @since 1.8
+ *
+ * Add a new overlay to the map object. This overlay has a default type.
+ *
+ * @param[in] lon
+ * @param[in] lat
+ * @param[out] ret
+ *
+ * @see elm_map_overlay_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlay_add(lon, lat, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_ADD), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat), EO_TYPECHECK(Elm_Map_Overlay **, ret)
+
+/**
+ * @def elm_obj_map_overlays_get
+ * @since 1.8
+ *
+ * Return all overlays in the map object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_overlays_get
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlays_get(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAYS_GET), EO_TYPECHECK(Eina_List **, ret)
+
+/**
+ * @def elm_obj_map_overlay_class_add
+ * @since 1.8
+ *
+ * Add a new class overlay to the map object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_overlay_class_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlay_class_add(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_CLASS_ADD), EO_TYPECHECK(Elm_Map_Overlay **, ret)
+
+/**
+ * @def elm_obj_map_overlay_bubble_add
+ * @since 1.8
+ *
+ * Add a new bubble overlay to the map object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_overlay_bubble_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlay_bubble_add(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_BUBBLE_ADD), EO_TYPECHECK(Elm_Map_Overlay **, ret)
+
+/**
+ * @def elm_obj_map_overlay_route_add
+ * @since 1.8
+ *
+ * Add a new route overlay to the map object.
+ *
+ * @param[in] route
+ * @param[out] ret
+ *
+ * @see elm_map_overlay_route_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlay_route_add(route, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_ROUTE_ADD), EO_TYPECHECK(const Elm_Map_Route *, route), EO_TYPECHECK(Elm_Map_Overlay **, ret)
+
+/**
+ * @def elm_obj_map_overlay_line_add
+ * @since 1.8
+ *
+ * Add a new line overlay to the map object.
+ *
+ * @param[in] flon
+ * @param[in] flat
+ * @param[in] tlon
+ * @param[in] tlat
+ * @param[out] ret
+ *
+ * @see elm_map_overlay_line_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlay_line_add(flon, flat, tlon, tlat, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_LINE_ADD), EO_TYPECHECK(double, flon), EO_TYPECHECK(double, flat), EO_TYPECHECK(double, tlon), EO_TYPECHECK(double, tlat), EO_TYPECHECK(Elm_Map_Overlay **, ret)
+
+/**
+ * @def elm_obj_map_overlay_polygon_add
+ * @since 1.8
+ *
+ * Add a new polygon overlay to the map object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_map_overlay_polygon_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlay_polygon_add(ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_POLYGON_ADD), EO_TYPECHECK(Elm_Map_Overlay **, ret)
+
+/**
+ * @def elm_obj_map_overlay_circle_add
+ * @since 1.8
+ *
+ * Add a new circle overlay to the map object.
+ *
+ * @param[in] lon
+ * @param[in] lat
+ * @param[in] radius
+ * @param[out] ret
+ *
+ * @see elm_map_overlay_circle_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlay_circle_add(lon, lat, radius, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_CIRCLE_ADD), EO_TYPECHECK(double, lon), EO_TYPECHECK(double, lat), EO_TYPECHECK(double, radius), EO_TYPECHECK(Elm_Map_Overlay **, ret)
+
+/**
+ * @def elm_obj_map_overlay_scale_add
+ * @since 1.8
+ *
+ * Add a new scale overlay to the map object.
+ *
+ * @param[in] x
+ * @param[in] y
+ * @param[out] ret
+ *
+ * @see elm_map_overlay_scale_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_overlay_scale_add(x, y, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_OVERLAY_SCALE_ADD), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Elm_Map_Overlay **, ret)
+#ifdef ELM_EMAP
+
+/**
+ * @def elm_obj_map_track_add
+ * @since 1.8
+ *
+ * Add a track on the map
+ *
+ * @param[in] emap
+ * @param[out] ret
+ *
+ * @see elm_map_track_add
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_track_add(emap, ret) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TRACK_ADD), EO_TYPECHECK(void *, emap), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def elm_obj_map_track_remove
+ * @since 1.8
+ *
+ * Remove a track from the map
+ *
+ * @param[in] route
+ *
+ * @see elm_map_track_remove
+ *
+ * @ingroup Map
+ */
+#define elm_obj_map_track_remove(route) ELM_OBJ_MAP_ID(ELM_OBJ_MAP_SUB_ID_TRACK_REMOVE), EO_TYPECHECK(Evas_Object *, route)
diff --git a/src/lib/elm_map_legacy.h b/src/lib/elm_map_legacy.h
new file mode 100644
index 000000000..36fb0c338
--- /dev/null
+++ b/src/lib/elm_map_legacy.h
@@ -0,0 +1,723 @@
+/**
+ * Set the zoom level of the map.
+ *
+ * @param obj The map object.
+ * @param zoom The zoom level to set.
+ *
+ * This sets the zoom level.
+ *
+ * It will respect limits defined by elm_map_zoom_min_set() and
+ * elm_map_zoom_max_set().
+ *
+ * By default these values are 0 (world map) and 18 (maximum zoom).
+ *
+ * This function should be used when zoom mode is set to #ELM_MAP_ZOOM_MODE_MANUAL.
+ * This is the default mode, and can be set with elm_map_zoom_mode_set().
+ *
+ * @see elm_map_zoom_mode_set()
+ * @see elm_map_zoom_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_zoom_set(Evas_Object *obj, int zoom);
+
+/**
+ * Get the zoom level of the map.
+ *
+ * @param obj The map object.
+ * @return The current zoom level.
+ *
+ * This returns the current zoom level of the map object.
+ *
+ * Note that if you set the fill mode to other than #ELM_MAP_ZOOM_MODE_MANUAL
+ * (which is the default), the zoom level may be changed at any time by the
+ * map object itself to account for map size and map viewport size.
+ *
+ * @see elm_map_zoom_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI int elm_map_zoom_get(const Evas_Object *obj);
+
+/**
+ * Set the zoom mode used by the map object.
+ *
+ * @param obj The map object.
+ * @param mode The zoom mode of the map, being it one of #ELM_MAP_ZOOM_MODE_MANUAL
+ * (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT, or #ELM_MAP_ZOOM_MODE_AUTO_FILL.
+ *
+ * This sets the zoom mode to manual or one of the automatic levels.
+ * Manual (#ELM_MAP_ZOOM_MODE_MANUAL) means that zoom is set manually by
+ * elm_map_zoom_set() and will stay at that level until changed by code
+ * or until zoom mode is changed. This is the default mode.
+ *
+ * The Automatic modes will allow the map object to automatically
+ * adjust zoom mode based on properties. #ELM_MAP_ZOOM_MODE_AUTO_FIT will
+ * adjust zoom so the map fits inside the scroll frame with no pixels
+ * outside this area. #ELM_MAP_ZOOM_MODE_AUTO_FILL will be similar but
+ * ensure no pixels within the frame are left unfilled. Do not forget that
+ * the valid sizes are 2^zoom, consequently the map may be smaller than
+ * the scroller view.
+ *
+ * @see elm_map_zoom_set()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode);
+
+/**
+ * Get the zoom mode used by the map object.
+ *
+ * @param obj The map object.
+ * @return The zoom mode of the map, being it one of #ELM_MAP_ZOOM_MODE_MANUAL
+ * (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT, or #ELM_MAP_ZOOM_MODE_AUTO_FILL.
+ *
+ * This function returns the current zoom mode used by the map object.
+ *
+ * @see elm_map_zoom_mode_set() for more details.
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Zoom_Mode elm_map_zoom_mode_get(const Evas_Object *obj);
+
+/**
+ * Set the maximum zoom of the source.
+ *
+ * @param obj The map object.
+ * @param zoom New maximum zoom value to be used.
+ *
+ * @see elm_map_zoom_max_get() for details.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_zoom_max_set(Evas_Object *obj, int zoom);
+
+/**
+ * Get the maximum zoom of the source.
+ *
+ * @param obj The map object.
+ * @return Returns the maximum zoom of the source.
+ *
+ * @see elm_map_zoom_max_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI int elm_map_zoom_max_get(const Evas_Object *obj);
+
+/**
+ * Set the minimum zoom of the source.
+ *
+ * @param obj The map object.
+ * @param zoom New minimum zoom value to be used.
+ *
+ * @see elm_map_zoom_min_get() for details.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_zoom_min_set(Evas_Object *obj, int zoom);
+
+/**
+ * Get the minimum zoom of the source.
+ *
+ * @param obj The map object.
+ * @return Returns the minimum zoom of the source.
+ *
+ * @see elm_map_zoom_min_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI int elm_map_zoom_min_get(const Evas_Object *obj);
+
+/**
+ * Animatedly bring in given coordinates to the center of the map.
+ *
+ * @param obj The map object.
+ * @param lon Longitude to center at.
+ * @param lat Latitude to center at.
+ *
+ * This causes map to jump to the given @p lat and @p lon coordinates
+ * and show it (by scrolling) in the center of the viewport, if it is not
+ * already centered. This will use animation to do so and take a period
+ * of time to complete.
+ *
+ * @see elm_map_region_show() for a function to avoid animation.
+ * @see elm_map_region_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_region_bring_in(Evas_Object *obj, double lon, double lat);
+
+/**
+ * Show the given coordinates at the center of the map, @b immediately.
+ *
+ * @param obj The map object.
+ * @param lon Longitude to center at.
+ * @param lat Latitude to center at.
+ *
+ * This causes map to @b redraw its viewport's contents to the
+ * region containing the given @p lat and @p lon, that will be moved to the
+ * center of the map.
+ *
+ * @see elm_map_region_bring_in() for a function to move with animation.
+ * @see elm_map_region_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_region_show(Evas_Object *obj, double lon, double lat);
+
+/**
+ * Get the current geographic coordinates of the map.
+ *
+ * @param obj The map object.
+ * @param lon Pointer to store longitude.
+ * @param lat Pointer to store latitude.
+ *
+ * This gets the current center coordinates of the map object. It can be
+ * set by elm_map_region_bring_in() and elm_map_region_show().
+ *
+ * @see elm_map_region_bring_in()
+ * @see elm_map_region_show()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_region_get(const Evas_Object *obj, double *lon, double *lat);
+
+/**
+ * Pause or unpause the map.
+ *
+ * @param obj The map object.
+ * @param paused Use @c EINA_TRUE to pause the map @p obj or @c EINA_FALSE
+ * to unpause it.
+ *
+ * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for map.
+ *
+ * The default is off.
+ *
+ * This will stop zooming using animation, changing zoom levels will
+ * change instantly. This will stop any existing animations that are running.
+ *
+ * @see elm_map_paused_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_paused_set(Evas_Object *obj, Eina_Bool paused);
+
+/**
+ * Get a value whether map is paused or not.
+ *
+ * @param obj The map object.
+ * @return @c EINA_TRUE means map is pause. @c EINA_FALSE indicates
+ * it is not.
+ *
+ * This gets the current paused state for the map object.
+ *
+ * @see elm_map_paused_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI Eina_Bool elm_map_paused_get(const Evas_Object *obj);
+
+/**
+ * Rotate the map.
+ *
+ * @param obj The map object.
+ * @param degree Angle from 0.0 to 360.0 to rotate around Z axis.
+ * @param cx Rotation's center horizontal position.
+ * @param cy Rotation's center vertical position.
+ *
+ * @see elm_map_rotate_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy);
+
+/**
+ * Get the rotate degree of the map
+ *
+ * @param obj The map object
+ * @param degree Pointer to store degrees from 0.0 to 360.0
+ * to rotate around Z axis.
+ * @param cx Pointer to store rotation's center horizontal position.
+ * @param cy Pointer to store rotation's center vertical position.
+ *
+ * @see elm_map_rotate_set() to set map rotation.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy);
+
+/**
+ * Enable or disable mouse wheel to be used to zoom in / out the map.
+ *
+ * @param obj The map object.
+ * @param disabled Use @c EINA_TRUE to disable mouse wheel or @c EINA_FALSE
+ * to enable it.
+ *
+ * Mouse wheel can be used for the user to zoom in or zoom out the map.
+ *
+ * It's disabled by default.
+ *
+ * @see elm_map_wheel_disabled_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * Get a value whether mouse wheel is enabled or not.
+ *
+ * @param obj The map object.
+ * @return @c EINA_TRUE means map is disabled. @c EINA_FALSE indicates
+ * it is enabled.
+ *
+ * Mouse wheel can be used for the user to zoom in or zoom out the map.
+ *
+ * @see elm_map_wheel_disabled_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI Eina_Bool elm_map_wheel_disabled_get(const Evas_Object *obj);
+
+/**
+ * Get the information of tile load status.
+ *
+ * @param obj The map object.
+ * @param try_num Pointer to store number of tiles download requested.
+ * @param finish_num Pointer to store number of tiles successfully downloaded.
+ *
+ * This gets the current tile loaded status for the map object.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_tile_load_status_get(const Evas_Object *obj, int *try_num, int *finish_num);
+
+/**
+ * Convert canvas coordinates into geographic coordinates
+ * (longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param x horizontal coordinate of the point to convert.
+ * @param y vertical coordinate of the point to convert.
+ * @param lon A pointer to the longitude.
+ * @param lat A pointer to the latitude.
+ *
+ * This gets longitude and latitude from canvas x, y coordinates. The canvas
+ * coordinates mean x, y coordinate from current viewport.
+ *
+ * see elm_map_region_to_canvas_convert()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_canvas_to_region_convert(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, double *lon, double *lat);
+
+/**
+ * Convert geographic coordinates (longitude, latitude)
+ * into canvas coordinates.
+ *
+ * @param obj The map object.
+ * @param lon The longitude to convert.
+ * @param lat The latitude to convert.
+ * @param x A pointer to horizontal coordinate.
+ * @param y A pointer to vertical coordinate.
+ *
+ * This gets canvas x, y coordinates from longitude and latitude. The canvas
+ * coordinates mean x, y coordinate from current viewport.
+ *
+ * see elm_map_canvas_to_region_convert()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_region_to_canvas_convert(const Evas_Object *obj, double lon, double lat, Evas_Coord *x, Evas_Coord *y);
+
+/**
+ * Set the user agent used by the map object to access routing services.
+ *
+ * @param obj The map object.
+ * @param user_agent The user agent to be used by the map.
+ *
+ * User agent is a client application implementing a network protocol used
+ * in communications within a client–server distributed computing system
+ *
+ * The @p user_agent identification string will transmitted in a header
+ * field @c User-Agent.
+ *
+ * @see elm_map_user_agent_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_user_agent_set(Evas_Object *obj, const char *user_agent);
+
+/**
+ * Get the user agent used by the map object.
+ *
+ * @param obj The map object.
+ * @return The user agent identification string used by the map.
+ *
+ * @see elm_map_user_agent_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI const char *elm_map_user_agent_get(const Evas_Object *obj);
+
+/**
+ * Set the current source of the map for a specific type.
+ *
+ * @param obj The map object.
+ * @param type source type.
+ * @param source_name The source to be used.
+ *
+ * Map widget retrieves tile images that composes the map from a web service.
+ * This web service can be set with this method
+ * for ELM_MAP_SOURCE_TYPE_TILE type.
+ * A different service can return a different maps with different
+ * information and it can use different zoom values.
+ *
+ * Map widget provides route data based on a external web service.
+ * This web service can be set with this method
+ * for ELM_MAP_SOURCE_TYPE_ROUTE type.
+ *
+ * Map widget also provide geoname data based on a external web service.
+ * This web service can be set with this method
+ * for ELM_MAP_SOURCE_TYPE_NAME type.
+ *
+ * The @p source_name need to match one of the names provided by
+ * elm_map_sources_get().
+ *
+ * The current source can be get using elm_map_source_get().
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_source_set(Evas_Object *obj, Elm_Map_Source_Type type, const char *source_name);
+
+/**
+ * Get the name of currently used source for a specific type.
+ *
+ * @param obj The map object.
+ * @param type source type.
+ * @return Returns the name of the source in use.
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_set()
+ *
+ * @ingroup Map
+ */
+EAPI const char *elm_map_source_get(const Evas_Object *obj, Elm_Map_Source_Type type);
+
+/**
+ * Get the names of available sources for a specific type.
+ *
+ * @param obj The map object.
+ * @param type source type.
+ * @return The char pointer array of source names.
+ *
+ * It will provide a list with all available sources.
+ * Current source can be set by elm_map_source_set(), or get with
+ * elm_map_source_get().
+ *
+ * At least available sources of tile type:
+ * @li "Mapnik"
+ * @li "Osmarender"
+ * @li "CycleMap"
+ * @li "Maplint"
+ *
+ * At least available sources of route type:
+ * @li "Yours"
+ *
+ * At least available sources of name type:
+ * @li "Nominatim"
+ *
+ * @see elm_map_source_set()
+ * @see elm_map_source_get()
+ *
+ * @ingroup Map
+ */
+EAPI const char **elm_map_sources_get(const Evas_Object *obj, Elm_Map_Source_Type type);
+
+/**
+ * Add a new route to the map object.
+ *
+ * @param obj The map object.
+ * @param type The type of transport to be considered when tracing a route.
+ * @param method The routing method, what should be prioritized.
+ * @param flon The start longitude.
+ * @param flat The start latitude.
+ * @param tlon The destination longitude.
+ * @param tlat The destination latitude.
+ * @param route_cb The route to be traced.
+ * @param data A pointer of user data.
+ *
+ * @return The created route or @c NULL upon failure.
+ *
+ * A route will be traced by point on coordinates (@p flat, @p flon)
+ * to point on coordinates (@p tlat, @p tlon), using the route service
+ * set with elm_map_source_set().
+ *
+ * It will take @p type on consideration to define the route,
+ * depending if the user will be walking or driving, the route may vary.
+ * One of #ELM_MAP_ROUTE_TYPE_MOTOCAR, #ELM_MAP_ROUTE_TYPE_BICYCLE,
+ * or #ELM_MAP_ROUTE_TYPE_FOOT need to be used.
+ *
+ * Another parameter is what the route should prioritize, the minor distance
+ * or the less time to be spend on the route. So @p method should be one
+ * of #ELM_MAP_ROUTE_METHOD_SHORTEST or #ELM_MAP_ROUTE_METHOD_FASTEST.
+ *
+ * Routes created with this method can be deleted with
+ * elm_map_route_del(),
+ * and distance can be get with elm_map_route_distance_get().
+ *
+ * @see elm_map_route_del()
+ * @see elm_map_route_distance_get()
+ * @see elm_map_source_set()
+ *
+ * @ingroup Map
+ */
+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, Elm_Map_Route_Cb route_cb, void *data);
+
+/**
+ * Request a address or geographic coordinates(longitude, latitude)
+ * from a given address or geographic coordinate(longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param address The address.
+ * @param lon The longitude.
+ * @param lat The latitude.
+ * @param name_cb The callback function.
+ * @param data The user callback data.
+ * @return name A #Elm_Map_Name handle for this coordinate.
+ *
+ * If you want to get address from geographic coordinates, set input @p address
+ * as @c NULL and set @p lon, @p lat as you want to convert.
+ * If address is set except NULL, @p lon and @p lat are checked.
+ *
+ * To get the string for this address, elm_map_name_address_get()
+ * should be used after callback or "name,loaded" signal is called.
+ *
+ * To get the longitude and latitude, elm_map_name_region_get()
+ * should be used.
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Name *elm_map_name_add(const Evas_Object *obj, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data);
+
+/**
+ * Add a new overlay to the map object. This overlay has a default type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @param lon The longitude of the overlay.
+ * @param lat The latitude of the overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * A overlay will be created and shown in a specific point of the map, defined
+ * by @p lon and @p lat.
+ *
+ * The created overlay has a default style layout before content or
+ * icon is set.
+ * If content or icon is set, those are displayed instead of default style
+ * layout.
+ * You can set by using elm_map_overlay_content_set() or
+ * elm_map_overlay_icon_set(). If NULL is set, default style
+ * is shown again.
+ *
+ * Overlay created with this method can be deleted by elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ * @see elm_map_overlay_content_set()
+ * @see elm_map_overlay_icon_set()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_add(Evas_Object *obj, double lon, double lat);
+
+/**
+ * Return all overlays in the map object.
+ *
+ * @param obj The map object to return overlays.
+ * @return The list of all overlays or @c NULL upon failure.
+ *
+ * This list includes group overlays also.
+ * So this can be changed dynamically while zooming and panning.
+ *
+ * @since 1.7
+ *
+ * @ingroup Map
+ */
+EAPI EAPI Eina_List * elm_map_overlays_get(Evas_Object *obj);
+
+/**
+ * Add a new class overlay to the map object.
+ * This overlay has a class type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * This overlay is not shown before overlay members are appended.
+ * if overlay members in the same class are close, group overlays
+ * are created. If they are far away, group overlays are hidden.
+ * When group overlays are shown, they have default style layouts at first.
+ *
+ * You can change the state (hidden, paused, etc.) or set the content
+ * or icon of the group overlays by chaning the state of the class overlay.
+ * Do not modify the group overlay itself.
+ *
+ * Also these changes have a influence on the overlays in the same class
+ * even if each overlay is alone and is not grouped.
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_class_add(Evas_Object *obj);
+
+/**
+ * Add a new bubble overlay to the map object.
+ * This overlay has a bubble type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * A bubble will not be displayed before geographic coordinates are set or
+ * any other overlays are followed.
+ *
+ * This overlay has a bubble style layout and icon or content can not
+ * be set.
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_region_set()
+ * @see elm_map_overlay_bubble_follow()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_bubble_add(Evas_Object *obj);
+
+/**
+ * Add a new route overlay to the map object.
+ * This overlay has a route type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @param route The route object to make a overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * This overlay has a route style layout and icon or content can not
+ * be set.
+ *
+ * The color scheme can be changed by elm_map_overlay_content_set().
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_content_set()
+ * @see elm_map_overlay_content_get()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_route_add(Evas_Object *obj, const Elm_Map_Route *route);
+
+/**
+ * Add a new line overlay to the map object.
+ * This overlay has a line type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @param flon The start longitude.
+ * @param flat The start latitude.
+ * @param tlon The destination longitude.
+ * @param tlat The destination latitude.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_del()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_line_add(Evas_Object *obj, double flon, double flat, double tlon, double tlat);
+
+/**
+ * Add a new polygon overlay to the map object.
+ * This overlay has a polygon type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * At least 3 regions should be added to show the polygon overlay.
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_polygon_region_add()
+ * @see elm_map_overlay_del()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_polygon_add(Evas_Object *obj);
+
+/**
+ * Add a new circle overlay to the map object.
+ * This overlay has a circle type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @param lon The center longitude.
+ * @param lat The center latitude.
+ * @param radius The pixel length of radius.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_del()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_circle_add(Evas_Object *obj, double lon, double lat, double radius);
+
+/**
+ * Add a new scale overlay to the map object.
+ * This overlay has a scale type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @param x horizontal pixel coordinate.
+ * @param y vertical pixel coordinate
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * The scale overlay shows the ratio of a distance on the map to the corresponding distance.
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_del()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Overlay * elm_map_overlay_scale_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+
+/**
+ * Add a track on the map
+ *
+ * @param obj The map object.
+ * @param emap The emap route object.
+ * @return The route object. This is an elm object of type Route.
+ *
+ * @see elm_route_add() for details.
+ *
+ * @ingroup Map
+ */
+EAPI Evas_Object *elm_map_track_add(Evas_Object *obj, void *emap);
+
+/**
+ * Remove a track from the map
+ *
+ * @param obj The map object.
+ * @param route The track to remove.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_track_remove(Evas_Object *obj, Evas_Object *route);
diff --git a/src/lib/elm_menu.h b/src/lib/elm_menu.h
index 46a18f5bd..2a5350f72 100644
--- a/src/lib/elm_menu.h
+++ b/src/lib/elm_menu.h
@@ -34,381 +34,13 @@
* @{
*/
-#define ELM_OBJ_MENU_CLASS elm_obj_menu_class_get()
-
-const Eo_Class *elm_obj_menu_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_MENU_BASE_ID;
-
-enum
-{
- ELM_OBJ_MENU_SUB_ID_MOVE,
- ELM_OBJ_MENU_SUB_ID_CLOSE,
- ELM_OBJ_MENU_SUB_ID_ITEM_ADD,
- ELM_OBJ_MENU_SUB_ID_ITEM_SEPARATOR_ADD,
- ELM_OBJ_MENU_SUB_ID_ITEMS_GET,
- ELM_OBJ_MENU_SUB_ID_FIRST_ITEM_GET,
- ELM_OBJ_MENU_SUB_ID_LAST_ITEM_GET,
- ELM_OBJ_MENU_SUB_ID_SELECTED_ITEM_GET,
- ELM_OBJ_MENU_SUB_ID_LAST
-};
-
-#define ELM_OBJ_MENU_ID(sub_id) (ELM_OBJ_MENU_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_menu_move
- * @since 1.8
- *
- * @brief Move the menu to a new position
- *
- * @param[in] x
- * @param[in] y
- *
- * @see elm_menu_move
- */
-#define elm_obj_menu_move(x, y) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_MOVE), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y)
-
-/**
- * @def elm_obj_menu_close
- * @since 1.8
- *
- * @brief Close a opened menu
- *
- *
- * @see elm_menu_close
- */
-#define elm_obj_menu_close() ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_CLOSE)
-
-/**
- * @def elm_obj_menu_item_add
- * @since 1.8
- *
- * @brief Add an item at the end of the given menu widget
- *
- * @param[in] parent
- * @param[in] icon
- * @param[in] label
- * @param[in] func
- * @param[in] data
- * @param[out] ret
- *
- * @see elm_menu_item_add
- */
-#define elm_obj_menu_item_add(parent, icon, label, func, data, ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEM_ADD), EO_TYPECHECK(Elm_Object_Item *, parent), EO_TYPECHECK(const char *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_menu_item_separator_add
- * @since 1.8
- *
- * @brief Add a separator item to menu obj under @p parent.
- *
- * @param[in] parent
- * @param[out] ret
- *
- * @see elm_menu_item_separator_add
- */
-#define elm_obj_menu_item_separator_add(parent, ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEM_SEPARATOR_ADD), EO_TYPECHECK(Elm_Object_Item *, parent), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_menu_items_get
- * @since 1.8
- *
- * @brief Returns a list of item's items.
- *
- * @param[out] ret
- *
- * @see elm_menu_items_get
- */
-#define elm_obj_menu_items_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret)
-
-/**
- * @def elm_obj_menu_first_item_get
- * @since 1.8
- *
- * @brief Get the first item in the menu
- *
- * @param[out] ret
- *
- * @see elm_menu_first_item_get
- */
-#define elm_obj_menu_first_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_FIRST_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_menu_last_item_get
- * @since 1.8
- *
- * @brief Get the last item in the menu
- *
- * @param[out] ret
- *
- * @see elm_menu_last_item_get
- */
-#define elm_obj_menu_last_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_LAST_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_menu_selected_item_get
- * @since 1.8
- *
- * @brief Get the selected item in the menu
- *
- * @param[out] ret
- *
- * @see elm_menu_selected_item_get
- */
-#define elm_obj_menu_selected_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_SELECTED_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @brief Add a new menu to the parent
- *
- * @param parent The parent object.
- * @return The new object or NULL if it cannot be created.
- *
- * @ingroup Menu
- */
-EAPI Evas_Object *elm_menu_add(Evas_Object *parent);
-
-/**
- * @brief Set the parent for the given menu widget
- *
- * @param obj The menu object.
- * @param parent The new parent.
- *
- * @ingroup Menu
- */
-EAPI void elm_menu_parent_set(Evas_Object *obj, Evas_Object *parent);
-
-/**
- * @brief Get the parent for the given menu widget
- *
- * @param obj The menu object.
- * @return The parent.
- *
- * @see elm_menu_parent_set()
- *
- * @ingroup Menu
- */
-EAPI Evas_Object *elm_menu_parent_get(const Evas_Object *obj);
-
-/**
- * @brief Move the menu to a new position
- *
- * @param obj The menu object.
- * @param x The new position.
- * @param y The new position.
- *
- * Sets the top-left position of the menu to (@p x,@p y).
- *
- * @note @p x and @p y coordinates are relative to parent.
- *
- * @ingroup Menu
- */
-EAPI void elm_menu_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
-
-/**
- * @brief Close a opened menu
- *
- * @param obj the menu object
- * @return void
- *
- * Hides the menu and all it's sub-menus.
- *
- * @ingroup Menu
- */
-EAPI void elm_menu_close(Evas_Object *obj);
-
-/**
- * @brief Returns a list of @p item's items.
- *
- * @param obj The menu object
- * @return An Eina_List* of @p item's items
- *
- * @ingroup Menu
- */
-EAPI const Eina_List *elm_menu_items_get(const Evas_Object *obj);
-
-/**
- * Get the real Evas(Edje) object created to implement the view of a given
- * menu @p item.
- *
- * @param it The menu item.
- * @return The base Edje object containing the swallowed content associated with
- * @p it.
- *
- * @warning Don't manipulate this object!
- *
- * @ingroup Menu
- */
-EAPI Evas_Object *elm_menu_item_object_get(const Elm_Object_Item *it);
-
-/**
- * @brief Add an item at the end of the given menu widget
- *
- * @param obj The menu object.
- * @param parent The parent menu item (optional)
- * @param icon An icon display on the item. The icon will be destroyed by the menu.
- * @param label The label of the item.
- * @param func Function called when the user select the item.
- * @param data Data sent by the callback.
- * @return Returns the new item.
- *
- * @note This function does not accept relative icon path.
- *
- * @ingroup Menu
- */
-EAPI Elm_Object_Item *elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
-
-/**
- * @brief Set the icon of a menu item to the standard icon with name @p icon
- *
- * @param it The menu item object.
- * @param icon The name of icon object to set for the content of @p item
- *
- * Once this icon is set, any previously set icon will be deleted.
- *
- * @ingroup Menu
- */
-EAPI void elm_menu_item_icon_name_set(Elm_Object_Item *it, const char *icon);
-
-/**
- * @brief Get the string representation from the icon of a menu item
- *
- * @param it The menu item object.
- * @return The string representation of @p item's icon or NULL
- *
- * @see elm_menu_item_icon_name_set()
- *
- * @ingroup Menu
- */
-EAPI const char *elm_menu_item_icon_name_get(const Elm_Object_Item *it);
-
-/**
- * @brief Set the selected state of @p item.
- *
- * @param it The menu item object.
- * @param selected The selected/unselected state of the item
- *
- * @ingroup Menu
- */
-EAPI void elm_menu_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
-
-/**
- * @brief Get the selected state of @p item.
- *
- * @param it The menu item object.
- * @return The selected/unselected state of the item
- *
- * @see elm_menu_item_selected_set()
- *
- * @ingroup Menu
- */
-EAPI Eina_Bool elm_menu_item_selected_get(const Elm_Object_Item *it);
-
-/**
- * @brief Add a separator item to menu @p obj under @p parent.
- *
- * @param obj The menu object
- * @param parent The item to add the separator under
- * @return The created item or NULL on failure
- *
- * This is item is a @ref Separator.
- *
- * @ingroup Menu
- */
-EAPI Elm_Object_Item *elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent);
-
-/**
- * @brief Returns whether @p item is a separator.
- *
- * @param it The item to check
- * @return If true, @p item is a separator
- *
- * @see elm_menu_item_separator_add()
- *
- * @ingroup Menu
- */
-EAPI Eina_Bool elm_menu_item_is_separator(Elm_Object_Item *it);
-
-/**
- * @brief Returns a list of @p item's subitems.
- *
- * @param it The item
- * @return An Eina_List* of @p item's subitems
- *
- * @see elm_menu_add()
- *
- * @ingroup Menu
- */
-EAPI const Eina_List *elm_menu_item_subitems_get(const Elm_Object_Item *it);
-
-/**
- * @brief Get the position of a menu item
- *
- * @param it The menu item
- * @return The item's index
- *
- * This function returns the index position of a menu item in a menu.
- * For a sub-menu, this number is relative to the first item in the sub-menu.
- *
- * @note Index values begin with 0
- *
- * @ingroup Menu
- */
-EAPI unsigned int elm_menu_item_index_get(const Elm_Object_Item *it);
-
-/**
- * @brief Get the selected item in the menu
- *
- * @param obj The menu object
- * @return The selected item, or NULL if none
- *
- * @see elm_menu_item_selected_get()
- * @see elm_menu_item_selected_set()
- *
- * @ingroup Menu
- */
-EAPI Elm_Object_Item *elm_menu_selected_item_get(const Evas_Object *obj);
-
-/**
- * @brief Get the last item in the menu
- *
- * @param obj The menu object
- * @return The last item, or NULL if none
- *
- * @ingroup Menu
- */
-EAPI Elm_Object_Item *elm_menu_last_item_get(const Evas_Object *obj);
-
-/**
- * @brief Get the first item in the menu
- *
- * @param obj The menu object
- * @return The first item, or NULL if none
- *
- * @ingroup Menu
- */
-EAPI Elm_Object_Item *elm_menu_first_item_get(const Evas_Object *obj);
-
-/**
- * @brief Get the next item in the menu.
- *
- * @param it The menu item object.
- * @return The item after it, or NULL if none
- *
- * @ingroup Menu
- */
-EAPI Elm_Object_Item *elm_menu_item_next_get(const Elm_Object_Item *it);
-
-/**
- * @brief Get the previous item in the menu.
- *
- * @param it The menu item object.
- * @return The item before it, or NULL if none
- *
- * @ingroup Menu
- */
-EAPI Elm_Object_Item *elm_menu_item_prev_get(const Elm_Object_Item *it);
-
+#include "elm_menu_common.h"
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_menu_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_menu_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_menu_common.h b/src/lib/elm_menu_common.h
new file mode 100644
index 000000000..c91212444
--- /dev/null
+++ b/src/lib/elm_menu_common.h
@@ -0,0 +1,119 @@
+/**
+ * Get the real Evas(Edje) object created to implement the view of a given
+ * menu @p item.
+ *
+ * @param it The menu item.
+ * @return The base Edje object containing the swallowed content associated with
+ * @p it.
+ *
+ * @warning Don't manipulate this object!
+ *
+ * @ingroup Menu
+ */
+EAPI Evas_Object *elm_menu_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Set the icon of a menu item to the standard icon with name @p icon
+ *
+ * @param it The menu item object.
+ * @param icon The name of icon object to set for the content of @p item
+ *
+ * Once this icon is set, any previously set icon will be deleted.
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_item_icon_name_set(Elm_Object_Item *it, const char *icon);
+
+/**
+ * @brief Get the string representation from the icon of a menu item
+ *
+ * @param it The menu item object.
+ * @return The string representation of @p item's icon or NULL
+ *
+ * @see elm_menu_item_icon_name_set()
+ *
+ * @ingroup Menu
+ */
+EAPI const char *elm_menu_item_icon_name_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Set the selected state of @p item.
+ *
+ * @param it The menu item object.
+ * @param selected The selected/unselected state of the item
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * @brief Get the selected state of @p item.
+ *
+ * @param it The menu item object.
+ * @return The selected/unselected state of the item
+ *
+ * @see elm_menu_item_selected_set()
+ *
+ * @ingroup Menu
+ */
+EAPI Eina_Bool elm_menu_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Returns whether @p item is a separator.
+ *
+ * @param it The item to check
+ * @return If true, @p item is a separator
+ *
+ * @see elm_menu_item_separator_add()
+ *
+ * @ingroup Menu
+ */
+EAPI Eina_Bool elm_menu_item_is_separator(Elm_Object_Item *it);
+
+/**
+ * @brief Returns a list of @p item's subitems.
+ *
+ * @param it The item
+ * @return An Eina_List* of @p item's subitems
+ *
+ * @see elm_menu_add()
+ *
+ * @ingroup Menu
+ */
+EAPI const Eina_List *elm_menu_item_subitems_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Get the position of a menu item
+ *
+ * @param it The menu item
+ * @return The item's index
+ *
+ * This function returns the index position of a menu item in a menu.
+ * For a sub-menu, this number is relative to the first item in the sub-menu.
+ *
+ * @note Index values begin with 0
+ *
+ * @ingroup Menu
+ */
+EAPI unsigned int elm_menu_item_index_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Get the next item in the menu.
+ *
+ * @param it The menu item object.
+ * @return The item after it, or NULL if none
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Get the previous item in the menu.
+ *
+ * @param it The menu item object.
+ * @return The item before it, or NULL if none
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_item_prev_get(const Elm_Object_Item *it);
+
diff --git a/src/lib/elm_menu_eo.h b/src/lib/elm_menu_eo.h
new file mode 100644
index 000000000..e6c8a77e1
--- /dev/null
+++ b/src/lib/elm_menu_eo.h
@@ -0,0 +1,139 @@
+#define ELM_OBJ_MENU_CLASS elm_obj_menu_class_get()
+
+const Eo_Class *elm_obj_menu_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_MENU_BASE_ID;
+
+enum
+{
+ ELM_OBJ_MENU_SUB_ID_MOVE,
+ ELM_OBJ_MENU_SUB_ID_CLOSE,
+ ELM_OBJ_MENU_SUB_ID_ITEM_ADD,
+ ELM_OBJ_MENU_SUB_ID_ITEM_SEPARATOR_ADD,
+ ELM_OBJ_MENU_SUB_ID_ITEMS_GET,
+ ELM_OBJ_MENU_SUB_ID_FIRST_ITEM_GET,
+ ELM_OBJ_MENU_SUB_ID_LAST_ITEM_GET,
+ ELM_OBJ_MENU_SUB_ID_SELECTED_ITEM_GET,
+ ELM_OBJ_MENU_SUB_ID_LAST
+};
+
+#define ELM_OBJ_MENU_ID(sub_id) (ELM_OBJ_MENU_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_menu_move
+ * @since 1.8
+ *
+ * @brief Move the menu to a new position
+ *
+ * @param[in] x
+ * @param[in] y
+ *
+ * @see elm_menu_move
+ *
+ * @ingroup Menu
+ */
+#define elm_obj_menu_move(x, y) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_MOVE), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y)
+
+/**
+ * @def elm_obj_menu_close
+ * @since 1.8
+ *
+ * @brief Close a opened menu
+ *
+ *
+ * @see elm_menu_close
+ *
+ * @ingroup Menu
+ */
+#define elm_obj_menu_close() ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_CLOSE)
+
+/**
+ * @def elm_obj_menu_item_add
+ * @since 1.8
+ *
+ * @brief Add an item at the end of the given menu widget
+ *
+ * @param[in] parent
+ * @param[in] icon
+ * @param[in] label
+ * @param[in] func
+ * @param[in] data
+ * @param[out] ret
+ *
+ * @see elm_menu_item_add
+ *
+ * @ingroup Menu
+ */
+#define elm_obj_menu_item_add(parent, icon, label, func, data, ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEM_ADD), EO_TYPECHECK(Elm_Object_Item *, parent), EO_TYPECHECK(const char *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_menu_item_separator_add
+ * @since 1.8
+ *
+ * @brief Add a separator item to menu obj under @p parent.
+ *
+ * @param[in] parent
+ * @param[out] ret
+ *
+ * @see elm_menu_item_separator_add
+ *
+ * @ingroup Menu
+ */
+#define elm_obj_menu_item_separator_add(parent, ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEM_SEPARATOR_ADD), EO_TYPECHECK(Elm_Object_Item *, parent), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_menu_items_get
+ * @since 1.8
+ *
+ * @brief Returns a list of item's items.
+ *
+ * @param[out] ret
+ *
+ * @see elm_menu_items_get
+ *
+ * @ingroup Menu
+ */
+#define elm_obj_menu_items_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret)
+
+/**
+ * @def elm_obj_menu_first_item_get
+ * @since 1.8
+ *
+ * @brief Get the first item in the menu
+ *
+ * @param[out] ret
+ *
+ * @see elm_menu_first_item_get
+ *
+ * @ingroup Menu
+ */
+#define elm_obj_menu_first_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_FIRST_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_menu_last_item_get
+ * @since 1.8
+ *
+ * @brief Get the last item in the menu
+ *
+ * @param[out] ret
+ *
+ * @see elm_menu_last_item_get
+ *
+ * @ingroup Menu
+ */
+#define elm_obj_menu_last_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_LAST_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_menu_selected_item_get
+ * @since 1.8
+ *
+ * @brief Get the selected item in the menu
+ *
+ * @param[out] ret
+ *
+ * @see elm_menu_selected_item_get
+ *
+ * @ingroup Menu
+ */
+#define elm_obj_menu_selected_item_get(ret) ELM_OBJ_MENU_ID(ELM_OBJ_MENU_SUB_ID_SELECTED_ITEM_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
diff --git a/src/lib/elm_menu_legacy.h b/src/lib/elm_menu_legacy.h
new file mode 100644
index 000000000..0282273ae
--- /dev/null
+++ b/src/lib/elm_menu_legacy.h
@@ -0,0 +1,131 @@
+/**
+ * @brief Add a new menu to the parent
+ *
+ * @param parent The parent object.
+ * @return The new object or NULL if it cannot be created.
+ *
+ * @ingroup Menu
+ */
+EAPI Evas_Object *elm_menu_add(Evas_Object *parent);
+
+/**
+ * @brief Set the parent for the given menu widget
+ *
+ * @param obj The menu object.
+ * @param parent The new parent.
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+/**
+ * @brief Get the parent for the given menu widget
+ *
+ * @param obj The menu object.
+ * @return The parent.
+ *
+ * @see elm_menu_parent_set()
+ *
+ * @ingroup Menu
+ */
+EAPI Evas_Object *elm_menu_parent_get(const Evas_Object *obj);
+
+/**
+ * @brief Move the menu to a new position
+ *
+ * @param obj The menu object.
+ * @param x The new position.
+ * @param y The new position.
+ *
+ * Sets the top-left position of the menu to (@p x,@p y).
+ *
+ * @note @p x and @p y coordinates are relative to parent.
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+
+/**
+ * @brief Close a opened menu
+ *
+ * @param obj the menu object
+ * @return void
+ *
+ * Hides the menu and all it's sub-menus.
+ *
+ * @ingroup Menu
+ */
+EAPI void elm_menu_close(Evas_Object *obj);
+
+/**
+ * @brief Add an item at the end of the given menu widget
+ *
+ * @param obj The menu object.
+ * @param parent The parent menu item (optional)
+ * @param icon An icon display on the item. The icon will be destroyed by the menu.
+ * @param label The label of the item.
+ * @param func Function called when the user select the item.
+ * @param data Data sent by the callback.
+ * @return Returns the new item.
+ *
+ * @note This function does not accept relative icon path.
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Add a separator item to menu @p obj under @p parent.
+ *
+ * @param obj The menu object
+ * @param parent The item to add the separator under
+ * @return The created item or NULL on failure
+ *
+ * This is item is a @ref Separator.
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent);
+
+/**
+ * @brief Returns a list of @p item's items.
+ *
+ * @param obj The menu object
+ * @return An Eina_List* of @p item's items
+ *
+ * @ingroup Menu
+ */
+EAPI const Eina_List *elm_menu_items_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the first item in the menu
+ *
+ * @param obj The menu object
+ * @return The first item, or NULL if none
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_first_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the last item in the menu
+ *
+ * @param obj The menu object
+ * @return The last item, or NULL if none
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_last_item_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the selected item in the menu
+ *
+ * @param obj The menu object
+ * @return The selected item, or NULL if none
+ *
+ * @see elm_menu_item_selected_get()
+ * @see elm_menu_item_selected_set()
+ *
+ * @ingroup Menu
+ */
+EAPI Elm_Object_Item *elm_menu_selected_item_get(const Evas_Object *obj);
diff --git a/src/lib/elm_panel.h b/src/lib/elm_panel.h
index bd70b1f8d..749dc4413 100644
--- a/src/lib/elm_panel.h
+++ b/src/lib/elm_panel.h
@@ -28,159 +28,13 @@
* @{
*/
-
-
-#define ELM_OBJ_PANEL_CLASS elm_obj_panel_class_get()
-
-const Eo_Class *elm_obj_panel_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_PANEL_BASE_ID;
-
-enum
-{
- ELM_OBJ_PANEL_SUB_ID_ORIENT_SET,
- ELM_OBJ_PANEL_SUB_ID_ORIENT_GET,
- ELM_OBJ_PANEL_SUB_ID_HIDDEN_SET,
- ELM_OBJ_PANEL_SUB_ID_HIDDEN_GET,
- ELM_OBJ_PANEL_SUB_ID_TOGGLE,
- ELM_OBJ_PANEL_SUB_ID_LAST
-};
-
-#define ELM_OBJ_PANEL_ID(sub_id) (ELM_OBJ_PANEL_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_panel_orient_set
- * @since 1.8
- *
- * @brief Sets the orientation of the panel
- *
- * @param[in] orient
- *
- * @see elm_panel_orient_set
- */
-#define elm_obj_panel_orient_set(orient) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_ORIENT_SET), EO_TYPECHECK(Elm_Panel_Orient, orient)
-
-/**
- * @def elm_obj_panel_orient_get
- * @since 1.8
- *
- * @brief Get the orientation of the panel.
- *
- * @param[out] ret
- *
- * @see elm_panel_orient_get
- */
-#define elm_obj_panel_orient_get(ret) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_ORIENT_GET), EO_TYPECHECK(Elm_Panel_Orient *, ret)
-
-/**
- * @def elm_obj_panel_hidden_set
- * @since 1.8
- *
- * @brief Set the state of the panel.
- *
- * @param[in] hidden
- *
- * @see elm_panel_hidden_set
- */
-#define elm_obj_panel_hidden_set(hidden) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_HIDDEN_SET), EO_TYPECHECK(Eina_Bool, hidden)
-
-/**
- * @def elm_obj_panel_hidden_get
- * @since 1.8
- *
- * @brief Get the state of the panel.
- *
- * @param[out] ret
- *
- * @see elm_panel_hidden_get
- */
-#define elm_obj_panel_hidden_get(ret) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_HIDDEN_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_panel_toggle
- * @since 1.8
- *
- * @brief Toggle the hidden state of the panel from code
- *
- *
- * @see elm_panel_toggle
- */
-#define elm_obj_panel_toggle() ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_TOGGLE)
-
-typedef enum
-{
- ELM_PANEL_ORIENT_TOP, /**< Panel (dis)appears from the top */
- ELM_PANEL_ORIENT_BOTTOM, /**< Panel (dis)appears from the bottom */
- ELM_PANEL_ORIENT_LEFT, /**< Panel (dis)appears from the left */
- ELM_PANEL_ORIENT_RIGHT, /**< Panel (dis)appears from the right */
-} Elm_Panel_Orient;
-
-/**
- * @brief Adds a panel object
- *
- * @param parent The parent object
- *
- * @return The panel object, or NULL on failure
- *
- * @ingroup Panel
- */
-EAPI Evas_Object *elm_panel_add(Evas_Object *parent);
-
-/**
- * @brief Sets the orientation of the panel
- *
- * @param obj The panel object
- * @param orient The panel orientation. Can be one of the following:
- * @li ELM_PANEL_ORIENT_TOP
- * @li ELM_PANEL_ORIENT_LEFT
- * @li ELM_PANEL_ORIENT_RIGHT
- *
- * Sets from where the panel will (dis)appear.
- *
- * @ingroup Panel
- */
-EAPI void elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient);
-
-/**
- * @brief Get the orientation of the panel.
- *
- * @param obj The panel object
- * @return The Elm_Panel_Orient, or ELM_PANEL_ORIENT_LEFT on failure.
- *
- * @ingroup Panel
- */
-EAPI Elm_Panel_Orient elm_panel_orient_get(const Evas_Object *obj);
-
-/**
- * @brief Set the state of the panel.
- *
- * @param obj The panel object
- * @param hidden If true, the panel will run the animation to disappear.
- *
- * @ingroup Panel
- */
-EAPI void elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden);
-
-/**
- * @brief Get the state of the panel.
- *
- * @param obj The panel object
- * @return EINA_TRUE if it is hidden state
- *
- * @ingroup Panel
- */
-EAPI Eina_Bool elm_panel_hidden_get(const Evas_Object *obj);
-
-/**
- * @brief Toggle the hidden state of the panel from code
- *
- * @param obj The panel object
- *
- * @ingroup Panel
- */
-EAPI void elm_panel_toggle(Evas_Object *obj);
-
+#include "elm_panel_common.h"
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_panel_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_panel_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_panel_common.h b/src/lib/elm_panel_common.h
new file mode 100644
index 000000000..8c84d1ab1
--- /dev/null
+++ b/src/lib/elm_panel_common.h
@@ -0,0 +1,8 @@
+typedef enum
+{
+ ELM_PANEL_ORIENT_TOP, /**< Panel (dis)appears from the top */
+ ELM_PANEL_ORIENT_BOTTOM, /**< Panel (dis)appears from the bottom */
+ ELM_PANEL_ORIENT_LEFT, /**< Panel (dis)appears from the left */
+ ELM_PANEL_ORIENT_RIGHT, /**< Panel (dis)appears from the right */
+} Elm_Panel_Orient;
+
diff --git a/src/lib/elm_panel_eo.h b/src/lib/elm_panel_eo.h
new file mode 100644
index 000000000..6963d6042
--- /dev/null
+++ b/src/lib/elm_panel_eo.h
@@ -0,0 +1,87 @@
+#define ELM_OBJ_PANEL_CLASS elm_obj_panel_class_get()
+
+const Eo_Class *elm_obj_panel_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_PANEL_BASE_ID;
+
+enum
+{
+ ELM_OBJ_PANEL_SUB_ID_ORIENT_SET,
+ ELM_OBJ_PANEL_SUB_ID_ORIENT_GET,
+ ELM_OBJ_PANEL_SUB_ID_HIDDEN_SET,
+ ELM_OBJ_PANEL_SUB_ID_HIDDEN_GET,
+ ELM_OBJ_PANEL_SUB_ID_TOGGLE,
+ ELM_OBJ_PANEL_SUB_ID_LAST
+};
+
+#define ELM_OBJ_PANEL_ID(sub_id) (ELM_OBJ_PANEL_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_panel_orient_set
+ * @since 1.8
+ *
+ * @brief Sets the orientation of the panel
+ *
+ * @param[in] orient
+ *
+ * @see elm_panel_orient_set
+ *
+ * @ingroup Panel
+ */
+#define elm_obj_panel_orient_set(orient) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_ORIENT_SET), EO_TYPECHECK(Elm_Panel_Orient, orient)
+
+/**
+ * @def elm_obj_panel_orient_get
+ * @since 1.8
+ *
+ * @brief Get the orientation of the panel.
+ *
+ * @param[out] ret
+ *
+ * @see elm_panel_orient_get
+ *
+ * @ingroup Panel
+ */
+#define elm_obj_panel_orient_get(ret) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_ORIENT_GET), EO_TYPECHECK(Elm_Panel_Orient *, ret)
+
+/**
+ * @def elm_obj_panel_hidden_set
+ * @since 1.8
+ *
+ * @brief Set the state of the panel.
+ *
+ * @param[in] hidden
+ *
+ * @see elm_panel_hidden_set
+ *
+ * @ingroup Panel
+ */
+#define elm_obj_panel_hidden_set(hidden) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_HIDDEN_SET), EO_TYPECHECK(Eina_Bool, hidden)
+
+/**
+ * @def elm_obj_panel_hidden_get
+ * @since 1.8
+ *
+ * @brief Get the state of the panel.
+ *
+ * @param[out] ret
+ *
+ * @see elm_panel_hidden_get
+ *
+ * @ingroup Panel
+ */
+#define elm_obj_panel_hidden_get(ret) ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_HIDDEN_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_panel_toggle
+ * @since 1.8
+ *
+ * @brief Toggle the hidden state of the panel from code
+ *
+ *
+ * @see elm_panel_toggle
+ *
+ * @ingroup Panel
+ */
+#define elm_obj_panel_toggle() ELM_OBJ_PANEL_ID(ELM_OBJ_PANEL_SUB_ID_TOGGLE)
diff --git a/src/lib/elm_panel_legacy.h b/src/lib/elm_panel_legacy.h
new file mode 100644
index 000000000..e4ece27ac
--- /dev/null
+++ b/src/lib/elm_panel_legacy.h
@@ -0,0 +1,64 @@
+/**
+ * @brief Adds a panel object
+ *
+ * @param parent The parent object
+ *
+ * @return The panel object, or NULL on failure
+ *
+ * @ingroup Panel
+ */
+EAPI Evas_Object *elm_panel_add(Evas_Object *parent);
+
+/**
+ * @brief Sets the orientation of the panel
+ *
+ * @param obj The panel object
+ * @param orient The panel orientation. Can be one of the following:
+ * @li ELM_PANEL_ORIENT_TOP
+ * @li ELM_PANEL_ORIENT_LEFT
+ * @li ELM_PANEL_ORIENT_RIGHT
+ *
+ * Sets from where the panel will (dis)appear.
+ *
+ * @ingroup Panel
+ */
+EAPI void elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient);
+
+/**
+ * @brief Get the orientation of the panel.
+ *
+ * @param obj The panel object
+ * @return The Elm_Panel_Orient, or ELM_PANEL_ORIENT_LEFT on failure.
+ *
+ * @ingroup Panel
+ */
+EAPI Elm_Panel_Orient elm_panel_orient_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the state of the panel.
+ *
+ * @param obj The panel object
+ * @param hidden If true, the panel will run the animation to disappear.
+ *
+ * @ingroup Panel
+ */
+EAPI void elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden);
+
+/**
+ * @brief Get the state of the panel.
+ *
+ * @param obj The panel object
+ * @return EINA_TRUE if it is hidden state
+ *
+ * @ingroup Panel
+ */
+EAPI Eina_Bool elm_panel_hidden_get(const Evas_Object *obj);
+
+/**
+ * @brief Toggle the hidden state of the panel from code
+ *
+ * @param obj The panel object
+ *
+ * @ingroup Panel
+ */
+EAPI void elm_panel_toggle(Evas_Object *obj);
diff --git a/src/lib/elm_panes.h b/src/lib/elm_panes.h
index 2c458f363..7838cc357 100644
--- a/src/lib/elm_panes.h
+++ b/src/lib/elm_panes.h
@@ -48,284 +48,18 @@
* @li @ref panes_example
*/
-#define ELM_OBJ_PANES_CLASS elm_obj_panes_class_get()
-
-const Eo_Class *elm_obj_panes_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_PANES_BASE_ID;
-
-enum
-{
- ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_GET,
- ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_SET,
- ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_GET,
- ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_SET,
- ELM_OBJ_PANES_SUB_ID_HORIZONTAL_SET,
- ELM_OBJ_PANES_SUB_ID_HORIZONTAL_GET,
- ELM_OBJ_PANES_SUB_ID_FIXED_SET,
- ELM_OBJ_PANES_SUB_ID_FIXED_GET,
- ELM_OBJ_PANES_SUB_ID_LAST
-};
-
-#define ELM_OBJ_PANES_ID(sub_id) (ELM_OBJ_PANES_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_panes_content_left_size_get
- * @since 1.8
- *
- * Get the size proportion of panes widget's left side.
- *
- * @param[out] ret
- *
- * @see elm_panes_content_left_size_get
- */
-#define elm_obj_panes_content_left_size_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_panes_content_left_size_set
- * @since 1.8
- *
- * Set the size proportion of panes widget's left side.
- *
- * @param[in] size
- *
- * @see elm_panes_content_left_size_set
- */
-#define elm_obj_panes_content_left_size_set(size) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_SET), EO_TYPECHECK(double, size)
-
-/**
- * @def elm_obj_panes_content_right_size_get
- * @since 1.8
- *
- * Get the size proportion of panes widget's right side.
- *
- * @param[out] ret
- *
- * @see elm_panes_content_right_size_get
- */
-#define elm_obj_panes_content_right_size_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_GET), EO_TYPECHECK(double *, ret)
/**
- * @def elm_obj_panes_content_right_size_set
- * @since 1.8
- *
- * Set the size proportion of panes widget's right side.
- *
- * @param[in] size
- *
- * @see elm_panes_content_right_size_set
- */
-#define elm_obj_panes_content_right_size_set(size) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_SET), EO_TYPECHECK(double, size)
-
-/**
- * @def elm_obj_panes_horizontal_set
- * @since 1.8
- *
- * Set how to split and dispose each content.
- *
- * @param[in] horizontal
- *
- * @see elm_panes_horizontal_set
- */
-#define elm_obj_panes_horizontal_set(horizontal) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal)
-
-/**
- * @def elm_obj_panes_horizontal_get
- * @since 1.8
- *
- * Retrieve the split direction of a given panes widget.
- *
- * @param[out] ret
- *
- * @see elm_panes_horizontal_get
- */
-#define elm_obj_panes_horizontal_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_panes_fixed_set
- * @since 1.8
- *
- * Set whether the left and right panes can be resized by user interaction.
- *
- * @param[in] fixed
- *
- * @see elm_panes_fixed_set
- */
-#define elm_obj_panes_fixed_set(fixed) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_FIXED_SET), EO_TYPECHECK(Eina_Bool, fixed)
-
-/**
- * @def elm_obj_panes_fixed_get
- * @since 1.8
- *
- * Retrieve the resize mode for the panes of a given panes widget.
- *
- * @param[out] ret
- *
- * @see elm_panes_fixed_get
- */
-#define elm_obj_panes_fixed_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_FIXED_GET), EO_TYPECHECK(Eina_Bool *, ret)
-/**
* @addtogroup Panes
* @{
*/
-/**
- * Add a new panes widget to the given parent Elementary
- * (container) object.
- *
- * @param parent The parent object.
- * @return a new panes widget handle or @c NULL, on errors.
- *
- * This function inserts a new panes widget on the canvas.
- *
- * @ingroup Panes
- */
-EAPI Evas_Object *elm_panes_add(Evas_Object *parent);
-
-/**
- * Set whether the left and right panes can be resized by user interaction.
- *
- * @param obj The panes object.
- * @param fixed Use @c EINA_TRUE to fix the left and right panes sizes and make
- * them not to be resized by user interaction. Use @c EINA_FALSE to make them
- * resizable.
- *
- * By default panes' contents are resizable by user interaction.
- *
- * @see elm_panes_fixed_get()
- * @see elm_panes_content_left_size_set()
- * @see elm_panes_content_right_size_set()
- *
- * @ingroup Panes
- */
-EAPI void elm_panes_fixed_set(Evas_Object *obj, Eina_Bool fixed);
-
-/**
- * Retrieve the resize mode for the panes of a given panes widget.
- *
- * @param obj The panes object.
- * @return @c EINA_TRUE, if @p obj is set to be resizable by user interaction.
- *
- * @see elm_panes_fixed_set() for more details.
- * @see elm_panes_content_left_size_get()
- * @see elm_panes_content_right_size_get()
- *
- * @ingroup Panes
- */
-EAPI Eina_Bool elm_panes_fixed_get(const Evas_Object *obj);
-
-/**
- * Get the size proportion of panes widget's left side.
- *
- * @param obj The panes object.
- * @return float value between 0.0 and 1.0 representing size proportion
- * of left side.
- *
- * @see elm_panes_content_left_size_set() for more details.
- *
- * @ingroup Panes
- */
-EAPI double elm_panes_content_left_size_get(const Evas_Object *obj);
-
-/**
- * Set the size proportion of panes widget's left side.
- *
- * @param obj The panes object.
- * @param size Value between 0.0 and 1.0 representing size proportion
- * of left side.
- *
- * By default it's homogeneous, i.e., both sides have the same size.
- *
- * If something different is required, it can be set with this function.
- * For example, if the left content should be displayed over
- * 75% of the panes size, @p size should be passed as @c 0.75.
- * This way, right content will be resized to 25% of panes size.
- *
- * If displayed vertically, left content is displayed at top, and
- * right content at bottom.
- *
- * @note This proportion will change when user drags the panes bar.
- *
- * @see elm_panes_content_left_size_get()
- *
- * @ingroup Panes
- */
-EAPI void elm_panes_content_left_size_set(Evas_Object *obj, double size);
-
-/**
- * Get the size proportion of panes widget's right side.
- *
- * @param obj The panes object.
- * @return float value between 0.0 and 1.0 representing size proportion
- * of right side.
- *
- * @see elm_panes_content_right_size_set() for more details.
- *
- * @ingroup Panes
- */
-EAPI double elm_panes_content_right_size_get(const Evas_Object *obj);
-
-/**
- * Set the size proportion of panes widget's right side.
- *
- * @param obj The panes object.
- * @param size Value between 0.0 and 1.0 representing size proportion
- * of right side.
- *
- * By default it's homogeneous, i.e., both sides have the same size.
- *
- * If something different is required, it can be set with this function.
- * For example, if the right content should be displayed over
- * 75% of the panes size, @p size should be passed as @c 0.75.
- * This way, left content will be resized to 25% of panes size.
- *
- * If displayed vertically, left content is displayed at top, and
- * right content at bottom.
- *
- * @note This proportion will change when user drags the panes bar.
- *
- * @see elm_panes_content_right_size_get()
- *
- * @ingroup Panes
- */
-EAPI void elm_panes_content_right_size_set(Evas_Object *obj, double size);
-
-
-/**
- * Set how to split and dispose each content.
- *
- * @param obj The panes object.
- * @param horizontal Use @c EINA_TRUE to make @p obj to split panes
- * horizontally ("top" and "bottom" contents). @c EINA_FALSE to make it
- * vertically ("left" and "right" contents)
- *
- * Use this function to change how your panes is to be disposed:
- * vertically or horizontally.
- * Horizontal panes have "top" and "bottom" contents, vertical panes have
- * "left" and "right" contents.
- *
- * By default panes is in a vertical mode.
- *
- * @see elm_panes_horizontal_get()
- *
- * @ingroup Panes
- */
-EAPI void elm_panes_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
-
-/**
- * Retrieve the split direction of a given panes widget.
- *
- * @param obj The panes object.
- * @return @c EINA_TRUE, if @p obj is set to be @b horizontal,
- * @c EINA_FALSE if it's @b vertical (and on errors).
- *
- * @see elm_panes_horizontal_set() for more details.
- *
- * @ingroup Panes
- */
-EAPI Eina_Bool elm_panes_horizontal_get(const Evas_Object *obj);
-
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_panes_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_panes_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_panes_eo.h b/src/lib/elm_panes_eo.h
new file mode 100644
index 000000000..1b69edec5
--- /dev/null
+++ b/src/lib/elm_panes_eo.h
@@ -0,0 +1,133 @@
+#define ELM_OBJ_PANES_CLASS elm_obj_panes_class_get()
+
+const Eo_Class *elm_obj_panes_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_PANES_BASE_ID;
+
+enum
+{
+ ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_GET,
+ ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_SET,
+ ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_GET,
+ ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_SET,
+ ELM_OBJ_PANES_SUB_ID_HORIZONTAL_SET,
+ ELM_OBJ_PANES_SUB_ID_HORIZONTAL_GET,
+ ELM_OBJ_PANES_SUB_ID_FIXED_SET,
+ ELM_OBJ_PANES_SUB_ID_FIXED_GET,
+ ELM_OBJ_PANES_SUB_ID_LAST
+};
+
+#define ELM_OBJ_PANES_ID(sub_id) (ELM_OBJ_PANES_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_panes_content_left_size_get
+ * @since 1.8
+ *
+ * Get the size proportion of panes widget's left side.
+ *
+ * @param[out] ret
+ *
+ * @see elm_panes_content_left_size_get
+ *
+ * @ingroup Panes
+ */
+#define elm_obj_panes_content_left_size_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_panes_content_left_size_set
+ * @since 1.8
+ *
+ * Set the size proportion of panes widget's left side.
+ *
+ * @param[in] size
+ *
+ * @see elm_panes_content_left_size_set
+ *
+ * @ingroup Panes
+ */
+#define elm_obj_panes_content_left_size_set(size) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_LEFT_SIZE_SET), EO_TYPECHECK(double, size)
+
+/**
+ * @def elm_obj_panes_content_right_size_get
+ * @since 1.8
+ *
+ * Get the size proportion of panes widget's right side.
+ *
+ * @param[out] ret
+ *
+ * @see elm_panes_content_right_size_get
+ *
+ * @ingroup Panes
+ */
+#define elm_obj_panes_content_right_size_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_panes_content_right_size_set
+ * @since 1.8
+ *
+ * Set the size proportion of panes widget's right side.
+ *
+ * @param[in] size
+ *
+ * @see elm_panes_content_right_size_set
+ *
+ * @ingroup Panes
+ */
+#define elm_obj_panes_content_right_size_set(size) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_CONTENT_RIGHT_SIZE_SET), EO_TYPECHECK(double, size)
+
+/**
+ * @def elm_obj_panes_horizontal_set
+ * @since 1.8
+ *
+ * Set how to split and dispose each content.
+ *
+ * @param[in] horizontal
+ *
+ * @see elm_panes_horizontal_set
+ *
+ * @ingroup Panes
+ */
+#define elm_obj_panes_horizontal_set(horizontal) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal)
+
+/**
+ * @def elm_obj_panes_horizontal_get
+ * @since 1.8
+ *
+ * Retrieve the split direction of a given panes widget.
+ *
+ * @param[out] ret
+ *
+ * @see elm_panes_horizontal_get
+ *
+ * @ingroup Panes
+ */
+#define elm_obj_panes_horizontal_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_panes_fixed_set
+ * @since 1.8
+ *
+ * Set whether the left and right panes can be resized by user interaction.
+ *
+ * @param[in] fixed
+ *
+ * @see elm_panes_fixed_set
+ *
+ * @ingroup Panes
+ */
+#define elm_obj_panes_fixed_set(fixed) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_FIXED_SET), EO_TYPECHECK(Eina_Bool, fixed)
+
+/**
+ * @def elm_obj_panes_fixed_get
+ * @since 1.8
+ *
+ * Retrieve the resize mode for the panes of a given panes widget.
+ *
+ * @param[out] ret
+ *
+ * @see elm_panes_fixed_get
+ *
+ * @ingroup Panes
+ */
+#define elm_obj_panes_fixed_get(ret) ELM_OBJ_PANES_ID(ELM_OBJ_PANES_SUB_ID_FIXED_GET), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_panes_legacy.h b/src/lib/elm_panes_legacy.h
new file mode 100644
index 000000000..e9f760b94
--- /dev/null
+++ b/src/lib/elm_panes_legacy.h
@@ -0,0 +1,155 @@
+/**
+ * Add a new panes widget to the given parent Elementary
+ * (container) object.
+ *
+ * @param parent The parent object.
+ * @return a new panes widget handle or @c NULL, on errors.
+ *
+ * This function inserts a new panes widget on the canvas.
+ *
+ * @ingroup Panes
+ */
+EAPI Evas_Object *elm_panes_add(Evas_Object *parent);
+
+/**
+ * Get the size proportion of panes widget's left side.
+ *
+ * @param obj The panes object.
+ * @return float value between 0.0 and 1.0 representing size proportion
+ * of left side.
+ *
+ * @see elm_panes_content_left_size_set() for more details.
+ *
+ * @ingroup Panes
+ */
+EAPI double elm_panes_content_left_size_get(const Evas_Object *obj);
+
+/**
+ * Set the size proportion of panes widget's left side.
+ *
+ * @param obj The panes object.
+ * @param size Value between 0.0 and 1.0 representing size proportion
+ * of left side.
+ *
+ * By default it's homogeneous, i.e., both sides have the same size.
+ *
+ * If something different is required, it can be set with this function.
+ * For example, if the left content should be displayed over
+ * 75% of the panes size, @p size should be passed as @c 0.75.
+ * This way, right content will be resized to 25% of panes size.
+ *
+ * If displayed vertically, left content is displayed at top, and
+ * right content at bottom.
+ *
+ * @note This proportion will change when user drags the panes bar.
+ *
+ * @see elm_panes_content_left_size_get()
+ *
+ * @ingroup Panes
+ */
+EAPI void elm_panes_content_left_size_set(Evas_Object *obj, double size);
+
+/**
+ * Get the size proportion of panes widget's right side.
+ *
+ * @param obj The panes object.
+ * @return float value between 0.0 and 1.0 representing size proportion
+ * of right side.
+ *
+ * @see elm_panes_content_right_size_set() for more details.
+ *
+ * @ingroup Panes
+ */
+EAPI double elm_panes_content_right_size_get(const Evas_Object *obj);
+
+/**
+ * Set the size proportion of panes widget's right side.
+ *
+ * @param obj The panes object.
+ * @param size Value between 0.0 and 1.0 representing size proportion
+ * of right side.
+ *
+ * By default it's homogeneous, i.e., both sides have the same size.
+ *
+ * If something different is required, it can be set with this function.
+ * For example, if the right content should be displayed over
+ * 75% of the panes size, @p size should be passed as @c 0.75.
+ * This way, left content will be resized to 25% of panes size.
+ *
+ * If displayed vertically, left content is displayed at top, and
+ * right content at bottom.
+ *
+ * @note This proportion will change when user drags the panes bar.
+ *
+ * @see elm_panes_content_right_size_get()
+ *
+ * @ingroup Panes
+ */
+EAPI void elm_panes_content_right_size_set(Evas_Object *obj, double size);
+
+
+/**
+ * Set how to split and dispose each content.
+ *
+ * @param obj The panes object.
+ * @param horizontal Use @c EINA_TRUE to make @p obj to split panes
+ * horizontally ("top" and "bottom" contents). @c EINA_FALSE to make it
+ * vertically ("left" and "right" contents)
+ *
+ * Use this function to change how your panes is to be disposed:
+ * vertically or horizontally.
+ * Horizontal panes have "top" and "bottom" contents, vertical panes have
+ * "left" and "right" contents.
+ *
+ * By default panes is in a vertical mode.
+ *
+ * @see elm_panes_horizontal_get()
+ *
+ * @ingroup Panes
+ */
+EAPI void elm_panes_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * Retrieve the split direction of a given panes widget.
+ *
+ * @param obj The panes object.
+ * @return @c EINA_TRUE, if @p obj is set to be @b horizontal,
+ * @c EINA_FALSE if it's @b vertical (and on errors).
+ *
+ * @see elm_panes_horizontal_set() for more details.
+ *
+ * @ingroup Panes
+ */
+EAPI Eina_Bool elm_panes_horizontal_get(const Evas_Object *obj);
+
+/**
+ * Set whether the left and right panes can be resized by user interaction.
+ *
+ * @param obj The panes object.
+ * @param fixed Use @c EINA_TRUE to fix the left and right panes sizes and make
+ * them not to be resized by user interaction. Use @c EINA_FALSE to make them
+ * resizable.
+ *
+ * By default panes' contents are resizable by user interaction.
+ *
+ * @see elm_panes_fixed_get()
+ * @see elm_panes_content_left_size_set()
+ * @see elm_panes_content_right_size_set()
+ *
+ * @ingroup Panes
+ */
+EAPI void elm_panes_fixed_set(Evas_Object *obj, Eina_Bool fixed);
+
+/**
+ * Retrieve the resize mode for the panes of a given panes widget.
+ *
+ * @param obj The panes object.
+ * @return @c EINA_TRUE, if @p obj is set to be resizable by user interaction.
+ *
+ * @see elm_panes_fixed_set() for more details.
+ * @see elm_panes_content_left_size_get()
+ * @see elm_panes_content_right_size_get()
+ *
+ * @ingroup Panes
+ */
+EAPI Eina_Bool elm_panes_fixed_get(const Evas_Object *obj);
diff --git a/src/lib/elm_photocam.h b/src/lib/elm_photocam.h
index cf5f9935f..80d6eea07 100644
--- a/src/lib/elm_photocam.h
+++ b/src/lib/elm_photocam.h
@@ -54,465 +54,12 @@
* @{
*/
-#define ELM_OBJ_PHOTOCAM_PAN_CLASS elm_obj_photocam_pan_class_get()
-
-const Eo_Class *elm_obj_photocam_pan_class_get(void) EINA_CONST;
-
-/**
- * @brief Types of zoom available.
- */
-typedef enum
-{
- ELM_PHOTOCAM_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_photocam_zoom_set */
- ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT, /**< Zoom until photo fits in photocam */
- ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL, /**< Zoom until photo fills photocam */
- ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN, /**< Zoom in until photo fits in photocam */
- ELM_PHOTOCAM_ZOOM_MODE_LAST
-} Elm_Photocam_Zoom_Mode;
-
-#define ELM_OBJ_PHOTOCAM_CLASS elm_obj_photocam_class_get()
-
-const Eo_Class *elm_obj_photocam_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_PHOTOCAM_BASE_ID;
-
-enum
-{
- ELM_OBJ_PHOTOCAM_SUB_ID_FILE_SET,
- ELM_OBJ_PHOTOCAM_SUB_ID_FILE_GET,
- ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_SET,
- ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_GET,
- ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_SET,
- ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_GET,
- ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_SIZE_GET,
- ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_GET,
- ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_SHOW,
- ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_SET,
- ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_GET,
- ELM_OBJ_PHOTOCAM_SUB_ID_INTERNAL_IMAGE_GET,
- ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_SET,
- ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_GET,
- ELM_OBJ_PHOTOCAM_SUB_ID_LAST
-};
-
-#define ELM_OBJ_PHOTOCAM_ID(sub_id) (ELM_OBJ_PHOTOCAM_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_photocam_file_set
- * @since 1.8
- *
- * @brief Set the photo file to be shown
- *
- * @param[in] file
- * @param[out] ret
- *
- * @see elm_photocam_file_set
- */
-#define elm_obj_photocam_file_set(file, ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(Evas_Load_Error *, ret)
-
-/**
- * @def elm_obj_photocam_file_get
- * @since 1.8
- *
- * @brief Returns the path of the current image file
- *
- * @param[out] ret
- *
- * @see elm_photocam_file_get
- */
-#define elm_obj_photocam_file_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_photocam_zoom_set
- * @since 1.8
- *
- * @brief Set the zoom level of the photo
- *
- * @param[in] zoom
- *
- * @see elm_photocam_zoom_set
- */
-#define elm_obj_photocam_zoom_set(zoom) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_SET), EO_TYPECHECK(double, zoom)
-
-/**
- * @def elm_obj_photocam_zoom_get
- * @since 1.8
- *
- * @brief Get the zoom level of the photo
- *
- * @param[out] ret
- *
- * @see elm_photocam_zoom_get
- */
-#define elm_obj_photocam_zoom_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_photocam_zoom_mode_set
- * @since 1.8
- *
- * @brief Set the zoom mode
- *
- * @param[in] mode
- *
- * @see elm_photocam_zoom_mode_set
- */
-#define elm_obj_photocam_zoom_mode_set(mode) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Photocam_Zoom_Mode, mode)
-
-/**
- * @def elm_obj_photocam_zoom_mode_get
- * @since 1.8
- *
- * @brief Get the zoom mode
- *
- * @param[out] ret
- *
- * @see elm_photocam_zoom_mode_get
- */
-#define elm_obj_photocam_zoom_mode_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Photocam_Zoom_Mode *, ret)
-
-/**
- * @def elm_obj_photocam_image_size_get
- * @since 1.8
- *
- * @brief Get the current image pixel width and height
- *
- * @param[out] w
- * @param[out] h
- *
- * @see elm_photocam_image_size_get
- */
-#define elm_obj_photocam_image_size_get(w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
-
-/**
- * @def elm_obj_photocam_image_region_get
- * @since 1.8
- *
- * @brief Get the region of the image that is currently shown
- *
- * @param[out] x
- * @param[out] y
- * @param[out] w
- * @param[out] h
- *
- * @see elm_photocam_image_region_get
- */
-#define elm_obj_photocam_image_region_get(x, y, w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_GET), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
-
-/**
- * @def elm_obj_photocam_image_region_show
- * @since 1.8
- *
- * @brief Set the viewed region of the image
- *
- * @param[in] x
- * @param[in] y
- * @param[in] w
- * @param[in] h
- *
- * @see elm_photocam_image_region_show
- */
-#define elm_obj_photocam_image_region_show(x, y, w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_SHOW), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
-
-/**
- * @def elm_obj_photocam_paused_set
- * @since 1.8
- *
- * @brief Set the paused state for photocam
- *
- * @param[in] paused
- *
- * @see elm_photocam_paused_set
- */
-#define elm_obj_photocam_paused_set(paused) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_SET), EO_TYPECHECK(Eina_Bool, paused)
-
-/**
- * @def elm_obj_photocam_paused_get
- * @since 1.8
- *
- * @brief Get the paused state for photocam
- *
- * @param[out] ret
- *
- * @see elm_photocam_paused_get
- */
-#define elm_obj_photocam_paused_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_photocam_internal_image_get
- * @since 1.8
- *
- * @brief Get the internal low-res image used for photocam
- *
- * @param[out] ret
- *
- * @see elm_photocam_internal_image_get
- */
-#define elm_obj_photocam_internal_image_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_INTERNAL_IMAGE_GET), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def elm_obj_photocam_gesture_enabled_set
- * @since 1.8
- *
- * @brief Set the gesture state for photocam.
- *
- * @param[in] gesture
- *
- * @see elm_photocam_gesture_enabled_set
- */
-#define elm_obj_photocam_gesture_enabled_set(gesture) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_SET), EO_TYPECHECK(Eina_Bool, gesture)
-
-/**
- * @def elm_obj_photocam_gesture_enabled_get
- * @since 1.8
- *
- * @brief Get the gesture state for photocam.
- *
- * @param[out] ret
- *
- * @see elm_photocam_gesture_enabled_get
- */
-#define elm_obj_photocam_gesture_enabled_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @brief Add a new Photocam object
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- *
- * @ingroup Photocam
- */
-EAPI Evas_Object *elm_photocam_add(Evas_Object *parent);
-
-/**
- * @brief Set the photo file to be shown
- *
- * @param obj The photocam object
- * @param file The photo file
- * @return The return error (see EVAS_LOAD_ERROR_NONE, EVAS_LOAD_ERROR_GENERIC etc.)
- *
- * This sets (and shows) the specified file (with a relative or absolute
- * path) and will return a load error (same error that
- * evas_object_image_load_error_get() will return). The image will change and
- * adjust its size at this point and begin a background load process for this
- * photo that at some time in the future will be displayed at the full
- * quality needed.
- *
- * @ingroup Photocam
- */
-EAPI Evas_Load_Error elm_photocam_file_set(Evas_Object *obj, const char *file);
-
-/**
- * @brief Returns the path of the current image file
- *
- * @param obj The photocam object
- * @return Returns the path
- *
- * @see elm_photocam_file_set()
- *
- * @ingroup Photocam
- */
-EAPI const char *elm_photocam_file_get(const Evas_Object *obj);
-
-/**
- * @brief Set the zoom level of the photo
- *
- * @param obj The photocam object
- * @param zoom The zoom level to set
- *
- * This sets the zoom level. 1 will be 1:1 pixel for pixel. 2 will be 2:1
- * (that is 2x2 photo pixels will display as 1 on-screen pixel). 4:1 will be
- * 4x4 photo pixels as 1 screen pixel, and so on. The @p zoom parameter must
- * be greater than 0. It is suggested to stick to powers of 2. (1, 2, 4, 8,
- * 16, 32, etc.).
- *
- * @ingroup Photocam
- */
-EAPI void elm_photocam_zoom_set(Evas_Object *obj, double zoom);
-
-/**
- * @brief Get the zoom level of the photo
- *
- * @param obj The photocam object
- * @return The current zoom level
- *
- * This returns the current zoom level of the photocam object. Note that if
- * you set the fill mode to other than ELM_PHOTOCAM_ZOOM_MODE_MANUAL
- * (which is the default), the zoom level may be changed at any time by the
- * photocam object itself to account for photo size and photocam viewport
- * size.
- *
- * @see elm_photocam_zoom_set()
- * @see elm_photocam_zoom_mode_set()
- *
- * @ingroup Photocam
- */
-EAPI double elm_photocam_zoom_get(const Evas_Object *obj);
-
-/**
- * @brief Set the zoom mode
- *
- * @param obj The photocam object
- * @param mode The desired mode
- *
- * This sets the zoom mode to manual or one of several automatic levels.
- * Manual (ELM_PHOTOCAM_ZOOM_MODE_MANUAL) means that zoom is set manually by
- * elm_photocam_zoom_set() and will stay at that level until changed by code
- * or until zoom mode is changed. This is the default mode. The Automatic
- * modes will allow the photocam object to automatically adjust zoom mode
- * based on properties. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT) will adjust zoom so
- * the photo fits EXACTLY inside the scroll frame with no pixels outside this
- * region. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL will be similar but ensure no
- * pixels within the frame are left unfilled.
- *
- * @ingroup Photocam
- */
-EAPI void elm_photocam_zoom_mode_set(Evas_Object *obj, Elm_Photocam_Zoom_Mode mode);
-
-/**
- * @brief Get the zoom mode
- *
- * @param obj The photocam object
- * @return The current zoom mode
- *
- * This gets the current zoom mode of the photocam object.
- *
- * @see elm_photocam_zoom_mode_set()
- *
- * @ingroup Photocam
- */
-EAPI Elm_Photocam_Zoom_Mode elm_photocam_zoom_mode_get(const Evas_Object *obj);
-
-/**
- * @brief Get the current image pixel width and height
- *
- * @param obj The photocam object
- * @param w A pointer to the width return
- * @param h A pointer to the height return
- *
- * This gets the current photo pixel width and height (for the original).
- * The size will be returned in the integers @p w and @p h that are pointed
- * to.
- *
- * @ingroup Photocam
- */
-EAPI void elm_photocam_image_size_get(const Evas_Object *obj, int *w, int *h);
-
-/**
- * @brief Get the region of the image that is currently shown
- *
- * @param obj
- * @param x A pointer to the X-coordinate of region
- * @param y A pointer to the Y-coordinate of region
- * @param w A pointer to the width
- * @param h A pointer to the height
- *
- * @see elm_photocam_image_region_show()
- * @see elm_photocam_image_region_bring_in()
- *
- * @ingroup Photocam
- */
-EAPI void elm_photocam_image_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h);
-
-/**
- * @brief Set the viewed region of the image
- *
- * @param obj The photocam object
- * @param x X-coordinate of region in image original pixels
- * @param y Y-coordinate of region in image original pixels
- * @param w Width of region in image original pixels
- * @param h Height of region in image original pixels
- *
- * This shows the region of the image without using animation.
- *
- * @ingroup Photocam
- */
-EAPI void elm_photocam_image_region_show(Evas_Object *obj, int x, int y, int w, int h);
-
-/**
- * @brief Bring in the viewed portion of the image
- *
- * @param obj The photocam object
- * @param x X-coordinate of region in image original pixels
- * @param y Y-coordinate of region in image original pixels
- * @param w Width of region in image original pixels
- * @param h Height of region in image original pixels
- *
- * This shows the region of the image using animation.
- *
- * @ingroup Photocam
- */
-EAPI void elm_photocam_image_region_bring_in(Evas_Object *obj, int x, int y, int w, int h);
-
-/**
- * @brief Set the paused state for photocam
- *
- * @param obj The photocam object
- * @param paused The pause state to set
- *
- * This sets the paused state to on(EINA_TRUE) or off (EINA_FALSE) for
- * photocam. The default is off. This will stop zooming using animation on
- * zoom level changes and change instantly. This will stop any existing
- * animations that are running.
- *
- * @ingroup Photocam
- */
-EAPI void elm_photocam_paused_set(Evas_Object *obj, Eina_Bool paused);
-
-/**
- * @brief Get the paused state for photocam
- *
- * @param obj The photocam object
- * @return The current paused state
- *
- * This gets the current paused state for the photocam object.
- *
- * @see elm_photocam_paused_set()
- *
- * @ingroup Photocam
- */
-EAPI Eina_Bool elm_photocam_paused_get(const Evas_Object *obj);
-
-/**
- * @brief Get the internal low-res image used for photocam
- *
- * @param obj The photocam object
- * @return The internal image object handle, or NULL if none exists
- *
- * This gets the internal image object inside photocam. Do not modify it. It
- * is for inspection only, and hooking callbacks to. Nothing else. It may be
- * deleted at any time as well.
- *
- * @ingroup Photocam
- */
-EAPI Evas_Object *elm_photocam_internal_image_get(const Evas_Object *obj);
-
-/**
- * @brief Set the gesture state for photocam.
- *
- * @param obj The photocam object
- * @param gesture The gesture state to set
- *
- * This sets the gesture state to on(EINA_TRUE) or off (EINA_FALSE) for
- * photocam. The default is off. This will start multi touch zooming.
- *
- * @ingroup Photocam
- */
-EAPI void elm_photocam_gesture_enabled_set(Evas_Object *obj, Eina_Bool gesture);
-
-/**
- * @brief Get the gesture state for photocam.
- *
- * @param obj The photocam object
- * @return The current gesture state
- *
- * This gets the current gesture state for the photocam object.
- *
- * @see elm_photocam_gesture_enabled_set()
- *
- * @ingroup Photocam
- */
-EAPI Eina_Bool elm_photocam_gesture_enabled_get(const Evas_Object *obj);
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_photocam_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_photocam_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_photocam_eo.h b/src/lib/elm_photocam_eo.h
new file mode 100644
index 000000000..c98ab8943
--- /dev/null
+++ b/src/lib/elm_photocam_eo.h
@@ -0,0 +1,247 @@
+#define ELM_OBJ_PHOTOCAM_PAN_CLASS elm_obj_photocam_pan_class_get()
+
+const Eo_Class *elm_obj_photocam_pan_class_get(void) EINA_CONST;
+
+/**
+ * @brief Types of zoom available.
+ */
+typedef enum
+{
+ ELM_PHOTOCAM_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_photocam_zoom_set */
+ ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT, /**< Zoom until photo fits in photocam */
+ ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL, /**< Zoom until photo fills photocam */
+ ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN, /**< Zoom in until photo fits in photocam */
+ ELM_PHOTOCAM_ZOOM_MODE_LAST
+} Elm_Photocam_Zoom_Mode;
+
+#define ELM_OBJ_PHOTOCAM_CLASS elm_obj_photocam_class_get()
+
+const Eo_Class *elm_obj_photocam_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_PHOTOCAM_BASE_ID;
+
+enum
+{
+ ELM_OBJ_PHOTOCAM_SUB_ID_FILE_SET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_FILE_GET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_SET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_GET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_SET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_GET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_SIZE_GET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_GET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_SHOW,
+ ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_SET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_GET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_INTERNAL_IMAGE_GET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_SET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_GET,
+ ELM_OBJ_PHOTOCAM_SUB_ID_LAST
+};
+
+#define ELM_OBJ_PHOTOCAM_ID(sub_id) (ELM_OBJ_PHOTOCAM_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_photocam_file_set
+ * @since 1.8
+ *
+ * @brief Set the photo file to be shown
+ *
+ * @param[in] file
+ * @param[out] ret
+ *
+ * @see elm_photocam_file_set
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_file_set(file, ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(Evas_Load_Error *, ret)
+
+/**
+ * @def elm_obj_photocam_file_get
+ * @since 1.8
+ *
+ * @brief Returns the path of the current image file
+ *
+ * @param[out] ret
+ *
+ * @see elm_photocam_file_get
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_file_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_photocam_zoom_set
+ * @since 1.8
+ *
+ * @brief Set the zoom level of the photo
+ *
+ * @param[in] zoom
+ *
+ * @see elm_photocam_zoom_set
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_zoom_set(zoom) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_SET), EO_TYPECHECK(double, zoom)
+
+/**
+ * @def elm_obj_photocam_zoom_get
+ * @since 1.8
+ *
+ * @brief Get the zoom level of the photo
+ *
+ * @param[out] ret
+ *
+ * @see elm_photocam_zoom_get
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_zoom_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_photocam_zoom_mode_set
+ * @since 1.8
+ *
+ * @brief Set the zoom mode
+ *
+ * @param[in] mode
+ *
+ * @see elm_photocam_zoom_mode_set
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_zoom_mode_set(mode) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Photocam_Zoom_Mode, mode)
+
+/**
+ * @def elm_obj_photocam_zoom_mode_get
+ * @since 1.8
+ *
+ * @brief Get the zoom mode
+ *
+ * @param[out] ret
+ *
+ * @see elm_photocam_zoom_mode_get
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_zoom_mode_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Photocam_Zoom_Mode *, ret)
+
+/**
+ * @def elm_obj_photocam_image_size_get
+ * @since 1.8
+ *
+ * @brief Get the current image pixel width and height
+ *
+ * @param[out] w
+ * @param[out] h
+ *
+ * @see elm_photocam_image_size_get
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_image_size_get(w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+
+/**
+ * @def elm_obj_photocam_image_region_get
+ * @since 1.8
+ *
+ * @brief Get the region of the image that is currently shown
+ *
+ * @param[out] x
+ * @param[out] y
+ * @param[out] w
+ * @param[out] h
+ *
+ * @see elm_photocam_image_region_get
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_image_region_get(x, y, w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_GET), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+
+/**
+ * @def elm_obj_photocam_image_region_show
+ * @since 1.8
+ *
+ * @brief Set the viewed region of the image
+ *
+ * @param[in] x
+ * @param[in] y
+ * @param[in] w
+ * @param[in] h
+ *
+ * @see elm_photocam_image_region_show
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_image_region_show(x, y, w, h) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_IMAGE_REGION_SHOW), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * @def elm_obj_photocam_paused_set
+ * @since 1.8
+ *
+ * @brief Set the paused state for photocam
+ *
+ * @param[in] paused
+ *
+ * @see elm_photocam_paused_set
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_paused_set(paused) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_SET), EO_TYPECHECK(Eina_Bool, paused)
+
+/**
+ * @def elm_obj_photocam_paused_get
+ * @since 1.8
+ *
+ * @brief Get the paused state for photocam
+ *
+ * @param[out] ret
+ *
+ * @see elm_photocam_paused_get
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_paused_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_PAUSED_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_photocam_internal_image_get
+ * @since 1.8
+ *
+ * @brief Get the internal low-res image used for photocam
+ *
+ * @param[out] ret
+ *
+ * @see elm_photocam_internal_image_get
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_internal_image_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_INTERNAL_IMAGE_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def elm_obj_photocam_gesture_enabled_set
+ * @since 1.8
+ *
+ * @brief Set the gesture state for photocam.
+ *
+ * @param[in] gesture
+ *
+ * @see elm_photocam_gesture_enabled_set
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_gesture_enabled_set(gesture) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_SET), EO_TYPECHECK(Eina_Bool, gesture)
+
+/**
+ * @def elm_obj_photocam_gesture_enabled_get
+ * @since 1.8
+ *
+ * @brief Get the gesture state for photocam.
+ *
+ * @param[out] ret
+ *
+ * @see elm_photocam_gesture_enabled_get
+ *
+ * @ingroup Photocam
+ */
+#define elm_obj_photocam_gesture_enabled_get(ret) ELM_OBJ_PHOTOCAM_ID(ELM_OBJ_PHOTOCAM_SUB_ID_GESTURE_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_photocam_legacy.h b/src/lib/elm_photocam_legacy.h
new file mode 100644
index 000000000..be52b9749
--- /dev/null
+++ b/src/lib/elm_photocam_legacy.h
@@ -0,0 +1,224 @@
+/**
+ * @brief Add a new Photocam object
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Photocam
+ */
+EAPI Evas_Object *elm_photocam_add(Evas_Object *parent);
+
+/**
+ * @brief Set the photo file to be shown
+ *
+ * @param obj The photocam object
+ * @param file The photo file
+ * @return The return error (see EVAS_LOAD_ERROR_NONE, EVAS_LOAD_ERROR_GENERIC etc.)
+ *
+ * This sets (and shows) the specified file (with a relative or absolute
+ * path) and will return a load error (same error that
+ * evas_object_image_load_error_get() will return). The image will change and
+ * adjust its size at this point and begin a background load process for this
+ * photo that at some time in the future will be displayed at the full
+ * quality needed.
+ *
+ * @ingroup Photocam
+ */
+EAPI Evas_Load_Error elm_photocam_file_set(Evas_Object *obj, const char *file);
+
+/**
+ * @brief Returns the path of the current image file
+ *
+ * @param obj The photocam object
+ * @return Returns the path
+ *
+ * @see elm_photocam_file_set()
+ *
+ * @ingroup Photocam
+ */
+EAPI const char *elm_photocam_file_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the zoom level of the photo
+ *
+ * @param obj The photocam object
+ * @param zoom The zoom level to set
+ *
+ * This sets the zoom level. 1 will be 1:1 pixel for pixel. 2 will be 2:1
+ * (that is 2x2 photo pixels will display as 1 on-screen pixel). 4:1 will be
+ * 4x4 photo pixels as 1 screen pixel, and so on. The @p zoom parameter must
+ * be greater than 0. It is suggested to stick to powers of 2. (1, 2, 4, 8,
+ * 16, 32, etc.).
+ *
+ * @ingroup Photocam
+ */
+EAPI void elm_photocam_zoom_set(Evas_Object *obj, double zoom);
+
+/**
+ * @brief Get the zoom level of the photo
+ *
+ * @param obj The photocam object
+ * @return The current zoom level
+ *
+ * This returns the current zoom level of the photocam object. Note that if
+ * you set the fill mode to other than ELM_PHOTOCAM_ZOOM_MODE_MANUAL
+ * (which is the default), the zoom level may be changed at any time by the
+ * photocam object itself to account for photo size and photocam viewport
+ * size.
+ *
+ * @see elm_photocam_zoom_set()
+ * @see elm_photocam_zoom_mode_set()
+ *
+ * @ingroup Photocam
+ */
+EAPI double elm_photocam_zoom_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the zoom mode
+ *
+ * @param obj The photocam object
+ * @param mode The desired mode
+ *
+ * This sets the zoom mode to manual or one of several automatic levels.
+ * Manual (ELM_PHOTOCAM_ZOOM_MODE_MANUAL) means that zoom is set manually by
+ * elm_photocam_zoom_set() and will stay at that level until changed by code
+ * or until zoom mode is changed. This is the default mode. The Automatic
+ * modes will allow the photocam object to automatically adjust zoom mode
+ * based on properties. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT) will adjust zoom so
+ * the photo fits EXACTLY inside the scroll frame with no pixels outside this
+ * region. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL will be similar but ensure no
+ * pixels within the frame are left unfilled.
+ *
+ * @ingroup Photocam
+ */
+EAPI void elm_photocam_zoom_mode_set(Evas_Object *obj, Elm_Photocam_Zoom_Mode mode);
+
+/**
+ * @brief Get the zoom mode
+ *
+ * @param obj The photocam object
+ * @return The current zoom mode
+ *
+ * This gets the current zoom mode of the photocam object.
+ *
+ * @see elm_photocam_zoom_mode_set()
+ *
+ * @ingroup Photocam
+ */
+EAPI Elm_Photocam_Zoom_Mode elm_photocam_zoom_mode_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the current image pixel width and height
+ *
+ * @param obj The photocam object
+ * @param w A pointer to the width return
+ * @param h A pointer to the height return
+ *
+ * This gets the current photo pixel width and height (for the original).
+ * The size will be returned in the integers @p w and @p h that are pointed
+ * to.
+ *
+ * @ingroup Photocam
+ */
+EAPI void elm_photocam_image_size_get(const Evas_Object *obj, int *w, int *h);
+
+/**
+ * @brief Get the region of the image that is currently shown
+ *
+ * @param obj
+ * @param x A pointer to the X-coordinate of region
+ * @param y A pointer to the Y-coordinate of region
+ * @param w A pointer to the width
+ * @param h A pointer to the height
+ *
+ * @see elm_photocam_image_region_show()
+ * @see elm_photocam_image_region_bring_in()
+ *
+ * @ingroup Photocam
+ */
+EAPI void elm_photocam_image_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h);
+
+/**
+ * @brief Set the viewed region of the image
+ *
+ * @param obj The photocam object
+ * @param x X-coordinate of region in image original pixels
+ * @param y Y-coordinate of region in image original pixels
+ * @param w Width of region in image original pixels
+ * @param h Height of region in image original pixels
+ *
+ * This shows the region of the image without using animation.
+ *
+ * @ingroup Photocam
+ */
+EAPI void elm_photocam_image_region_show(Evas_Object *obj, int x, int y, int w, int h);
+
+/**
+ * @brief Set the paused state for photocam
+ *
+ * @param obj The photocam object
+ * @param paused The pause state to set
+ *
+ * This sets the paused state to on(EINA_TRUE) or off (EINA_FALSE) for
+ * photocam. The default is off. This will stop zooming using animation on
+ * zoom level changes and change instantly. This will stop any existing
+ * animations that are running.
+ *
+ * @ingroup Photocam
+ */
+EAPI void elm_photocam_paused_set(Evas_Object *obj, Eina_Bool paused);
+
+/**
+ * @brief Get the paused state for photocam
+ *
+ * @param obj The photocam object
+ * @return The current paused state
+ *
+ * This gets the current paused state for the photocam object.
+ *
+ * @see elm_photocam_paused_set()
+ *
+ * @ingroup Photocam
+ */
+EAPI Eina_Bool elm_photocam_paused_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the internal low-res image used for photocam
+ *
+ * @param obj The photocam object
+ * @return The internal image object handle, or NULL if none exists
+ *
+ * This gets the internal image object inside photocam. Do not modify it. It
+ * is for inspection only, and hooking callbacks to. Nothing else. It may be
+ * deleted at any time as well.
+ *
+ * @ingroup Photocam
+ */
+EAPI Evas_Object *elm_photocam_internal_image_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the gesture state for photocam.
+ *
+ * @param obj The photocam object
+ * @param gesture The gesture state to set
+ *
+ * This sets the gesture state to on(EINA_TRUE) or off (EINA_FALSE) for
+ * photocam. The default is off. This will start multi touch zooming.
+ *
+ * @ingroup Photocam
+ */
+EAPI void elm_photocam_gesture_enabled_set(Evas_Object *obj, Eina_Bool gesture);
+
+/**
+ * @brief Get the gesture state for photocam.
+ *
+ * @param obj The photocam object
+ * @return The current gesture state
+ *
+ * This gets the current gesture state for the photocam object.
+ *
+ * @see elm_photocam_gesture_enabled_set()
+ *
+ * @ingroup Photocam
+ */
+EAPI Eina_Bool elm_photocam_gesture_enabled_get(const Evas_Object *obj);
diff --git a/src/lib/elm_plug.h b/src/lib/elm_plug.h
index 72a78595a..17ba2962f 100644
--- a/src/lib/elm_plug.h
+++ b/src/lib/elm_plug.h
@@ -25,93 +25,18 @@
*
*/
-#define ELM_OBJ_PLUG_CLASS elm_obj_plug_class_get()
-
-const Eo_Class *elm_obj_plug_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_PLUG_BASE_ID;
-
-enum
-{
- ELM_OBJ_PLUG_SUB_ID_IMAGE_OBJECT_GET,
- ELM_OBJ_PLUG_SUB_ID_CONNECT,
- ELM_OBJ_PLUG_SUB_ID_LAST
-};
-
-#define ELM_OBJ_PLUG_ID(sub_id) (ELM_OBJ_PLUG_BASE_ID + sub_id)
-
/**
- * @def elm_obj_plug_image_object_get
- * @since 1.8
- *
- * Get the basic Evas_Image object from this object (widget).
- *
- * @param[out] ret
- *
- * @see elm_plug_image_object_get
- */
-#define elm_obj_plug_image_object_get(ret) ELM_OBJ_PLUG_ID(ELM_OBJ_PLUG_SUB_ID_IMAGE_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def elm_obj_plug_connect
- * @since 1.8
- *
- * Connect a plug widget to service provided by socket image.
- *
- * @param[in] svcname
- * @param[in] svcnum
- * @param[in] svcsys
- * @param[out] ret
- *
- * @see elm_plug_connect
- */
-#define elm_obj_plug_connect(svcname, svcnum, svcsys, ret) ELM_OBJ_PLUG_ID(ELM_OBJ_PLUG_SUB_ID_CONNECT), EO_TYPECHECK(const char *, svcname), EO_TYPECHECK(int, svcnum), EO_TYPECHECK(Eina_Bool, svcsys), EO_TYPECHECK(Eina_Bool *, ret)
-/**
* @addtogroup Plug
* @{
*/
-/**
- * Add a new plug image to the parent.
- *
- * @param parent The parent object
- * @return The new plug image object or NULL if it cannot be created
- *
- * @ingroup Plug
- */
-EAPI Evas_Object *elm_plug_add(Evas_Object *parent);
-
-/**
- * Connect a plug widget to service provided by socket image.
- *
- * @param obj The Evas_Object where the new image object will live.
- * @param svcname The service name to connect to set up by the socket.
- * @param svcnum The service number to connect to (set up by socket).
- * @param svcsys Boolean to set if the service is a system one or not (set up by socket).
- * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
- *
- * @ingroup Plug
- */
-EAPI Eina_Bool elm_plug_connect(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys);
-
-/**
- * Get the basic Evas_Image object from this object (widget).
- *
- * @param obj The image object to get the inlined image from
- * @return The inlined image object, or NULL if none exists
- *
- * This function allows one to get the underlying @c Evas_Object of type
- * Image from this elementary widget. It can be useful to do things like get
- * the pixel data, save the image to a file, etc.
- *
- * @note Be careful to not manipulate it, as it is under control of
- * elementary.
- *
- * @ingroup Plug
- */
-EAPI Evas_Object *elm_plug_image_object_get(const Evas_Object *obj);
-
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_plug_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_plug_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_plug_eo.h b/src/lib/elm_plug_eo.h
new file mode 100644
index 000000000..6ea12b2c5
--- /dev/null
+++ b/src/lib/elm_plug_eo.h
@@ -0,0 +1,46 @@
+#define ELM_OBJ_PLUG_CLASS elm_obj_plug_class_get()
+
+const Eo_Class *elm_obj_plug_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_PLUG_BASE_ID;
+
+enum
+{
+ ELM_OBJ_PLUG_SUB_ID_IMAGE_OBJECT_GET,
+ ELM_OBJ_PLUG_SUB_ID_CONNECT,
+ ELM_OBJ_PLUG_SUB_ID_LAST
+};
+
+#define ELM_OBJ_PLUG_ID(sub_id) (ELM_OBJ_PLUG_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_plug_image_object_get
+ * @since 1.8
+ *
+ * Get the basic Evas_Image object from this object (widget).
+ *
+ * @param[out] ret
+ *
+ * @see elm_plug_image_object_get
+ *
+ * @ingroup Plug
+ */
+#define elm_obj_plug_image_object_get(ret) ELM_OBJ_PLUG_ID(ELM_OBJ_PLUG_SUB_ID_IMAGE_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def elm_obj_plug_connect
+ * @since 1.8
+ *
+ * Connect a plug widget to service provided by socket image.
+ *
+ * @param[in] svcname
+ * @param[in] svcnum
+ * @param[in] svcsys
+ * @param[out] ret
+ *
+ * @see elm_plug_connect
+ *
+ * @ingroup Plug
+ */
+#define elm_obj_plug_connect(svcname, svcnum, svcsys, ret) ELM_OBJ_PLUG_ID(ELM_OBJ_PLUG_SUB_ID_CONNECT), EO_TYPECHECK(const char *, svcname), EO_TYPECHECK(int, svcnum), EO_TYPECHECK(Eina_Bool, svcsys), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_plug_legacy.h b/src/lib/elm_plug_legacy.h
new file mode 100644
index 000000000..ba0330d80
--- /dev/null
+++ b/src/lib/elm_plug_legacy.h
@@ -0,0 +1,39 @@
+/**
+ * Add a new plug image to the parent.
+ *
+ * @param parent The parent object
+ * @return The new plug image object or NULL if it cannot be created
+ *
+ * @ingroup Plug
+ */
+EAPI Evas_Object *elm_plug_add(Evas_Object *parent);
+
+/**
+ * Get the basic Evas_Image object from this object (widget).
+ *
+ * @param obj The image object to get the inlined image from
+ * @return The inlined image object, or NULL if none exists
+ *
+ * This function allows one to get the underlying @c Evas_Object of type
+ * Image from this elementary widget. It can be useful to do things like get
+ * the pixel data, save the image to a file, etc.
+ *
+ * @note Be careful to not manipulate it, as it is under control of
+ * elementary.
+ *
+ * @ingroup Plug
+ */
+EAPI Evas_Object *elm_plug_image_object_get(const Evas_Object *obj);
+
+/**
+ * Connect a plug widget to service provided by socket image.
+ *
+ * @param obj The Evas_Object where the new image object will live.
+ * @param svcname The service name to connect to set up by the socket.
+ * @param svcnum The service number to connect to (set up by socket).
+ * @param svcsys Boolean to set if the service is a system one or not (set up by socket).
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ *
+ * @ingroup Plug
+ */
+EAPI Eina_Bool elm_plug_connect(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys);
diff --git a/src/lib/elm_prefs.h b/src/lib/elm_prefs.h
index a813baa16..466065850 100644
--- a/src/lib/elm_prefs.h
+++ b/src/lib/elm_prefs.h
@@ -1,356 +1,6 @@
#ifndef ELM_PREFS_H
#define ELM_PREFS_H
-#define ELM_OBJ_PREFS_CLASS elm_obj_prefs_class_get()
-
-const Eo_Class *elm_obj_prefs_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_PREFS_BASE_ID;
-
-enum
-{
- ELM_OBJ_PREFS_SUB_ID_FILE_SET,
- ELM_OBJ_PREFS_SUB_ID_FILE_GET,
- ELM_OBJ_PREFS_SUB_ID_DATA_SET,
- ELM_OBJ_PREFS_SUB_ID_DATA_GET,
- ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET,
- ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET,
- ELM_OBJ_PREFS_SUB_ID_RESET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET,
- ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW,
- ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW,
- ELM_OBJ_PREFS_SUB_ID_LAST
-};
-
-#define ELM_OBJ_PREFS_ID(sub_id) (ELM_OBJ_PREFS_BASE_ID + sub_id)
-
-/**
- * @def elm_obj_prefs_file_set
- *
- * Set file and page to populate a given prefs widget's interface.
- *
- * @param[in] file
- * @param[in] page
- * @param[out] ret
- *
- * @see elm_prefs_file_set()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_file_set(file, page, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_SET), \
- EO_TYPECHECK(const char *, file), \
- EO_TYPECHECK(const char *, page), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_prefs_file_get
- *
- * Retrieve file and page bound to a given prefs widget.
- *
- * @param[out] file
- * @param[out] page
- * @param[out] ret
- *
- * @see elm_prefs_file_get()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_file_get(file, page, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_GET), \
- EO_TYPECHECK(const char **, file), \
- EO_TYPECHECK(const char **, page), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_prefs_data_set
- *
- * Set user data for a given prefs widget
- *
- * @param[in] data
- * @param[out] ret
- *
- * @see elm_prefs_data_set()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_data_set(data, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_SET), \
- EO_TYPECHECK(Elm_Prefs_Data *, data), \
- EO_TYPECHECK(Eina_Bool *, ret)
-//FIXME: prefs_data == eobject?
-
-/**
- * @def elm_obj_prefs_data_get
- *
- * Retrieve user data for a given prefs widget
- *
- * @param[out] ret
- *
- * @see elm_prefs_data_get()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_data_get(ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_GET), \
- EO_TYPECHECK(Elm_Prefs_Data **, ret)
-
-/**
- * @def elm_obj_prefs_autosave_set
- *
- * Set whether a given prefs widget should save its values back (on
- * the user data file, if set) automatically on every UI element
- * changes.
- *
- * @param[in] autosave
- *
- * @see elm_prefs_autosave_get()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_autosave_set(autosave) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET), \
- EO_TYPECHECK(Eina_Bool, autosave)
-
-/**
- * @def elm_obj_prefs_autosave_get
- *
- * Get whether a given prefs widget is saving its values back
- * automatically on changes.
- *
- * @param[out] ret
- *
- * @see elm_prefs_autosave_set()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_autosave_get(ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_prefs_reset
- *
- * Reset the values of a given prefs widget to a previous state.
- *
- * @param[in] mode
- *
- * @since 1.8
- */
-#define elm_obj_prefs_reset(mode) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_RESET), \
- EO_TYPECHECK(Elm_Prefs_Reset_Mode, mode)
-
-/**
- * @def elm_obj_prefs_item_value_set
- *
- * Set the value on a given prefs widget's item.
- *
- * @param[in] name
- * @param[in] value
- * @param[out] ret
- *
- * @see elm_prefs_item_value_get()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_value_set(name, value, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(const Eina_Value *, value), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_prefs_item_value_get
- *
- * Retrieve the value of a given prefs widget's item.
- *
- * @param[in] name
- * @param[out] value
- * @param[out] ret
- *
- * @see elm_prefs_item_value_set()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_value_get(name, value, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(Eina_Value *, value), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_prefs_item_object_get
- *
- * Retrieve the Elementary widget bound to a given prefs widget's
- * item.
- *
- * @param[in] name
- * @param[out] ret
- *
- * @see elm_prefs_item_value_get()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_object_get(name, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(const Evas_Object **, ret) //FIXME: return EObject?
-
-/**
- * @def elm_obj_prefs_item_visible_set
- *
- * Set whether the widget bound to given prefs widget's item should be
- * visible or not.
- *
- * @param[in] name
- * @param[in] visible
- *
- * @see elm_prefs_item_visible_set()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_visible_set(name, visible) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(Eina_Bool, visible)
-
-/**
- * @def elm_obj_prefs_item_visible_get
- *
- * Retrieve whether the widget bound to a given prefs widget's item is
- * visible or not.
- *
- * @param[in] name
- * @param[out] ret
- *
- * @see elm_prefs_item_visible_get()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_visible_get(name, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET), \
- EO_TYPECHECK(const char *,name), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_prefs_item_disabled_set
- *
- * Set whether the widget bound to a given prefs widget's item is
- * disabled or not.
- *
- * @param[in] name
- * @param[in] disabled
- *
- * @see elm_prefs_item_disabled_set()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_disabled_set(name, disabled) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(Eina_Bool, disabled)
-
-/**
- * @def elm_obj_prefs_item_disabled_get
- *
- * Retrieve whether the widget bound to a given prefs widget's item is
- * disabled or not.
- *
- * @param[in] name
- * @param[out] ret
- *
- * @see elm_prefs_item_disabled_get()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_disabled_get(name, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_prefs_item_editable_set
- *
- * Set whether the widget bound to a given prefs widget's item is
- * editable or not.
- *
- * @param[in] name
- * @param[in] editable
- *
- * @see elm_prefs_item_editable_set()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_editable_set(name, editable) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(Eina_Bool, editable)
-
-/**
- * @def elm_obj_prefs_item_editable_get
- *
- * Retrieve whether the widget bound to a given prefs widget's item is
- * editable or not.
- *
- * @param[in] name
- * @param[out] ret
- *
- * @see elm_prefs_item_editable_get()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_editable_get(name, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_prefs_item_swallow
- *
- * "Swallows" an object into a SWALLOW item of a prefs widget.
- *
- * @param[in] name
- * @param[in] child
- * @param[out] ret
- *
- * @see elm_prefs_item_swallow()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_swallow(name, child, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW), \
- EO_TYPECHECK(const char *, name), \
- EO_TYPECHECK(Evas_Object *, child), \
- EO_TYPECHECK(Eina_Bool *, ret)
-//FIXME: child == EObject?
-
-/**
- * @def elm_obj_prefs_item_unswallow
- *
- * Unswallow an object from a SWALLOW item of a prefs widget.
- *
- * @param[in] name
- * @param[out] ret
- *
- * @see elm_prefs_item_unswallow()
- *
- * @since 1.8
- */
-#define elm_obj_prefs_item_unswallow(name, ret) \
- ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW), \
- EO_TYPECHECK(const char *,name), \
- EO_TYPECHECK(Evas_Object **, ret)
-//FIXME: ret == EObject?
-
/**
* @addtogroup Prefs
* @{
@@ -423,691 +73,13 @@ enum
* @li @ref prefs_example_03
*/
-/**
- * Modes of resetting a prefs widget.
- *
- * @see elm_prefs_reset()
- *
- * @since 1.8
- */
-typedef enum
-{
- ELM_PREFS_RESET_DEFAULTS, /** reset to default values, declared in its @b .epb file */
- ELM_PREFS_RESET_LAST /** prefs will keep a small history of changes, so this resets back to last batch of changes on the UI elements. it does @b not work on autosave mode */
-} Elm_Prefs_Reset_Mode;
-
-/**
- * @brief Add a new prefs widget
- *
- * @param parent The parent widget to hold the new one
- * @return The new object or @c NULL, on errors
- *
- * @since 1.8
- */
-EAPI Evas_Object *elm_prefs_add(Evas_Object *parent);
-
-/**
- * Set file and page to populate a given prefs widget's interface.
- *
- * @param o A prefs widget handle
- * @param file The @b .epb (binary) file to get contents from
- * @param page The page, inside @a file, where to get item contents from
- * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
- *
- * Elm prefs widgets start blank, with no child widgets. It's meant to
- * have its viewport populated with child elements coming from a
- * declaration file. That file (usually with @b .epb extension), is a
- * binary format (Eet) one, coming from a human-readable textual
- * declaration. This textual form (usually with @b .epc extension) is
- * translated to the binary form by means of the @b prefs_cc compiler.
- *
- * With this function, one thus populates a prefs widget with UI
- * elements.
- *
- * If @a file is @c NULL, "elm_app_data_dir_get()/preferences.epb"
- * will be used, by default. If @a file is a @b relative path, the
- * prefix "elm_app_data_dir_get()/" will be implicitly used with it.
- * If @a page is @c NULL, it is considered "main", as default.
- *
- * @warning If your binary is not properly installed and
- * elm_app_data_dir_get() can't be figured out, a fallback value of
- * "." will be tryed, instead.
- *
- * @see elm_prefs_file_get()
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_file_set(Evas_Object *o,
- const char *file,
- const char *page);
-
-/**
- * Retrieve file and page bound to a given prefs widget.
- *
- * @param o A prefs widget handle
- * @param file Where to store the file @a o is bound to
- * @param page Where to store the page @a o is bound to
- * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
- *
- * @note Use @c NULL pointers on the components you're not
- * interested in: they'll be ignored by the function.
- *
- * @see elm_prefs_file_set() for more information
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_file_get(const Evas_Object *o,
- const char **file,
- const char **page);
-/**
- * Set user data for a given prefs widget
- *
- * @param obj A prefs widget handle
- * @param prefs_data A valid prefs_data handle
- * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
- *
- * Once a prefs widget is created, after elm_prefs_file_set() is
- * issued on it, all of its UI elements will get default values, when
- * declared on that file. To fetch an user's own, personal set of
- * those values, one gets to pair a <b>prefs data</b> handle to the
- * prefs widget. This is what this call is intended for.
- *
- * Prefs data values from @a prefs_data with keys matching the ones
- * present on the file passed on elm_prefs_file_set() to @a obj will
- * have their values applied to the respective UI elements of the
- * widget.
- *
- * When @a obj dies, the values of the elements declared on its @b
- * .epb file (the one set on elm_prefs_file_set()) marked as permanent
- * <b>will be written back</b> to @a prefs_data, if it is writable.
- * One is also able to make this writing event to take place
- * automatically after each UI element modification by using
- * elm_prefs_autosave_set().
- *
- * @note @a obj will keep a reference of its own for @a prefs_data,
- * but you should still unreference it by yourself, after the widget
- * is gone.
- *
- * @see elm_prefs_data_get()
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_data_set(Evas_Object *obj,
- Elm_Prefs_Data *data);
-
-/**
- * Retrieve user data for a given prefs widget
- *
- * @param obj A prefs widget handle
- * @param prefs_data A valid prefs_data handle
- * @return A pointer to the user data of a given prefs widget on success.
- * @c NULL otherwise.
- *
- * @see elm_prefs_data_set() for more details
- *
- * @since 1.8
- */
-EAPI Elm_Prefs_Data *elm_prefs_data_get(const Evas_Object *o);
-
-/**
- * Set whether a given prefs widget should save its values back (on
- * the user data file, if set) automatically on every UI element
- * changes.
- *
- * @param prefs A valid prefs widget handle
- * @param autosave @c EINA_TRUE to save automatically, @c EINA_FALSE
- * otherwise.
- *
- * If @a autosave is @c EINA_TRUE, every call to
- * elm_prefs_item_value_set(), every
- * Elm_Prefs_Data_Event_Type::ELM_PREFS_DATA_EVENT_ITEM_CHANGED event
- * coming for its prefs data and every UI element direct value
- * changing will implicitly make the prefs values to be flushed back
- * to it prefs data. If a prefs data handle with no writing
- * permissions or no prefs data is set on @a prefs, naturally nothing
- * will happen.
- *
- * @see elm_prefs_autosave_get()
- *
- * @since 1.8
- */
-EAPI void elm_prefs_autosave_set(Evas_Object *prefs,
- Eina_Bool autosave);
-
-/**
- * Get whether a given prefs widget is saving its values back
- * automatically on changes.
- *
- * @param prefs A valid prefs widget handle
- * @return @c EINA_TRUE if @a prefs is saving automatically,
- * @c EINA_FALSE otherwise.
- *
- * @see elm_prefs_autosave_set(), for more details
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_autosave_get(const Evas_Object *prefs);
-
-/**
- * Reset the values of a given prefs widget to a previous state.
- *
- * @param prefs A valid prefs widget handle
- * @param mode The reset mode to apply on @a prefs
- *
- * As can be seen on #Elm_Prefs_Reset_Mode, there are two possible
- * actions to be taken by this call -- either to reset @a prefs'
- * values to the defaults (declared on the @c .epb file it is bound
- * to) or to reset to the state they were before the last modification
- * it got.
- *
- * @since 1.8
- */
-EAPI void elm_prefs_reset(Evas_Object *prefs,
- Elm_Prefs_Reset_Mode mode);
-
-/**
- * Set the value on a given prefs widget's item.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection)
- * @param value The value to set on the item. It should be typed as
- * the item expects, preferably, or a conversion will
- * take place
- * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
- *
- * This will change the value of item named @a name programatically.
- *
- * @see elm_prefs_item_value_get()
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_item_value_set(Evas_Object *prefs,
- const char *name,
- const Eina_Value *value);
-
-/**
- * Retrieve the value of a given prefs widget's item.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection) to get value from
- * @param value Where to store the value of the item. It will be
- * overwritten and setup with the type the item
- * is bound to
- * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
- *
- * This will retrieve the value of item named @a name.
- *
- * @see elm_prefs_item_value_set()
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_item_value_get(const Evas_Object *prefs,
- const char *name,
- Eina_Value *value);
-/**
- * Retrieve the Elementary widget bound to a given prefs widget's
- * item.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection) to get object from
- * @return A valid widget handle, on success, or @c NULL, otherwise
- *
- * This will retrieve a handle to the real widget implementing a given
- * item of @a prefs, <b>for read-only</b> actions.
- *
- * @warning You should @b never modify the state of the returned
- * widget, because it's meant to be managed by @a prefs, solely.
- *
- * @see elm_prefs_item_value_set()
- *
- * @since 1.8
- */
-EAPI const Evas_Object *elm_prefs_item_object_get(Evas_Object *prefs,
- const char *name);
-
-/**
- * Set whether the widget bound to given prefs widget's item should be
- * visible or not.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection) to change visibility of
- * @param visible @c EINA_TRUE, to make it visible, @c EINA_FALSE
- * otherwise
- *
- * Each prefs item may have a default visibility state, declared on
- * the @c .epb @a prefs it was loaded with. By this call one may alter
- * that state, programatically.
- *
- * @see elm_prefs_item_visible_get()
- *
- * @since 1.8
- */
-EAPI void elm_prefs_item_visible_set(Evas_Object *prefs,
- const char *name,
- Eina_Bool visible);
-
-/**
- * Retrieve whether the widget bound to a given prefs widget's item is
- * visible or not.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection) to get visibility state from
- * @return @c EINA_TRUE, if it is visible, @c EINA_FALSE
- * otherwise
- *
- * @see elm_prefs_item_visible_set() for more details
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_item_visible_get(const Evas_Object *prefs,
- const char *name);
-
-/**
- * Set whether the widget bound to a given prefs widget's item is
- * disabled or not.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection) to act on
- * @param disabled @c EINA_TRUE, to make it disabled, @c EINA_FALSE
- * otherwise
- *
- * @see elm_prefs_item_disabled_get()
- *
- * @since 1.8
- */
-EAPI void elm_prefs_item_disabled_set(Evas_Object *prefs,
- const char *name,
- Eina_Bool disabled);
-
-/**
- * Retrieve whether the widget bound to a given prefs widget's item is
- * disabled or not.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection) to get disabled state from
- * @return @c EINA_TRUE, if it is disabled, @c EINA_FALSE
- * otherwise
- *
- * @see elm_prefs_item_disabled_set()
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_item_disabled_get(const Evas_Object *prefs,
- const char *name);
-
-/**
- * Set whether the widget bound to a given prefs widget's item is
- * editable or not.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection) to act on
- * @param editable @c EINA_TRUE, to make it editable, @c EINA_FALSE
- * otherwise
- *
- * @note Only @c TEXT or @c TEXTAREA items' default widgets implement
- * the 'editable' property. Custom registered widgets may as well
- * implement them.
- *
- * @see elm_prefs_item_editable_get()
- *
- * @since 1.8
- */
-EAPI void elm_prefs_item_editable_set(Evas_Object *prefs,
- const char *name,
- Eina_Bool editable);
-
-/**
- * Retrieve whether the widget bound to a given prefs widget's item is
- * editable or not.
- *
- * @param prefs A valid prefs widget handle
- * @param name The name of the item (as declared in the prefs
- * collection) to get editable state from
- * @return @c EINA_TRUE, if it is editable, @c EINA_FALSE
- * otherwise
- *
- * @see elm_prefs_item_editable_set() for more details
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_item_editable_get(const Evas_Object *prefs,
- const char *name);
-
-/**
- * "Swallows" an object into a SWALLOW item of a prefs widget.
- *
- * @param obj A valid prefs widget handle
- * @param name the name of the SWALLOW item (as declared in the prefs
- * collection)
- * @param child The object to occupy the item
- * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
- *
- * @see elm_prefs_item_swallow() for more details
- *
- * @since 1.8
- */
-EAPI Eina_Bool elm_prefs_item_swallow(Evas_Object *obj,
- const char *name,
- Evas_Object *child);
-
-/**
- * Unswallow an object from a SWALLOW item of a prefs widget.
- *
- * @param obj A valid prefs widget handle
- * @param name the name of the SWALLOW item (as declared in the prefs
- * collection)
- * @return The unswallowed object, or NULL on errors
- *
- * @see elm_prefs_item_unswallow() for more details
- *
- * @since 1.8
- */
-EAPI Evas_Object *elm_prefs_item_unswallow(Evas_Object *obj,
- const char *name);
-
-/* API for prefs interface modules, from now on */
-
-typedef struct _Elm_Prefs_Item_Spec_Void
-{
-} Elm_Prefs_Item_Spec_Void;
-
-typedef struct _Elm_Prefs_Item_Spec_Bool
-{
- Eina_Bool def;
-} Elm_Prefs_Item_Spec_Bool;
-
-typedef struct _Elm_Prefs_Item_Spec_Int
-{
- int def, min, max;
-} Elm_Prefs_Item_Spec_Int;
-
-typedef struct _Elm_Prefs_Item_Spec_Float
-{
- float def, min, max;
-} Elm_Prefs_Item_Spec_Float;
-
-typedef struct _Elm_Prefs_Item_Spec_String
-{
- const char *def;
- const char *placeholder;
- const char *accept;
- const char *deny;
-
- struct
- {
- int min, max;
- } length;
-} Elm_Prefs_Item_Spec_String;
-
-typedef struct _Elm_Prefs_Item_Spec_Date
-{
- struct
- {
- unsigned char d; /* day*/
- unsigned char m; /* month*/
- unsigned short y; /* year */
- } def;
-
- struct
- {
- unsigned char d; /* day*/
- unsigned char m; /* month*/
- unsigned short y; /* year */
- } min;
-
- struct
- {
- unsigned char d; /* day*/
- unsigned char m; /* month*/
- unsigned short y; /* year */
- } max;
-} Elm_Prefs_Item_Spec_Date;
-
-typedef struct _Elm_Prefs_Item_Spec_Page
-{
- const char *source;
-} Elm_Prefs_Item_Spec_Page;
-
-typedef union _Elm_Prefs_Item_Spec
-{
- Elm_Prefs_Item_Spec_Void v;
- Elm_Prefs_Item_Spec_Bool b;
- Elm_Prefs_Item_Spec_Int i;
- Elm_Prefs_Item_Spec_Float f;
- Elm_Prefs_Item_Spec_String s;
- Elm_Prefs_Item_Spec_Date d;
- Elm_Prefs_Item_Spec_Page p;
-} Elm_Prefs_Item_Spec;
-
-typedef struct _Elm_Prefs_Item_Iface Elm_Prefs_Item_Iface;
-
-/**
- * Convenience struct used to mass-register widgets implementing
- * prefs @b items interfaces.
- *
- * To be used with elm_prefs_item_iface_register() and
- * elm_prefs_item_iface_unregister().
- */
-struct _Elm_Prefs_Item_Iface_Info
-{
- const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */
- const Elm_Prefs_Item_Iface *info; /**< The type interface's implementation. */
-};
-typedef struct _Elm_Prefs_Item_Iface_Info Elm_Prefs_Item_Iface_Info;
-
-typedef void (*Elm_Prefs_Item_Changed_Cb)(Evas_Object *it_obj); /**< Elementary prefs' item widget changed function signature */
-
-/**
- * @struct _Elm_Prefs_Item_Iface
- *
- * @brief Interface between items of the @ref elm-prefs-widget widget
- * and the real widgets implementing them.
- *
- * This structure defines the interface between the
- * @ref elm-prefs-widget widget's items (all item types in Elementary prefs
- * collections but the @c PAGE one) and Elementary widgets
- * implementing them. @c add() is the only mandatory function an
- * item widget has to implement.
- *
- * @note For items of type @c PAGE, refer to #Elm_Prefs_Page_Iface.
- *
- * @since 1.8
- */
-struct _Elm_Prefs_Item_Iface
-{
-#define ELM_PREFS_ITEM_IFACE_ABI_VERSION (1)
- unsigned int abi_version; /**< always use:
- * - #ELM_PREFS_ITEM_IFACE_ABI_VERSION to declare.
- * - elm_prefs_widget_iface_abi_version_get() to check.
- */
-
- const Elm_Prefs_Item_Type *types; /**< types of prefs items supported by the widget, #ELM_PREFS_TYPE_UNKNOWN terminated */
-
- Evas_Object * (*add)(const Elm_Prefs_Item_Iface * iface,
- Evas_Object * prefs,
- const Elm_Prefs_Item_Type type,
- const Elm_Prefs_Item_Spec spec,
- Elm_Prefs_Item_Changed_Cb it_changed_cb); /**< Function to instantiate the item widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Item_Node handle accessible via a @c "prefs_item" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */
-
- Eina_Bool (*value_set)(Evas_Object *obj,
- Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b horizontal one */
-
- Eina_Bool (*value_get)(Evas_Object *obj,
- Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b vertical one */
-
- Eina_Bool (*value_validate)(Evas_Object *obj); /** < Function to validate the value from the item widget before saving it. The return value of the following function should be @c EINA_TRUE, if the value conforms with the expected or @c EINA_FALSE, otherwise. */
-
- Eina_Bool (*label_set)(Evas_Object *obj,
- const char *label); /**< function to set a label on the item widget */
-
- Eina_Bool (*icon_set)(Evas_Object *obj,
- const char *icon); /**< function to set an icon on the item widget */
-
- Eina_Bool (*editable_set)(Evas_Object *obj,
- Eina_Bool val); /**< function to set an item widget as editable or not */
-
- Eina_Bool (*editable_get)(Evas_Object *obj); /**< function to retrieve whether an item widget is editable or not */
-
- Eina_Bool (*expand_want)(Evas_Object *obj); /**< function to get wether the item implementation needs to be expanded in the page's longitudinal axis or not */
-};
-
-/**
- * Mass-register widgets implementing prefs @b items interfaces.
- *
- * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
- * terminated.
- *
- * This will register all item interfaces declared on @a array in
- * Elementary, so that the prefs widget will recognize them on @c .epc
- * files @c 'widget:' (item) declarations.
- *
- * @see elm_prefs_item_iface_unregister()
- *
- * @since 1.8
- */
-EAPI void elm_prefs_item_iface_register(const Elm_Prefs_Item_Iface_Info *array);
-
-/**
- * Mass-unregister widgets implementing prefs @b items interfaces.
- *
- * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
- * terminated.
- *
- * This will unregister all item interfaces declared on @a array in
- * Elementary, given they had been previously registered.
- *
- * @see elm_prefs_item_iface_register() for more details
- *
- * @since 1.8
- */
-EAPI void elm_prefs_item_iface_unregister(const Elm_Prefs_Item_Iface_Info *array);
-
-EAPI Eina_Bool elm_prefs_item_widget_common_add(Evas_Object *prefs,
- Evas_Object *obj);
-
-typedef struct _Elm_Prefs_Page_Iface Elm_Prefs_Page_Iface;
-
-/**
- * Convenience struct used to mass-register widgets implementing
- * prefs @b pages interfaces.
- *
- * To be used with elm_prefs_page_iface_register() and
- * elm_prefs_page_iface_unregister().
- */
-struct _Elm_Prefs_Page_Iface_Info
-{
- const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */
- const Elm_Prefs_Page_Iface *info; /**< The interface's implementation. */
-};
-typedef struct _Elm_Prefs_Page_Iface_Info Elm_Prefs_Page_Iface_Info;
-
-/**
- * @struct _Elm_Prefs_Page_Iface
- *
- * @brief Interface between pages of the @ref elm-prefs-widget widget
- * and the real widgets implementing them.
- *
- * This structure defines the interface between the
- * @ref elm-prefs-widget widget's pages and Elementary widgets
- * implementing them.
- *
- * It is @b mandatory that the following functions be implemented, at
- * least, for a page widget:
- *
- * - #Elm_Prefs_Page_Iface::add
- * - #Elm_Prefs_Page_Iface::item_pack
- * - #Elm_Prefs_Page_Iface::item_unpack
- * - #Elm_Prefs_Page_Iface::item_pack_before
- * - #Elm_Prefs_Page_Iface::item_pack_after
- *
- * @note For regular, non-page prefs items, refer to #Elm_Prefs_Item_Iface.
- *
- * @since 1.8
- */
-struct _Elm_Prefs_Page_Iface
-{
-#define ELM_PREFS_PAGE_IFACE_ABI_VERSION (1)
- unsigned int abi_version; /**< always use:
- * - #ELM_PREFS_PAGE_IFACE_ABI_VERSION to declare.
- * - elm_prefs_widget_iface_abi_version_get() to check.
- */
-
- Evas_Object * (*add)(const Elm_Prefs_Page_Iface * iface,
- Evas_Object * prefs); /**< Function to instantiate the page widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Page_Node handle accessible via a @c "prefs_page" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */
-
- Eina_Bool (*title_set)(Evas_Object *obj,
- const char *title); /**< function to set a title on the page widget */
-
- Eina_Bool (*sub_title_set)(Evas_Object *obj,
- const char *sub_title); /**< function to set a sub-title on the page widget */
-
- Eina_Bool (*icon_set)(Evas_Object *obj,
- const char *icon); /**< function to set an icon on the page widget */
-
- Eina_Bool (*item_pack)(Evas_Object *obj,
- Evas_Object *it,
- const Elm_Prefs_Item_Type type,
- const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget */
-
-
- Eina_Bool (*item_unpack)(Evas_Object *obj,
- Evas_Object *it); /**< function to unpack an item (widget) on the page widget */
-
- Eina_Bool (*item_pack_before)(Evas_Object *obj,
- Evas_Object *it,
- Evas_Object *it_before,
- const Elm_Prefs_Item_Type type,
- const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget, before a pre-existing, referential, packed one */
-
- Eina_Bool (*item_pack_after)(Evas_Object *obj,
- Evas_Object *it,
- Evas_Object *it_after, /**< function to pack an item (widget) on the page widget, after a pre-existing, referential, packed one */
- const Elm_Prefs_Item_Type type,
- const Elm_Prefs_Item_Iface *iface);
-};
-
-/**
- * Mass-register widgets implementing prefs @b pages interfaces.
- *
- * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
- * terminated.
- *
- * This will register all page interfaces declared on @a array in
- * Elementary, so that the prefs widget will recognize them on @c .epc
- * files @c 'widget:' (page) declarations.
- *
- * @see elm_prefs_page_iface_unregister()
- *
- * @since 1.8
- */
-EAPI void elm_prefs_page_iface_register(const Elm_Prefs_Page_Iface_Info *array);
-
-/**
- * Mass-unregister widgets implementing prefs @b pages interfaces.
- *
- * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
- * terminated.
- *
- * This will unregister all page interfaces declared on @a array in
- * Elementary, given they had been previously registered.
- *
- * @see elm_prefs_page_iface_register() for more details
- *
- * @since 1.8
- */
-EAPI void elm_prefs_page_iface_unregister(const Elm_Prefs_Page_Iface_Info *array);
-
-EAPI Eina_Bool elm_prefs_page_widget_common_add(Evas_Object *prefs,
- Evas_Object *obj);
-
+#include "elm_prefs_common.h"
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_prefs_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_prefs_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_prefs_common.h b/src/lib/elm_prefs_common.h
new file mode 100644
index 000000000..70f063aaa
--- /dev/null
+++ b/src/lib/elm_prefs_common.h
@@ -0,0 +1,316 @@
+/**
+ * Modes of resetting a prefs widget.
+ *
+ * @see elm_prefs_reset()
+ *
+ * @since 1.8
+ */
+typedef enum
+{
+ ELM_PREFS_RESET_DEFAULTS, /** reset to default values, declared in its @b .epb file */
+ ELM_PREFS_RESET_LAST /** prefs will keep a small history of changes, so this resets back to last batch of changes on the UI elements. it does @b not work on autosave mode */
+} Elm_Prefs_Reset_Mode;
+
+/**
+ * @brief Add a new prefs widget
+ *
+ * @param parent The parent widget to hold the new one
+ * @return The new object or @c NULL, on errors
+ *
+ * @since 1.8
+ */
+EAPI Evas_Object *elm_prefs_add(Evas_Object *parent);
+
+
+/* API for prefs interface modules, from now on */
+
+typedef struct _Elm_Prefs_Item_Spec_Void
+{
+} Elm_Prefs_Item_Spec_Void;
+
+typedef struct _Elm_Prefs_Item_Spec_Bool
+{
+ Eina_Bool def;
+} Elm_Prefs_Item_Spec_Bool;
+
+typedef struct _Elm_Prefs_Item_Spec_Int
+{
+ int def, min, max;
+} Elm_Prefs_Item_Spec_Int;
+
+typedef struct _Elm_Prefs_Item_Spec_Float
+{
+ float def, min, max;
+} Elm_Prefs_Item_Spec_Float;
+
+typedef struct _Elm_Prefs_Item_Spec_String
+{
+ const char *def;
+ const char *placeholder;
+ const char *accept;
+ const char *deny;
+
+ struct
+ {
+ int min, max;
+ } length;
+} Elm_Prefs_Item_Spec_String;
+
+typedef struct _Elm_Prefs_Item_Spec_Date
+{
+ struct
+ {
+ unsigned char d; /* day*/
+ unsigned char m; /* month*/
+ unsigned short y; /* year */
+ } def;
+
+ struct
+ {
+ unsigned char d; /* day*/
+ unsigned char m; /* month*/
+ unsigned short y; /* year */
+ } min;
+
+ struct
+ {
+ unsigned char d; /* day*/
+ unsigned char m; /* month*/
+ unsigned short y; /* year */
+ } max;
+} Elm_Prefs_Item_Spec_Date;
+
+typedef struct _Elm_Prefs_Item_Spec_Page
+{
+ const char *source;
+} Elm_Prefs_Item_Spec_Page;
+
+typedef union _Elm_Prefs_Item_Spec
+{
+ Elm_Prefs_Item_Spec_Void v;
+ Elm_Prefs_Item_Spec_Bool b;
+ Elm_Prefs_Item_Spec_Int i;
+ Elm_Prefs_Item_Spec_Float f;
+ Elm_Prefs_Item_Spec_String s;
+ Elm_Prefs_Item_Spec_Date d;
+ Elm_Prefs_Item_Spec_Page p;
+} Elm_Prefs_Item_Spec;
+
+typedef struct _Elm_Prefs_Item_Iface Elm_Prefs_Item_Iface;
+
+/**
+ * Convenience struct used to mass-register widgets implementing
+ * prefs @b items interfaces.
+ *
+ * To be used with elm_prefs_item_iface_register() and
+ * elm_prefs_item_iface_unregister().
+ */
+struct _Elm_Prefs_Item_Iface_Info
+{
+ const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */
+ const Elm_Prefs_Item_Iface *info; /**< The type interface's implementation. */
+};
+typedef struct _Elm_Prefs_Item_Iface_Info Elm_Prefs_Item_Iface_Info;
+
+typedef void (*Elm_Prefs_Item_Changed_Cb)(Evas_Object *it_obj); /**< Elementary prefs' item widget changed function signature */
+
+/**
+ * @struct _Elm_Prefs_Item_Iface
+ *
+ * @brief Interface between items of the @ref elm-prefs-widget widget
+ * and the real widgets implementing them.
+ *
+ * This structure defines the interface between the
+ * @ref elm-prefs-widget widget's items (all item types in Elementary prefs
+ * collections but the @c PAGE one) and Elementary widgets
+ * implementing them. @c add() is the only mandatory function an
+ * item widget has to implement.
+ *
+ * @note For items of type @c PAGE, refer to #Elm_Prefs_Page_Iface.
+ *
+ * @since 1.8
+ */
+struct _Elm_Prefs_Item_Iface
+{
+#define ELM_PREFS_ITEM_IFACE_ABI_VERSION (1)
+ unsigned int abi_version; /**< always use:
+ * - #ELM_PREFS_ITEM_IFACE_ABI_VERSION to declare.
+ * - elm_prefs_widget_iface_abi_version_get() to check.
+ */
+
+ const Elm_Prefs_Item_Type *types; /**< types of prefs items supported by the widget, #ELM_PREFS_TYPE_UNKNOWN terminated */
+
+ Evas_Object * (*add)(const Elm_Prefs_Item_Iface * iface,
+ Evas_Object * prefs,
+ const Elm_Prefs_Item_Type type,
+ const Elm_Prefs_Item_Spec spec,
+ Elm_Prefs_Item_Changed_Cb it_changed_cb); /**< Function to instantiate the item widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Item_Node handle accessible via a @c "prefs_item" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */
+
+ Eina_Bool (*value_set)(Evas_Object *obj,
+ Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b horizontal one */
+
+ Eina_Bool (*value_get)(Evas_Object *obj,
+ Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b vertical one */
+
+ Eina_Bool (*value_validate)(Evas_Object *obj); /** < Function to validate the value from the item widget before saving it. The return value of the following function should be @c EINA_TRUE, if the value conforms with the expected or @c EINA_FALSE, otherwise. */
+
+ Eina_Bool (*label_set)(Evas_Object *obj,
+ const char *label); /**< function to set a label on the item widget */
+
+ Eina_Bool (*icon_set)(Evas_Object *obj,
+ const char *icon); /**< function to set an icon on the item widget */
+
+ Eina_Bool (*editable_set)(Evas_Object *obj,
+ Eina_Bool val); /**< function to set an item widget as editable or not */
+
+ Eina_Bool (*editable_get)(Evas_Object *obj); /**< function to retrieve whether an item widget is editable or not */
+
+ Eina_Bool (*expand_want)(Evas_Object *obj); /**< function to get wether the item implementation needs to be expanded in the page's longitudinal axis or not */
+};
+
+/**
+ * Mass-register widgets implementing prefs @b items interfaces.
+ *
+ * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
+ * terminated.
+ *
+ * This will register all item interfaces declared on @a array in
+ * Elementary, so that the prefs widget will recognize them on @c .epc
+ * files @c 'widget:' (item) declarations.
+ *
+ * @see elm_prefs_item_iface_unregister()
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_item_iface_register(const Elm_Prefs_Item_Iface_Info *array);
+
+/**
+ * Mass-unregister widgets implementing prefs @b items interfaces.
+ *
+ * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
+ * terminated.
+ *
+ * This will unregister all item interfaces declared on @a array in
+ * Elementary, given they had been previously registered.
+ *
+ * @see elm_prefs_item_iface_register() for more details
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_item_iface_unregister(const Elm_Prefs_Item_Iface_Info *array);
+
+EAPI Eina_Bool elm_prefs_item_widget_common_add(Evas_Object *prefs,
+ Evas_Object *obj);
+
+typedef struct _Elm_Prefs_Page_Iface Elm_Prefs_Page_Iface;
+
+/**
+ * Convenience struct used to mass-register widgets implementing
+ * prefs @b pages interfaces.
+ *
+ * To be used with elm_prefs_page_iface_register() and
+ * elm_prefs_page_iface_unregister().
+ */
+struct _Elm_Prefs_Page_Iface_Info
+{
+ const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */
+ const Elm_Prefs_Page_Iface *info; /**< The interface's implementation. */
+};
+typedef struct _Elm_Prefs_Page_Iface_Info Elm_Prefs_Page_Iface_Info;
+
+/**
+ * @struct _Elm_Prefs_Page_Iface
+ *
+ * @brief Interface between pages of the @ref elm-prefs-widget widget
+ * and the real widgets implementing them.
+ *
+ * This structure defines the interface between the
+ * @ref elm-prefs-widget widget's pages and Elementary widgets
+ * implementing them.
+ *
+ * It is @b mandatory that the following functions be implemented, at
+ * least, for a page widget:
+ *
+ * - #Elm_Prefs_Page_Iface::add
+ * - #Elm_Prefs_Page_Iface::item_pack
+ * - #Elm_Prefs_Page_Iface::item_unpack
+ * - #Elm_Prefs_Page_Iface::item_pack_before
+ * - #Elm_Prefs_Page_Iface::item_pack_after
+ *
+ * @note For regular, non-page prefs items, refer to #Elm_Prefs_Item_Iface.
+ *
+ * @since 1.8
+ */
+struct _Elm_Prefs_Page_Iface
+{
+#define ELM_PREFS_PAGE_IFACE_ABI_VERSION (1)
+ unsigned int abi_version; /**< always use:
+ * - #ELM_PREFS_PAGE_IFACE_ABI_VERSION to declare.
+ * - elm_prefs_widget_iface_abi_version_get() to check.
+ */
+
+ Evas_Object * (*add)(const Elm_Prefs_Page_Iface * iface,
+ Evas_Object * prefs); /**< Function to instantiate the page widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Page_Node handle accessible via a @c "prefs_page" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */
+
+ Eina_Bool (*title_set)(Evas_Object *obj,
+ const char *title); /**< function to set a title on the page widget */
+
+ Eina_Bool (*sub_title_set)(Evas_Object *obj,
+ const char *sub_title); /**< function to set a sub-title on the page widget */
+
+ Eina_Bool (*icon_set)(Evas_Object *obj,
+ const char *icon); /**< function to set an icon on the page widget */
+
+ Eina_Bool (*item_pack)(Evas_Object *obj,
+ Evas_Object *it,
+ const Elm_Prefs_Item_Type type,
+ const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget */
+
+
+ Eina_Bool (*item_unpack)(Evas_Object *obj,
+ Evas_Object *it); /**< function to unpack an item (widget) on the page widget */
+
+ Eina_Bool (*item_pack_before)(Evas_Object *obj,
+ Evas_Object *it,
+ Evas_Object *it_before,
+ const Elm_Prefs_Item_Type type,
+ const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget, before a pre-existing, referential, packed one */
+
+ Eina_Bool (*item_pack_after)(Evas_Object *obj,
+ Evas_Object *it,
+ Evas_Object *it_after, /**< function to pack an item (widget) on the page widget, after a pre-existing, referential, packed one */
+ const Elm_Prefs_Item_Type type,
+ const Elm_Prefs_Item_Iface *iface);
+};
+
+/**
+ * Mass-register widgets implementing prefs @b pages interfaces.
+ *
+ * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
+ * terminated.
+ *
+ * This will register all page interfaces declared on @a array in
+ * Elementary, so that the prefs widget will recognize them on @c .epc
+ * files @c 'widget:' (page) declarations.
+ *
+ * @see elm_prefs_page_iface_unregister()
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_page_iface_register(const Elm_Prefs_Page_Iface_Info *array);
+
+/**
+ * Mass-unregister widgets implementing prefs @b pages interfaces.
+ *
+ * @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
+ * terminated.
+ *
+ * This will unregister all page interfaces declared on @a array in
+ * Elementary, given they had been previously registered.
+ *
+ * @see elm_prefs_page_iface_register() for more details
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_page_iface_unregister(const Elm_Prefs_Page_Iface_Info *array);
+
diff --git a/src/lib/elm_prefs_eo.h b/src/lib/elm_prefs_eo.h
new file mode 100644
index 000000000..72ebcc389
--- /dev/null
+++ b/src/lib/elm_prefs_eo.h
@@ -0,0 +1,349 @@
+#define ELM_OBJ_PREFS_CLASS elm_obj_prefs_class_get()
+
+const Eo_Class *elm_obj_prefs_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_PREFS_BASE_ID;
+
+enum
+{
+ ELM_OBJ_PREFS_SUB_ID_FILE_SET,
+ ELM_OBJ_PREFS_SUB_ID_FILE_GET,
+ ELM_OBJ_PREFS_SUB_ID_DATA_SET,
+ ELM_OBJ_PREFS_SUB_ID_DATA_GET,
+ ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET,
+ ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET,
+ ELM_OBJ_PREFS_SUB_ID_RESET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW,
+ ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW,
+ ELM_OBJ_PREFS_SUB_ID_LAST
+};
+
+#define ELM_OBJ_PREFS_ID(sub_id) (ELM_OBJ_PREFS_BASE_ID + sub_id)
+
+/**
+ * @def elm_obj_prefs_file_set
+ *
+ * Set file and page to populate a given prefs widget's interface.
+ *
+ * @param[in] file
+ * @param[in] page
+ * @param[out] ret
+ *
+ * @see elm_prefs_file_set()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_file_set(file, page, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_SET), \
+ EO_TYPECHECK(const char *, file), \
+ EO_TYPECHECK(const char *, page), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_prefs_file_get
+ *
+ * Retrieve file and page bound to a given prefs widget.
+ *
+ * @param[out] file
+ * @param[out] page
+ * @param[out] ret
+ *
+ * @see elm_prefs_file_get()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_file_get(file, page, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_GET), \
+ EO_TYPECHECK(const char **, file), \
+ EO_TYPECHECK(const char **, page), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_prefs_data_set
+ *
+ * Set user data for a given prefs widget
+ *
+ * @param[in] data
+ * @param[out] ret
+ *
+ * @see elm_prefs_data_set()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_data_set(data, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_SET), \
+ EO_TYPECHECK(Elm_Prefs_Data *, data), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+//FIXME: prefs_data == eobject?
+
+/**
+ * @def elm_obj_prefs_data_get
+ *
+ * Retrieve user data for a given prefs widget
+ *
+ * @param[out] ret
+ *
+ * @see elm_prefs_data_get()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_data_get(ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_GET), \
+ EO_TYPECHECK(Elm_Prefs_Data **, ret)
+
+/**
+ * @def elm_obj_prefs_autosave_set
+ *
+ * Set whether a given prefs widget should save its values back (on
+ * the user data file, if set) automatically on every UI element
+ * changes.
+ *
+ * @param[in] autosave
+ *
+ * @see elm_prefs_autosave_get()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_autosave_set(autosave) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET), \
+ EO_TYPECHECK(Eina_Bool, autosave)
+
+/**
+ * @def elm_obj_prefs_autosave_get
+ *
+ * Get whether a given prefs widget is saving its values back
+ * automatically on changes.
+ *
+ * @param[out] ret
+ *
+ * @see elm_prefs_autosave_set()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_autosave_get(ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_prefs_reset
+ *
+ * Reset the values of a given prefs widget to a previous state.
+ *
+ * @param[in] mode
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_reset(mode) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_RESET), \
+ EO_TYPECHECK(Elm_Prefs_Reset_Mode, mode)
+
+/**
+ * @def elm_obj_prefs_item_value_set
+ *
+ * Set the value on a given prefs widget's item.
+ *
+ * @param[in] name
+ * @param[in] value
+ * @param[out] ret
+ *
+ * @see elm_prefs_item_value_get()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_value_set(name, value, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(const Eina_Value *, value), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_prefs_item_value_get
+ *
+ * Retrieve the value of a given prefs widget's item.
+ *
+ * @param[in] name
+ * @param[out] value
+ * @param[out] ret
+ *
+ * @see elm_prefs_item_value_set()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_value_get(name, value, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(Eina_Value *, value), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_prefs_item_object_get
+ *
+ * Retrieve the Elementary widget bound to a given prefs widget's
+ * item.
+ *
+ * @param[in] name
+ * @param[out] ret
+ *
+ * @see elm_prefs_item_value_get()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_object_get(name, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(const Evas_Object **, ret) //FIXME: return EObject?
+
+/**
+ * @def elm_obj_prefs_item_visible_set
+ *
+ * Set whether the widget bound to given prefs widget's item should be
+ * visible or not.
+ *
+ * @param[in] name
+ * @param[in] visible
+ *
+ * @see elm_prefs_item_visible_set()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_visible_set(name, visible) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(Eina_Bool, visible)
+
+/**
+ * @def elm_obj_prefs_item_visible_get
+ *
+ * Retrieve whether the widget bound to a given prefs widget's item is
+ * visible or not.
+ *
+ * @param[in] name
+ * @param[out] ret
+ *
+ * @see elm_prefs_item_visible_get()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_visible_get(name, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET), \
+ EO_TYPECHECK(const char *,name), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_prefs_item_disabled_set
+ *
+ * Set whether the widget bound to a given prefs widget's item is
+ * disabled or not.
+ *
+ * @param[in] name
+ * @param[in] disabled
+ *
+ * @see elm_prefs_item_disabled_set()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_disabled_set(name, disabled) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(Eina_Bool, disabled)
+
+/**
+ * @def elm_obj_prefs_item_disabled_get
+ *
+ * Retrieve whether the widget bound to a given prefs widget's item is
+ * disabled or not.
+ *
+ * @param[in] name
+ * @param[out] ret
+ *
+ * @see elm_prefs_item_disabled_get()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_disabled_get(name, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_prefs_item_editable_set
+ *
+ * Set whether the widget bound to a given prefs widget's item is
+ * editable or not.
+ *
+ * @param[in] name
+ * @param[in] editable
+ *
+ * @see elm_prefs_item_editable_set()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_editable_set(name, editable) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(Eina_Bool, editable)
+
+/**
+ * @def elm_obj_prefs_item_editable_get
+ *
+ * Retrieve whether the widget bound to a given prefs widget's item is
+ * editable or not.
+ *
+ * @param[in] name
+ * @param[out] ret
+ *
+ * @see elm_prefs_item_editable_get()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_editable_get(name, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_prefs_item_swallow
+ *
+ * "Swallows" an object into a SWALLOW item of a prefs widget.
+ *
+ * @param[in] name
+ * @param[in] child
+ * @param[out] ret
+ *
+ * @see elm_prefs_item_swallow()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_swallow(name, child, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW), \
+ EO_TYPECHECK(const char *, name), \
+ EO_TYPECHECK(Evas_Object *, child), \
+ EO_TYPECHECK(Eina_Bool *, ret)
+//FIXME: child == EObject?
+
+/**
+ * @def elm_obj_prefs_item_unswallow
+ *
+ * Unswallow an object from a SWALLOW item of a prefs widget.
+ *
+ * @param[in] name
+ * @param[out] ret
+ *
+ * @see elm_prefs_item_unswallow()
+ *
+ * @since 1.8
+ */
+#define elm_obj_prefs_item_unswallow(name, ret) \
+ ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW), \
+ EO_TYPECHECK(const char *,name), \
+ EO_TYPECHECK(Evas_Object **, ret)
+//FIXME: ret == EObject?
diff --git a/src/lib/elm_prefs_legacy.h b/src/lib/elm_prefs_legacy.h
new file mode 100644
index 000000000..9638e4fb6
--- /dev/null
+++ b/src/lib/elm_prefs_legacy.h
@@ -0,0 +1,368 @@
+EAPI Eina_Bool elm_prefs_page_widget_common_add(Evas_Object *prefs,
+ Evas_Object *obj);
+/**
+ * Set file and page to populate a given prefs widget's interface.
+ *
+ * @param o A prefs widget handle
+ * @param file The @b .epb (binary) file to get contents from
+ * @param page The page, inside @a file, where to get item contents from
+ * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+ *
+ * Elm prefs widgets start blank, with no child widgets. It's meant to
+ * have its viewport populated with child elements coming from a
+ * declaration file. That file (usually with @b .epb extension), is a
+ * binary format (Eet) one, coming from a human-readable textual
+ * declaration. This textual form (usually with @b .epc extension) is
+ * translated to the binary form by means of the @b prefs_cc compiler.
+ *
+ * With this function, one thus populates a prefs widget with UI
+ * elements.
+ *
+ * If @a file is @c NULL, "elm_app_data_dir_get()/preferences.epb"
+ * will be used, by default. If @a file is a @b relative path, the
+ * prefix "elm_app_data_dir_get()/" will be implicitly used with it.
+ * If @a page is @c NULL, it is considered "main", as default.
+ *
+ * @warning If your binary is not properly installed and
+ * elm_app_data_dir_get() can't be figured out, a fallback value of
+ * "." will be tryed, instead.
+ *
+ * @see elm_prefs_file_get()
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_file_set(Evas_Object *o,
+ const char *file,
+ const char *page);
+
+/**
+ * Retrieve file and page bound to a given prefs widget.
+ *
+ * @param o A prefs widget handle
+ * @param file Where to store the file @a o is bound to
+ * @param page Where to store the page @a o is bound to
+ * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+ *
+ * @note Use @c NULL pointers on the components you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_prefs_file_set() for more information
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_file_get(const Evas_Object *o,
+ const char **file,
+ const char **page);
+/**
+ * Set user data for a given prefs widget
+ *
+ * @param obj A prefs widget handle
+ * @param prefs_data A valid prefs_data handle
+ * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+ *
+ * Once a prefs widget is created, after elm_prefs_file_set() is
+ * issued on it, all of its UI elements will get default values, when
+ * declared on that file. To fetch an user's own, personal set of
+ * those values, one gets to pair a <b>prefs data</b> handle to the
+ * prefs widget. This is what this call is intended for.
+ *
+ * Prefs data values from @a prefs_data with keys matching the ones
+ * present on the file passed on elm_prefs_file_set() to @a obj will
+ * have their values applied to the respective UI elements of the
+ * widget.
+ *
+ * When @a obj dies, the values of the elements declared on its @b
+ * .epb file (the one set on elm_prefs_file_set()) marked as permanent
+ * <b>will be written back</b> to @a prefs_data, if it is writable.
+ * One is also able to make this writing event to take place
+ * automatically after each UI element modification by using
+ * elm_prefs_autosave_set().
+ *
+ * @note @a obj will keep a reference of its own for @a prefs_data,
+ * but you should still unreference it by yourself, after the widget
+ * is gone.
+ *
+ * @see elm_prefs_data_get()
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_data_set(Evas_Object *obj,
+ Elm_Prefs_Data *data);
+
+/**
+ * Retrieve user data for a given prefs widget
+ *
+ * @param obj A prefs widget handle
+ * @param prefs_data A valid prefs_data handle
+ * @return A pointer to the user data of a given prefs widget on success.
+ * @c NULL otherwise.
+ *
+ * @see elm_prefs_data_set() for more details
+ *
+ * @since 1.8
+ */
+EAPI Elm_Prefs_Data *elm_prefs_data_get(const Evas_Object *o);
+
+/**
+ * Set whether a given prefs widget should save its values back (on
+ * the user data file, if set) automatically on every UI element
+ * changes.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param autosave @c EINA_TRUE to save automatically, @c EINA_FALSE
+ * otherwise.
+ *
+ * If @a autosave is @c EINA_TRUE, every call to
+ * elm_prefs_item_value_set(), every
+ * Elm_Prefs_Data_Event_Type::ELM_PREFS_DATA_EVENT_ITEM_CHANGED event
+ * coming for its prefs data and every UI element direct value
+ * changing will implicitly make the prefs values to be flushed back
+ * to it prefs data. If a prefs data handle with no writing
+ * permissions or no prefs data is set on @a prefs, naturally nothing
+ * will happen.
+ *
+ * @see elm_prefs_autosave_get()
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_autosave_set(Evas_Object *prefs,
+ Eina_Bool autosave);
+
+/**
+ * Get whether a given prefs widget is saving its values back
+ * automatically on changes.
+ *
+ * @param prefs A valid prefs widget handle
+ * @return @c EINA_TRUE if @a prefs is saving automatically,
+ * @c EINA_FALSE otherwise.
+ *
+ * @see elm_prefs_autosave_set(), for more details
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_autosave_get(const Evas_Object *prefs);
+
+/**
+ * Reset the values of a given prefs widget to a previous state.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param mode The reset mode to apply on @a prefs
+ *
+ * As can be seen on #Elm_Prefs_Reset_Mode, there are two possible
+ * actions to be taken by this call -- either to reset @a prefs'
+ * values to the defaults (declared on the @c .epb file it is bound
+ * to) or to reset to the state they were before the last modification
+ * it got.
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_reset(Evas_Object *prefs,
+ Elm_Prefs_Reset_Mode mode);
+
+/**
+ * Set the value on a given prefs widget's item.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection)
+ * @param value The value to set on the item. It should be typed as
+ * the item expects, preferably, or a conversion will
+ * take place
+ * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+ *
+ * This will change the value of item named @a name programatically.
+ *
+ * @see elm_prefs_item_value_get()
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_item_value_set(Evas_Object *prefs,
+ const char *name,
+ const Eina_Value *value);
+
+/**
+ * Retrieve the value of a given prefs widget's item.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection) to get value from
+ * @param value Where to store the value of the item. It will be
+ * overwritten and setup with the type the item
+ * is bound to
+ * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+ *
+ * This will retrieve the value of item named @a name.
+ *
+ * @see elm_prefs_item_value_set()
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_item_value_get(const Evas_Object *prefs,
+ const char *name,
+ Eina_Value *value);
+/**
+ * Retrieve the Elementary widget bound to a given prefs widget's
+ * item.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection) to get object from
+ * @return A valid widget handle, on success, or @c NULL, otherwise
+ *
+ * This will retrieve a handle to the real widget implementing a given
+ * item of @a prefs, <b>for read-only</b> actions.
+ *
+ * @warning You should @b never modify the state of the returned
+ * widget, because it's meant to be managed by @a prefs, solely.
+ *
+ * @see elm_prefs_item_value_set()
+ *
+ * @since 1.8
+ */
+EAPI const Evas_Object *elm_prefs_item_object_get(Evas_Object *prefs,
+ const char *name);
+
+/**
+ * Set whether the widget bound to given prefs widget's item should be
+ * visible or not.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection) to change visibility of
+ * @param visible @c EINA_TRUE, to make it visible, @c EINA_FALSE
+ * otherwise
+ *
+ * Each prefs item may have a default visibility state, declared on
+ * the @c .epb @a prefs it was loaded with. By this call one may alter
+ * that state, programatically.
+ *
+ * @see elm_prefs_item_visible_get()
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_item_visible_set(Evas_Object *prefs,
+ const char *name,
+ Eina_Bool visible);
+
+/**
+ * Retrieve whether the widget bound to a given prefs widget's item is
+ * visible or not.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection) to get visibility state from
+ * @return @c EINA_TRUE, if it is visible, @c EINA_FALSE
+ * otherwise
+ *
+ * @see elm_prefs_item_visible_set() for more details
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_item_visible_get(const Evas_Object *prefs,
+ const char *name);
+
+/**
+ * Set whether the widget bound to a given prefs widget's item is
+ * disabled or not.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection) to act on
+ * @param disabled @c EINA_TRUE, to make it disabled, @c EINA_FALSE
+ * otherwise
+ *
+ * @see elm_prefs_item_disabled_get()
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_item_disabled_set(Evas_Object *prefs,
+ const char *name,
+ Eina_Bool disabled);
+
+/**
+ * Retrieve whether the widget bound to a given prefs widget's item is
+ * disabled or not.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection) to get disabled state from
+ * @return @c EINA_TRUE, if it is disabled, @c EINA_FALSE
+ * otherwise
+ *
+ * @see elm_prefs_item_disabled_set()
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_item_disabled_get(const Evas_Object *prefs,
+ const char *name);
+
+/**
+ * Set whether the widget bound to a given prefs widget's item is
+ * editable or not.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection) to act on
+ * @param editable @c EINA_TRUE, to make it editable, @c EINA_FALSE
+ * otherwise
+ *
+ * @note Only @c TEXT or @c TEXTAREA items' default widgets implement
+ * the 'editable' property. Custom registered widgets may as well
+ * implement them.
+ *
+ * @see elm_prefs_item_editable_get()
+ *
+ * @since 1.8
+ */
+EAPI void elm_prefs_item_editable_set(Evas_Object *prefs,
+ const char *name,
+ Eina_Bool editable);
+
+/**
+ * Retrieve whether the widget bound to a given prefs widget's item is
+ * editable or not.
+ *
+ * @param prefs A valid prefs widget handle
+ * @param name The name of the item (as declared in the prefs
+ * collection) to get editable state from
+ * @return @c EINA_TRUE, if it is editable, @c EINA_FALSE
+ * otherwise
+ *
+ * @see elm_prefs_item_editable_set() for more details
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_item_editable_get(const Evas_Object *prefs,
+ const char *name);
+
+/**
+ * "Swallows" an object into a SWALLOW item of a prefs widget.
+ *
+ * @param obj A valid prefs widget handle
+ * @param name the name of the SWALLOW item (as declared in the prefs
+ * collection)
+ * @param child The object to occupy the item
+ * @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+ *
+ * @see elm_prefs_item_swallow() for more details
+ *
+ * @since 1.8
+ */
+EAPI Eina_Bool elm_prefs_item_swallow(Evas_Object *obj,
+ const char *name,
+ Evas_Object *child);
+
+/**
+ * Unswallow an object from a SWALLOW item of a prefs widget.
+ *
+ * @param obj A valid prefs widget handle
+ * @param name the name of the SWALLOW item (as declared in the prefs
+ * collection)
+ * @return The unswallowed object, or NULL on errors
+ *
+ * @see elm_prefs_item_unswallow() for more details
+ *
+ * @since 1.8
+ */
+EAPI Evas_Object *elm_prefs_item_unswallow(Evas_Object *obj,
+ const char *name);
diff --git a/src/lib/elm_progressbar.h b/src/lib/elm_progressbar.h
index c72706ece..797716c10 100644
--- a/src/lib/elm_progressbar.h
+++ b/src/lib/elm_progressbar.h
@@ -60,462 +60,12 @@
* @li @ref progressbar_example
*/
-#define ELM_OBJ_PROGRESSBAR_CLASS elm_obj_progressbar_class_get()
-
-const Eo_Class *elm_obj_progressbar_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_PROGRESSBAR_BASE_ID;
-
-typedef char *(*progressbar_func_type)(double);
-typedef void (*progressbar_freefunc_type)(char *);
-
-enum
-{
- ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE,
- ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET,
- ELM_OBJ_PROGRESSBAR_SUB_ID_LAST
-};
-
-#define ELM_OBJ_PROGRESSBAR_ID(sub_id) (ELM_OBJ_PROGRESSBAR_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_progressbar_pulse_set
- * @since 1.8
- *
- * Set whether a given progress bar widget is at "pulsing mode" or
- * not.
- *
- * @param[in] pulse
- *
- * @see elm_progressbar_pulse_set
- */
-#define elm_obj_progressbar_pulse_set(pulse) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET), EO_TYPECHECK(Eina_Bool, pulse)
-
-/**
- * @def elm_obj_progressbar_pulse_get
- * @since 1.8
- *
- * Get whether a given progress bar widget is at "pulsing mode" or
- * not.
- *
- * @param[out] ret
- *
- * @see elm_progressbar_pulse_get
- */
-#define elm_obj_progressbar_pulse_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_progressbar_pulse
- * @since 1.8
- *
- * Start/stop a given progress bar "pulsing" animation, if its
- * under that mode
- *
- * @param[in] state
- *
- * @see elm_progressbar_pulse
- */
-#define elm_obj_progressbar_pulse(state) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE), EO_TYPECHECK(Eina_Bool, state)
-
-/**
- * @def elm_obj_progressbar_value_set
- * @since 1.8
- *
- * Set the progress value (in percentage) on a given progress bar
- *
- * @param[in] val
- *
- * @see elm_progressbar_value_set
- */
-#define elm_obj_progressbar_value_set(val) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val)
-
-/**
- * @def elm_obj_progressbar_value_get
- * @since 1.8
- *
- * Get the progress value (in percentage) on a given progress bar
- *
- * @param[out] ret
- *
- * @see elm_progressbar_value_get
- */
-#define elm_obj_progressbar_value_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_progressbar_span_size_set
- * @since 1.8
- *
- * Set the (exact) length of the bar region of a given progress bar
- *
- * @param[in] size
- *
- * @see elm_progressbar_span_size_set
- */
-#define elm_obj_progressbar_span_size_set(size) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET), EO_TYPECHECK(Evas_Coord, size)
-
-/**
- * @def elm_obj_progressbar_span_size_get
- * @since 1.8
- *
- * Get the length set for the bar region of a given progress bar
- *
- * @param[out] ret
- *
- * @see elm_progressbar_span_size_get
- */
-#define elm_obj_progressbar_span_size_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET), EO_TYPECHECK(Evas_Coord *, ret)
-
-/**
- * @def elm_obj_progressbar_unit_format_set
- * @since 1.8
- *
- * Set the format string for a given progress bar widget's units
- *
- * @param[in] units
- *
- * @see elm_progressbar_unit_format_set
- */
-#define elm_obj_progressbar_unit_format_set(units) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET), EO_TYPECHECK(const char *, units)
-
-/**
- * @def elm_obj_progressbar_unit_format_get
- * @since 1.8
- *
- * Retrieve the format string set for a given progress bar widget's
- *
- * @param[out] ret
- *
- * @see elm_progressbar_unit_format_get
- */
-#define elm_obj_progressbar_unit_format_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_progressbar_unit_format_function_set
- * @since 1.8
- *
- * Set the format function pointer for the units label
- *
- * @param[in] func
- * @param[in] free_func
- *
- * @see elm_progressbar_unit_format_function_set
- */
-#define elm_obj_progressbar_unit_format_function_set(func, free_func) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET), EO_TYPECHECK(progressbar_func_type, func), EO_TYPECHECK(progressbar_freefunc_type, free_func)
-
-/**
- * @def elm_obj_progressbar_horizontal_set
- * @since 1.8
- *
- * Set the orientation of a given progress bar widget
- *
- * @param[in] horizontal
- *
- * @see elm_progressbar_horizontal_set
- */
-#define elm_obj_progressbar_horizontal_set(horizontal) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal)
-
-/**
- * @def elm_obj_progressbar_horizontal_get
- * @since 1.8
- *
- * Retrieve the orientation of a given progress bar widget
- *
- * @param[out] ret
- *
- * @see elm_progressbar_horizontal_get
- */
-#define elm_obj_progressbar_horizontal_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_progressbar_inverted_set
- * @since 1.8
- *
- * Invert a given progress bar widget's displaying values order
- *
- * @param[in] inverted
- *
- * @see elm_progressbar_inverted_set
- */
-#define elm_obj_progressbar_inverted_set(inverted) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET), EO_TYPECHECK(Eina_Bool, inverted)
-
-/**
- * @def elm_obj_progressbar_inverted_get
- * @since 1.8
- *
- * Get whether a given progress bar widget's displaying values are
- * inverted or not
- *
- * @param[out] ret
- *
- * @see elm_progressbar_inverted_get
- */
-#define elm_obj_progressbar_inverted_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * Add a new progress bar widget to the given parent Elementary
- * (container) object
- *
- * @param parent The parent object
- * @return a new progress bar widget handle or @c NULL, on errors
- *
- * This function inserts a new progress bar widget on the canvas.
- *
- * @ingroup Progressbar
- */
-EAPI Evas_Object *elm_progressbar_add(Evas_Object *parent);
-
-/**
- * Set whether a given progress bar widget is at "pulsing mode" or
- * not.
- *
- * @param obj The progress bar object
- * @param pulse @c EINA_TRUE to put @p obj in pulsing mode,
- * @c EINA_FALSE to put it back to its default one
- *
- * By default, progress bars will display values from the low to
- * high value boundaries. There are, though, contexts in which the
- * progress of a given task is @b unknown. For such cases,
- * one can set a progress bar widget to a "pulsing state", to give
- * the user an idea that some computation is being held, but
- * without exact progress values. In the default theme, it will
- * animate its bar with the contents filling in constantly and back
- * to non-filled, in a loop. To start and stop this pulsing
- * animation, one has to explicitly call elm_progressbar_pulse().
- *
- * @see elm_progressbar_pulse_get()
- * @see elm_progressbar_pulse()
- *
- * @ingroup Progressbar
- */
-EAPI void elm_progressbar_pulse_set(Evas_Object *obj, Eina_Bool pulse);
-
-/**
- * Get whether a given progress bar widget is at "pulsing mode" or
- * not.
- *
- * @param obj The progress bar object
- * @return @c EINA_TRUE, if @p obj is in pulsing mode, @c EINA_FALSE
- * if it's in the default one (and on errors)
- *
- * @ingroup Progressbar
- */
-EAPI Eina_Bool elm_progressbar_pulse_get(const Evas_Object *obj);
-
-/**
- * Start/stop a given progress bar "pulsing" animation, if its
- * under that mode
- *
- * @param obj The progress bar object
- * @param state @c EINA_TRUE, to @b start the pulsing animation,
- * @c EINA_FALSE to @b stop it
- *
- * @note This call won't do anything if @p obj is not under "pulsing mode".
- *
- * @see elm_progressbar_pulse_set() for more details.
- *
- * @ingroup Progressbar
- */
-EAPI void elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state);
-
-/**
- * Set the progress value (in percentage) on a given progress bar
- * widget
- *
- * @param obj The progress bar object
- * @param val The progress value (@b must be between @c 0.0 and @c
- * 1.0)
- *
- * Use this call to set progress bar levels.
- *
- * @note If you passes a value out of the specified range for @p
- * val, it will be interpreted as the @b closest of the @b boundary
- * values in the range.
- *
- * @ingroup Progressbar
- */
-EAPI void elm_progressbar_value_set(Evas_Object *obj, double val);
-
-/**
- * Get the progress value (in percentage) on a given progress bar
- * widget
- *
- * @param obj The progress bar object
- * @return The value of the progressbar
- *
- * @see elm_progressbar_value_set() for more details
- *
- * @ingroup Progressbar
- */
-EAPI double elm_progressbar_value_get(const Evas_Object *obj);
-
-/**
- * Set the (exact) length of the bar region of a given progress bar
- * widget
- *
- * @param obj The progress bar object
- * @param size The length of the progress bar's bar region
- *
- * This sets the minimum width (when in horizontal mode) or height
- * (when in vertical mode) of the actual bar area of the progress
- * bar @p obj. This in turn affects the object's minimum size. Use
- * this when you're not setting other size hints expanding on the
- * given direction (like weight and alignment hints) and you would
- * like it to have a specific size.
- *
- * @note Icon, label and unit text around @p obj will require their
- * own space, which will make @p obj to require more the @p size,
- * actually.
- *
- * @see elm_progressbar_span_size_get()
- *
- * @ingroup Progressbar
- */
-EAPI void elm_progressbar_span_size_set(Evas_Object *obj, Evas_Coord size);
-
-/**
- * Get the length set for the bar region of a given progress bar
- * widget
- *
- * @param obj The progress bar object
- * @return The length of the progress bar's bar region
- *
- * If that size was not set previously, with
- * elm_progressbar_span_size_set(), this call will return @c 0.
- *
- * @ingroup Progressbar
- */
-EAPI Evas_Coord elm_progressbar_span_size_get(const Evas_Object *obj);
-
-/**
- * Set the format string for a given progress bar widget's units
- * label
- *
- * @param obj The progress bar object
- * @param format The format string for @p obj's units label
- *
- * If @c NULL is passed on @p format, it will make @p obj's units
- * area to be hidden completely. If not, it'll set the <b>format
- * string</b> for the units label's @b text. The units label is
- * provided a floating point value, so the units text is up display
- * at most one floating point value. Note that the units label is
- * optional. Use a format string such as "%1.2f meters" for
- * example.
- *
- * @note The default format string for a progress bar is an integer
- * percentage, as in @c "%.0f %%".
- *
- * @see elm_progressbar_unit_format_get()
- *
- * @ingroup Progressbar
- */
-EAPI void elm_progressbar_unit_format_set(Evas_Object *obj, const char *format);
-
-/**
- * Retrieve the format string set for a given progress bar widget's
- * units label
- *
- * @param obj The progress bar object
- * @return The format set string for @p obj's units label or
- * @c NULL, if none was set (and on errors)
- *
- * @see elm_progressbar_unit_format_set() for more details
- *
- * @ingroup Progressbar
- */
-EAPI const char *elm_progressbar_unit_format_get(const Evas_Object *obj);
-
-/**
- * Set the format function pointer for the units label
- *
- * @param obj The progress bar object
- * @param func The unit format function
- * @param free_func The freeing function for the format string.
- *
- * Set the callback function to format the unit string.
- *
- * @see elm_progressbar_unit_format_set() for more info on how this works.
- *
- * @since 1.7
- *
- * @ingroup Progressbar
- */
-EAPI void elm_progressbar_unit_format_function_set(Evas_Object *obj, char *(func)(double), void (*free_func) (char *));
-
-/**
- * Set the orientation of a given progress bar widget
- *
- * @param obj The progress bar object
- * @param horizontal Use @c EINA_TRUE to make @p obj to be
- * @b horizontal, @c EINA_FALSE to make it @b vertical
- *
- * Use this function to change how your progress bar is to be
- * disposed: vertically or horizontally.
- *
- * @see elm_progressbar_horizontal_get()
- *
- * @ingroup Progressbar
- */
-EAPI void elm_progressbar_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
-
-/**
- * Retrieve the orientation of a given progress bar widget
- *
- * @param obj The progress bar object
- * @return @c EINA_TRUE, if @p obj is set to be @b horizontal,
- * @c EINA_FALSE if it's @b vertical (and on errors)
- *
- * @see elm_progressbar_horizontal_set() for more details
- *
- * @ingroup Progressbar
- */
-EAPI Eina_Bool elm_progressbar_horizontal_get(const Evas_Object *obj);
-
-/**
- * Invert a given progress bar widget's displaying values order
- *
- * @param obj The progress bar object
- * @param inverted Use @c EINA_TRUE to make @p obj inverted,
- * @c EINA_FALSE to bring it back to default, non-inverted values.
- *
- * A progress bar may be @b inverted, in which state it gets its
- * values inverted, with high values being on the left or top and
- * low values on the right or bottom, as opposed to normally have
- * the low values on the former and high values on the latter,
- * respectively, for horizontal and vertical modes.
- *
- * @see elm_progressbar_inverted_get()
- *
- * @ingroup Progressbar
- */
-EAPI void elm_progressbar_inverted_set(Evas_Object *obj, Eina_Bool inverted);
-
-/**
- * Get whether a given progress bar widget's displaying values are
- * inverted or not
- *
- * @param obj The progress bar object
- * @return @c EINA_TRUE, if @p obj has inverted values,
- * @c EINA_FALSE otherwise (and on errors)
- *
- * @see elm_progressbar_inverted_set() for more details
- *
- * @ingroup Progressbar
- */
-EAPI Eina_Bool elm_progressbar_inverted_get(const Evas_Object *obj);
-
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_progressbar_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_progressbar_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_progressbar_eo.h b/src/lib/elm_progressbar_eo.h
new file mode 100644
index 000000000..26f30aa96
--- /dev/null
+++ b/src/lib/elm_progressbar_eo.h
@@ -0,0 +1,231 @@
+#define ELM_OBJ_PROGRESSBAR_CLASS elm_obj_progressbar_class_get()
+
+const Eo_Class *elm_obj_progressbar_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_PROGRESSBAR_BASE_ID;
+
+typedef char *(*progressbar_func_type)(double);
+typedef void (*progressbar_freefunc_type)(char *);
+
+enum
+{
+ ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET,
+ ELM_OBJ_PROGRESSBAR_SUB_ID_LAST
+};
+
+#define ELM_OBJ_PROGRESSBAR_ID(sub_id) (ELM_OBJ_PROGRESSBAR_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_progressbar_pulse_set
+ * @since 1.8
+ *
+ * Set whether a given progress bar widget is at "pulsing mode" or
+ * not.
+ *
+ * @param[in] pulse
+ *
+ * @see elm_progressbar_pulse_set
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_pulse_set(pulse) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET), EO_TYPECHECK(Eina_Bool, pulse)
+
+/**
+ * @def elm_obj_progressbar_pulse_get
+ * @since 1.8
+ *
+ * Get whether a given progress bar widget is at "pulsing mode" or
+ * not.
+ *
+ * @param[out] ret
+ *
+ * @see elm_progressbar_pulse_get
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_pulse_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_progressbar_pulse
+ * @since 1.8
+ *
+ * Start/stop a given progress bar "pulsing" animation, if its
+ * under that mode
+ *
+ * @param[in] state
+ *
+ * @see elm_progressbar_pulse
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_pulse(state) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE), EO_TYPECHECK(Eina_Bool, state)
+
+/**
+ * @def elm_obj_progressbar_value_set
+ * @since 1.8
+ *
+ * Set the progress value (in percentage) on a given progress bar
+ *
+ * @param[in] val
+ *
+ * @see elm_progressbar_value_set
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_value_set(val) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val)
+
+/**
+ * @def elm_obj_progressbar_value_get
+ * @since 1.8
+ *
+ * Get the progress value (in percentage) on a given progress bar
+ *
+ * @param[out] ret
+ *
+ * @see elm_progressbar_value_get
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_value_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_progressbar_span_size_set
+ * @since 1.8
+ *
+ * Set the (exact) length of the bar region of a given progress bar
+ *
+ * @param[in] size
+ *
+ * @see elm_progressbar_span_size_set
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_span_size_set(size) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET), EO_TYPECHECK(Evas_Coord, size)
+
+/**
+ * @def elm_obj_progressbar_span_size_get
+ * @since 1.8
+ *
+ * Get the length set for the bar region of a given progress bar
+ *
+ * @param[out] ret
+ *
+ * @see elm_progressbar_span_size_get
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_span_size_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET), EO_TYPECHECK(Evas_Coord *, ret)
+
+/**
+ * @def elm_obj_progressbar_unit_format_set
+ * @since 1.8
+ *
+ * Set the format string for a given progress bar widget's units
+ *
+ * @param[in] units
+ *
+ * @see elm_progressbar_unit_format_set
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_unit_format_set(units) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET), EO_TYPECHECK(const char *, units)
+
+/**
+ * @def elm_obj_progressbar_unit_format_get
+ * @since 1.8
+ *
+ * Retrieve the format string set for a given progress bar widget's
+ *
+ * @param[out] ret
+ *
+ * @see elm_progressbar_unit_format_get
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_unit_format_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_progressbar_unit_format_function_set
+ * @since 1.8
+ *
+ * Set the format function pointer for the units label
+ *
+ * @param[in] func
+ * @param[in] free_func
+ *
+ * @see elm_progressbar_unit_format_function_set
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_unit_format_function_set(func, free_func) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET), EO_TYPECHECK(progressbar_func_type, func), EO_TYPECHECK(progressbar_freefunc_type, free_func)
+
+/**
+ * @def elm_obj_progressbar_horizontal_set
+ * @since 1.8
+ *
+ * Set the orientation of a given progress bar widget
+ *
+ * @param[in] horizontal
+ *
+ * @see elm_progressbar_horizontal_set
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_horizontal_set(horizontal) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal)
+
+/**
+ * @def elm_obj_progressbar_horizontal_get
+ * @since 1.8
+ *
+ * Retrieve the orientation of a given progress bar widget
+ *
+ * @param[out] ret
+ *
+ * @see elm_progressbar_horizontal_get
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_horizontal_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_progressbar_inverted_set
+ * @since 1.8
+ *
+ * Invert a given progress bar widget's displaying values order
+ *
+ * @param[in] inverted
+ *
+ * @see elm_progressbar_inverted_set
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_inverted_set(inverted) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET), EO_TYPECHECK(Eina_Bool, inverted)
+
+/**
+ * @def elm_obj_progressbar_inverted_get
+ * @since 1.8
+ *
+ * Get whether a given progress bar widget's displaying values are
+ * inverted or not
+ *
+ * @param[out] ret
+ *
+ * @see elm_progressbar_inverted_get
+ *
+ * @ingroup Progressbar
+ */
+#define elm_obj_progressbar_inverted_get(ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_progressbar_legacy.h b/src/lib/elm_progressbar_legacy.h
new file mode 100644
index 000000000..492654d1e
--- /dev/null
+++ b/src/lib/elm_progressbar_legacy.h
@@ -0,0 +1,251 @@
+/**
+ * Add a new progress bar widget to the given parent Elementary
+ * (container) object
+ *
+ * @param parent The parent object
+ * @return a new progress bar widget handle or @c NULL, on errors
+ *
+ * This function inserts a new progress bar widget on the canvas.
+ *
+ * @ingroup Progressbar
+ */
+EAPI Evas_Object *elm_progressbar_add(Evas_Object *parent);
+
+/**
+ * Set whether a given progress bar widget is at "pulsing mode" or
+ * not.
+ *
+ * @param obj The progress bar object
+ * @param pulse @c EINA_TRUE to put @p obj in pulsing mode,
+ * @c EINA_FALSE to put it back to its default one
+ *
+ * By default, progress bars will display values from the low to
+ * high value boundaries. There are, though, contexts in which the
+ * progress of a given task is @b unknown. For such cases,
+ * one can set a progress bar widget to a "pulsing state", to give
+ * the user an idea that some computation is being held, but
+ * without exact progress values. In the default theme, it will
+ * animate its bar with the contents filling in constantly and back
+ * to non-filled, in a loop. To start and stop this pulsing
+ * animation, one has to explicitly call elm_progressbar_pulse().
+ *
+ * @see elm_progressbar_pulse_get()
+ * @see elm_progressbar_pulse()
+ *
+ * @ingroup Progressbar
+ */
+EAPI void elm_progressbar_pulse_set(Evas_Object *obj, Eina_Bool pulse);
+
+/**
+ * Get whether a given progress bar widget is at "pulsing mode" or
+ * not.
+ *
+ * @param obj The progress bar object
+ * @return @c EINA_TRUE, if @p obj is in pulsing mode, @c EINA_FALSE
+ * if it's in the default one (and on errors)
+ *
+ * @ingroup Progressbar
+ */
+EAPI Eina_Bool elm_progressbar_pulse_get(const Evas_Object *obj);
+
+/**
+ * Start/stop a given progress bar "pulsing" animation, if its
+ * under that mode
+ *
+ * @param obj The progress bar object
+ * @param state @c EINA_TRUE, to @b start the pulsing animation,
+ * @c EINA_FALSE to @b stop it
+ *
+ * @note This call won't do anything if @p obj is not under "pulsing mode".
+ *
+ * @see elm_progressbar_pulse_set() for more details.
+ *
+ * @ingroup Progressbar
+ */
+EAPI void elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state);
+
+/**
+ * Set the progress value (in percentage) on a given progress bar
+ * widget
+ *
+ * @param obj The progress bar object
+ * @param val The progress value (@b must be between @c 0.0 and @c
+ * 1.0)
+ *
+ * Use this call to set progress bar levels.
+ *
+ * @note If you passes a value out of the specified range for @p
+ * val, it will be interpreted as the @b closest of the @b boundary
+ * values in the range.
+ *
+ * @ingroup Progressbar
+ */
+EAPI void elm_progressbar_value_set(Evas_Object *obj, double val);
+
+/**
+ * Get the progress value (in percentage) on a given progress bar
+ * widget
+ *
+ * @param obj The progress bar object
+ * @return The value of the progressbar
+ *
+ * @see elm_progressbar_value_set() for more details
+ *
+ * @ingroup Progressbar
+ */
+EAPI double elm_progressbar_value_get(const Evas_Object *obj);
+
+/**
+ * Set the (exact) length of the bar region of a given progress bar
+ * widget
+ *
+ * @param obj The progress bar object
+ * @param size The length of the progress bar's bar region
+ *
+ * This sets the minimum width (when in horizontal mode) or height
+ * (when in vertical mode) of the actual bar area of the progress
+ * bar @p obj. This in turn affects the object's minimum size. Use
+ * this when you're not setting other size hints expanding on the
+ * given direction (like weight and alignment hints) and you would
+ * like it to have a specific size.
+ *
+ * @note Icon, label and unit text around @p obj will require their
+ * own space, which will make @p obj to require more the @p size,
+ * actually.
+ *
+ * @see elm_progressbar_span_size_get()
+ *
+ * @ingroup Progressbar
+ */
+EAPI void elm_progressbar_span_size_set(Evas_Object *obj, Evas_Coord size);
+
+/**
+ * Get the length set for the bar region of a given progress bar
+ * widget
+ *
+ * @param obj The progress bar object
+ * @return The length of the progress bar's bar region
+ *
+ * If that size was not set previously, with
+ * elm_progressbar_span_size_set(), this call will return @c 0.
+ *
+ * @ingroup Progressbar
+ */
+EAPI Evas_Coord elm_progressbar_span_size_get(const Evas_Object *obj);
+
+/**
+ * Set the format string for a given progress bar widget's units
+ * label
+ *
+ * @param obj The progress bar object
+ * @param format The format string for @p obj's units label
+ *
+ * If @c NULL is passed on @p format, it will make @p obj's units
+ * area to be hidden completely. If not, it'll set the <b>format
+ * string</b> for the units label's @b text. The units label is
+ * provided a floating point value, so the units text is up display
+ * at most one floating point value. Note that the units label is
+ * optional. Use a format string such as "%1.2f meters" for
+ * example.
+ *
+ * @note The default format string for a progress bar is an integer
+ * percentage, as in @c "%.0f %%".
+ *
+ * @see elm_progressbar_unit_format_get()
+ *
+ * @ingroup Progressbar
+ */
+EAPI void elm_progressbar_unit_format_set(Evas_Object *obj, const char *format);
+
+/**
+ * Retrieve the format string set for a given progress bar widget's
+ * units label
+ *
+ * @param obj The progress bar object
+ * @return The format set string for @p obj's units label or
+ * @c NULL, if none was set (and on errors)
+ *
+ * @see elm_progressbar_unit_format_set() for more details
+ *
+ * @ingroup Progressbar
+ */
+EAPI const char *elm_progressbar_unit_format_get(const Evas_Object *obj);
+
+/**
+ * Set the format function pointer for the units label
+ *
+ * @param obj The progress bar object
+ * @param func The unit format function
+ * @param free_func The freeing function for the format string.
+ *
+ * Set the callback function to format the unit string.
+ *
+ * @see elm_progressbar_unit_format_set() for more info on how this works.
+ *
+ * @since 1.7
+ *
+ * @ingroup Progressbar
+ */
+EAPI void elm_progressbar_unit_format_function_set(Evas_Object *obj, char *(func)(double), void (*free_func) (char *));
+
+/**
+ * Set the orientation of a given progress bar widget
+ *
+ * @param obj The progress bar object
+ * @param horizontal Use @c EINA_TRUE to make @p obj to be
+ * @b horizontal, @c EINA_FALSE to make it @b vertical
+ *
+ * Use this function to change how your progress bar is to be
+ * disposed: vertically or horizontally.
+ *
+ * @see elm_progressbar_horizontal_get()
+ *
+ * @ingroup Progressbar
+ */
+EAPI void elm_progressbar_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * Retrieve the orientation of a given progress bar widget
+ *
+ * @param obj The progress bar object
+ * @return @c EINA_TRUE, if @p obj is set to be @b horizontal,
+ * @c EINA_FALSE if it's @b vertical (and on errors)
+ *
+ * @see elm_progressbar_horizontal_set() for more details
+ *
+ * @ingroup Progressbar
+ */
+EAPI Eina_Bool elm_progressbar_horizontal_get(const Evas_Object *obj);
+
+/**
+ * Invert a given progress bar widget's displaying values order
+ *
+ * @param obj The progress bar object
+ * @param inverted Use @c EINA_TRUE to make @p obj inverted,
+ * @c EINA_FALSE to bring it back to default, non-inverted values.
+ *
+ * A progress bar may be @b inverted, in which state it gets its
+ * values inverted, with high values being on the left or top and
+ * low values on the right or bottom, as opposed to normally have
+ * the low values on the former and high values on the latter,
+ * respectively, for horizontal and vertical modes.
+ *
+ * @see elm_progressbar_inverted_get()
+ *
+ * @ingroup Progressbar
+ */
+EAPI void elm_progressbar_inverted_set(Evas_Object *obj, Eina_Bool inverted);
+
+/**
+ * Get whether a given progress bar widget's displaying values are
+ * inverted or not
+ *
+ * @param obj The progress bar object
+ * @return @c EINA_TRUE, if @p obj has inverted values,
+ * @c EINA_FALSE otherwise (and on errors)
+ *
+ * @see elm_progressbar_inverted_set() for more details
+ *
+ * @ingroup Progressbar
+ */
+EAPI Eina_Bool elm_progressbar_inverted_get(const Evas_Object *obj);
diff --git a/src/lib/elm_radio.h b/src/lib/elm_radio.h
index 13c4c7c1b..fec468cdf 100644
--- a/src/lib/elm_radio.h
+++ b/src/lib/elm_radio.h
@@ -60,212 +60,12 @@
* @{
*/
-#define ELM_OBJ_RADIO_CLASS elm_obj_radio_class_get()
-
-const Eo_Class *elm_obj_radio_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_RADIO_BASE_ID;
-
-enum
-{
- ELM_OBJ_RADIO_SUB_ID_GROUP_ADD,
- ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET,
- ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET,
- ELM_OBJ_RADIO_SUB_ID_VALUE_SET,
- ELM_OBJ_RADIO_SUB_ID_VALUE_GET,
- ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET,
- ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET,
- ELM_OBJ_RADIO_SUB_ID_LAST
-};
-
-#define ELM_OBJ_RADIO_ID(sub_id) (ELM_OBJ_RADIO_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_radio_group_add
- * @since 1.8
- *
- * @brief Add this radio to a group of other radio objects
- *
- * @param[in] group
- *
- * @see elm_radio_group_add
- */
-#define elm_obj_radio_group_add(group) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_GROUP_ADD), EO_TYPECHECK(Evas_Object *, group)
-
-/**
- * @def elm_obj_radio_state_value_set
- * @since 1.8
- *
- * @brief Set the integer value that this radio object represents
- *
- * @param[in] value
- *
- * @see elm_radio_state_value_set
- */
-#define elm_obj_radio_state_value_set(value) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET), EO_TYPECHECK(int, value)
-
-/**
- * @def elm_obj_radio_state_value_get
- * @since 1.8
- *
- * @brief Get the integer value that this radio object represents
- *
- * @param[out] ret
- *
- * @see elm_radio_state_value_get
- */
-#define elm_obj_radio_state_value_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET), EO_TYPECHECK(int *, ret)
-
-/**
- * @def elm_obj_radio_value_set
- * @since 1.8
- *
- * @brief Set the value of the radio group.
- *
- * @param[in] value
- *
- * @see elm_radio_value_set
- */
-#define elm_obj_radio_value_set(value) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_SET), EO_TYPECHECK(int, value)
-
-/**
- * @def elm_obj_radio_value_get
- * @since 1.8
- *
- * @brief Get the value of the radio group
- *
- * @param[out] ret
- *
- * @see elm_radio_value_get
- */
-#define elm_obj_radio_value_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_GET), EO_TYPECHECK(int *, ret)
-
-/**
- * @def elm_obj_radio_value_pointer_set
- * @since 1.8
- *
- * @brief Set a convenience pointer to a integer to change when radio group
- *
- * @param[in] valuep
- *
- * @see elm_radio_value_pointer_set
- */
-#define elm_obj_radio_value_pointer_set(valuep) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET), EO_TYPECHECK(int *, valuep)
-
-/**
- * @def elm_obj_radio_selected_object_get
- * @since 1.8
- *
- * @brief Get the selected radio object.
- *
- * @param[out] ret
- *
- * @see elm_radio_selected_object_get
- */
-#define elm_obj_radio_selected_object_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @brief Add a new radio to the parent
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- *
- * @ingroup Radio
- */
-EAPI Evas_Object *elm_radio_add(Evas_Object *parent);
-
-/**
- * @brief Add this radio to a group of other radio objects
- *
- * @param obj The radio object
- * @param group Any object whose group the @p obj is to join.
- *
- * Radio objects work in groups. Each member should have a different integer
- * value assigned. In order to have them work as a group, they need to know
- * about each other. This adds the given radio object to the group of which
- * the group object indicated is a member.
- *
- * @ingroup Radio
- */
-EAPI void elm_radio_group_add(Evas_Object *obj, Evas_Object *group);
-
-/**
- * @brief Set the integer value that this radio object represents
- *
- * @param obj The radio object
- * @param value The value to use if this radio object is selected
- *
- * This sets the value of the radio.
- *
- * @ingroup Radio
- */
-EAPI void elm_radio_state_value_set(Evas_Object *obj, int value);
-
-/**
- * @brief Get the integer value that this radio object represents
- *
- * @param obj The radio object
- * @return The value used if this radio object is selected
- *
- * This gets the value of the radio.
- * @see elm_radio_value_set()
- *
- * @ingroup Radio
- */
-EAPI int elm_radio_state_value_get(const Evas_Object *obj);
-
-/**
- * @brief Set the value of the radio group.
- *
- * @param obj The radio object (any radio object of the group).
- * @param value The value to use for the group
- *
- * This sets the value of the radio group and will also set the value if
- * pointed to, to the value supplied, but will not call any callbacks.
- *
- * @ingroup Radio
- */
-EAPI void elm_radio_value_set(Evas_Object *obj, int value);
-
-/**
- * @brief Get the value of the radio group
- *
- * @param obj The radio object (any radio object of the group).
- * @return The integer state
- *
- * @ingroup Radio
- */
-EAPI int elm_radio_value_get(const Evas_Object *obj);
-
-/**
- * @brief Set a convenience pointer to a integer to change when radio group
- * value changes.
- *
- * @param obj The radio object (any object of a group)
- * @param valuep Pointer to the integer to modify
- *
- * This sets a pointer to a integer, that, in addition to the radio objects
- * state will also be modified directly. To stop setting the object pointed
- * to simply use NULL as the @p valuep argument. If valuep is not NULL, then
- * when this is called, the radio objects state will also be modified to
- * reflect the value of the integer valuep points to, just like calling
- * elm_radio_value_set().
- *
- * @ingroup Radio
- */
-EAPI void elm_radio_value_pointer_set(Evas_Object *obj, int *valuep);
-
-/**
- * @brief Get the selected radio object.
- *
- * @param obj Any radio object (any object of a group)
- * @return The selected radio object
- *
- * @ingroup Radio
- */
-EAPI Evas_Object *elm_radio_selected_object_get(Evas_Object *obj);
-
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_radio_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_radio_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_radio_eo.h b/src/lib/elm_radio_eo.h
new file mode 100644
index 000000000..c007d2f8b
--- /dev/null
+++ b/src/lib/elm_radio_eo.h
@@ -0,0 +1,118 @@
+#define ELM_OBJ_RADIO_CLASS elm_obj_radio_class_get()
+
+const Eo_Class *elm_obj_radio_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_RADIO_BASE_ID;
+
+enum
+{
+ ELM_OBJ_RADIO_SUB_ID_GROUP_ADD,
+ ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET,
+ ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET,
+ ELM_OBJ_RADIO_SUB_ID_VALUE_SET,
+ ELM_OBJ_RADIO_SUB_ID_VALUE_GET,
+ ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET,
+ ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET,
+ ELM_OBJ_RADIO_SUB_ID_LAST
+};
+
+#define ELM_OBJ_RADIO_ID(sub_id) (ELM_OBJ_RADIO_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_radio_group_add
+ * @since 1.8
+ *
+ * @brief Add this radio to a group of other radio objects
+ *
+ * @param[in] group
+ *
+ * @see elm_radio_group_add
+ *
+ * @ingroup Radio
+ */
+#define elm_obj_radio_group_add(group) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_GROUP_ADD), EO_TYPECHECK(Evas_Object *, group)
+
+/**
+ * @def elm_obj_radio_state_value_set
+ * @since 1.8
+ *
+ * @brief Set the integer value that this radio object represents
+ *
+ * @param[in] value
+ *
+ * @see elm_radio_state_value_set
+ *
+ * @ingroup Radio
+ */
+#define elm_obj_radio_state_value_set(value) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET), EO_TYPECHECK(int, value)
+
+/**
+ * @def elm_obj_radio_state_value_get
+ * @since 1.8
+ *
+ * @brief Get the integer value that this radio object represents
+ *
+ * @param[out] ret
+ *
+ * @see elm_radio_state_value_get
+ *
+ * @ingroup Radio
+ */
+#define elm_obj_radio_state_value_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def elm_obj_radio_value_set
+ * @since 1.8
+ *
+ * @brief Set the value of the radio group.
+ *
+ * @param[in] value
+ *
+ * @see elm_radio_value_set
+ *
+ * @ingroup Radio
+ */
+#define elm_obj_radio_value_set(value) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_SET), EO_TYPECHECK(int, value)
+
+/**
+ * @def elm_obj_radio_value_get
+ * @since 1.8
+ *
+ * @brief Get the value of the radio group
+ *
+ * @param[out] ret
+ *
+ * @see elm_radio_value_get
+ *
+ * @ingroup Radio
+ */
+#define elm_obj_radio_value_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_GET), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def elm_obj_radio_value_pointer_set
+ * @since 1.8
+ *
+ * @brief Set a convenience pointer to a integer to change when radio group
+ *
+ * @param[in] valuep
+ *
+ * @see elm_radio_value_pointer_set
+ *
+ * @ingroup Radio
+ */
+#define elm_obj_radio_value_pointer_set(valuep) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET), EO_TYPECHECK(int *, valuep)
+
+/**
+ * @def elm_obj_radio_selected_object_get
+ * @since 1.8
+ *
+ * @brief Get the selected radio object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_radio_selected_object_get
+ *
+ * @ingroup Radio
+ */
+#define elm_obj_radio_selected_object_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret)
diff --git a/src/lib/elm_radio_legacy.h b/src/lib/elm_radio_legacy.h
new file mode 100644
index 000000000..807eb37a4
--- /dev/null
+++ b/src/lib/elm_radio_legacy.h
@@ -0,0 +1,100 @@
+/**
+ * @brief Add a new radio to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Radio
+ */
+EAPI Evas_Object *elm_radio_add(Evas_Object *parent);
+
+/**
+ * @brief Add this radio to a group of other radio objects
+ *
+ * @param obj The radio object
+ * @param group Any object whose group the @p obj is to join.
+ *
+ * Radio objects work in groups. Each member should have a different integer
+ * value assigned. In order to have them work as a group, they need to know
+ * about each other. This adds the given radio object to the group of which
+ * the group object indicated is a member.
+ *
+ * @ingroup Radio
+ */
+EAPI void elm_radio_group_add(Evas_Object *obj, Evas_Object *group);
+
+/**
+ * @brief Set the integer value that this radio object represents
+ *
+ * @param obj The radio object
+ * @param value The value to use if this radio object is selected
+ *
+ * This sets the value of the radio.
+ *
+ * @ingroup Radio
+ */
+EAPI void elm_radio_state_value_set(Evas_Object *obj, int value);
+
+/**
+ * @brief Get the integer value that this radio object represents
+ *
+ * @param obj The radio object
+ * @return The value used if this radio object is selected
+ *
+ * This gets the value of the radio.
+ * @see elm_radio_value_set()
+ *
+ * @ingroup Radio
+ */
+EAPI int elm_radio_state_value_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the value of the radio group.
+ *
+ * @param obj The radio object (any radio object of the group).
+ * @param value The value to use for the group
+ *
+ * This sets the value of the radio group and will also set the value if
+ * pointed to, to the value supplied, but will not call any callbacks.
+ *
+ * @ingroup Radio
+ */
+EAPI void elm_radio_value_set(Evas_Object *obj, int value);
+
+/**
+ * @brief Get the value of the radio group
+ *
+ * @param obj The radio object (any radio object of the group).
+ * @return The integer state
+ *
+ * @ingroup Radio
+ */
+EAPI int elm_radio_value_get(const Evas_Object *obj);
+
+/**
+ * @brief Set a convenience pointer to a integer to change when radio group
+ * value changes.
+ *
+ * @param obj The radio object (any object of a group)
+ * @param valuep Pointer to the integer to modify
+ *
+ * This sets a pointer to a integer, that, in addition to the radio objects
+ * state will also be modified directly. To stop setting the object pointed
+ * to simply use NULL as the @p valuep argument. If valuep is not NULL, then
+ * when this is called, the radio objects state will also be modified to
+ * reflect the value of the integer valuep points to, just like calling
+ * elm_radio_value_set().
+ *
+ * @ingroup Radio
+ */
+EAPI void elm_radio_value_pointer_set(Evas_Object *obj, int *valuep);
+
+/**
+ * @brief Get the selected radio object.
+ *
+ * @param obj Any radio object (any object of a group)
+ * @return The selected radio object
+ *
+ * @ingroup Radio
+ */
+EAPI Evas_Object *elm_radio_selected_object_get(Evas_Object *obj);
diff --git a/src/lib/elm_route.h b/src/lib/elm_route.h
index 5a88ff6e2..80ba517c0 100644
--- a/src/lib/elm_route.h
+++ b/src/lib/elm_route.h
@@ -10,103 +10,12 @@
* @{
*/
-#define ELM_OBJ_ROUTE_CLASS elm_obj_route_class_get()
-
-const Eo_Class *elm_obj_route_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_ROUTE_BASE_ID;
-
-enum
-{
- ELM_OBJ_ROUTE_SUB_ID_EMAP_SET,
- ELM_OBJ_ROUTE_SUB_ID_LONGITUDE_MIN_MAX_GET,
- ELM_OBJ_ROUTE_SUB_ID_LATITUDE_MIN_MAX_GET,
- ELM_OBJ_ROUTE_SUB_ID_LAST
-};
-
-#define ELM_OBJ_ROUTE_ID(sub_id) (ELM_OBJ_ROUTE_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_route_emap_set
- * @since 1.8
- *
- * No description supplied by the EAPI.
- *
- * @param[in] emap
- *
- * @see elm_route_emap_set
- */
-#define elm_obj_route_emap_set(emap) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_EMAP_SET), EO_TYPECHECK(EMap_Route *, emap)
-
-/**
- * @def elm_obj_route_longitude_min_max_get
- * @since 1.8
- *
- * Get the minimum and maximum values along the longitude.
- *
- * @param[out] min
- * @param[out] max
- *
- * @see elm_route_longitude_min_max_get
- */
-#define elm_obj_route_longitude_min_max_get(min, max) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_LONGITUDE_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max)
-
-/**
- * @def elm_obj_route_latitude_min_max_get
- * @since 1.8
- *
- * Get the minimum and maximum values along the latitude.
- *
- * @param[out] min
- * @param[out] max
- *
- * @see elm_route_latitude_min_max_get
- */
-#define elm_obj_route_latitude_min_max_get(min, max) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_LATITUDE_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max)
-
-/**
- * Add a new route object to the parent's canvas
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- *
- * @ingroup Route
- */
-EAPI Evas_Object *elm_route_add(Evas_Object *parent);
-
-#ifdef ELM_EMAP
-EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_route_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_route_legacy.h"
#endif
-
-/**
- * Get the minimum and maximum values along the longitude.
- *
- * @param obj The route object.
- * @param min Pointer to store the minimum value.
- * @param max Pointer to store the maximum value.
- *
- * @note If only one value is needed, the other pointer can be passed
- * as @c NULL.
- *
- * @ingroup Route
- */
-EAPI void elm_route_longitude_min_max_get(const Evas_Object *obj, double *min, double *max);
-
-/**
- * Get the minimum and maximum values along the latitude.
- *
- * @param obj The route object.
- * @param min Pointer to store the minimum value.
- * @param max Pointer to store the maximum value.
- *
- * @note If only one value is needed, the other pointer can be passed
- * as @c NULL.
- *
- * @ingroup Route
- */
-EAPI void elm_route_latitude_min_max_get(const Evas_Object *obj, double *min, double *max);
-
/**
* @}
*/
diff --git a/src/lib/elm_route_eo.h b/src/lib/elm_route_eo.h
new file mode 100644
index 000000000..aa4cd3f21
--- /dev/null
+++ b/src/lib/elm_route_eo.h
@@ -0,0 +1,60 @@
+#define ELM_OBJ_ROUTE_CLASS elm_obj_route_class_get()
+
+const Eo_Class *elm_obj_route_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_ROUTE_BASE_ID;
+
+enum
+{
+ ELM_OBJ_ROUTE_SUB_ID_EMAP_SET,
+ ELM_OBJ_ROUTE_SUB_ID_LONGITUDE_MIN_MAX_GET,
+ ELM_OBJ_ROUTE_SUB_ID_LATITUDE_MIN_MAX_GET,
+ ELM_OBJ_ROUTE_SUB_ID_LAST
+};
+
+#define ELM_OBJ_ROUTE_ID(sub_id) (ELM_OBJ_ROUTE_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_route_emap_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] emap
+ *
+ * @see elm_route_emap_set
+ *
+ * @ingroup Route
+ */
+#define elm_obj_route_emap_set(emap) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_EMAP_SET), EO_TYPECHECK(EMap_Route *, emap)
+
+/**
+ * @def elm_obj_route_longitude_min_max_get
+ * @since 1.8
+ *
+ * Get the minimum and maximum values along the longitude.
+ *
+ * @param[out] min
+ * @param[out] max
+ *
+ * @see elm_route_longitude_min_max_get
+ *
+ * @ingroup Route
+ */
+#define elm_obj_route_longitude_min_max_get(min, max) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_LONGITUDE_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max)
+
+/**
+ * @def elm_obj_route_latitude_min_max_get
+ * @since 1.8
+ *
+ * Get the minimum and maximum values along the latitude.
+ *
+ * @param[out] min
+ * @param[out] max
+ *
+ * @see elm_route_latitude_min_max_get
+ *
+ * @ingroup Route
+ */
+#define elm_obj_route_latitude_min_max_get(min, max) ELM_OBJ_ROUTE_ID(ELM_OBJ_ROUTE_SUB_ID_LATITUDE_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max)
diff --git a/src/lib/elm_route_legacy.h b/src/lib/elm_route_legacy.h
new file mode 100644
index 000000000..330552d73
--- /dev/null
+++ b/src/lib/elm_route_legacy.h
@@ -0,0 +1,53 @@
+/**
+ * Add a new route object to the parent's canvas
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Route
+ */
+EAPI Evas_Object *elm_route_add(Evas_Object *parent);
+
+#ifdef ELM_EMAP
+EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
+#endif
+
+#ifdef ELM_EMAP
+/**
+ * emap set
+ *
+ * @param parent The parent object
+ * @param emap The emap
+ *
+ * @ingroup Route
+ */
+EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
+#endif
+
+/**
+ * Get the minimum and maximum values along the longitude.
+ *
+ * @param obj The route object.
+ * @param min Pointer to store the minimum value.
+ * @param max Pointer to store the maximum value.
+ *
+ * @note If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @ingroup Route
+ */
+EAPI void elm_route_longitude_min_max_get(const Evas_Object *obj, double *min, double *max);
+
+/**
+ * Get the minimum and maximum values along the latitude.
+ *
+ * @param obj The route object.
+ * @param min Pointer to store the minimum value.
+ * @param max Pointer to store the maximum value.
+ *
+ * @note If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @ingroup Route
+ */
+EAPI void elm_route_latitude_min_max_get(const Evas_Object *obj, double *min, double *max);
diff --git a/src/lib/elm_segment_control.h b/src/lib/elm_segment_control.h
index 55afe60fa..6a0d5b11f 100644
--- a/src/lib/elm_segment_control.h
+++ b/src/lib/elm_segment_control.h
@@ -54,371 +54,18 @@
*
*/
-#define ELM_OBJ_SEGMENT_CONTROL_CLASS elm_obj_segment_control_class_get()
-
-const Eo_Class *elm_obj_segment_control_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_SEGMENT_CONTROL_BASE_ID;
-
-enum
-{
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ADD,
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_INSERT_AT,
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_DEL_AT,
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_LABEL_GET,
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ICON_GET,
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_COUNT_GET,
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_SELECTED_GET,
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_GET,
- ELM_OBJ_SEGMENT_CONTROL_SUB_ID_LAST
-};
-
-#define ELM_OBJ_SEGMENT_CONTROL_ID(sub_id) (ELM_OBJ_SEGMENT_CONTROL_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_segment_control_item_add
- * @since 1.8
- *
- * Append a new item to the segment control object.
- *
- * @param[in] icon
- * @param[in] label
- * @param[out] ret
- *
- * @see elm_segment_control_item_add
- */
-#define elm_obj_segment_control_item_add(icon, label, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ADD), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_segment_control_item_insert_at
- * @since 1.8
- *
- * Insert a new item to the segment control object at specified position.
- *
- * @param[in] icon
- * @param[in] label
- * @param[in] idx
- * @param[out] ret
- *
- * @see elm_segment_control_item_insert_at
- */
-#define elm_obj_segment_control_item_insert_at(icon, label, idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_INSERT_AT), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(int, idx), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_segment_control_item_del_at
- * @since 1.8
- *
- * Remove a segment control item at given index from its parent,
- *
- * @param[in] idx
- *
- * @see elm_segment_control_item_del_at
- */
-#define elm_obj_segment_control_item_del_at(idx) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_DEL_AT), EO_TYPECHECK(int, idx)
-
-/**
- * @def elm_obj_segment_control_item_label_get
- * @since 1.8
- *
- * Get the label of item.
- *
- * @param[in] idx
- * @param[out] ret
- *
- * @see elm_segment_control_item_label_get
- */
-#define elm_obj_segment_control_item_label_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_LABEL_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_segment_control_item_icon_get
- * @since 1.8
- *
- * Get the icon associated to the item.
- *
- * @param[in] idx
- * @param[out] ret
- *
- * @see elm_segment_control_item_icon_get
- */
-#define elm_obj_segment_control_item_icon_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ICON_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def elm_obj_segment_control_item_count_get
- * @since 1.8
- *
- * Get the Segment items count from segment control.
- *
- * @param[out] ret
- *
- * @see elm_segment_control_item_count_get
- */
-#define elm_obj_segment_control_item_count_get(ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_COUNT_GET), EO_TYPECHECK(int *, ret)
-
-/**
- * @def elm_obj_segment_control_item_selected_get
- * @since 1.8
- *
- * Get the selected item.
- *
- * @param[out] ret
- *
- * @see elm_segment_control_item_selected_get
- */
-#define elm_obj_segment_control_item_selected_get(ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_SELECTED_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_segment_control_item_get
- * @since 1.8
- *
- * Get the item placed at specified index.
- *
- * @param[in] idx
- * @param[out] ret
- *
- * @see elm_segment_control_item_get
- */
-#define elm_obj_segment_control_item_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(Elm_Object_Item **, ret)
-
/**
* @addtogroup SegmentControl
* @{
*/
-/**
- * Add a new segment control widget to the given parent Elementary
- * (container) object.
- *
- * @param parent The parent object.
- * @return a new segment control widget handle or @c NULL, on errors.
- *
- * This function inserts a new segment control widget on the canvas.
- *
- * @ingroup SegmentControl
- */
-EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent);
-
-/**
- * Append a new item to the segment control object.
- *
- * @param obj The segment control object.
- * @param icon The icon object to use for the left side of the item. An
- * icon can be any Evas object, but usually it is an icon created
- * with elm_icon_add().
- * @param label The label of the item.
- * Note that, NULL is different from empty string "".
- * @return The created item or @c NULL upon failure.
- *
- * A new item will be created and appended to the segment control, i.e., will
- * be set as @b last item.
- *
- * If it should be inserted at another position,
- * elm_segment_control_item_insert_at() should be used instead.
- *
- * Items created with this function can be deleted with function
- * elm_object_item_del() or elm_object_item_del_at().
- *
- * @note @p label set to @c NULL is different from empty string "".
- * If an item
- * only has icon, it will be displayed bigger and centered. If it has
- * icon and label, even that an empty string, icon will be smaller and
- * positioned at left.
- *
- * Simple example:
- * @code
- * sc = elm_segment_control_add(win);
- * ic = elm_icon_add(win);
- * elm_image_file_set(ic, "path/to/image", NULL);
- * elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
- * elm_segment_control_item_add(sc, ic, "label");
- * evas_object_show(sc);
- * @endcode
- *
- * @see elm_segment_control_item_insert_at()
- * @see elm_object_item_del()
- *
- * @ingroup SegmentControl
- */
-EAPI Elm_Object_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label);
-
-/**
- * Insert a new item to the segment control object at specified position.
- *
- * @param obj The segment control object.
- * @param icon The icon object to use for the left side of the item. An
- * icon can be any Evas object, but usually it is an icon created
- * with elm_icon_add().
- * @param label The label of the item.
- * @param index Item position. Value should be between 0 and items count.
- * @return The created item or @c NULL upon failure.
-
- * Index values must be between @c 0, when item will be prepended to
- * segment control, and items count, that can be get with
- * elm_segment_control_item_count_get(), case when item will be appended
- * to segment control, just like elm_segment_control_item_add().
- *
- * Items created with this function can be deleted with function
- * elm_object_item_del() or elm_segment_control_item_del_at().
- *
- * @note @p label set to @c NULL is different from empty string "".
- * If an item
- * only has icon, it will be displayed bigger and centered. If it has
- * icon and label, even that an empty string, icon will be smaller and
- * positioned at left.
- *
- * @see elm_segment_control_item_add()
- * @see elm_segment_control_item_count_get()
- * @see elm_object_item_del()
- *
- * @ingroup SegmentControl
- */
-EAPI Elm_Object_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index);
-
-/**
- * Remove a segment control item at given index from its parent,
- * deleting it.
- *
- * @param obj The segment control object.
- * @param index The position of the segment control item to be deleted.
- *
- * Items can be added with elm_segment_control_item_add() or
- * elm_segment_control_item_insert_at().
- *
- * @ingroup SegmentControl
- */
-EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index);
-
-/**
- * Get the Segment items count from segment control.
- *
- * @param obj The segment control object.
- * @return Segment items count.
- *
- * It will just return the number of items added to segment control @p obj.
- *
- * @ingroup SegmentControl
- */
-EAPI int elm_segment_control_item_count_get(const Evas_Object *obj);
-
-/**
- * Get the item placed at specified index.
- *
- * @param obj The segment control object.
- * @param index The index of the segment item.
- * @return The segment control item or @c NULL on failure.
- *
- * Index is the position of an item in segment control widget. Its
- * range is from @c 0 to <tt> count - 1 </tt>.
- * Count is the number of items, that can be get with
- * elm_segment_control_item_count_get().
- *
- * @ingroup SegmentControl
- */
-EAPI Elm_Object_Item *elm_segment_control_item_get(const Evas_Object *obj, int index);
-
-/**
- * Get the label of item.
- *
- * @param obj The segment control object.
- * @param index The index of the segment item.
- * @return The label of the item at @p index.
- *
- * The return value is a pointer to the label associated to the item when
- * it was created, with function elm_segment_control_item_add(), or later
- * with function elm_object_item_text_set. If no label
- * was passed as argument, it will return @c NULL.
- *
- * @see elm_object_item_text_set() for more details.
- * @see elm_segment_control_item_add()
- *
- * @ingroup SegmentControl
- */
-EAPI const char *elm_segment_control_item_label_get(const Evas_Object *obj, int index);
-
-/**
- * Get the icon associated to the item.
- *
- * @param obj The segment control object.
- * @param index The index of the segment item.
- * @return The left side icon associated to the item at @p index.
- *
- * The return value is a pointer to the icon associated to the item when
- * it was created, with function elm_segment_control_item_add(), or later
- * with function elm_object_item_part_content_set(). If no icon
- * was passed as argument, it will return @c NULL.
- *
- * @see elm_segment_control_item_add()
- * @see elm_object_item_part_content_set()
- *
- * @ingroup SegmentControl
- */
-EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index);
-
-/**
- * Get the index of an item.
- *
- * @param it The segment control item.
- * @return The position of item in segment control widget.
- *
- * Index is the position of an item in segment control widget. Its
- * range is from @c 0 to <tt> count - 1 </tt>.
- * Count is the number of items, that can be get with
- * elm_segment_control_item_count_get().
- *
- * @ingroup SegmentControl
- */
-EAPI int elm_segment_control_item_index_get(const Elm_Object_Item *it);
-
-/**
- * Get the real Evas(Edje) object created to implement the view of a given
- * segment_control @p item.
- *
- * @param it The segment control item.
- * @return The base Edje object associated with @p it.
- *
- * Base object is the @c Evas_Object that represents that item.
- *
- * @ingroup SegmentControl
- */
-EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Object_Item *it);
-
-/**
- * Get the selected item.
- *
- * @param obj The segment control object.
- * @return The selected item or @c NULL if none of segment items is
- * selected.
- *
- * The selected item can be unselected with function
- * elm_segment_control_item_selected_set().
- *
- * The selected item always will be highlighted on segment control.
- *
- * @ingroup SegmentControl
- */
-EAPI Elm_Object_Item *elm_segment_control_item_selected_get(const Evas_Object *obj);
-
-/**
- * Set the selected state of an item.
- *
- * @param it The segment control item
- * @param select The selected state
- *
- * This sets the selected state of the given item @p it.
- * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
- *
- * If a new item is selected the previously selected will be unselected.
- * Selected item can be got with function
- * elm_segment_control_item_selected_get().
- *
- * The selected item always will be highlighted on segment control.
- *
- * @see elm_segment_control_item_selected_get()
- *
- * @ingroup SegmentControl
- */
-EAPI void elm_segment_control_item_selected_set(Elm_Object_Item *it, Eina_Bool select);
-
+#include "elm_segment_control_common.h"
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_segment_control_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_segment_control_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_segment_control_common.h b/src/lib/elm_segment_control_common.h
new file mode 100644
index 000000000..6b586ec3d
--- /dev/null
+++ b/src/lib/elm_segment_control_common.h
@@ -0,0 +1,49 @@
+/**
+ * Get the index of an item.
+ *
+ * @param it The segment control item.
+ * @return The position of item in segment control widget.
+ *
+ * Index is the position of an item in segment control widget. Its
+ * range is from @c 0 to <tt> count - 1 </tt>.
+ * Count is the number of items, that can be get with
+ * elm_segment_control_item_count_get().
+ *
+ * @ingroup SegmentControl
+ */
+EAPI int elm_segment_control_item_index_get(const Elm_Object_Item *it);
+
+/**
+ * Get the real Evas(Edje) object created to implement the view of a given
+ * segment_control @p item.
+ *
+ * @param it The segment control item.
+ * @return The base Edje object associated with @p it.
+ *
+ * Base object is the @c Evas_Object that represents that item.
+ *
+ * @ingroup SegmentControl
+ */
+EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * Set the selected state of an item.
+ *
+ * @param it The segment control item
+ * @param select The selected state
+ *
+ * This sets the selected state of the given item @p it.
+ * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+ *
+ * If a new item is selected the previously selected will be unselected.
+ * Selected item can be got with function
+ * elm_segment_control_item_selected_get().
+ *
+ * The selected item always will be highlighted on segment control.
+ *
+ * @see elm_segment_control_item_selected_get()
+ *
+ * @ingroup SegmentControl
+ */
+EAPI void elm_segment_control_item_selected_set(Elm_Object_Item *it, Eina_Bool select);
+
diff --git a/src/lib/elm_segment_control_eo.h b/src/lib/elm_segment_control_eo.h
new file mode 100644
index 000000000..ddcee090c
--- /dev/null
+++ b/src/lib/elm_segment_control_eo.h
@@ -0,0 +1,141 @@
+#define ELM_OBJ_SEGMENT_CONTROL_CLASS elm_obj_segment_control_class_get()
+
+const Eo_Class *elm_obj_segment_control_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_SEGMENT_CONTROL_BASE_ID;
+
+enum
+{
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ADD,
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_INSERT_AT,
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_DEL_AT,
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_LABEL_GET,
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ICON_GET,
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_COUNT_GET,
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_SELECTED_GET,
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_GET,
+ ELM_OBJ_SEGMENT_CONTROL_SUB_ID_LAST
+};
+
+#define ELM_OBJ_SEGMENT_CONTROL_ID(sub_id) (ELM_OBJ_SEGMENT_CONTROL_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_segment_control_item_add
+ * @since 1.8
+ *
+ * Append a new item to the segment control object.
+ *
+ * @param[in] icon
+ * @param[in] label
+ * @param[out] ret
+ *
+ * @see elm_segment_control_item_add
+ *
+ * @ingroup SegmentControl
+ */
+#define elm_obj_segment_control_item_add(icon, label, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ADD), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_segment_control_item_insert_at
+ * @since 1.8
+ *
+ * Insert a new item to the segment control object at specified position.
+ *
+ * @param[in] icon
+ * @param[in] label
+ * @param[in] idx
+ * @param[out] ret
+ *
+ * @see elm_segment_control_item_insert_at
+ *
+ * @ingroup SegmentControl
+ */
+#define elm_obj_segment_control_item_insert_at(icon, label, idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_INSERT_AT), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(const char *, label), EO_TYPECHECK(int, idx), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_segment_control_item_del_at
+ * @since 1.8
+ *
+ * Remove a segment control item at given index from its parent,
+ *
+ * @param[in] idx
+ *
+ * @see elm_segment_control_item_del_at
+ *
+ * @ingroup SegmentControl
+ */
+#define elm_obj_segment_control_item_del_at(idx) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_DEL_AT), EO_TYPECHECK(int, idx)
+
+/**
+ * @def elm_obj_segment_control_item_label_get
+ * @since 1.8
+ *
+ * Get the label of item.
+ *
+ * @param[in] idx
+ * @param[out] ret
+ *
+ * @see elm_segment_control_item_label_get
+ *
+ * @ingroup SegmentControl
+ */
+#define elm_obj_segment_control_item_label_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_LABEL_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_segment_control_item_icon_get
+ * @since 1.8
+ *
+ * Get the icon associated to the item.
+ *
+ * @param[in] idx
+ * @param[out] ret
+ *
+ * @see elm_segment_control_item_icon_get
+ *
+ * @ingroup SegmentControl
+ */
+#define elm_obj_segment_control_item_icon_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_ICON_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def elm_obj_segment_control_item_count_get
+ * @since 1.8
+ *
+ * Get the Segment items count from segment control.
+ *
+ * @param[out] ret
+ *
+ * @see elm_segment_control_item_count_get
+ *
+ * @ingroup SegmentControl
+ */
+#define elm_obj_segment_control_item_count_get(ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_COUNT_GET), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def elm_obj_segment_control_item_selected_get
+ * @since 1.8
+ *
+ * Get the selected item.
+ *
+ * @param[out] ret
+ *
+ * @see elm_segment_control_item_selected_get
+ *
+ * @ingroup SegmentControl
+ */
+#define elm_obj_segment_control_item_selected_get(ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_SELECTED_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_segment_control_item_get
+ * @since 1.8
+ *
+ * Get the item placed at specified index.
+ *
+ * @param[in] idx
+ * @param[out] ret
+ *
+ * @see elm_segment_control_item_get
+ *
+ * @ingroup SegmentControl
+ */
+#define elm_obj_segment_control_item_get(idx, ret) ELM_OBJ_SEGMENT_CONTROL_ID(ELM_OBJ_SEGMENT_CONTROL_SUB_ID_ITEM_GET), EO_TYPECHECK(int, idx), EO_TYPECHECK(Elm_Object_Item **, ret)
diff --git a/src/lib/elm_segment_control_legacy.h b/src/lib/elm_segment_control_legacy.h
new file mode 100644
index 000000000..018dd6213
--- /dev/null
+++ b/src/lib/elm_segment_control_legacy.h
@@ -0,0 +1,184 @@
+/**
+ * Add a new segment control widget to the given parent Elementary
+ * (container) object.
+ *
+ * @param parent The parent object.
+ * @return a new segment control widget handle or @c NULL, on errors.
+ *
+ * This function inserts a new segment control widget on the canvas.
+ *
+ * @ingroup SegmentControl
+ */
+EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent);
+
+/**
+ * Append a new item to the segment control object.
+ *
+ * @param obj The segment control object.
+ * @param icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param label The label of the item.
+ * Note that, NULL is different from empty string "".
+ * @return The created item or @c NULL upon failure.
+ *
+ * A new item will be created and appended to the segment control, i.e., will
+ * be set as @b last item.
+ *
+ * If it should be inserted at another position,
+ * elm_segment_control_item_insert_at() should be used instead.
+ *
+ * Items created with this function can be deleted with function
+ * elm_object_item_del() or elm_object_item_del_at().
+ *
+ * @note @p label set to @c NULL is different from empty string "".
+ * If an item
+ * only has icon, it will be displayed bigger and centered. If it has
+ * icon and label, even that an empty string, icon will be smaller and
+ * positioned at left.
+ *
+ * Simple example:
+ * @code
+ * sc = elm_segment_control_add(win);
+ * ic = elm_icon_add(win);
+ * elm_image_file_set(ic, "path/to/image", NULL);
+ * elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
+ * elm_segment_control_item_add(sc, ic, "label");
+ * evas_object_show(sc);
+ * @endcode
+ *
+ * @see elm_segment_control_item_insert_at()
+ * @see elm_object_item_del()
+ *
+ * @ingroup SegmentControl
+ */
+EAPI Elm_Object_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label);
+
+/**
+ * Insert a new item to the segment control object at specified position.
+ *
+ * @param obj The segment control object.
+ * @param icon The icon object to use for the left side of the item. An
+ * icon can be any Evas object, but usually it is an icon created
+ * with elm_icon_add().
+ * @param label The label of the item.
+ * @param index Item position. Value should be between 0 and items count.
+ * @return The created item or @c NULL upon failure.
+
+ * Index values must be between @c 0, when item will be prepended to
+ * segment control, and items count, that can be get with
+ * elm_segment_control_item_count_get(), case when item will be appended
+ * to segment control, just like elm_segment_control_item_add().
+ *
+ * Items created with this function can be deleted with function
+ * elm_object_item_del() or elm_segment_control_item_del_at().
+ *
+ * @note @p label set to @c NULL is different from empty string "".
+ * If an item
+ * only has icon, it will be displayed bigger and centered. If it has
+ * icon and label, even that an empty string, icon will be smaller and
+ * positioned at left.
+ *
+ * @see elm_segment_control_item_add()
+ * @see elm_segment_control_item_count_get()
+ * @see elm_object_item_del()
+ *
+ * @ingroup SegmentControl
+ */
+EAPI Elm_Object_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index);
+
+/**
+ * Remove a segment control item at given index from its parent,
+ * deleting it.
+ *
+ * @param obj The segment control object.
+ * @param index The position of the segment control item to be deleted.
+ *
+ * Items can be added with elm_segment_control_item_add() or
+ * elm_segment_control_item_insert_at().
+ *
+ * @ingroup SegmentControl
+ */
+EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index);
+
+/**
+ * Get the label of item.
+ *
+ * @param obj The segment control object.
+ * @param index The index of the segment item.
+ * @return The label of the item at @p index.
+ *
+ * The return value is a pointer to the label associated to the item when
+ * it was created, with function elm_segment_control_item_add(), or later
+ * with function elm_object_item_text_set. If no label
+ * was passed as argument, it will return @c NULL.
+ *
+ * @see elm_object_item_text_set() for more details.
+ * @see elm_segment_control_item_add()
+ *
+ * @ingroup SegmentControl
+ */
+EAPI const char *elm_segment_control_item_label_get(const Evas_Object *obj, int index);
+
+/**
+ * Get the icon associated to the item.
+ *
+ * @param obj The segment control object.
+ * @param index The index of the segment item.
+ * @return The left side icon associated to the item at @p index.
+ *
+ * The return value is a pointer to the icon associated to the item when
+ * it was created, with function elm_segment_control_item_add(), or later
+ * with function elm_object_item_part_content_set(). If no icon
+ * was passed as argument, it will return @c NULL.
+ *
+ * @see elm_segment_control_item_add()
+ * @see elm_object_item_part_content_set()
+ *
+ * @ingroup SegmentControl
+ */
+EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index);
+
+/**
+ * Get the Segment items count from segment control.
+ *
+ * @param obj The segment control object.
+ * @return Segment items count.
+ *
+ * It will just return the number of items added to segment control @p obj.
+ *
+ * @ingroup SegmentControl
+ */
+EAPI int elm_segment_control_item_count_get(const Evas_Object *obj);
+
+/**
+ * Get the selected item.
+ *
+ * @param obj The segment control object.
+ * @return The selected item or @c NULL if none of segment items is
+ * selected.
+ *
+ * The selected item can be unselected with function
+ * elm_segment_control_item_selected_set().
+ *
+ * The selected item always will be highlighted on segment control.
+ *
+ * @ingroup SegmentControl
+ */
+EAPI Elm_Object_Item *elm_segment_control_item_selected_get(const Evas_Object *obj);
+
+/**
+ * Get the item placed at specified index.
+ *
+ * @param obj The segment control object.
+ * @param index The index of the segment item.
+ * @return The segment control item or @c NULL on failure.
+ *
+ * Index is the position of an item in segment control widget. Its
+ * range is from @c 0 to <tt> count - 1 </tt>.
+ * Count is the number of items, that can be get with
+ * elm_segment_control_item_count_get().
+ *
+ * @ingroup SegmentControl
+ */
+EAPI Elm_Object_Item *elm_segment_control_item_get(const Evas_Object *obj, int index);
diff --git a/src/lib/elm_separator.h b/src/lib/elm_separator.h
index 3aef7cb80..6e9768f8a 100644
--- a/src/lib/elm_separator.h
+++ b/src/lib/elm_separator.h
@@ -18,79 +18,12 @@
* @{
*/
-#define ELM_OBJ_SEPARATOR_CLASS elm_obj_separator_class_get()
-
-const Eo_Class *elm_obj_separator_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_SEPARATOR_BASE_ID;
-
-enum
-{
- ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_SET,
- ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_GET,
- ELM_OBJ_SEPARATOR_SUB_ID_LAST
-};
-
-#define ELM_OBJ_SEPARATOR_ID(sub_id) (ELM_OBJ_SEPARATOR_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_separator_horizontal_set
- * @since 1.8
- *
- * @brief Set the horizontal mode of a separator object
- *
- * @param[in] horizontal
- *
- * @see elm_separator_horizontal_set
- */
-#define elm_obj_separator_horizontal_set(horizontal) ELM_OBJ_SEPARATOR_ID(ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal)
-
-/**
- * @def elm_obj_separator_horizontal_get
- * @since 1.8
- *
- * @brief Get the horizontal mode of a separator object
- *
- * @param[out] ret
- *
- * @see elm_separator_horizontal_get
- */
-#define elm_obj_separator_horizontal_get(ret) ELM_OBJ_SEPARATOR_ID(ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @brief Add a separator object to @p parent
- *
- * @param parent The parent object
- *
- * @return The separator object, or NULL upon failure
- *
- * @ingroup Separator
- */
-EAPI Evas_Object *elm_separator_add(Evas_Object *parent);
-
-/**
- * @brief Set the horizontal mode of a separator object
- *
- * @param obj The separator object
- * @param horizontal If true, the separator is horizontal
- *
- * @ingroup Separator
- */
-EAPI void elm_separator_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
-
-/**
- * @brief Get the horizontal mode of a separator object
- *
- * @param obj The separator object
- * @return If true, the separator is horizontal
- *
- * @see elm_separator_horizontal_set()
- *
- * @ingroup Separator
- */
-EAPI Eina_Bool elm_separator_horizontal_get(const Evas_Object *obj);
-
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_separator_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_separator_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_separator_eo.h b/src/lib/elm_separator_eo.h
new file mode 100644
index 000000000..30b60f455
--- /dev/null
+++ b/src/lib/elm_separator_eo.h
@@ -0,0 +1,43 @@
+#define ELM_OBJ_SEPARATOR_CLASS elm_obj_separator_class_get()
+
+const Eo_Class *elm_obj_separator_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_SEPARATOR_BASE_ID;
+
+enum
+{
+ ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_SET,
+ ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_GET,
+ ELM_OBJ_SEPARATOR_SUB_ID_LAST
+};
+
+#define ELM_OBJ_SEPARATOR_ID(sub_id) (ELM_OBJ_SEPARATOR_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_separator_horizontal_set
+ * @since 1.8
+ *
+ * @brief Set the horizontal mode of a separator object
+ *
+ * @param[in] horizontal
+ *
+ * @see elm_separator_horizontal_set
+ *
+ * @ingroup Separator
+ */
+#define elm_obj_separator_horizontal_set(horizontal) ELM_OBJ_SEPARATOR_ID(ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal)
+
+/**
+ * @def elm_obj_separator_horizontal_get
+ * @since 1.8
+ *
+ * @brief Get the horizontal mode of a separator object
+ *
+ * @param[out] ret
+ *
+ * @see elm_separator_horizontal_get
+ *
+ * @ingroup Separator
+ */
+#define elm_obj_separator_horizontal_get(ret) ELM_OBJ_SEPARATOR_ID(ELM_OBJ_SEPARATOR_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_separator_legacy.h b/src/lib/elm_separator_legacy.h
new file mode 100644
index 000000000..b9d7604d4
--- /dev/null
+++ b/src/lib/elm_separator_legacy.h
@@ -0,0 +1,32 @@
+/**
+ * @brief Add a separator object to @p parent
+ *
+ * @param parent The parent object
+ *
+ * @return The separator object, or NULL upon failure
+ *
+ * @ingroup Separator
+ */
+EAPI Evas_Object *elm_separator_add(Evas_Object *parent);
+
+/**
+ * @brief Set the horizontal mode of a separator object
+ *
+ * @param obj The separator object
+ * @param horizontal If true, the separator is horizontal
+ *
+ * @ingroup Separator
+ */
+EAPI void elm_separator_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * @brief Get the horizontal mode of a separator object
+ *
+ * @param obj The separator object
+ * @return If true, the separator is horizontal
+ *
+ * @see elm_separator_horizontal_set()
+ *
+ * @ingroup Separator
+ */
+EAPI Eina_Bool elm_separator_horizontal_get(const Evas_Object *obj);
diff --git a/src/lib/elm_slider.h b/src/lib/elm_slider.h
index c8f676f37..aea35b19d 100644
--- a/src/lib/elm_slider.h
+++ b/src/lib/elm_slider.h
@@ -66,599 +66,17 @@
* @li @ref slider_example
*/
-#define ELM_OBJ_SLIDER_CLASS elm_obj_slider_class_get()
-
-const Eo_Class *elm_obj_slider_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_SLIDER_BASE_ID;
-
-typedef char *(*slider_func_type)(double);
-typedef void (*slider_freefunc_type)(char *);
-
-enum
-{
- ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_SET,
- ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_GET,
- ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_SET,
- ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_GET,
- ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_SET,
- ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_GET,
- ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_SET,
- ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_GET,
- ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_SET,
- ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_GET,
- ELM_OBJ_SLIDER_SUB_ID_VALUE_SET,
- ELM_OBJ_SLIDER_SUB_ID_VALUE_GET,
- ELM_OBJ_SLIDER_SUB_ID_INVERTED_SET,
- ELM_OBJ_SLIDER_SUB_ID_INVERTED_GET,
- ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_FUNCTION_SET,
- ELM_OBJ_SLIDER_SUB_ID_UNITS_FORMAT_FUNCTION_SET,
- ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_SET,
- ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET,
- ELM_OBJ_SLIDER_SUB_ID_LAST
-};
-
-#define ELM_OBJ_SLIDER_ID(sub_id) (ELM_OBJ_SLIDER_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_slider_span_size_set
- * @since 1.8
- *
- * Set the (exact) length of the bar region of a given slider widget.
- *
- * @param[in] size
- *
- * @see elm_slider_span_size_set
- */
-#define elm_obj_slider_span_size_set(size) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_SET), EO_TYPECHECK(Evas_Coord, size)
-
-/**
- * @def elm_obj_slider_span_size_get
- * @since 1.8
- *
- * Get the length set for the bar region of a given slider widget
- *
- * @param[out] ret
- *
- * @see elm_slider_span_size_get
- */
-#define elm_obj_slider_span_size_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_GET), EO_TYPECHECK(Evas_Coord *, ret)
-
-/**
- * @def elm_obj_slider_unit_format_set
- * @since 1.8
- *
- * Set the format string for the unit label.
- *
- * @param[in] units
- *
- * @see elm_slider_unit_format_set
- */
-#define elm_obj_slider_unit_format_set(units) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_SET), EO_TYPECHECK(const char *, units)
-
-/**
- * @def elm_obj_slider_unit_format_get
- * @since 1.8
- *
- * Get the unit label format of the slider.
- *
- * @param[out] ret
- *
- * @see elm_slider_unit_format_get
- */
-#define elm_obj_slider_unit_format_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_slider_indicator_format_set
- * @since 1.8
- *
- * Set the format string for the indicator label.
- *
- * @param[in] indicator
- *
- * @see elm_slider_indicator_format_set
- */
-#define elm_obj_slider_indicator_format_set(indicator) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_SET), EO_TYPECHECK(const char *, indicator)
-
-/**
- * @def elm_obj_slider_indicator_format_get
- * @since 1.8
- *
- * Get the indicator label format of the slider.
- *
- * @param[out] ret
- *
- * @see elm_slider_indicator_format_get
- */
-#define elm_obj_slider_indicator_format_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_slider_horizontal_set
- * @since 1.8
- *
- * Set the orientation of a given slider widget.
- *
- * @param[in] horizontal
- *
- * @see elm_slider_horizontal_set
- */
-#define elm_obj_slider_horizontal_set(horizontal) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal)
-
-/**
- * @def elm_obj_slider_horizontal_get
- * @since 1.8
- *
- * Retrieve the orientation of a given slider widget
- *
- * @param[out] ret
- *
- * @see elm_slider_horizontal_get
- */
-#define elm_obj_slider_horizontal_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_slider_min_max_set
- * @since 1.8
- *
- * Set the minimum and maximum values for the slider.
- *
- * @param[in] min
- * @param[in] max
- *
- * @see elm_slider_min_max_set
- */
-#define elm_obj_slider_min_max_set(min, max) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_SET), EO_TYPECHECK(double, min), EO_TYPECHECK(double, max)
-
-/**
- * @def elm_obj_slider_min_max_get
- * @since 1.8
- *
- * Get the minimum and maximum values of the slider.
- *
- * @param[out] min
- * @param[out] max
- *
- * @see elm_slider_min_max_get
- */
-#define elm_obj_slider_min_max_get(min, max) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max)
-
-/**
- * @def elm_obj_slider_value_set
- * @since 1.8
- *
- * Set the value the slider displays.
- *
- * @param[in] val
- *
- * @see elm_slider_value_set
- */
-#define elm_obj_slider_value_set(val) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val)
-
-/**
- * @def elm_obj_slider_value_get
- * @since 1.8
- *
- * Get the value displayed by the slider.
- *
- * @param[out] ret
- *
- * @see elm_slider_value_get
- */
-#define elm_obj_slider_value_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_slider_inverted_set
- * @since 1.8
- *
- * Invert a given slider widget's displaying values order
- *
- * @param[in] inverted
- *
- * @see elm_slider_inverted_set
- */
-#define elm_obj_slider_inverted_set(inverted) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INVERTED_SET), EO_TYPECHECK(Eina_Bool, inverted)
-
-/**
- * @def elm_obj_slider_inverted_get
- * @since 1.8
- *
- * Get whether a given slider widget's displaying values are
- * inverted or not.
- *
- * @param[out] ret
- *
- * @see elm_slider_inverted_get
- */
-#define elm_obj_slider_inverted_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INVERTED_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_slider_indicator_format_function_set
- * @since 1.8
- *
- * Set the format function pointer for the indicator label
- *
- * @param[in] func
- * @param[in] free_func
- *
- * @see elm_slider_indicator_format_function_set
- */
-#define elm_obj_slider_indicator_format_function_set(func, free_func) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_FUNCTION_SET), EO_TYPECHECK(slider_func_type, func), EO_TYPECHECK(slider_freefunc_type, free_func)
-
-/**
- * @def elm_obj_slider_units_format_function_set
- * @since 1.8
- *
- * Set the format function pointer for the units label
- *
- * @param[in] func
- * @param[in] free_func
- *
- * @see elm_slider_units_format_function_set
- */
-#define elm_obj_slider_units_format_function_set(func, free_func) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNITS_FORMAT_FUNCTION_SET), EO_TYPECHECK(slider_func_type, func), EO_TYPECHECK(slider_freefunc_type, free_func)
-
-/**
- * @def elm_obj_slider_indicator_show_set
- * @since 1.8
- *
- * Set whether to enlarge slider indicator (augmented knob) or not.
- *
- * @param[in] show
- *
- * @see elm_slider_indicator_show_set
- */
-#define elm_obj_slider_indicator_show_set(show) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_SET), EO_TYPECHECK(Eina_Bool, show)
-
-/**
- * @def elm_obj_slider_indicator_show_get
- * @since 1.8
- *
- * Get whether a given slider widget's enlarging indicator or not.
- *
- * @param[out] ret
- *
- * @see elm_slider_indicator_show_get
- */
-#define elm_obj_slider_indicator_show_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-
/**
* @addtogroup Slider
* @{
*/
-/**
- * Add a new slider widget to the given parent Elementary
- * (container) object.
- *
- * @param parent The parent object.
- * @return a new slider widget handle or @c NULL, on errors.
- *
- * This function inserts a new slider widget on the canvas.
- *
- * @ingroup Slider
- */
-EAPI Evas_Object *elm_slider_add(Evas_Object *parent);
-
-/**
- * Set the (exact) length of the bar region of a given slider widget.
- *
- * @param obj The slider object.
- * @param size The length of the slider's bar region.
- *
- * This sets the minimum width (when in horizontal mode) or height
- * (when in vertical mode) of the actual bar area of the slider
- * @p obj. This in turn affects the object's minimum size. Use
- * this when you're not setting other size hints expanding on the
- * given direction (like weight and alignment hints) and you would
- * like it to have a specific size.
- *
- * @note Icon, end, label, indicator and unit text around @p obj
- * will require their
- * own space, which will make @p obj to require more the @p size,
- * actually.
- *
- * @see elm_slider_span_size_get()
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size);
-
-/**
- * Get the length set for the bar region of a given slider widget
- *
- * @param obj The slider object.
- * @return The length of the slider's bar region.
- *
- * If that size was not set previously, with
- * elm_slider_span_size_set(), this call will return @c 0.
- *
- * @ingroup Slider
- */
-EAPI Evas_Coord elm_slider_span_size_get(const Evas_Object *obj);
-
-/**
- * Set the format string for the unit label.
- *
- * @param obj The slider object.
- * @param format The format string for the unit display.
- *
- * Unit label is displayed all the time, if set, after slider's bar.
- * In horizontal mode, at right and in vertical mode, at bottom.
- *
- * If @c NULL, unit label won't be visible. If not it sets the format
- * string for the label text. To the label text is provided a floating point
- * value, so the label text can display up to 1 floating point value.
- * Note that this is optional.
- *
- * Use a format string such as "%1.2f meters" for example, and it will
- * display values like: "3.14 meters" for a value equal to 3.14159.
- *
- * Default is unit label disabled.
- *
- * @see elm_slider_indicator_format_get()
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_unit_format_set(Evas_Object *obj, const char *format);
-
-/**
- * Get the unit label format of the slider.
- *
- * @param obj The slider object.
- * @return The unit label format string in UTF-8.
- *
- * Unit label is displayed all the time, if set, after slider's bar.
- * In horizontal mode, at right and in vertical mode, at bottom.
- *
- * @see elm_slider_unit_format_set() for more
- * information on how this works.
- *
- * @ingroup Slider
- */
-EAPI const char *elm_slider_unit_format_get(const Evas_Object *obj);
-
-/**
- * Set the format string for the indicator label.
- *
- * @param obj The slider object.
- * @param indicator The format string for the indicator display.
- *
- * The slider may display its value somewhere else then unit label,
- * for example, above the slider knob that is dragged around. This function
- * sets the format string used for this.
- *
- * If @c NULL, indicator label won't be visible. If not it sets the format
- * string for the label text. To the label text is provided a floating point
- * value, so the label text can display up to 1 floating point value.
- * Note that this is optional.
- *
- * Use a format string such as "%1.2f meters" for example, and it will
- * display values like: "3.14 meters" for a value equal to 3.14159.
- *
- * Default is indicator label disabled.
- *
- * @see elm_slider_indicator_format_get()
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator);
-
-/**
- * Get the indicator label format of the slider.
- *
- * @param obj The slider object.
- * @return The indicator label format string in UTF-8.
- *
- * The slider may display its value somewhere else then unit label,
- * for example, above the slider knob that is dragged around. This function
- * gets the format string used for this.
- *
- * @see elm_slider_indicator_format_set() for more
- * information on how this works.
- *
- * @ingroup Slider
- */
-EAPI const char *elm_slider_indicator_format_get(const Evas_Object *obj);
-
-/**
- * Set the format function pointer for the indicator label
- *
- * @param obj The slider object.
- * @param func The indicator format function.
- * @param free_func The freeing function for the format string.
- *
- * Set the callback function to format the indicator string.
- *
- * @see elm_slider_indicator_format_set() for more info on how this works.
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str));
-
-/**
- * Set the format function pointer for the units label
- *
- * @param obj The slider object.
- * @param func The units format function.
- * @param free_func The freeing function for the format string.
- *
- * Set the callback function to format the units string.
- *
- * @see elm_slider_unit_format_set() for more info on how this works.
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_units_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str));
-
-/**
- * Set the orientation of a given slider widget.
- *
- * @param obj The slider object.
- * @param horizontal Use @c EINA_TRUE to make @p obj to be
- * @b horizontal, @c EINA_FALSE to make it @b vertical.
- *
- * Use this function to change how your slider is to be
- * disposed: vertically or horizontally.
- *
- * By default it's displayed horizontally.
- *
- * @see elm_slider_horizontal_get()
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
-
-/**
- * Retrieve the orientation of a given slider widget
- *
- * @param obj The slider object.
- * @return @c EINA_TRUE, if @p obj is set to be @b horizontal,
- * @c EINA_FALSE if it's @b vertical (and on errors).
- *
- * @see elm_slider_horizontal_set() for more details.
- *
- * @ingroup Slider
- */
-EAPI Eina_Bool elm_slider_horizontal_get(const Evas_Object *obj);
-
-/**
- * Set the minimum and maximum values for the slider.
- *
- * @param obj The slider object.
- * @param min The minimum value.
- * @param max The maximum value.
- *
- * Define the allowed range of values to be selected by the user.
- *
- * If actual value is less than @p min, it will be updated to @p min. If it
- * is bigger then @p max, will be updated to @p max. Actual value can be
- * get with elm_slider_value_get().
- *
- * By default, min is equal to 0.0, and max is equal to 1.0.
- *
- * @warning Maximum must be greater than minimum, otherwise behavior
- * is undefined.
- *
- * @see elm_slider_min_max_get()
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max);
-
-/**
- * Get the minimum and maximum values of the slider.
- *
- * @param obj The slider object.
- * @param min Pointer to store the minimum value.
- * @param max Pointer to store the maximum value.
- *
- * @note If only one value is needed, the other pointer can be passed
- * as @c NULL.
- *
- * @see elm_slider_min_max_set() for details.
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max);
-
-/**
- * Set the value the slider displays.
- *
- * @param obj The slider object.
- * @param val The value to be displayed.
- *
- * Value will be presented on the unit label following format specified with
- * elm_slider_unit_format_set() and on indicator with
- * elm_slider_indicator_format_set().
- *
- * @warning The value must to be between min and max values. This values
- * are set by elm_slider_min_max_set().
- *
- * @see elm_slider_value_get()
- * @see elm_slider_unit_format_set()
- * @see elm_slider_indicator_format_set()
- * @see elm_slider_min_max_set()
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_value_set(Evas_Object *obj, double val);
-
-/**
- * Get the value displayed by the slider.
- *
- * @param obj The slider object.
- * @return The value displayed.
- *
- * @see elm_slider_value_set() for details.
- *
- * @ingroup Slider
- */
-EAPI double elm_slider_value_get(const Evas_Object *obj);
-
-/**
- * Invert a given slider widget's displaying values order
- *
- * @param obj The slider object.
- * @param inverted Use @c EINA_TRUE to make @p obj inverted,
- * @c EINA_FALSE to bring it back to default, non-inverted values.
- *
- * A slider may be @b inverted, in which state it gets its
- * values inverted, with high vales being on the left or top and
- * low values on the right or bottom, as opposed to normally have
- * the low values on the former and high values on the latter,
- * respectively, for horizontal and vertical modes.
- *
- * @see elm_slider_inverted_get()
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted);
-
-/**
- * Get whether a given slider widget's displaying values are
- * inverted or not.
- *
- * @param obj The slider object.
- * @return @c EINA_TRUE, if @p obj has inverted values,
- * @c EINA_FALSE otherwise (and on errors).
- *
- * @see elm_slider_inverted_set() for more details.
- *
- * @ingroup Slider
- */
-EAPI Eina_Bool elm_slider_inverted_get(const Evas_Object *obj);
-
-/**
- * Set whether to enlarge slider indicator (augmented knob) or not.
- *
- * @param obj The slider object.
- * @param show @c EINA_TRUE will make it enlarge, @c EINA_FALSE will
- * let the knob always at default size.
- *
- * By default, indicator will be bigger while dragged by the user.
- *
- * @warning It won't display values set with
- * elm_slider_indicator_format_set() if you disable indicator.
- *
- * @ingroup Slider
- */
-EAPI void elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show);
-
-/**
- * Get whether a given slider widget's enlarging indicator or not.
- *
- * @param obj The slider object.
- * @return @c EINA_TRUE, if @p obj is enlarging indicator, or
- * @c EINA_FALSE otherwise (and on errors).
- *
- * @see elm_slider_indicator_show_set() for details.
- *
- * @ingroup Slider
- */
-EAPI Eina_Bool elm_slider_indicator_show_get(const Evas_Object *obj);
-
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_slider_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_slider_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_slider_eo.h b/src/lib/elm_slider_eo.h
new file mode 100644
index 000000000..35872d65a
--- /dev/null
+++ b/src/lib/elm_slider_eo.h
@@ -0,0 +1,291 @@
+#define ELM_OBJ_SLIDER_CLASS elm_obj_slider_class_get()
+
+const Eo_Class *elm_obj_slider_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_SLIDER_BASE_ID;
+
+typedef char *(*slider_func_type)(double);
+typedef void (*slider_freefunc_type)(char *);
+
+enum
+{
+ ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_SET,
+ ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_GET,
+ ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_SET,
+ ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_GET,
+ ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_SET,
+ ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_GET,
+ ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_SET,
+ ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_GET,
+ ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_SET,
+ ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_GET,
+ ELM_OBJ_SLIDER_SUB_ID_VALUE_SET,
+ ELM_OBJ_SLIDER_SUB_ID_VALUE_GET,
+ ELM_OBJ_SLIDER_SUB_ID_INVERTED_SET,
+ ELM_OBJ_SLIDER_SUB_ID_INVERTED_GET,
+ ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_FUNCTION_SET,
+ ELM_OBJ_SLIDER_SUB_ID_UNITS_FORMAT_FUNCTION_SET,
+ ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_SET,
+ ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET,
+ ELM_OBJ_SLIDER_SUB_ID_LAST
+};
+
+#define ELM_OBJ_SLIDER_ID(sub_id) (ELM_OBJ_SLIDER_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_slider_span_size_set
+ * @since 1.8
+ *
+ * Set the (exact) length of the bar region of a given slider widget.
+ *
+ * @param[in] size
+ *
+ * @see elm_slider_span_size_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_span_size_set(size) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_SET), EO_TYPECHECK(Evas_Coord, size)
+
+/**
+ * @def elm_obj_slider_span_size_get
+ * @since 1.8
+ *
+ * Get the length set for the bar region of a given slider widget
+ *
+ * @param[out] ret
+ *
+ * @see elm_slider_span_size_get
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_span_size_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_SPAN_SIZE_GET), EO_TYPECHECK(Evas_Coord *, ret)
+
+/**
+ * @def elm_obj_slider_unit_format_set
+ * @since 1.8
+ *
+ * Set the format string for the unit label.
+ *
+ * @param[in] units
+ *
+ * @see elm_slider_unit_format_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_unit_format_set(units) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_SET), EO_TYPECHECK(const char *, units)
+
+/**
+ * @def elm_obj_slider_unit_format_get
+ * @since 1.8
+ *
+ * Get the unit label format of the slider.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slider_unit_format_get
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_unit_format_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNIT_FORMAT_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_slider_indicator_format_set
+ * @since 1.8
+ *
+ * Set the format string for the indicator label.
+ *
+ * @param[in] indicator
+ *
+ * @see elm_slider_indicator_format_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_indicator_format_set(indicator) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_SET), EO_TYPECHECK(const char *, indicator)
+
+/**
+ * @def elm_obj_slider_indicator_format_get
+ * @since 1.8
+ *
+ * Get the indicator label format of the slider.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slider_indicator_format_get
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_indicator_format_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_slider_horizontal_set
+ * @since 1.8
+ *
+ * Set the orientation of a given slider widget.
+ *
+ * @param[in] horizontal
+ *
+ * @see elm_slider_horizontal_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_horizontal_set(horizontal) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal)
+
+/**
+ * @def elm_obj_slider_horizontal_get
+ * @since 1.8
+ *
+ * Retrieve the orientation of a given slider widget
+ *
+ * @param[out] ret
+ *
+ * @see elm_slider_horizontal_get
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_horizontal_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_slider_min_max_set
+ * @since 1.8
+ *
+ * Set the minimum and maximum values for the slider.
+ *
+ * @param[in] min
+ * @param[in] max
+ *
+ * @see elm_slider_min_max_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_min_max_set(min, max) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_SET), EO_TYPECHECK(double, min), EO_TYPECHECK(double, max)
+
+/**
+ * @def elm_obj_slider_min_max_get
+ * @since 1.8
+ *
+ * Get the minimum and maximum values of the slider.
+ *
+ * @param[out] min
+ * @param[out] max
+ *
+ * @see elm_slider_min_max_get
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_min_max_get(min, max) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max)
+
+/**
+ * @def elm_obj_slider_value_set
+ * @since 1.8
+ *
+ * Set the value the slider displays.
+ *
+ * @param[in] val
+ *
+ * @see elm_slider_value_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_value_set(val) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val)
+
+/**
+ * @def elm_obj_slider_value_get
+ * @since 1.8
+ *
+ * Get the value displayed by the slider.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slider_value_get
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_value_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_slider_inverted_set
+ * @since 1.8
+ *
+ * Invert a given slider widget's displaying values order
+ *
+ * @param[in] inverted
+ *
+ * @see elm_slider_inverted_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_inverted_set(inverted) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INVERTED_SET), EO_TYPECHECK(Eina_Bool, inverted)
+
+/**
+ * @def elm_obj_slider_inverted_get
+ * @since 1.8
+ *
+ * Get whether a given slider widget's displaying values are
+ * inverted or not.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slider_inverted_get
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_inverted_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INVERTED_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_slider_indicator_format_function_set
+ * @since 1.8
+ *
+ * Set the format function pointer for the indicator label
+ *
+ * @param[in] func
+ * @param[in] free_func
+ *
+ * @see elm_slider_indicator_format_function_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_indicator_format_function_set(func, free_func) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_FORMAT_FUNCTION_SET), EO_TYPECHECK(slider_func_type, func), EO_TYPECHECK(slider_freefunc_type, free_func)
+
+/**
+ * @def elm_obj_slider_units_format_function_set
+ * @since 1.8
+ *
+ * Set the format function pointer for the units label
+ *
+ * @param[in] func
+ * @param[in] free_func
+ *
+ * @see elm_slider_units_format_function_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_units_format_function_set(func, free_func) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_UNITS_FORMAT_FUNCTION_SET), EO_TYPECHECK(slider_func_type, func), EO_TYPECHECK(slider_freefunc_type, free_func)
+
+/**
+ * @def elm_obj_slider_indicator_show_set
+ * @since 1.8
+ *
+ * Set whether to enlarge slider indicator (augmented knob) or not.
+ *
+ * @param[in] show
+ *
+ * @see elm_slider_indicator_show_set
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_indicator_show_set(show) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_SET), EO_TYPECHECK(Eina_Bool, show)
+
+/**
+ * @def elm_obj_slider_indicator_show_get
+ * @since 1.8
+ *
+ * Get whether a given slider widget's enlarging indicator or not.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slider_indicator_show_get
+ *
+ * @ingroup Slider
+ */
+#define elm_obj_slider_indicator_show_get(ret) ELM_OBJ_SLIDER_ID(ELM_OBJ_SLIDER_SUB_ID_INDICATOR_SHOW_GET), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_slider_legacy.h b/src/lib/elm_slider_legacy.h
new file mode 100644
index 000000000..a547b5550
--- /dev/null
+++ b/src/lib/elm_slider_legacy.h
@@ -0,0 +1,330 @@
+/**
+ * Add a new slider widget to the given parent Elementary
+ * (container) object.
+ *
+ * @param parent The parent object.
+ * @return a new slider widget handle or @c NULL, on errors.
+ *
+ * This function inserts a new slider widget on the canvas.
+ *
+ * @ingroup Slider
+ */
+EAPI Evas_Object *elm_slider_add(Evas_Object *parent);
+
+/**
+ * Set the (exact) length of the bar region of a given slider widget.
+ *
+ * @param obj The slider object.
+ * @param size The length of the slider's bar region.
+ *
+ * This sets the minimum width (when in horizontal mode) or height
+ * (when in vertical mode) of the actual bar area of the slider
+ * @p obj. This in turn affects the object's minimum size. Use
+ * this when you're not setting other size hints expanding on the
+ * given direction (like weight and alignment hints) and you would
+ * like it to have a specific size.
+ *
+ * @note Icon, end, label, indicator and unit text around @p obj
+ * will require their
+ * own space, which will make @p obj to require more the @p size,
+ * actually.
+ *
+ * @see elm_slider_span_size_get()
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size);
+
+/**
+ * Get the length set for the bar region of a given slider widget
+ *
+ * @param obj The slider object.
+ * @return The length of the slider's bar region.
+ *
+ * If that size was not set previously, with
+ * elm_slider_span_size_set(), this call will return @c 0.
+ *
+ * @ingroup Slider
+ */
+EAPI Evas_Coord elm_slider_span_size_get(const Evas_Object *obj);
+
+/**
+ * Set the format string for the unit label.
+ *
+ * @param obj The slider object.
+ * @param format The format string for the unit display.
+ *
+ * Unit label is displayed all the time, if set, after slider's bar.
+ * In horizontal mode, at right and in vertical mode, at bottom.
+ *
+ * If @c NULL, unit label won't be visible. If not it sets the format
+ * string for the label text. To the label text is provided a floating point
+ * value, so the label text can display up to 1 floating point value.
+ * Note that this is optional.
+ *
+ * Use a format string such as "%1.2f meters" for example, and it will
+ * display values like: "3.14 meters" for a value equal to 3.14159.
+ *
+ * Default is unit label disabled.
+ *
+ * @see elm_slider_indicator_format_get()
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_unit_format_set(Evas_Object *obj, const char *format);
+
+/**
+ * Get the unit label format of the slider.
+ *
+ * @param obj The slider object.
+ * @return The unit label format string in UTF-8.
+ *
+ * Unit label is displayed all the time, if set, after slider's bar.
+ * In horizontal mode, at right and in vertical mode, at bottom.
+ *
+ * @see elm_slider_unit_format_set() for more
+ * information on how this works.
+ *
+ * @ingroup Slider
+ */
+EAPI const char *elm_slider_unit_format_get(const Evas_Object *obj);
+
+/**
+ * Set the format string for the indicator label.
+ *
+ * @param obj The slider object.
+ * @param indicator The format string for the indicator display.
+ *
+ * The slider may display its value somewhere else then unit label,
+ * for example, above the slider knob that is dragged around. This function
+ * sets the format string used for this.
+ *
+ * If @c NULL, indicator label won't be visible. If not it sets the format
+ * string for the label text. To the label text is provided a floating point
+ * value, so the label text can display up to 1 floating point value.
+ * Note that this is optional.
+ *
+ * Use a format string such as "%1.2f meters" for example, and it will
+ * display values like: "3.14 meters" for a value equal to 3.14159.
+ *
+ * Default is indicator label disabled.
+ *
+ * @see elm_slider_indicator_format_get()
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator);
+
+/**
+ * Get the indicator label format of the slider.
+ *
+ * @param obj The slider object.
+ * @return The indicator label format string in UTF-8.
+ *
+ * The slider may display its value somewhere else then unit label,
+ * for example, above the slider knob that is dragged around. This function
+ * gets the format string used for this.
+ *
+ * @see elm_slider_indicator_format_set() for more
+ * information on how this works.
+ *
+ * @ingroup Slider
+ */
+EAPI const char *elm_slider_indicator_format_get(const Evas_Object *obj);
+
+/**
+ * Set the orientation of a given slider widget.
+ *
+ * @param obj The slider object.
+ * @param horizontal Use @c EINA_TRUE to make @p obj to be
+ * @b horizontal, @c EINA_FALSE to make it @b vertical.
+ *
+ * Use this function to change how your slider is to be
+ * disposed: vertically or horizontally.
+ *
+ * By default it's displayed horizontally.
+ *
+ * @see elm_slider_horizontal_get()
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+/**
+ * Retrieve the orientation of a given slider widget
+ *
+ * @param obj The slider object.
+ * @return @c EINA_TRUE, if @p obj is set to be @b horizontal,
+ * @c EINA_FALSE if it's @b vertical (and on errors).
+ *
+ * @see elm_slider_horizontal_set() for more details.
+ *
+ * @ingroup Slider
+ */
+EAPI Eina_Bool elm_slider_horizontal_get(const Evas_Object *obj);
+
+/**
+ * Set the minimum and maximum values for the slider.
+ *
+ * @param obj The slider object.
+ * @param min The minimum value.
+ * @param max The maximum value.
+ *
+ * Define the allowed range of values to be selected by the user.
+ *
+ * If actual value is less than @p min, it will be updated to @p min. If it
+ * is bigger then @p max, will be updated to @p max. Actual value can be
+ * get with elm_slider_value_get().
+ *
+ * By default, min is equal to 0.0, and max is equal to 1.0.
+ *
+ * @warning Maximum must be greater than minimum, otherwise behavior
+ * is undefined.
+ *
+ * @see elm_slider_min_max_get()
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max);
+
+/**
+ * Get the minimum and maximum values of the slider.
+ *
+ * @param obj The slider object.
+ * @param min Pointer to store the minimum value.
+ * @param max Pointer to store the maximum value.
+ *
+ * @note If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @see elm_slider_min_max_set() for details.
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max);
+
+/**
+ * Set the value the slider displays.
+ *
+ * @param obj The slider object.
+ * @param val The value to be displayed.
+ *
+ * Value will be presented on the unit label following format specified with
+ * elm_slider_unit_format_set() and on indicator with
+ * elm_slider_indicator_format_set().
+ *
+ * @warning The value must to be between min and max values. This values
+ * are set by elm_slider_min_max_set().
+ *
+ * @see elm_slider_value_get()
+ * @see elm_slider_unit_format_set()
+ * @see elm_slider_indicator_format_set()
+ * @see elm_slider_min_max_set()
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_value_set(Evas_Object *obj, double val);
+
+/**
+ * Get the value displayed by the slider.
+ *
+ * @param obj The slider object.
+ * @return The value displayed.
+ *
+ * @see elm_slider_value_set() for details.
+ *
+ * @ingroup Slider
+ */
+EAPI double elm_slider_value_get(const Evas_Object *obj);
+
+/**
+ * Invert a given slider widget's displaying values order
+ *
+ * @param obj The slider object.
+ * @param inverted Use @c EINA_TRUE to make @p obj inverted,
+ * @c EINA_FALSE to bring it back to default, non-inverted values.
+ *
+ * A slider may be @b inverted, in which state it gets its
+ * values inverted, with high vales being on the left or top and
+ * low values on the right or bottom, as opposed to normally have
+ * the low values on the former and high values on the latter,
+ * respectively, for horizontal and vertical modes.
+ *
+ * @see elm_slider_inverted_get()
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted);
+
+/**
+ * Get whether a given slider widget's displaying values are
+ * inverted or not.
+ *
+ * @param obj The slider object.
+ * @return @c EINA_TRUE, if @p obj has inverted values,
+ * @c EINA_FALSE otherwise (and on errors).
+ *
+ * @see elm_slider_inverted_set() for more details.
+ *
+ * @ingroup Slider
+ */
+EAPI Eina_Bool elm_slider_inverted_get(const Evas_Object *obj);
+
+/**
+ * Set the format function pointer for the indicator label
+ *
+ * @param obj The slider object.
+ * @param func The indicator format function.
+ * @param free_func The freeing function for the format string.
+ *
+ * Set the callback function to format the indicator string.
+ *
+ * @see elm_slider_indicator_format_set() for more info on how this works.
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str));
+
+/**
+ * Set the format function pointer for the units label
+ *
+ * @param obj The slider object.
+ * @param func The units format function.
+ * @param free_func The freeing function for the format string.
+ *
+ * Set the callback function to format the units string.
+ *
+ * @see elm_slider_unit_format_set() for more info on how this works.
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_units_format_function_set(Evas_Object *obj, char *(*func)(double val), void (*free_func)(char *str));
+
+/**
+ * Set whether to enlarge slider indicator (augmented knob) or not.
+ *
+ * @param obj The slider object.
+ * @param show @c EINA_TRUE will make it enlarge, @c EINA_FALSE will
+ * let the knob always at default size.
+ *
+ * By default, indicator will be bigger while dragged by the user.
+ *
+ * @warning It won't display values set with
+ * elm_slider_indicator_format_set() if you disable indicator.
+ *
+ * @ingroup Slider
+ */
+EAPI void elm_slider_indicator_show_set(Evas_Object *obj, Eina_Bool show);
+
+/**
+ * Get whether a given slider widget's enlarging indicator or not.
+ *
+ * @param obj The slider object.
+ * @return @c EINA_TRUE, if @p obj is enlarging indicator, or
+ * @c EINA_FALSE otherwise (and on errors).
+ *
+ * @see elm_slider_indicator_show_set() for details.
+ *
+ * @ingroup Slider
+ */
+EAPI Eina_Bool elm_slider_indicator_show_get(const Evas_Object *obj);
diff --git a/src/lib/elm_slideshow.h b/src/lib/elm_slideshow.h
index d96e2024d..08746c61e 100644
--- a/src/lib/elm_slideshow.h
+++ b/src/lib/elm_slideshow.h
@@ -67,815 +67,13 @@
* @{
*/
-
-#define ELM_OBJ_SLIDESHOW_CLASS elm_obj_slideshow_class_get()
-
-const Eo_Class *elm_obj_slideshow_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_SLIDESHOW_BASE_ID;
-
-enum
-{
- ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_ADD,
- ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_SORTED_INSERT,
- ELM_OBJ_SLIDESHOW_SUB_ID_NEXT,
- ELM_OBJ_SLIDESHOW_SUB_ID_PREVIOUS,
- ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITIONS_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUTS_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_SET,
- ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_SET,
- ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_SET,
- ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_SET,
- ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_CLEAR,
- ELM_OBJ_SLIDESHOW_SUB_ID_ITEMS_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_CURRENT_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_SET,
- ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_SET,
- ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_NTH_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_COUNT_GET,
- ELM_OBJ_SLIDESHOW_SUB_ID_LAST
-};
-
-#define ELM_OBJ_SLIDESHOW_ID(sub_id) (ELM_OBJ_SLIDESHOW_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_slideshow_item_add
- * @since 1.8
- *
- * Add (append) a new item in a given slideshow widget.
- *
- * @param[in] itc
- * @param[in] data
- * @param[out] ret
- *
- * @see elm_slideshow_item_add
- */
-#define elm_obj_slideshow_item_add(itc, data, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_ADD), EO_TYPECHECK(const Elm_Slideshow_Item_Class *, itc), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_slideshow_item_sorted_insert
- * @since 1.8
- *
- * Insert a new item into the given slideshow widget, using the func
- * function to sort items (by item handles).
- *
- * @param[in] itc
- * @param[in] data
- * @param[in] func
- * @param[out] ret
- *
- * @see elm_slideshow_item_sorted_insert
- */
-#define elm_obj_slideshow_item_sorted_insert(itc, data, func, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_SORTED_INSERT), EO_TYPECHECK(const Elm_Slideshow_Item_Class *, itc), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Eina_Compare_Cb, func), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_slideshow_next
- * @since 1.8
- *
- * Slide to the next item, in a given slideshow widget
- *
- *
- * @see elm_slideshow_next
- */
-#define elm_obj_slideshow_next() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_NEXT)
-
-/**
- * @def elm_obj_slideshow_previous
- * @since 1.8
- *
- * Slide to the previous item, in a given slideshow widget
- *
- *
- * @see elm_slideshow_previous
- */
-#define elm_obj_slideshow_previous() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_PREVIOUS)
-
-/**
- * @def elm_obj_slideshow_transitions_get
- * @since 1.8
- *
- * Returns the list of sliding transition/effect names available, for a
- * given slideshow widget.
- *
- * @param[out] ret
- *
- * @see elm_slideshow_transitions_get
- */
-#define elm_obj_slideshow_transitions_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITIONS_GET), EO_TYPECHECK(const Eina_List **, ret)
-
-/**
- * @def elm_obj_slideshow_layouts_get
- * @since 1.8
- *
- * Returns the list of layout names available, for a given
- * slideshow widget.
- *
- * @param[out] ret
- *
- * @see elm_slideshow_layouts_get
- */
-#define elm_obj_slideshow_layouts_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUTS_GET), EO_TYPECHECK(const Eina_List **, ret)
-
-/**
- * @def elm_obj_slideshow_transition_set
- * @since 1.8
- *
- * Set the current slide transition/effect in use for a given
- * slideshow widget.
- *
- * @param[in] transition
- *
- * @see elm_slideshow_transition_set
- */
-#define elm_obj_slideshow_transition_set(transition) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_SET), EO_TYPECHECK(const char *, transition)
-
-/**
- * @def elm_obj_slideshow_transition_get
- * @since 1.8
- *
- * Get the current slide transition/effect in use for a given
- * slideshow widget.
- *
- * @param[out] ret
- *
- * @see elm_slideshow_transition_get
- */
-#define elm_obj_slideshow_transition_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_slideshow_timeout_set
- * @since 1.8
- *
- * Set the interval between each image transition on a given
- * slideshow widget.
- *
- * @param[in] timeout
- *
- * @see elm_slideshow_timeout_set
- */
-#define elm_obj_slideshow_timeout_set(timeout) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_SET), EO_TYPECHECK(double, timeout)
-
-/**
- * @def elm_obj_slideshow_timeout_get
- * @since 1.8
- *
- * Get the interval set for image transitions on a given slideshow
- * widget.
- *
- * @param[out] ret
- *
- * @see elm_slideshow_timeout_get
- */
-#define elm_obj_slideshow_timeout_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_slideshow_loop_set
- * @since 1.8
- *
- * Set if, after a slideshow is started, for a given slideshow
- * widget.
- *
- * @param[in] loop
- *
- * @see elm_slideshow_loop_set
- */
-#define elm_obj_slideshow_loop_set(loop) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_SET), EO_TYPECHECK(Eina_Bool, loop)
-
-/**
- * @def elm_obj_slideshow_layout_get
- * @since 1.8
- *
- * Get the current slide layout in use for a given slideshow widget
- *
- * @param[out] ret
- *
- * @see elm_slideshow_layout_get
- */
-#define elm_obj_slideshow_layout_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_slideshow_layout_set
- * @since 1.8
- *
- * Set the current slide layout in use for a given slideshow widget
- *
- * @param[in] layout
- *
- * @see elm_slideshow_layout_set
- */
-#define elm_obj_slideshow_layout_set(layout) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_SET), EO_TYPECHECK(const char *, layout)
-
-/**
- * @def elm_obj_slideshow_loop_get
- * @since 1.8
- *
- * Get if, after a slideshow is started, for a given slideshow
- * widget.
- *
- * @param[out] ret
- *
- * @see elm_slideshow_loop_get
- */
-#define elm_obj_slideshow_loop_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_slideshow_clear
- * @since 1.8
- *
- * Remove all items from a given slideshow widget
- *
- *
- * @see elm_slideshow_clear
- */
-#define elm_obj_slideshow_clear() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CLEAR)
-
-/**
- * @def elm_obj_slideshow_items_get
- * @since 1.8
- *
- * Get the internal list of items in a given slideshow widget.
- *
- * @param[out] ret
- *
- * @see elm_slideshow_items_get
- */
-#define elm_obj_slideshow_items_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret)
-
-/**
- * @def elm_obj_slideshow_item_current_get
- * @since 1.8
- *
- * Returns the currently displayed item, in a given slideshow widget
- *
- * @param[out] ret
- *
- * @see elm_slideshow_item_current_get
- */
-#define elm_obj_slideshow_item_current_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_CURRENT_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_slideshow_cache_before_get
- * @since 1.8
- *
- * Retrieve the number of items to cache, on a given slideshow widget,
- *
- * @param[out] ret
- *
- * @see elm_slideshow_cache_before_get
- */
-#define elm_obj_slideshow_cache_before_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_GET), EO_TYPECHECK(int *, ret)
-
-/**
- * @def elm_obj_slideshow_cache_before_set
- * @since 1.8
- *
- * Set the number of items to cache, on a given slideshow widget,
- *
- * @param[in] count
- *
- * @see elm_slideshow_cache_before_set
- */
-#define elm_obj_slideshow_cache_before_set(count) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_SET), EO_TYPECHECK(int, count)
-
-/**
- * @def elm_obj_slideshow_cache_after_get
- * @since 1.8
- *
- * Retrieve the number of items to cache, on a given slideshow widget,
- * <b>after the current item</b>
- *
- * @param[out] ret
- *
- * @see elm_slideshow_cache_after_get
- */
-#define elm_obj_slideshow_cache_after_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_GET), EO_TYPECHECK(int *, ret)
-
-/**
- * @def elm_obj_slideshow_cache_after_set
- * @since 1.8
- *
- * Set the number of items to cache, on a given slideshow widget,
- * <b>after the current item</b>
- *
- * @param[in] count
- *
- * @see elm_slideshow_cache_after_set
- */
-#define elm_obj_slideshow_cache_after_set(count) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_SET), EO_TYPECHECK(int, count)
-
-/**
- * @def elm_obj_slideshow_item_nth_get
- * @since 1.8
- *
- * Get the the item, in a given slideshow widget, placed at
- * position @p nth, in its internal items list
- *
- * @param[in] nth
- * @param[out] ret
- *
- * @see elm_slideshow_item_nth_get
- */
-#define elm_obj_slideshow_item_nth_get(nth, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_NTH_GET), EO_TYPECHECK(unsigned int, nth), EO_TYPECHECK(Elm_Object_Item **, ret)
-
-/**
- * @def elm_obj_slideshow_count_get
- * @since 1.8
- *
- * Get the number of items stored in a given slideshow widget
- *
- * @param[out] ret
- *
- * @see elm_slideshow_count_get
- */
-#define elm_obj_slideshow_count_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_COUNT_GET), EO_TYPECHECK(unsigned int *, ret)
-
-typedef struct _Elm_Slideshow_Item_Class Elm_Slideshow_Item_Class; /**< Slideshow item class definition struct */
-typedef struct _Elm_Slideshow_Item_Class_Func Elm_Slideshow_Item_Class_Func; /**< Class functions for slideshow item classes. */
-typedef Evas_Object *(*SlideshowItemGetFunc)(void *data, Evas_Object *obj); /**< Image fetching class function for slideshow item classes. */
-typedef void (*SlideshowItemDelFunc)(void *data, Evas_Object *obj); /**< Deletion class function for slideshow item classes. */
-
-/**
- * @struct _Elm_Slideshow_Item_Class
- *
- * Slideshow item class definition. See @ref Slideshow_Items for
- * field details.
- */
-struct _Elm_Slideshow_Item_Class
-{
- struct _Elm_Slideshow_Item_Class_Func
- {
- SlideshowItemGetFunc get;
- SlideshowItemDelFunc del;
- } func;
-}; /**< member definitions of #Elm_Slideshow_Item_Class */
-
-/**
- * Add a new slideshow widget to the given parent Elementary
- * (container) object
- *
- * @param parent The parent object
- * @return A new slideshow widget handle or @c NULL, on errors
- *
- * This function inserts a new slideshow widget on the canvas.
- *
- * @ingroup Slideshow
- */
-EAPI Evas_Object *elm_slideshow_add(Evas_Object *parent);
-
-/**
- * Add (append) a new item in a given slideshow widget.
- *
- * @param obj The slideshow object
- * @param itc The item class for the item
- * @param data The item's data
- * @return A handle to the item added or @c NULL, on errors
- *
- * Add a new item to @p obj's internal list of items, appending it.
- * The item's class must contain the function really fetching the
- * image object to show for this item, which could be an Evas image
- * object or an Elementary photo, for example. The @p data
- * parameter is going to be passed to both class functions of the
- * item.
- *
- * @see #Elm_Slideshow_Item_Class
- * @see elm_slideshow_item_sorted_insert()
- * @see elm_object_item_data_set()
- *
- * @ingroup Slideshow
- */
-EAPI Elm_Object_Item *elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data);
-
-/**
- * Insert a new item into the given slideshow widget, using the @p func
- * function to sort items (by item handles).
- *
- * @param obj The slideshow object
- * @param itc The item class for the item
- * @param data The item's data
- * @param func The comparing function to be used to sort slideshow
- * items <b>by #Elm_Slideshow_Item_Class item handles</b>
- * @return Returns The slideshow item handle, on success, or
- * @c NULL, on errors
- *
- * Add a new item to @p obj's internal list of items, in a position
- * determined by the @p func comparing function. The item's class
- * must contain the function really fetching the image object to
- * show for this item, which could be an Evas image object or an
- * Elementary photo, for example. The @p data parameter is going to
- * be passed to both class functions of the item.
- *
- * @see #Elm_Slideshow_Item_Class
- * @see elm_slideshow_item_add()
- *
- * @ingroup Slideshow
- */
-EAPI Elm_Object_Item *elm_slideshow_item_sorted_insert(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data, Eina_Compare_Cb func);
-
-/**
- * Display a given slideshow widget's item, programmatically.
- *
- * @param it The item to display on @p obj's viewport
- *
- * The change between the current item and @p item will use the
- * transition @p obj is set to use (@see
- * elm_slideshow_transition_set()).
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_item_show(Elm_Object_Item *it);
-
-/**
- * Slide to the @b next item, in a given slideshow widget
- *
- * @param obj The slideshow object
- *
- * The sliding animation @p obj is set to use will be the
- * transition effect used, after this call is issued.
- *
- * @note If the end of the slideshow's internal list of items is
- * reached, it'll wrap around to the list's beginning, again.
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_next(Evas_Object *obj);
-
-/**
- * Slide to the @b previous item, in a given slideshow widget
- *
- * @param obj The slideshow object
- *
- * The sliding animation @p obj is set to use will be the
- * transition effect used, after this call is issued.
- *
- * @note If the beginning of the slideshow's internal list of items
- * is reached, it'll wrap around to the list's end, again.
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_previous(Evas_Object *obj);
-
-/**
- * Returns the list of sliding transition/effect names available, for a
- * given slideshow widget.
- *
- * @param obj The slideshow object
- * @return The list of transitions (list of @b stringshared strings
- * as data)
- *
- * The transitions, which come from @p obj's theme, must be an EDC
- * data item named @c "transitions" on the theme file, with (prefix)
- * names of EDC programs actually implementing them.
- *
- * The available transitions for slideshows on the default theme are:
- * - @c "fade" - the current item fades out, while the new one
- * fades in to the slideshow's viewport.
- * - @c "black_fade" - the current item fades to black, and just
- * then, the new item will fade in.
- * - @c "horizontal" - the current item slides horizontally, until
- * it gets out of the slideshow's viewport, while the new item
- * comes from the left to take its place.
- * - @c "vertical" - the current item slides vertically, until it
- * gets out of the slideshow's viewport, while the new item comes
- * from the bottom to take its place.
- * - @c "square" - the new item starts to appear from the middle of
- * the current one, but with a tiny size, growing until its
- * target (full) size and covering the old one.
- *
- * @warning The stringshared strings get no new references
- * exclusive to the user grabbing the list, here, so if you'd like
- * to use them out of this call's context, you'd better @c
- * eina_stringshare_ref() them. Also the list is an internal list and
- * so is only valid for as long as the slideshow object is valid and
- * has not internally changed its list for some reason, so make a
- * copy if you need it around.
- *
- * @see elm_slideshow_transition_set()
- *
- * @ingroup Slideshow
- */
-EAPI const Eina_List *elm_slideshow_transitions_get(const Evas_Object *obj);
-
-/**
- * Set the current slide transition/effect in use for a given
- * slideshow widget
- *
- * @param obj The slideshow object
- * @param transition The new transition's name string
- *
- * If @p transition is implemented in @p obj's theme (i.e., is
- * contained in the list returned by
- * elm_slideshow_transitions_get()), this new sliding effect will
- * be used on the widget.
- *
- * @see elm_slideshow_transitions_get() for more details
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_transition_set(Evas_Object *obj, const char *transition);
-
-/**
- * Get the current slide transition/effect in use for a given
- * slideshow widget
- *
- * @param obj The slideshow object
- * @return The current transition's name
- *
- * @see elm_slideshow_transition_set() for more details
- *
- * @ingroup Slideshow
- */
-EAPI const char *elm_slideshow_transition_get(const Evas_Object *obj);
-
-/**
- * Set the interval between each image transition on a given
- * slideshow widget, <b>and start the slideshow, itself</b>
- *
- * @param obj The slideshow object
- * @param timeout The new displaying timeout for images
- *
- * After this call, the slideshow widget will start cycling its
- * view, sequentially and automatically, with the images of the
- * items it has. The time between each new image displayed is going
- * to be @p timeout, in @b seconds. If a different timeout was set
- * previously and an slideshow was in progress, it will continue
- * with the new time between transitions, after this call.
- *
- * @note A value less than or equal to 0 on @p timeout will disable
- * the widget's internal timer, thus halting any slideshow which
- * could be happening on @p obj.
- *
- * @see elm_slideshow_timeout_get()
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_timeout_set(Evas_Object *obj, double timeout);
-
-/**
- * Get the interval set for image transitions on a given slideshow
- * widget.
- *
- * @param obj The slideshow object
- * @return Returns the timeout set on it or -1.0, on errors
- *
- * @see elm_slideshow_timeout_set() for more details
- *
- * @ingroup Slideshow
- */
-EAPI double elm_slideshow_timeout_get(const Evas_Object *obj);
-
-/**
- * Set if, after a slideshow is started, for a given slideshow
- * widget, its items should be displayed cyclically or not.
- *
- * @param obj The slideshow object
- * @param loop Use @c EINA_TRUE to make it cycle through items or
- * @c EINA_FALSE for it to stop at the end of @p obj's internal
- * list of items
- *
- * @note elm_slideshow_next() and elm_slideshow_previous() will @b
- * ignore what is set by this functions, i.e., they'll @b always
- * cycle through items. This affects only the "automatic"
- * slideshow, as set by elm_slideshow_timeout_set().
- *
- * @see elm_slideshow_loop_get()
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_loop_set(Evas_Object *obj, Eina_Bool loop);
-
-/**
- * Get if, after a slideshow is started, for a given slideshow
- * widget, its items are to be displayed cyclically or not.
- *
- * @param obj The slideshow object
- * @return @c EINA_TRUE, if the items in @p obj will be cycled
- * through or @c EINA_FALSE, otherwise
- *
- * @see elm_slideshow_loop_set() for more details
- *
- * @ingroup Slideshow
- */
-EAPI Eina_Bool elm_slideshow_loop_get(const Evas_Object *obj);
-
-/**
- * Remove all items from a given slideshow widget
- *
- * @param obj The slideshow object
- *
- * This removes (and deletes) all items in @p obj, leaving it
- * empty.
- *
- * @see elm_object_item_del(), to remove just one item.
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_clear(Evas_Object *obj);
-
-/**
- * Get the internal list of items in a given slideshow widget.
- *
- * @param obj The slideshow object
- * @return The list of items (#Elm_Object_Item as data) or
- * @c NULL on errors.
- *
- * This list is @b not to be modified in any way and must not be
- * freed. Use the list members with functions like
- * elm_object_item_del(), elm_object_item_data_get().
- *
- * @warning This list is only valid until @p obj object's internal
- * items list is changed. It should be fetched again with another
- * call to this function when changes happen.
- *
- * @ingroup Slideshow
- */
-EAPI const Eina_List *elm_slideshow_items_get(const Evas_Object *obj);
-
-/**
- * Returns the currently displayed item, in a given slideshow widget
- *
- * @param obj The slideshow object
- * @return A handle to the item being displayed in @p obj or
- * @c NULL, if none is (and on errors)
- *
- * @ingroup Slideshow
- */
-EAPI Elm_Object_Item *elm_slideshow_item_current_get(const Evas_Object *obj);
-
-/**
- * Get the real Evas object created to implement the view of a
- * given slideshow item
- *
- * @param it The slideshow item.
- * @return the Evas object implementing this item's view.
- *
- * This returns the actual Evas object used to implement the
- * specified slideshow item's view. This may be @c NULL, as it may
- * not have been created or may have been deleted, at any time, by
- * the slideshow. <b>Do not modify this object</b> (move, resize,
- * show, hide, etc.), as the slideshow is controlling it. This
- * function is for querying, emitting custom signals or hooking
- * lower level callbacks for events on that object. Do not delete
- * this object under any circumstances.
- *
- * @see elm_object_item_data_get()
- *
- * @ingroup Slideshow
- */
-EAPI Evas_Object *elm_slideshow_item_object_get(const Elm_Object_Item *it);
-
-/**
- * Get the the item, in a given slideshow widget, placed at
- * position @p nth, in its internal items list
- *
- * @param obj The slideshow object
- * @param nth The number of the item to grab a handle to (0 being
- * the first)
- * @return The item stored in @p obj at position @p nth or @c NULL,
- * if there's no item with that index (and on errors)
- *
- * @ingroup Slideshow
- */
-EAPI Elm_Object_Item *elm_slideshow_item_nth_get(const Evas_Object *obj, unsigned int nth);
-
-/**
- * Set the current slide layout in use for a given slideshow widget
- *
- * @param obj The slideshow object
- * @param layout The new layout's name string
- *
- * If @p layout is implemented in @p obj's theme (i.e., is contained
- * in the list returned by elm_slideshow_layouts_get()), this new
- * images layout will be used on the widget.
- *
- * @see elm_slideshow_layouts_get() for more details
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_layout_set(Evas_Object *obj, const char *layout);
-
-/**
- * Get the current slide layout in use for a given slideshow widget
- *
- * @param obj The slideshow object
- * @return The current layout's name
- *
- * @see elm_slideshow_layout_set() for more details
- *
- * @ingroup Slideshow
- */
-EAPI const char *elm_slideshow_layout_get(const Evas_Object *obj);
-
-/**
- * Returns the list of @b layout names available, for a given
- * slideshow widget.
- *
- * @param obj The slideshow object
- * @return The list of layouts (list of @b stringshared strings
- * as data)
- *
- * Slideshow layouts will change how the widget is to dispose each
- * image item in its viewport, with regard to cropping, scaling,
- * etc.
- *
- * The layouts, which come from @p obj's theme, must be an EDC
- * data item name @c "layouts" on the theme file, with (prefix)
- * names of EDC programs actually implementing them.
- *
- * The available layouts for slideshows on the default theme are:
- * - @c "fullscreen" - item images with original aspect, scaled to
- * touch top and down slideshow borders or, if the image's height
- * is not enough, left and right slideshow borders.
- * - @c "not_fullscreen" - the same behavior as the @c "fullscreen"
- * one, but always leaving 10% of the slideshow's dimensions of
- * distance between the item image's borders and the slideshow
- * borders, for each axis.
- *
- * @warning The stringshared strings get no new references
- * exclusive to the user grabbing the list, here, so if you'd like
- * to use them out of this call's context, you'd better @c
- * eina_stringshare_ref() them.
- *
- * @see elm_slideshow_layout_set()
- *
- * @ingroup Slideshow
- */
-EAPI const Eina_List *elm_slideshow_layouts_get(const Evas_Object *obj);
-
-/**
- * Set the number of items to cache, on a given slideshow widget,
- * <b>before the current item</b>
- *
- * @param obj The slideshow object
- * @param count Number of items to cache before the current one
- *
- * The default value for this property is @c 2. See
- * @ref Slideshow_Caching "slideshow caching" for more details.
- *
- * @see elm_slideshow_cache_before_get()
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_cache_before_set(Evas_Object *obj, int count);
-
-/**
- * Retrieve the number of items to cache, on a given slideshow widget,
- * <b>before the current item</b>
- *
- * @param obj The slideshow object
- * @return The number of items set to be cached before the current one
- *
- * @see elm_slideshow_cache_before_set() for more details
- *
- * @ingroup Slideshow
- */
-EAPI int elm_slideshow_cache_before_get(const Evas_Object *obj);
-
-/**
- * Set the number of items to cache, on a given slideshow widget,
- * <b>after the current item</b>
- *
- * @param obj The slideshow object
- * @param count Number of items to cache after the current one
- *
- * The default value for this property is @c 2. See
- * @ref Slideshow_Caching "slideshow caching" for more details.
- *
- * @see elm_slideshow_cache_after_get()
- *
- * @ingroup Slideshow
- */
-EAPI void elm_slideshow_cache_after_set(Evas_Object *obj, int count);
-
-/**
- * Retrieve the number of items to cache, on a given slideshow widget,
- * <b>after the current item</b>
- *
- * @param obj The slideshow object
- * @return The number of items set to be cached after the current one
- *
- * @see elm_slideshow_cache_after_set() for more details
- *
- * @ingroup Slideshow
- */
-EAPI int elm_slideshow_cache_after_get(const Evas_Object *obj);
-
-/**
- * Get the number of items stored in a given slideshow widget
- *
- * @param obj The slideshow object
- * @return The number of items on @p obj, at the moment of this call
- *
- * @ingroup Slideshow
- */
-EAPI unsigned int elm_slideshow_count_get(const Evas_Object *obj);
-
+#include "elm_slideshow_common.h"
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_slideshow_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_slideshow_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_slideshow_common.h b/src/lib/elm_slideshow_common.h
new file mode 100644
index 000000000..23a27214c
--- /dev/null
+++ b/src/lib/elm_slideshow_common.h
@@ -0,0 +1,54 @@
+typedef struct _Elm_Slideshow_Item_Class Elm_Slideshow_Item_Class; /**< Slideshow item class definition struct */
+typedef struct _Elm_Slideshow_Item_Class_Func Elm_Slideshow_Item_Class_Func; /**< Class functions for slideshow item classes. */
+typedef Evas_Object *(*SlideshowItemGetFunc)(void *data, Evas_Object *obj); /**< Image fetching class function for slideshow item classes. */
+typedef void (*SlideshowItemDelFunc)(void *data, Evas_Object *obj); /**< Deletion class function for slideshow item classes. */
+
+/**
+ * @struct _Elm_Slideshow_Item_Class
+ *
+ * Slideshow item class definition. See @ref Slideshow_Items for
+ * field details.
+ */
+struct _Elm_Slideshow_Item_Class
+{
+ struct _Elm_Slideshow_Item_Class_Func
+ {
+ SlideshowItemGetFunc get;
+ SlideshowItemDelFunc del;
+ } func;
+}; /**< member definitions of #Elm_Slideshow_Item_Class */
+
+/**
+ * Display a given slideshow widget's item, programmatically.
+ *
+ * @param it The item to display on @p obj's viewport
+ *
+ * The change between the current item and @p item will use the
+ * transition @p obj is set to use (@see
+ * elm_slideshow_transition_set()).
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_item_show(Elm_Object_Item *it);
+
+/**
+ * Get the real Evas object created to implement the view of a
+ * given slideshow item
+ *
+ * @param it The slideshow item.
+ * @return the Evas object implementing this item's view.
+ *
+ * This returns the actual Evas object used to implement the
+ * specified slideshow item's view. This may be @c NULL, as it may
+ * not have been created or may have been deleted, at any time, by
+ * the slideshow. <b>Do not modify this object</b> (move, resize,
+ * show, hide, etc.), as the slideshow is controlling it. This
+ * function is for querying, emitting custom signals or hooking
+ * lower level callbacks for events on that object. Do not delete
+ * this object under any circumstances.
+ *
+ * @see elm_object_item_data_get()
+ *
+ * @ingroup Slideshow
+ */
+EAPI Evas_Object *elm_slideshow_item_object_get(const Elm_Object_Item *it);
diff --git a/src/lib/elm_slideshow_eo.h b/src/lib/elm_slideshow_eo.h
new file mode 100644
index 000000000..defce7367
--- /dev/null
+++ b/src/lib/elm_slideshow_eo.h
@@ -0,0 +1,373 @@
+#define ELM_OBJ_SLIDESHOW_CLASS elm_obj_slideshow_class_get()
+
+const Eo_Class *elm_obj_slideshow_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_SLIDESHOW_BASE_ID;
+
+enum
+{
+ ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_ADD,
+ ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_SORTED_INSERT,
+ ELM_OBJ_SLIDESHOW_SUB_ID_NEXT,
+ ELM_OBJ_SLIDESHOW_SUB_ID_PREVIOUS,
+ ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITIONS_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUTS_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_SET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_SET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_SET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_SET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_CLEAR,
+ ELM_OBJ_SLIDESHOW_SUB_ID_ITEMS_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_CURRENT_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_SET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_SET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_NTH_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_COUNT_GET,
+ ELM_OBJ_SLIDESHOW_SUB_ID_LAST
+};
+
+#define ELM_OBJ_SLIDESHOW_ID(sub_id) (ELM_OBJ_SLIDESHOW_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_slideshow_item_add
+ * @since 1.8
+ *
+ * Add (append) a new item in a given slideshow widget.
+ *
+ * @param[in] itc
+ * @param[in] data
+ * @param[out] ret
+ *
+ * @see elm_slideshow_item_add
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_item_add(itc, data, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_ADD), EO_TYPECHECK(const Elm_Slideshow_Item_Class *, itc), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_slideshow_item_sorted_insert
+ * @since 1.8
+ *
+ * Insert a new item into the given slideshow widget, using the func
+ * function to sort items (by item handles).
+ *
+ * @param[in] itc
+ * @param[in] data
+ * @param[in] func
+ * @param[out] ret
+ *
+ * @see elm_slideshow_item_sorted_insert
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_item_sorted_insert(itc, data, func, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_SORTED_INSERT), EO_TYPECHECK(const Elm_Slideshow_Item_Class *, itc), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Eina_Compare_Cb, func), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_slideshow_next
+ * @since 1.8
+ *
+ * Slide to the next item, in a given slideshow widget
+ *
+ *
+ * @see elm_slideshow_next
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_next() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_NEXT)
+
+/**
+ * @def elm_obj_slideshow_previous
+ * @since 1.8
+ *
+ * Slide to the previous item, in a given slideshow widget
+ *
+ *
+ * @see elm_slideshow_previous
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_previous() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_PREVIOUS)
+
+/**
+ * @def elm_obj_slideshow_transitions_get
+ * @since 1.8
+ *
+ * Returns the list of sliding transition/effect names available, for a
+ * given slideshow widget.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_transitions_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_transitions_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITIONS_GET), EO_TYPECHECK(const Eina_List **, ret)
+
+/**
+ * @def elm_obj_slideshow_layouts_get
+ * @since 1.8
+ *
+ * Returns the list of layout names available, for a given
+ * slideshow widget.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_layouts_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_layouts_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUTS_GET), EO_TYPECHECK(const Eina_List **, ret)
+
+/**
+ * @def elm_obj_slideshow_transition_set
+ * @since 1.8
+ *
+ * Set the current slide transition/effect in use for a given
+ * slideshow widget.
+ *
+ * @param[in] transition
+ *
+ * @see elm_slideshow_transition_set
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_transition_set(transition) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_SET), EO_TYPECHECK(const char *, transition)
+
+/**
+ * @def elm_obj_slideshow_transition_get
+ * @since 1.8
+ *
+ * Get the current slide transition/effect in use for a given
+ * slideshow widget.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_transition_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_transition_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TRANSITION_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_slideshow_timeout_set
+ * @since 1.8
+ *
+ * Set the interval between each image transition on a given
+ * slideshow widget.
+ *
+ * @param[in] timeout
+ *
+ * @see elm_slideshow_timeout_set
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_timeout_set(timeout) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_SET), EO_TYPECHECK(double, timeout)
+
+/**
+ * @def elm_obj_slideshow_timeout_get
+ * @since 1.8
+ *
+ * Get the interval set for image transitions on a given slideshow
+ * widget.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_timeout_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_timeout_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_TIMEOUT_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_slideshow_loop_set
+ * @since 1.8
+ *
+ * Set if, after a slideshow is started, for a given slideshow
+ * widget.
+ *
+ * @param[in] loop
+ *
+ * @see elm_slideshow_loop_set
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_loop_set(loop) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_SET), EO_TYPECHECK(Eina_Bool, loop)
+
+/**
+ * @def elm_obj_slideshow_layout_get
+ * @since 1.8
+ *
+ * Get the current slide layout in use for a given slideshow widget
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_layout_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_layout_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_slideshow_layout_set
+ * @since 1.8
+ *
+ * Set the current slide layout in use for a given slideshow widget
+ *
+ * @param[in] layout
+ *
+ * @see elm_slideshow_layout_set
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_layout_set(layout) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LAYOUT_SET), EO_TYPECHECK(const char *, layout)
+
+/**
+ * @def elm_obj_slideshow_loop_get
+ * @since 1.8
+ *
+ * Get if, after a slideshow is started, for a given slideshow
+ * widget.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_loop_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_loop_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_LOOP_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_slideshow_clear
+ * @since 1.8
+ *
+ * Remove all items from a given slideshow widget
+ *
+ *
+ * @see elm_slideshow_clear
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_clear() ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CLEAR)
+
+/**
+ * @def elm_obj_slideshow_items_get
+ * @since 1.8
+ *
+ * Get the internal list of items in a given slideshow widget.
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_items_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_items_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret)
+
+/**
+ * @def elm_obj_slideshow_item_current_get
+ * @since 1.8
+ *
+ * Returns the currently displayed item, in a given slideshow widget
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_item_current_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_item_current_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_CURRENT_GET), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_slideshow_cache_before_get
+ * @since 1.8
+ *
+ * Retrieve the number of items to cache, on a given slideshow widget,
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_cache_before_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_cache_before_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_GET), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def elm_obj_slideshow_cache_before_set
+ * @since 1.8
+ *
+ * Set the number of items to cache, on a given slideshow widget,
+ *
+ * @param[in] count
+ *
+ * @see elm_slideshow_cache_before_set
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_cache_before_set(count) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_BEFORE_SET), EO_TYPECHECK(int, count)
+
+/**
+ * @def elm_obj_slideshow_cache_after_get
+ * @since 1.8
+ *
+ * Retrieve the number of items to cache, on a given slideshow widget,
+ * <b>after the current item</b>
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_cache_after_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_cache_after_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_GET), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def elm_obj_slideshow_cache_after_set
+ * @since 1.8
+ *
+ * Set the number of items to cache, on a given slideshow widget,
+ * <b>after the current item</b>
+ *
+ * @param[in] count
+ *
+ * @see elm_slideshow_cache_after_set
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_cache_after_set(count) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_CACHE_AFTER_SET), EO_TYPECHECK(int, count)
+
+/**
+ * @def elm_obj_slideshow_item_nth_get
+ * @since 1.8
+ *
+ * Get the the item, in a given slideshow widget, placed at
+ * position @p nth, in its internal items list
+ *
+ * @param[in] nth
+ * @param[out] ret
+ *
+ * @see elm_slideshow_item_nth_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_item_nth_get(nth, ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_ITEM_NTH_GET), EO_TYPECHECK(unsigned int, nth), EO_TYPECHECK(Elm_Object_Item **, ret)
+
+/**
+ * @def elm_obj_slideshow_count_get
+ * @since 1.8
+ *
+ * Get the number of items stored in a given slideshow widget
+ *
+ * @param[out] ret
+ *
+ * @see elm_slideshow_count_get
+ *
+ * @ingroup Slideshow
+ */
+#define elm_obj_slideshow_count_get(ret) ELM_OBJ_SLIDESHOW_ID(ELM_OBJ_SLIDESHOW_SUB_ID_COUNT_GET), EO_TYPECHECK(unsigned int *, ret)
diff --git a/src/lib/elm_slideshow_legacy.h b/src/lib/elm_slideshow_legacy.h
new file mode 100644
index 000000000..4de53c20c
--- /dev/null
+++ b/src/lib/elm_slideshow_legacy.h
@@ -0,0 +1,425 @@
+/**
+ * Add a new slideshow widget to the given parent Elementary
+ * (container) object
+ *
+ * @param parent The parent object
+ * @return A new slideshow widget handle or @c NULL, on errors
+ *
+ * This function inserts a new slideshow widget on the canvas.
+ *
+ * @ingroup Slideshow
+ */
+EAPI Evas_Object *elm_slideshow_add(Evas_Object *parent);
+
+/**
+ * Add (append) a new item in a given slideshow widget.
+ *
+ * @param obj The slideshow object
+ * @param itc The item class for the item
+ * @param data The item's data
+ * @return A handle to the item added or @c NULL, on errors
+ *
+ * Add a new item to @p obj's internal list of items, appending it.
+ * The item's class must contain the function really fetching the
+ * image object to show for this item, which could be an Evas image
+ * object or an Elementary photo, for example. The @p data
+ * parameter is going to be passed to both class functions of the
+ * item.
+ *
+ * @see #Elm_Slideshow_Item_Class
+ * @see elm_slideshow_item_sorted_insert()
+ * @see elm_object_item_data_set()
+ *
+ * @ingroup Slideshow
+ */
+EAPI Elm_Object_Item *elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data);
+
+/**
+ * Insert a new item into the given slideshow widget, using the @p func
+ * function to sort items (by item handles).
+ *
+ * @param obj The slideshow object
+ * @param itc The item class for the item
+ * @param data The item's data
+ * @param func The comparing function to be used to sort slideshow
+ * items <b>by #Elm_Slideshow_Item_Class item handles</b>
+ * @return Returns The slideshow item handle, on success, or
+ * @c NULL, on errors
+ *
+ * Add a new item to @p obj's internal list of items, in a position
+ * determined by the @p func comparing function. The item's class
+ * must contain the function really fetching the image object to
+ * show for this item, which could be an Evas image object or an
+ * Elementary photo, for example. The @p data parameter is going to
+ * be passed to both class functions of the item.
+ *
+ * @see #Elm_Slideshow_Item_Class
+ * @see elm_slideshow_item_add()
+ *
+ * @ingroup Slideshow
+ */
+EAPI Elm_Object_Item *elm_slideshow_item_sorted_insert(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data, Eina_Compare_Cb func);
+
+/**
+ * Slide to the @b next item, in a given slideshow widget
+ *
+ * @param obj The slideshow object
+ *
+ * The sliding animation @p obj is set to use will be the
+ * transition effect used, after this call is issued.
+ *
+ * @note If the end of the slideshow's internal list of items is
+ * reached, it'll wrap around to the list's beginning, again.
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_next(Evas_Object *obj);
+
+/**
+ * Slide to the @b previous item, in a given slideshow widget
+ *
+ * @param obj The slideshow object
+ *
+ * The sliding animation @p obj is set to use will be the
+ * transition effect used, after this call is issued.
+ *
+ * @note If the beginning of the slideshow's internal list of items
+ * is reached, it'll wrap around to the list's end, again.
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_previous(Evas_Object *obj);
+
+/**
+ * Returns the list of sliding transition/effect names available, for a
+ * given slideshow widget.
+ *
+ * @param obj The slideshow object
+ * @return The list of transitions (list of @b stringshared strings
+ * as data)
+ *
+ * The transitions, which come from @p obj's theme, must be an EDC
+ * data item named @c "transitions" on the theme file, with (prefix)
+ * names of EDC programs actually implementing them.
+ *
+ * The available transitions for slideshows on the default theme are:
+ * - @c "fade" - the current item fades out, while the new one
+ * fades in to the slideshow's viewport.
+ * - @c "black_fade" - the current item fades to black, and just
+ * then, the new item will fade in.
+ * - @c "horizontal" - the current item slides horizontally, until
+ * it gets out of the slideshow's viewport, while the new item
+ * comes from the left to take its place.
+ * - @c "vertical" - the current item slides vertically, until it
+ * gets out of the slideshow's viewport, while the new item comes
+ * from the bottom to take its place.
+ * - @c "square" - the new item starts to appear from the middle of
+ * the current one, but with a tiny size, growing until its
+ * target (full) size and covering the old one.
+ *
+ * @warning The stringshared strings get no new references
+ * exclusive to the user grabbing the list, here, so if you'd like
+ * to use them out of this call's context, you'd better @c
+ * eina_stringshare_ref() them. Also the list is an internal list and
+ * so is only valid for as long as the slideshow object is valid and
+ * has not internally changed its list for some reason, so make a
+ * copy if you need it around.
+ *
+ * @see elm_slideshow_transition_set()
+ *
+ * @ingroup Slideshow
+ */
+EAPI const Eina_List *elm_slideshow_transitions_get(const Evas_Object *obj);
+
+/**
+ * Returns the list of @b layout names available, for a given
+ * slideshow widget.
+ *
+ * @param obj The slideshow object
+ * @return The list of layouts (list of @b stringshared strings
+ * as data)
+ *
+ * Slideshow layouts will change how the widget is to dispose each
+ * image item in its viewport, with regard to cropping, scaling,
+ * etc.
+ *
+ * The layouts, which come from @p obj's theme, must be an EDC
+ * data item name @c "layouts" on the theme file, with (prefix)
+ * names of EDC programs actually implementing them.
+ *
+ * The available layouts for slideshows on the default theme are:
+ * - @c "fullscreen" - item images with original aspect, scaled to
+ * touch top and down slideshow borders or, if the image's height
+ * is not enough, left and right slideshow borders.
+ * - @c "not_fullscreen" - the same behavior as the @c "fullscreen"
+ * one, but always leaving 10% of the slideshow's dimensions of
+ * distance between the item image's borders and the slideshow
+ * borders, for each axis.
+ *
+ * @warning The stringshared strings get no new references
+ * exclusive to the user grabbing the list, here, so if you'd like
+ * to use them out of this call's context, you'd better @c
+ * eina_stringshare_ref() them.
+ *
+ * @see elm_slideshow_layout_set()
+ *
+ * @ingroup Slideshow
+ */
+EAPI const Eina_List *elm_slideshow_layouts_get(const Evas_Object *obj);
+
+/**
+ * Set the current slide transition/effect in use for a given
+ * slideshow widget
+ *
+ * @param obj The slideshow object
+ * @param transition The new transition's name string
+ *
+ * If @p transition is implemented in @p obj's theme (i.e., is
+ * contained in the list returned by
+ * elm_slideshow_transitions_get()), this new sliding effect will
+ * be used on the widget.
+ *
+ * @see elm_slideshow_transitions_get() for more details
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_transition_set(Evas_Object *obj, const char *transition);
+
+/**
+ * Get the current slide transition/effect in use for a given
+ * slideshow widget
+ *
+ * @param obj The slideshow object
+ * @return The current transition's name
+ *
+ * @see elm_slideshow_transition_set() for more details
+ *
+ * @ingroup Slideshow
+ */
+EAPI const char *elm_slideshow_transition_get(const Evas_Object *obj);
+
+/**
+ * Set the interval between each image transition on a given
+ * slideshow widget, <b>and start the slideshow, itself</b>
+ *
+ * @param obj The slideshow object
+ * @param timeout The new displaying timeout for images
+ *
+ * After this call, the slideshow widget will start cycling its
+ * view, sequentially and automatically, with the images of the
+ * items it has. The time between each new image displayed is going
+ * to be @p timeout, in @b seconds. If a different timeout was set
+ * previously and an slideshow was in progress, it will continue
+ * with the new time between transitions, after this call.
+ *
+ * @note A value less than or equal to 0 on @p timeout will disable
+ * the widget's internal timer, thus halting any slideshow which
+ * could be happening on @p obj.
+ *
+ * @see elm_slideshow_timeout_get()
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_timeout_set(Evas_Object *obj, double timeout);
+
+/**
+ * Get the interval set for image transitions on a given slideshow
+ * widget.
+ *
+ * @param obj The slideshow object
+ * @return Returns the timeout set on it or -1.0, on errors
+ *
+ * @see elm_slideshow_timeout_set() for more details
+ *
+ * @ingroup Slideshow
+ */
+EAPI double elm_slideshow_timeout_get(const Evas_Object *obj);
+
+/**
+ * Set if, after a slideshow is started, for a given slideshow
+ * widget, its items should be displayed cyclically or not.
+ *
+ * @param obj The slideshow object
+ * @param loop Use @c EINA_TRUE to make it cycle through items or
+ * @c EINA_FALSE for it to stop at the end of @p obj's internal
+ * list of items
+ *
+ * @note elm_slideshow_next() and elm_slideshow_previous() will @b
+ * ignore what is set by this functions, i.e., they'll @b always
+ * cycle through items. This affects only the "automatic"
+ * slideshow, as set by elm_slideshow_timeout_set().
+ *
+ * @see elm_slideshow_loop_get()
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_loop_set(Evas_Object *obj, Eina_Bool loop);
+
+/**
+ * Get the current slide layout in use for a given slideshow widget
+ *
+ * @param obj The slideshow object
+ * @return The current layout's name
+ *
+ * @see elm_slideshow_layout_set() for more details
+ *
+ * @ingroup Slideshow
+ */
+EAPI const char *elm_slideshow_layout_get(const Evas_Object *obj);
+
+/**
+ * Set the current slide layout in use for a given slideshow widget
+ *
+ * @param obj The slideshow object
+ * @param layout The new layout's name string
+ *
+ * If @p layout is implemented in @p obj's theme (i.e., is contained
+ * in the list returned by elm_slideshow_layouts_get()), this new
+ * images layout will be used on the widget.
+ *
+ * @see elm_slideshow_layouts_get() for more details
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_layout_set(Evas_Object *obj, const char *layout);
+
+/**
+ * Get if, after a slideshow is started, for a given slideshow
+ * widget, its items are to be displayed cyclically or not.
+ *
+ * @param obj The slideshow object
+ * @return @c EINA_TRUE, if the items in @p obj will be cycled
+ * through or @c EINA_FALSE, otherwise
+ *
+ * @see elm_slideshow_loop_set() for more details
+ *
+ * @ingroup Slideshow
+ */
+EAPI Eina_Bool elm_slideshow_loop_get(const Evas_Object *obj);
+
+/**
+ * Remove all items from a given slideshow widget
+ *
+ * @param obj The slideshow object
+ *
+ * This removes (and deletes) all items in @p obj, leaving it
+ * empty.
+ *
+ * @see elm_object_item_del(), to remove just one item.
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_clear(Evas_Object *obj);
+
+/**
+ * Get the internal list of items in a given slideshow widget.
+ *
+ * @param obj The slideshow object
+ * @return The list of items (#Elm_Object_Item as data) or
+ * @c NULL on errors.
+ *
+ * This list is @b not to be modified in any way and must not be
+ * freed. Use the list members with functions like
+ * elm_object_item_del(), elm_object_item_data_get().
+ *
+ * @warning This list is only valid until @p obj object's internal
+ * items list is changed. It should be fetched again with another
+ * call to this function when changes happen.
+ *
+ * @ingroup Slideshow
+ */
+EAPI const Eina_List *elm_slideshow_items_get(const Evas_Object *obj);
+
+/**
+ * Returns the currently displayed item, in a given slideshow widget
+ *
+ * @param obj The slideshow object
+ * @return A handle to the item being displayed in @p obj or
+ * @c NULL, if none is (and on errors)
+ *
+ * @ingroup Slideshow
+ */
+EAPI Elm_Object_Item *elm_slideshow_item_current_get(const Evas_Object *obj);
+
+
+/**
+ * Retrieve the number of items to cache, on a given slideshow widget,
+ * <b>before the current item</b>
+ *
+ * @param obj The slideshow object
+ * @return The number of items set to be cached before the current one
+ *
+ * @see elm_slideshow_cache_before_set() for more details
+ *
+ * @ingroup Slideshow
+ */
+EAPI int elm_slideshow_cache_before_get(const Evas_Object *obj);
+
+/**
+ * Set the number of items to cache, on a given slideshow widget,
+ * <b>before the current item</b>
+ *
+ * @param obj The slideshow object
+ * @param count Number of items to cache before the current one
+ *
+ * The default value for this property is @c 2. See
+ * @ref Slideshow_Caching "slideshow caching" for more details.
+ *
+ * @see elm_slideshow_cache_before_get()
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_cache_before_set(Evas_Object *obj, int count);
+
+/**
+ * Retrieve the number of items to cache, on a given slideshow widget,
+ * <b>after the current item</b>
+ *
+ * @param obj The slideshow object
+ * @return The number of items set to be cached after the current one
+ *
+ * @see elm_slideshow_cache_after_set() for more details
+ *
+ * @ingroup Slideshow
+ */
+EAPI int elm_slideshow_cache_after_get(const Evas_Object *obj);
+
+/**
+ * Set the number of items to cache, on a given slideshow widget,
+ * <b>after the current item</b>
+ *
+ * @param obj The slideshow object
+ * @param count Number of items to cache after the current one
+ *
+ * The default value for this property is @c 2. See
+ * @ref Slideshow_Caching "slideshow caching" for more details.
+ *
+ * @see elm_slideshow_cache_after_get()
+ *
+ * @ingroup Slideshow
+ */
+EAPI void elm_slideshow_cache_after_set(Evas_Object *obj, int count);
+
+/**
+ * Get the the item, in a given slideshow widget, placed at
+ * position @p nth, in its internal items list
+ *
+ * @param obj The slideshow object
+ * @param nth The number of the item to grab a handle to (0 being
+ * the first)
+ * @return The item stored in @p obj at position @p nth or @c NULL,
+ * if there's no item with that index (and on errors)
+ *
+ * @ingroup Slideshow
+ */
+EAPI Elm_Object_Item *elm_slideshow_item_nth_get(const Evas_Object *obj, unsigned int nth);
+
+/**
+ * Get the number of items stored in a given slideshow widget
+ *
+ * @param obj The slideshow object
+ * @return The number of items on @p obj, at the moment of this call
+ *
+ * @ingroup Slideshow
+ */
+EAPI unsigned int elm_slideshow_count_get(const Evas_Object *obj);
diff --git a/src/lib/elm_spinner.h b/src/lib/elm_spinner.h
index 31849af11..3f7a0a8ce 100644
--- a/src/lib/elm_spinner.h
+++ b/src/lib/elm_spinner.h
@@ -48,686 +48,17 @@
* @ref spinner_example
*/
-#define ELM_OBJ_SPINNER_CLASS elm_obj_spinner_class_get()
-
-const Eo_Class *elm_obj_spinner_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_SPINNER_BASE_ID;
-
-enum
-{
- ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_SET,
- ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_GET,
- ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_SET,
- ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_GET,
- ELM_OBJ_SPINNER_SUB_ID_STEP_SET,
- ELM_OBJ_SPINNER_SUB_ID_STEP_GET,
- ELM_OBJ_SPINNER_SUB_ID_VALUE_SET,
- ELM_OBJ_SPINNER_SUB_ID_VALUE_GET,
- ELM_OBJ_SPINNER_SUB_ID_WRAP_SET,
- ELM_OBJ_SPINNER_SUB_ID_WRAP_GET,
- ELM_OBJ_SPINNER_SUB_ID_SPECIAL_VALUE_ADD,
- ELM_OBJ_SPINNER_SUB_ID_EDITABLE_SET,
- ELM_OBJ_SPINNER_SUB_ID_EDITABLE_GET,
- ELM_OBJ_SPINNER_SUB_ID_INTERVAL_SET,
- ELM_OBJ_SPINNER_SUB_ID_INTERVAL_GET,
- ELM_OBJ_SPINNER_SUB_ID_BASE_SET,
- ELM_OBJ_SPINNER_SUB_ID_BASE_GET,
- ELM_OBJ_SPINNER_SUB_ID_ROUND_SET,
- ELM_OBJ_SPINNER_SUB_ID_ROUND_GET,
- ELM_OBJ_SPINNER_SUB_ID_LAST
-};
-
-#define ELM_OBJ_SPINNER_ID(sub_id) (ELM_OBJ_SPINNER_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_spinner_label_format_set
- * @since 1.8
- *
- * Set the format string of the displayed label.
- *
- * @param[in] fmt
- *
- * @see elm_spinner_label_format_set
- */
-#define elm_obj_spinner_label_format_set(fmt) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_SET), EO_TYPECHECK(const char *, fmt)
-
-/**
- * @def elm_obj_spinner_label_format_get
- * @since 1.8
- *
- * Get the label format of the spinner.
- *
- * @param[out] ret
- *
- * @see elm_spinner_label_format_get
- */
-#define elm_obj_spinner_label_format_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_spinner_min_max_set
- * @since 1.8
- *
- * Set the minimum and maximum values for the spinner.
- *
- * @param[in] min
- * @param[in] max
- *
- * @see elm_spinner_min_max_set
- */
-#define elm_obj_spinner_min_max_set(min, max) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_SET), EO_TYPECHECK(double, min), EO_TYPECHECK(double, max)
-
-/**
- * @def elm_obj_spinner_min_max_get
- * @since 1.8
- *
- * Get the minimum and maximum values of the spinner.
- *
- * @param[out] min
- * @param[out] max
- *
- * @see elm_spinner_min_max_get
- */
-#define elm_obj_spinner_min_max_get(min, max) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max)
-
-/**
- * @def elm_obj_spinner_step_set
- * @since 1.8
- *
- * Set the step used to increment or decrement the spinner value.
- *
- * @param[in] step
- *
- * @see elm_spinner_step_set
- */
-#define elm_obj_spinner_step_set(step) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_STEP_SET), EO_TYPECHECK(double, step)
-
-/**
- * @def elm_obj_spinner_step_get
- * @since 1.8
- *
- * Get the step used to increment or decrement the spinner value.
- *
- * @param[out] ret
- *
- * @see elm_spinner_step_get
- */
-#define elm_obj_spinner_step_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_STEP_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_spinner_value_set
- * @since 1.8
- *
- * Set the value the spinner displays.
- *
- * @param[in] val
- *
- * @see elm_spinner_value_set
- */
-#define elm_obj_spinner_value_set(val) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val)
-
-/**
- * @def elm_obj_spinner_value_get
- * @since 1.8
- *
- * Get the value displayed by the spinner.
- *
- * @param[out] ret
- *
- * @see elm_spinner_value_get
- */
-#define elm_obj_spinner_value_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_spinner_wrap_set
- * @since 1.8
- *
- * Set whether the spinner should wrap when it reaches its
- *
- * @param[in] wrap
- *
- * @see elm_spinner_wrap_set
- */
-#define elm_obj_spinner_wrap_set(wrap) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_WRAP_SET), EO_TYPECHECK(Eina_Bool, wrap)
-
-/**
- * @def elm_obj_spinner_wrap_get
- * @since 1.8
- *
- * Get whether the spinner should wrap when it reaches its
- *
- * @param[out] ret
- *
- * @see elm_spinner_wrap_get
- */
-#define elm_obj_spinner_wrap_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_WRAP_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_spinner_special_value_add
- * @since 1.8
- *
- * Set a special string to display in the place of the numerical value.
- *
- * @param[in] value
- * @param[in] label
- *
- * @see elm_spinner_special_value_add
- */
-#define elm_obj_spinner_special_value_add(value, label) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_SPECIAL_VALUE_ADD), EO_TYPECHECK(double, value), EO_TYPECHECK(const char *, label)
-
-/**
- * @def elm_obj_spinner_editable_set
- * @since 1.8
- *
- * Set whether the spinner can be directly edited by the user or not.
- *
- * @param[in] editable
- *
- * @see elm_spinner_editable_set
- */
-#define elm_obj_spinner_editable_set(editable) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_EDITABLE_SET), EO_TYPECHECK(Eina_Bool, editable)
-
-/**
- * @def elm_obj_spinner_editable_get
- * @since 1.8
- *
- * Get whether the spinner can be directly edited by the user or not.
- *
- * @param[out] ret
- *
- * @see elm_spinner_editable_get
- */
-#define elm_obj_spinner_editable_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_EDITABLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_spinner_interval_set
- * @since 1.8
- *
- * Set the interval on time updates for an user mouse button hold
- *
- * @param[in] interval
- *
- * @see elm_spinner_interval_set
- */
-#define elm_obj_spinner_interval_set(interval) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_INTERVAL_SET), EO_TYPECHECK(double, interval)
-
-/**
- * @def elm_obj_spinner_interval_get
- * @since 1.8
- *
- * Get the interval on time updates for an user mouse button hold
- *
- * @param[out] ret
- *
- * @see elm_spinner_interval_get
- */
-#define elm_obj_spinner_interval_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_INTERVAL_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_spinner_base_set
- * @since 1.8
- *
- * Set the base for rounding
- *
- * @param[in] base
- *
- * @see elm_spinner_base_set
- */
-#define elm_obj_spinner_base_set(base) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_BASE_SET), EO_TYPECHECK(double, base)
-
-/**
- * @def elm_obj_spinner_base_get
- * @since 1.8
- *
- * Get the base for rounding
- *
- * @param[out] ret
- *
- * @see elm_spinner_base_get
- */
-#define elm_obj_spinner_base_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_BASE_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_spinner_round_set
- * @since 1.8
- *
- * Set the round value for rounding
- *
- * @param[in] rnd
- *
- * @see elm_spinner_round_set
- */
-#define elm_obj_spinner_round_set(rnd) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_ROUND_SET), EO_TYPECHECK(int, rnd)
-
-/**
- * @def elm_obj_spinner_round_get
- * @since 1.8
- *
- * Get the round value for rounding
- *
- * @param[out] ret
- *
- * @see elm_spinner_round_get
- */
-#define elm_obj_spinner_round_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_ROUND_GET), EO_TYPECHECK(int *, ret)
/**
* @addtogroup Spinner
* @{
*/
-/**
- * Add a new spinner widget to the given parent Elementary
- * (container) object.
- *
- * @param parent The parent object.
- * @return a new spinner widget handle or @c NULL, on errors.
- *
- * This function inserts a new spinner widget on the canvas.
- *
- * @ingroup Spinner
- *
- */
-EAPI Evas_Object *elm_spinner_add(Evas_Object *parent);
-
-/**
- * Set the format string of the displayed label.
- *
- * @param obj The spinner object.
- * @param fmt The format string for the label display.
- *
- * If @c NULL, this sets the format to "%.0f". If not it sets the format
- * string for the label text. The label text is provided a floating point
- * value, so the label text can display up to 1 floating point value.
- * Note that this is optional.
- *
- * Use a format string such as "%1.2f meters" for example, and it will
- * display values like: "3.14 meters" for a value equal to 3.14159.
- *
- * Default is "%0.f".
- *
- * @see elm_spinner_label_format_get()
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_label_format_set(Evas_Object *obj, const char *fmt);
-
-/**
- * Get the label format of the spinner.
- *
- * @param obj The spinner object.
- * @return The text label format string in UTF-8.
- *
- * @see elm_spinner_label_format_set() for details.
- *
- * @ingroup Spinner
- */
-EAPI const char *elm_spinner_label_format_get(const Evas_Object *obj);
-
-/**
- * Set the minimum and maximum values for the spinner.
- *
- * @param obj The spinner object.
- * @param min The minimum value.
- * @param max The maximum value.
- *
- * Define the allowed range of values to be selected by the user.
- *
- * If actual value is less than @p min, it will be updated to @p min. If it
- * is bigger then @p max, will be updated to @p max. Actual value can be
- * get with elm_spinner_value_get().
- *
- * By default, min is equal to 0, and max is equal to 100.
- *
- * @warning Maximum must be greater than minimum.
- *
- * @see elm_spinner_min_max_get()
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_min_max_set(Evas_Object *obj, double min, double max);
-
-/**
- * Get the minimum and maximum values of the spinner.
- *
- * @param obj The spinner object.
- * @param min Pointer to store the minimum value.
- * @param max Pointer to store the maximum value.
- *
- * @note If only one value is needed, the other pointer can be passed
- * as @c NULL.
- *
- * @see elm_spinner_min_max_set() for details.
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_min_max_get(const Evas_Object *obj, double *min, double *max);
-
-/**
- * Set the step used to increment or decrement the spinner value.
- *
- * @param obj The spinner object.
- * @param step The step value.
- *
- * This value will be incremented or decremented to the displayed value.
- * It will be incremented while the user keep right or top arrow pressed,
- * and will be decremented while the user keep left or bottom arrow pressed.
- *
- * The interval to increment / decrement can be set with
- * elm_spinner_interval_set().
- *
- * By default step value is equal to 1.
- *
- * @see elm_spinner_step_get()
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_step_set(Evas_Object *obj, double step);
-
-/**
- * Get the step used to increment or decrement the spinner value.
- *
- * @param obj The spinner object.
- * @return The step value.
- *
- * @see elm_spinner_step_get() for more details.
- *
- * @ingroup Spinner
- */
-EAPI double elm_spinner_step_get(const Evas_Object *obj);
-
-/**
- * Set the value the spinner displays.
- *
- * @param obj The spinner object.
- * @param val The value to be displayed.
- *
- * Value will be presented on the label following format specified with
- * elm_spinner_format_set().
- *
- * @warning The value must to be between min and max values. This values
- * are set by elm_spinner_min_max_set().
- *
- * @see elm_spinner_value_get().
- * @see elm_spinner_format_set().
- * @see elm_spinner_min_max_set().
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_value_set(Evas_Object *obj, double val);
-
-/**
- * Get the value displayed by the spinner.
- *
- * @param obj The spinner object.
- * @return The value displayed.
- *
- * @see elm_spinner_value_set() for details.
- *
- * @ingroup Spinner
- */
-EAPI double elm_spinner_value_get(const Evas_Object *obj);
-
-/**
- * Set whether the spinner should wrap when it reaches its
- * minimum or maximum value.
- *
- * @param obj The spinner object.
- * @param wrap @c EINA_TRUE to enable wrap or @c EINA_FALSE to
- * disable it.
- *
- * Disabled by default. If disabled, when the user tries to increment the
- * value,
- * but displayed value plus step value is bigger than maximum value,
- * the new value will be the maximum value.
- * The same happens when the user tries to decrement it,
- * but the value less step is less than minimum value. In this case,
- * the new displayed value will be the minimum value.
- *
- * When wrap is enabled, when the user tries to increment the value,
- * but displayed value plus step value is bigger than maximum value,
- * the new value will be the minimum value. When the the user tries to
- * decrement it, but the value less step is less than minimum value,
- * the new displayed value will be the maximum value.
- *
- * E.g.:
- * @li min value = 10
- * @li max value = 50
- * @li step value = 20
- * @li displayed value = 20
- *
- * When the user decrement value (using left or bottom arrow), it will
- * displays @c 50.
- *
- * @see elm_spinner_wrap_get().
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_wrap_set(Evas_Object *obj, Eina_Bool wrap);
-
-/**
- * Get whether the spinner should wrap when it reaches its
- * minimum or maximum value.
- *
- * @param obj The spinner object
- * @return @c EINA_TRUE means wrap is enabled. @c EINA_FALSE indicates
- * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
- *
- * @see elm_spinner_wrap_set() for details.
- *
- * @ingroup Spinner
- */
-EAPI Eina_Bool elm_spinner_wrap_get(const Evas_Object *obj);
-
-/**
- * Set whether the spinner can be directly edited by the user or not.
- *
- * @param obj The spinner object.
- * @param editable @c EINA_TRUE to allow users to edit it or @c EINA_FALSE to
- * don't allow users to edit it directly.
- *
- * Spinner objects can have edition @b disabled, in which state they will
- * be changed only by arrows.
- * Useful for contexts
- * where you don't want your users to interact with it writing the value.
- * Specially
- * when using special values, the user can see real value instead
- * of special label on edition.
- *
- * It's enabled by default.
- *
- * @see elm_spinner_editable_get()
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_editable_set(Evas_Object *obj, Eina_Bool editable);
-
-/**
- * Get whether the spinner can be directly edited by the user or not.
- *
- * @param obj The spinner object.
- * @return @c EINA_TRUE means edition is enabled. @c EINA_FALSE indicates
- * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
- *
- * @see elm_spinner_editable_set() for details.
- *
- * @ingroup Spinner
- */
-EAPI Eina_Bool elm_spinner_editable_get(const Evas_Object *obj);
-
-/**
- * Set a special string to display in the place of the numerical value.
- *
- * @param obj The spinner object.
- * @param value The value to be replaced.
- * @param label The label to be used.
- *
- * It's useful for cases when a user should select an item that is
- * better indicated by a label than a value. For example, weekdays or months.
- *
- * E.g.:
- * @code
- * sp = elm_spinner_add(win);
- * elm_spinner_min_max_set(sp, 1, 3);
- * elm_spinner_special_value_add(sp, 1, "January");
- * elm_spinner_special_value_add(sp, 2, "February");
- * elm_spinner_special_value_add(sp, 3, "March");
- * evas_object_show(sp);
- * @endcode
- *
- * @note If another label was previously set to @p value, it will be replaced
- * by the new label.
- *
- * @see elm_spinner_special_value_get().
- * @see elm_spinner_special_value_del().
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_special_value_add(Evas_Object *obj, double value, const char *label);
-
-/**
- * Delete the special string display in the place of the numerical value.
- *
- * @param obj The spinner object.
- * @param value The replaced value.
- *
- * It will remove a previously added special value. After this, the spinner
- * will display the value itself instead of a label.
- *
- * @see elm_spinner_special_value_add() for more details.
- *
- * @ingroup Spinner
- * @since 1.8
- */
-EAPI void elm_spinner_special_value_del(Evas_Object *obj, double value);
-
-/**
- * Get the special string display in the place of the numerical value.
- *
- * @param obj The spinner object.
- * @param value The replaced value.
- * @return The used label.
- *
- * @see elm_spinner_special_value_add() for more details.
- *
- * @ingroup Spinner
- * @since 1.8
- */
-EAPI const char *elm_spinner_special_value_get(Evas_Object *obj, double value);
-
-/**
- * Set the interval on time updates for an user mouse button hold
- * on spinner widgets' arrows.
- *
- * @param obj The spinner object.
- * @param interval The (first) interval value in seconds.
- *
- * This interval value is @b decreased while the user holds the
- * mouse pointer either incrementing or decrementing spinner's value.
- *
- * This helps the user to get to a given value distant from the
- * current one easier/faster, as it will start to change quicker and
- * quicker on mouse button holds.
- *
- * The calculation for the next change interval value, starting from
- * the one set with this call, is the previous interval divided by
- * @c 1.05, so it decreases a little bit.
- *
- * The default starting interval value for automatic changes is
- * @c 0.85 seconds.
- *
- * @see elm_spinner_interval_get()
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_interval_set(Evas_Object *obj, double interval);
-
-/**
- * Get the interval on time updates for an user mouse button hold
- * on spinner widgets' arrows.
- *
- * @param obj The spinner object.
- * @return The (first) interval value, in seconds, set on it.
- *
- * @see elm_spinner_interval_set() for more details.
- *
- * @ingroup Spinner
- */
-EAPI double elm_spinner_interval_get(const Evas_Object *obj);
-
-/**
- * Set the base for rounding
- *
- * @param obj The spinner object
- * @param base The base value
- *
- * Rounding works as follows:
- *
- * rounded_val = base + (double)(((value - base) / round) * round)
- *
- * Where rounded_val, value and base are doubles, and round is an integer.
- *
- * This means that things will be rounded to increments (or decrements) of
- * "round" starting from value @p base. The default base for rounding is 0.
- *
- * Example: round = 3, base = 2
- * Values: 3, 6, 9, 12, 15, ...
- *
- * Example: round = 2, base = 5.5
- * Values: 5.5, 7.5, 9.5, 11.5, ...
- *
- * @see elm_spinner_round_get()
- * @see elm_spinner_base_get() too.
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_base_set(Evas_Object *obj, double base);
-
-/**
- * Get the base for rounding
- *
- * @param obj The spinner object
- * @return The base rounding value
- *
- * This returns the base for rounding.
- *
- * @see elm_spinner_round_set() too.
- * @see elm_spinner_base_set() too.
- *
- * @ingroup Spinner
- */
-EAPI double elm_spinner_base_get(const Evas_Object *obj);
-
-/**
- * Set the round value for rounding
- *
- * @param obj The spinner object
- * @param rnd The rounding value
- *
- * Sets the rounding value used for value rounding in the spinner.
- *
- * @see elm_spinner_round_get()
- * @see elm_spinner_base_set()
- *
- * @ingroup Spinner
- */
-EAPI void elm_spinner_round_set(Evas_Object *obj, int rnd);
-
-/**
- * Get the round value for rounding
- *
- * @param obj The spinner object
- * @return The rounding value
- *
- * This returns the round value for rounding.
- *
- * @see elm_spinner_round_set() too.
- * @see elm_spinner_base_set() too.
- *
- * @ingroup Spinner
- */
-EAPI int elm_spinner_round_get(const Evas_Object *obj);
-
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_spinner_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_spinner_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_spinner_eo.h b/src/lib/elm_spinner_eo.h
new file mode 100644
index 000000000..415a4606b
--- /dev/null
+++ b/src/lib/elm_spinner_eo.h
@@ -0,0 +1,301 @@
+#define ELM_OBJ_SPINNER_CLASS elm_obj_spinner_class_get()
+
+const Eo_Class *elm_obj_spinner_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_SPINNER_BASE_ID;
+
+enum
+{
+ ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_SET,
+ ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_GET,
+ ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_SET,
+ ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_GET,
+ ELM_OBJ_SPINNER_SUB_ID_STEP_SET,
+ ELM_OBJ_SPINNER_SUB_ID_STEP_GET,
+ ELM_OBJ_SPINNER_SUB_ID_VALUE_SET,
+ ELM_OBJ_SPINNER_SUB_ID_VALUE_GET,
+ ELM_OBJ_SPINNER_SUB_ID_WRAP_SET,
+ ELM_OBJ_SPINNER_SUB_ID_WRAP_GET,
+ ELM_OBJ_SPINNER_SUB_ID_SPECIAL_VALUE_ADD,
+ ELM_OBJ_SPINNER_SUB_ID_EDITABLE_SET,
+ ELM_OBJ_SPINNER_SUB_ID_EDITABLE_GET,
+ ELM_OBJ_SPINNER_SUB_ID_INTERVAL_SET,
+ ELM_OBJ_SPINNER_SUB_ID_INTERVAL_GET,
+ ELM_OBJ_SPINNER_SUB_ID_BASE_SET,
+ ELM_OBJ_SPINNER_SUB_ID_BASE_GET,
+ ELM_OBJ_SPINNER_SUB_ID_ROUND_SET,
+ ELM_OBJ_SPINNER_SUB_ID_ROUND_GET,
+ ELM_OBJ_SPINNER_SUB_ID_LAST
+};
+
+#define ELM_OBJ_SPINNER_ID(sub_id) (ELM_OBJ_SPINNER_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_spinner_label_format_set
+ * @since 1.8
+ *
+ * Set the format string of the displayed label.
+ *
+ * @param[in] fmt
+ *
+ * @see elm_spinner_label_format_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_label_format_set(fmt) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_SET), EO_TYPECHECK(const char *, fmt)
+
+/**
+ * @def elm_obj_spinner_label_format_get
+ * @since 1.8
+ *
+ * Get the label format of the spinner.
+ *
+ * @param[out] ret
+ *
+ * @see elm_spinner_label_format_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_label_format_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_LABEL_FORMAT_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_spinner_min_max_set
+ * @since 1.8
+ *
+ * Set the minimum and maximum values for the spinner.
+ *
+ * @param[in] min
+ * @param[in] max
+ *
+ * @see elm_spinner_min_max_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_min_max_set(min, max) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_SET), EO_TYPECHECK(double, min), EO_TYPECHECK(double, max)
+
+/**
+ * @def elm_obj_spinner_min_max_get
+ * @since 1.8
+ *
+ * Get the minimum and maximum values of the spinner.
+ *
+ * @param[out] min
+ * @param[out] max
+ *
+ * @see elm_spinner_min_max_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_min_max_get(min, max) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_MIN_MAX_GET), EO_TYPECHECK(double *, min), EO_TYPECHECK(double *, max)
+
+/**
+ * @def elm_obj_spinner_step_set
+ * @since 1.8
+ *
+ * Set the step used to increment or decrement the spinner value.
+ *
+ * @param[in] step
+ *
+ * @see elm_spinner_step_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_step_set(step) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_STEP_SET), EO_TYPECHECK(double, step)
+
+/**
+ * @def elm_obj_spinner_step_get
+ * @since 1.8
+ *
+ * Get the step used to increment or decrement the spinner value.
+ *
+ * @param[out] ret
+ *
+ * @see elm_spinner_step_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_step_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_STEP_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_spinner_value_set
+ * @since 1.8
+ *
+ * Set the value the spinner displays.
+ *
+ * @param[in] val
+ *
+ * @see elm_spinner_value_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_value_set(val) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_VALUE_SET), EO_TYPECHECK(double, val)
+
+/**
+ * @def elm_obj_spinner_value_get
+ * @since 1.8
+ *
+ * Get the value displayed by the spinner.
+ *
+ * @param[out] ret
+ *
+ * @see elm_spinner_value_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_value_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_VALUE_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_spinner_wrap_set
+ * @since 1.8
+ *
+ * Set whether the spinner should wrap when it reaches its
+ *
+ * @param[in] wrap
+ *
+ * @see elm_spinner_wrap_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_wrap_set(wrap) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_WRAP_SET), EO_TYPECHECK(Eina_Bool, wrap)
+
+/**
+ * @def elm_obj_spinner_wrap_get
+ * @since 1.8
+ *
+ * Get whether the spinner should wrap when it reaches its
+ *
+ * @param[out] ret
+ *
+ * @see elm_spinner_wrap_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_wrap_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_WRAP_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_spinner_special_value_add
+ * @since 1.8
+ *
+ * Set a special string to display in the place of the numerical value.
+ *
+ * @param[in] value
+ * @param[in] label
+ *
+ * @see elm_spinner_special_value_add
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_special_value_add(value, label) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_SPECIAL_VALUE_ADD), EO_TYPECHECK(double, value), EO_TYPECHECK(const char *, label)
+
+/**
+ * @def elm_obj_spinner_editable_set
+ * @since 1.8
+ *
+ * Set whether the spinner can be directly edited by the user or not.
+ *
+ * @param[in] editable
+ *
+ * @see elm_spinner_editable_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_editable_set(editable) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_EDITABLE_SET), EO_TYPECHECK(Eina_Bool, editable)
+
+/**
+ * @def elm_obj_spinner_editable_get
+ * @since 1.8
+ *
+ * Get whether the spinner can be directly edited by the user or not.
+ *
+ * @param[out] ret
+ *
+ * @see elm_spinner_editable_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_editable_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_EDITABLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_spinner_interval_set
+ * @since 1.8
+ *
+ * Set the interval on time updates for an user mouse button hold
+ *
+ * @param[in] interval
+ *
+ * @see elm_spinner_interval_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_interval_set(interval) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_INTERVAL_SET), EO_TYPECHECK(double, interval)
+
+/**
+ * @def elm_obj_spinner_interval_get
+ * @since 1.8
+ *
+ * Get the interval on time updates for an user mouse button hold
+ *
+ * @param[out] ret
+ *
+ * @see elm_spinner_interval_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_interval_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_INTERVAL_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_spinner_base_set
+ * @since 1.8
+ *
+ * Set the base for rounding
+ *
+ * @param[in] base
+ *
+ * @see elm_spinner_base_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_base_set(base) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_BASE_SET), EO_TYPECHECK(double, base)
+
+/**
+ * @def elm_obj_spinner_base_get
+ * @since 1.8
+ *
+ * Get the base for rounding
+ *
+ * @param[out] ret
+ *
+ * @see elm_spinner_base_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_base_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_BASE_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_spinner_round_set
+ * @since 1.8
+ *
+ * Set the round value for rounding
+ *
+ * @param[in] rnd
+ *
+ * @see elm_spinner_round_set
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_round_set(rnd) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_ROUND_SET), EO_TYPECHECK(int, rnd)
+
+/**
+ * @def elm_obj_spinner_round_get
+ * @since 1.8
+ *
+ * Get the round value for rounding
+ *
+ * @param[out] ret
+ *
+ * @see elm_spinner_round_get
+ *
+ * @ingroup Spinner
+ */
+#define elm_obj_spinner_round_get(ret) ELM_OBJ_SPINNER_ID(ELM_OBJ_SPINNER_SUB_ID_ROUND_GET), EO_TYPECHECK(int *, ret)
diff --git a/src/lib/elm_spinner_legacy.h b/src/lib/elm_spinner_legacy.h
new file mode 100644
index 000000000..81711aaa0
--- /dev/null
+++ b/src/lib/elm_spinner_legacy.h
@@ -0,0 +1,411 @@
+/**
+ * Add a new spinner widget to the given parent Elementary
+ * (container) object.
+ *
+ * @param parent The parent object.
+ * @return a new spinner widget handle or @c NULL, on errors.
+ *
+ * This function inserts a new spinner widget on the canvas.
+ *
+ * @ingroup Spinner
+ *
+ */
+EAPI Evas_Object *elm_spinner_add(Evas_Object *parent);
+
+/**
+ * Delete the special string display in the place of the numerical value.
+ *
+ * @param obj The spinner object.
+ * @param value The replaced value.
+ *
+ * It will remove a previously added special value. After this, the spinner
+ * will display the value itself instead of a label.
+ *
+ * @see elm_spinner_special_value_add() for more details.
+ *
+ * @ingroup Spinner
+ * @since 1.8
+ */
+EAPI void elm_spinner_special_value_del(Evas_Object *obj, double value);
+
+/**
+ * Get the special string display in the place of the numerical value.
+ *
+ * @param obj The spinner object.
+ * @param value The replaced value.
+ * @return The used label.
+ *
+ * @see elm_spinner_special_value_add() for more details.
+ *
+ * @ingroup Spinner
+ * @since 1.8
+ */
+EAPI const char *elm_spinner_special_value_get(Evas_Object *obj, double value);
+
+/**
+ * Set the format string of the displayed label.
+ *
+ * @param obj The spinner object.
+ * @param fmt The format string for the label display.
+ *
+ * If @c NULL, this sets the format to "%.0f". If not it sets the format
+ * string for the label text. The label text is provided a floating point
+ * value, so the label text can display up to 1 floating point value.
+ * Note that this is optional.
+ *
+ * Use a format string such as "%1.2f meters" for example, and it will
+ * display values like: "3.14 meters" for a value equal to 3.14159.
+ *
+ * Default is "%0.f".
+ *
+ * @see elm_spinner_label_format_get()
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_label_format_set(Evas_Object *obj, const char *fmt);
+
+/**
+ * Get the label format of the spinner.
+ *
+ * @param obj The spinner object.
+ * @return The text label format string in UTF-8.
+ *
+ * @see elm_spinner_label_format_set() for details.
+ *
+ * @ingroup Spinner
+ */
+EAPI const char *elm_spinner_label_format_get(const Evas_Object *obj);
+
+/**
+ * Set the minimum and maximum values for the spinner.
+ *
+ * @param obj The spinner object.
+ * @param min The minimum value.
+ * @param max The maximum value.
+ *
+ * Define the allowed range of values to be selected by the user.
+ *
+ * If actual value is less than @p min, it will be updated to @p min. If it
+ * is bigger then @p max, will be updated to @p max. Actual value can be
+ * get with elm_spinner_value_get().
+ *
+ * By default, min is equal to 0, and max is equal to 100.
+ *
+ * @warning Maximum must be greater than minimum.
+ *
+ * @see elm_spinner_min_max_get()
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_min_max_set(Evas_Object *obj, double min, double max);
+
+/**
+ * Get the minimum and maximum values of the spinner.
+ *
+ * @param obj The spinner object.
+ * @param min Pointer to store the minimum value.
+ * @param max Pointer to store the maximum value.
+ *
+ * @note If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @see elm_spinner_min_max_set() for details.
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_min_max_get(const Evas_Object *obj, double *min, double *max);
+
+/**
+ * Set the step used to increment or decrement the spinner value.
+ *
+ * @param obj The spinner object.
+ * @param step The step value.
+ *
+ * This value will be incremented or decremented to the displayed value.
+ * It will be incremented while the user keep right or top arrow pressed,
+ * and will be decremented while the user keep left or bottom arrow pressed.
+ *
+ * The interval to increment / decrement can be set with
+ * elm_spinner_interval_set().
+ *
+ * By default step value is equal to 1.
+ *
+ * @see elm_spinner_step_get()
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_step_set(Evas_Object *obj, double step);
+
+/**
+ * Get the step used to increment or decrement the spinner value.
+ *
+ * @param obj The spinner object.
+ * @return The step value.
+ *
+ * @see elm_spinner_step_get() for more details.
+ *
+ * @ingroup Spinner
+ */
+EAPI double elm_spinner_step_get(const Evas_Object *obj);
+
+/**
+ * Set the value the spinner displays.
+ *
+ * @param obj The spinner object.
+ * @param val The value to be displayed.
+ *
+ * Value will be presented on the label following format specified with
+ * elm_spinner_format_set().
+ *
+ * @warning The value must to be between min and max values. This values
+ * are set by elm_spinner_min_max_set().
+ *
+ * @see elm_spinner_value_get().
+ * @see elm_spinner_format_set().
+ * @see elm_spinner_min_max_set().
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_value_set(Evas_Object *obj, double val);
+
+/**
+ * Get the value displayed by the spinner.
+ *
+ * @param obj The spinner object.
+ * @return The value displayed.
+ *
+ * @see elm_spinner_value_set() for details.
+ *
+ * @ingroup Spinner
+ */
+EAPI double elm_spinner_value_get(const Evas_Object *obj);
+
+/**
+ * Set whether the spinner should wrap when it reaches its
+ * minimum or maximum value.
+ *
+ * @param obj The spinner object.
+ * @param wrap @c EINA_TRUE to enable wrap or @c EINA_FALSE to
+ * disable it.
+ *
+ * Disabled by default. If disabled, when the user tries to increment the
+ * value,
+ * but displayed value plus step value is bigger than maximum value,
+ * the new value will be the maximum value.
+ * The same happens when the user tries to decrement it,
+ * but the value less step is less than minimum value. In this case,
+ * the new displayed value will be the minimum value.
+ *
+ * When wrap is enabled, when the user tries to increment the value,
+ * but displayed value plus step value is bigger than maximum value,
+ * the new value will be the minimum value. When the the user tries to
+ * decrement it, but the value less step is less than minimum value,
+ * the new displayed value will be the maximum value.
+ *
+ * E.g.:
+ * @li min value = 10
+ * @li max value = 50
+ * @li step value = 20
+ * @li displayed value = 20
+ *
+ * When the user decrement value (using left or bottom arrow), it will
+ * displays @c 50.
+ *
+ * @see elm_spinner_wrap_get().
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_wrap_set(Evas_Object *obj, Eina_Bool wrap);
+
+/**
+ * Get whether the spinner should wrap when it reaches its
+ * minimum or maximum value.
+ *
+ * @param obj The spinner object
+ * @return @c EINA_TRUE means wrap is enabled. @c EINA_FALSE indicates
+ * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_spinner_wrap_set() for details.
+ *
+ * @ingroup Spinner
+ */
+EAPI Eina_Bool elm_spinner_wrap_get(const Evas_Object *obj);
+
+/**
+ * Set a special string to display in the place of the numerical value.
+ *
+ * @param obj The spinner object.
+ * @param value The value to be replaced.
+ * @param label The label to be used.
+ *
+ * It's useful for cases when a user should select an item that is
+ * better indicated by a label than a value. For example, weekdays or months.
+ *
+ * E.g.:
+ * @code
+ * sp = elm_spinner_add(win);
+ * elm_spinner_min_max_set(sp, 1, 3);
+ * elm_spinner_special_value_add(sp, 1, "January");
+ * elm_spinner_special_value_add(sp, 2, "February");
+ * elm_spinner_special_value_add(sp, 3, "March");
+ * evas_object_show(sp);
+ * @endcode
+ *
+ * @note If another label was previously set to @p value, it will be replaced
+ * by the new label.
+ *
+ * @see elm_spinner_special_value_get().
+ * @see elm_spinner_special_value_del().
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_special_value_add(Evas_Object *obj, double value, const char *label);
+
+/**
+ * Set whether the spinner can be directly edited by the user or not.
+ *
+ * @param obj The spinner object.
+ * @param editable @c EINA_TRUE to allow users to edit it or @c EINA_FALSE to
+ * don't allow users to edit it directly.
+ *
+ * Spinner objects can have edition @b disabled, in which state they will
+ * be changed only by arrows.
+ * Useful for contexts
+ * where you don't want your users to interact with it writing the value.
+ * Specially
+ * when using special values, the user can see real value instead
+ * of special label on edition.
+ *
+ * It's enabled by default.
+ *
+ * @see elm_spinner_editable_get()
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_editable_set(Evas_Object *obj, Eina_Bool editable);
+
+/**
+ * Get whether the spinner can be directly edited by the user or not.
+ *
+ * @param obj The spinner object.
+ * @return @c EINA_TRUE means edition is enabled. @c EINA_FALSE indicates
+ * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_spinner_editable_set() for details.
+ *
+ * @ingroup Spinner
+ */
+EAPI Eina_Bool elm_spinner_editable_get(const Evas_Object *obj);
+
+/**
+ * Set the interval on time updates for an user mouse button hold
+ * on spinner widgets' arrows.
+ *
+ * @param obj The spinner object.
+ * @param interval The (first) interval value in seconds.
+ *
+ * This interval value is @b decreased while the user holds the
+ * mouse pointer either incrementing or decrementing spinner's value.
+ *
+ * This helps the user to get to a given value distant from the
+ * current one easier/faster, as it will start to change quicker and
+ * quicker on mouse button holds.
+ *
+ * The calculation for the next change interval value, starting from
+ * the one set with this call, is the previous interval divided by
+ * @c 1.05, so it decreases a little bit.
+ *
+ * The default starting interval value for automatic changes is
+ * @c 0.85 seconds.
+ *
+ * @see elm_spinner_interval_get()
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_interval_set(Evas_Object *obj, double interval);
+
+/**
+ * Get the interval on time updates for an user mouse button hold
+ * on spinner widgets' arrows.
+ *
+ * @param obj The spinner object.
+ * @return The (first) interval value, in seconds, set on it.
+ *
+ * @see elm_spinner_interval_set() for more details.
+ *
+ * @ingroup Spinner
+ */
+EAPI double elm_spinner_interval_get(const Evas_Object *obj);
+
+/**
+ * Set the base for rounding
+ *
+ * @param obj The spinner object
+ * @param base The base value
+ *
+ * Rounding works as follows:
+ *
+ * rounded_val = base + (double)(((value - base) / round) * round)
+ *
+ * Where rounded_val, value and base are doubles, and round is an integer.
+ *
+ * This means that things will be rounded to increments (or decrements) of
+ * "round" starting from value @p base. The default base for rounding is 0.
+ *
+ * Example: round = 3, base = 2
+ * Values: 3, 6, 9, 12, 15, ...
+ *
+ * Example: round = 2, base = 5.5
+ * Values: 5.5, 7.5, 9.5, 11.5, ...
+ *
+ * @see elm_spinner_round_get()
+ * @see elm_spinner_base_get() too.
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_base_set(Evas_Object *obj, double base);
+
+/**
+ * Get the base for rounding
+ *
+ * @param obj The spinner object
+ * @return The base rounding value
+ *
+ * This returns the base for rounding.
+ *
+ * @see elm_spinner_round_set() too.
+ * @see elm_spinner_base_set() too.
+ *
+ * @ingroup Spinner
+ */
+EAPI double elm_spinner_base_get(const Evas_Object *obj);
+
+/**
+ * Set the round value for rounding
+ *
+ * @param obj The spinner object
+ * @param rnd The rounding value
+ *
+ * Sets the rounding value used for value rounding in the spinner.
+ *
+ * @see elm_spinner_round_get()
+ * @see elm_spinner_base_set()
+ *
+ * @ingroup Spinner
+ */
+EAPI void elm_spinner_round_set(Evas_Object *obj, int rnd);
+
+/**
+ * Get the round value for rounding
+ *
+ * @param obj The spinner object
+ * @return The rounding value
+ *
+ * This returns the round value for rounding.
+ *
+ * @see elm_spinner_round_set() too.
+ * @see elm_spinner_base_set() too.
+ *
+ * @ingroup Spinner
+ */
+EAPI int elm_spinner_round_get(const Evas_Object *obj);
diff --git a/src/lib/elm_systray.h b/src/lib/elm_systray.h
index 225daa773..5c149d358 100644
--- a/src/lib/elm_systray.h
+++ b/src/lib/elm_systray.h
@@ -1,324 +1,4 @@
-#ifndef ELM_SYSTRAY_H
-#define ELM_SYSTRAY_H
-
-#include "Eo.h"
-
-#define ELM_OBJ_SYSTRAY_CLASS elm_obj_systray_class_get()
-
-const Eo_Class *elm_obj_systray_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_SYSTRAY_BASE_ID;
-
-enum
-{
- ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_SET,
- ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_GET,
- ELM_OBJ_SYSTRAY_SUB_ID_STATUS_SET,
- ELM_OBJ_SYSTRAY_SUB_ID_STATUS_GET,
- ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_SET,
- ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_GET,
- ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_SET,
- ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_GET,
- ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_SET,
- ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_GET,
- ELM_OBJ_SYSTRAY_SUB_ID_ID_SET,
- ELM_OBJ_SYSTRAY_SUB_ID_ID_GET,
- ELM_OBJ_SYSTRAY_SUB_ID_TITLE_SET,
- ELM_OBJ_SYSTRAY_SUB_ID_TITLE_GET,
- ELM_OBJ_SYSTRAY_SUB_ID_MENU_SET,
- ELM_OBJ_SYSTRAY_SUB_ID_MENU_GET,
- ELM_OBJ_SYSTRAY_SUB_ID_REGISTER,
- ELM_OBJ_SYSTRAY_SUB_ID_LAST
-};
-
-#define ELM_OBJ_SYSTRAY_ID(sub_id) (ELM_OBJ_SYSTRAY_BASE_ID + sub_id)
-
-/**
- * @def elm_obj_systray_category_set
- *
- * Set the category of the Status Notifier Item.
- *
- * @param[in] cat Category
- *
- * @see Elm_Systray_Category
- *
- * @since 1.8
- */
-#define elm_obj_systray_category_set(cat) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_SET), \
- EO_TYPECHECK(Elm_Systray_Category, cat)
-
-/**
- * @def elm_obj_systray_category_get
- *
- * Retrieve the category of the Status Notifier Item.
- *
- * @param[out] ret Category
- *
- * @see elm_obj_systray_category_set
- *
- * @since 1.8
- */
-#define elm_obj_systray_category_get(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_GET), \
- EO_TYPECHECK(Elm_Systray_Category *, ret)
-
-/**
- * @def elm_obj_systray_status_set
- *
- * Set the status of the Status Notifier Item.
- *
- * @param[in] st Status
- *
- * @see Elm_Systray_Status
- *
- * @since 1.8
- */
-#define elm_obj_systray_status_set(st) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_STATUS_SET), \
- EO_TYPECHECK(Elm_Systray_Status, st)
-
-/**
- * @def elm_obj_systray_status_get
- *
- * Retrieve the status of the Status Notifier Item.
- *
- * @param[out] ret Status
- *
- * @see elm_obj_systray_status_set
- *
- * @since 1.8
- */
-#define elm_obj_systray_status_get(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_STATUS_GET), \
- EO_TYPECHECK(Elm_Systray_Status *, ret)
-
-/**
- * @def elm_obj_systray_att_icon_name_set
- *
- * Set the name of the attention icon to be used by the Status Notifier Item.
- *
- * @param[in] att_icon_name
- *
- * @see elm_obj_systray_att_icon_name_get
- *
- * @since 1.8
- */
-#define elm_obj_systray_att_icon_name_set(att_icon_name) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_SET), \
- EO_TYPECHECK(const char *, att_icon_name)
-
-/**
- * @def elm_obj_systray_att_icon_name_get
- *
- * Retrieve the name of the attention icon used by the Status Notifier Item.
- *
- * @param[out] ret
- *
- * @see elm_obj_systray_att_icon_name_set
- *
- * @since 1.8
- */
-#define elm_obj_systray_att_icon_name_get(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_GET), \
- EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_systray_icon_name_set
- *
- * Set the name of the icon to be used by the Status Notifier Item.
- *
- * @param[in] icon_name
- *
- * @see elm_obj_systray_icon_name_get
- *
- * @since 1.8
- */
-#define elm_obj_systray_icon_name_set(icon_name) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_SET), \
- EO_TYPECHECK(const char *, icon_name)
-
-/**
- * @def elm_obj_systray_icon_name_get
- *
- * Retrieve the name of the icon used by the Status Notifier Item.
- *
- * @param[out] ret
- *
- * @see elm_obj_systray_icon_name_set
- *
- * @since 1.8
- */
-#define elm_obj_systray_icon_name_get(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_GET), \
- EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_systray_icon_theme_path_set
- *
- * Set the path to the theme where the icons can be found.
- * Set this value to "" to use the default path.
- *
- * @param[in] icon_theme_path
- *
- * @see elm_obj_systray_icon_theme_path_get
- *
- * @since 1.8
- */
-#define elm_obj_systray_icon_theme_path_set(icon_theme_path) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_SET), \
- EO_TYPECHECK(const char *, icon_theme_path)
-
-/**
- * @def elm_obj_systray_icon_theme_path_get
- *
- * Retrieve the path to the icon's theme currently in use.
- *
- * @param[out] ret
- *
- * @see elm_obj_systray_icon_theme_path_set
- *
- * @since 1.8
- */
-#define elm_obj_systray_icon_theme_path_get(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_GET), \
- EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_systray_id_set
- *
- * Set the id of the Status Notifier Item.
- *
- * @param[in] id
- *
- * @see elm_obj_systray_id_get
- *
- * @since 1.8
- */
-#define elm_obj_systray_id_set(id) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ID_SET), \
- EO_TYPECHECK(const char *, id)
-
-/**
- * @def elm_obj_systray_id_get
- *
- * Retrieve the id of the Status Notifier Item.
- *
- * @param[out] ret
- *
- * @see elm_obj_systray_id_set
- *
- * @since 1.8
- */
-#define elm_obj_systray_id_get(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ID_GET), \
- EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_systray_title_set
- *
- * Set the title of the Status Notifier Item.
- *
- * @param[in] title
- *
- * @see elm_obj_systray_title_get
- *
- * @since 1.8
- */
-#define elm_obj_systray_title_set(title) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_TITLE_SET), \
- EO_TYPECHECK(const char *, title)
-
-/**
- * @def elm_obj_systray_title_get
- *
- * Retrieve the title of the Status Notifier Item.
- *
- * @param[out] ret
- *
- * @see elm_obj_systray_title_set
- *
- * @since 1.8
- */
-#define elm_obj_systray_title_get(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_TITLE_GET), \
- EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_systray_menu_set
- *
- * Set the object path of the D-Bus Menu that is to be show when the
- * Status Notifier Item is activated by the user.
- *
- * @param[in] menu
- *
- * @see elm_obj_systray_menu_get
- *
- * @since 1.8
- */
-#define elm_obj_systray_menu_set(menu) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_MENU_SET), \
- EO_TYPECHECK(const Eo *, menu)
-
-/**
- * @def elm_obj_systray_menu_get
- *
- * Retrieve the object path of the D-Bus Menu currently in use.
- *
- * @param[out] ret
- *
- * @see elm_obj_systray_menu_set
- *
- * @since 1.8
- */
-#define elm_obj_systray_menu_get(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_MENU_GET), \
- EO_TYPECHECK(const Eo **, ret)
-
-/**
- * @def elm_obj_systray_register
- *
- * Register this Status Notifier Item in the System Tray Watcher.
- * This function should only be called after the event
- * ELM_EVENT_SYSTRAY_READY is emitted.
- *
- * @param[out] ret
- *
- * @since 1.8
- */
-#define elm_obj_systray_register(ret) \
- ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_REGISTER), \
- EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * Emitted when the systray is ready to be used by the application.
- */
-EAPI extern int ELM_EVENT_SYSTRAY_READY;
-
-/**
- * Category of the Status Notifier Item.
- *
- * @since 1.8
- */
-typedef enum _Elm_Systray_Category
-{
- ELM_SYSTRAY_CATEGORY_APP_STATUS, /**< Indicators of application status */
- ELM_SYSTRAY_CATEGORY_COMMUNICATIONS, /**< Communications apps */
- ELM_SYSTRAY_CATEGORY_SYS_SERVICES, /**< System Service apps */
- ELM_SYSTRAY_CATEGORY_HARDWARE, /**< Hardware indicators */
- ELM_SYSTRAY_CATEGORY_OTHER /**< Undefined category */
-} Elm_Systray_Category;
-
-/**
- * Application status information.
- *
- * @since 1.8
- */
-typedef enum _Elm_Systray_Status
-{
- ELM_SYSTRAY_STATUS_PASSIVE, /**< Passive (normal) */
- ELM_SYSTRAY_STATUS_ACTIVE, /**< Active */
- ELM_SYSTRAY_STATUS_ATTENTION /**< Needs Attention */
-} Elm_Systray_Status;
-
+#include "elm_systray_common.h"
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_systray_eo.h"
#endif
diff --git a/src/lib/elm_systray_common.h b/src/lib/elm_systray_common.h
new file mode 100644
index 000000000..f0871c955
--- /dev/null
+++ b/src/lib/elm_systray_common.h
@@ -0,0 +1,31 @@
+/**
+ * Emitted when the systray is ready to be used by the application.
+ */
+EAPI extern int ELM_EVENT_SYSTRAY_READY;
+
+/**
+ * Category of the Status Notifier Item.
+ *
+ * @since 1.8
+ */
+typedef enum _Elm_Systray_Category
+{
+ ELM_SYSTRAY_CATEGORY_APP_STATUS, /**< Indicators of application status */
+ ELM_SYSTRAY_CATEGORY_COMMUNICATIONS, /**< Communications apps */
+ ELM_SYSTRAY_CATEGORY_SYS_SERVICES, /**< System Service apps */
+ ELM_SYSTRAY_CATEGORY_HARDWARE, /**< Hardware indicators */
+ ELM_SYSTRAY_CATEGORY_OTHER /**< Undefined category */
+} Elm_Systray_Category;
+
+/**
+ * Application status information.
+ *
+ * @since 1.8
+ */
+typedef enum _Elm_Systray_Status
+{
+ ELM_SYSTRAY_STATUS_PASSIVE, /**< Passive (normal) */
+ ELM_SYSTRAY_STATUS_ACTIVE, /**< Active */
+ ELM_SYSTRAY_STATUS_ATTENTION /**< Needs Attention */
+} Elm_Systray_Status;
+
diff --git a/src/lib/elm_systray_eo.h b/src/lib/elm_systray_eo.h
new file mode 100644
index 000000000..18998f96f
--- /dev/null
+++ b/src/lib/elm_systray_eo.h
@@ -0,0 +1,286 @@
+#define ELM_OBJ_SYSTRAY_CLASS elm_obj_systray_class_get()
+
+const Eo_Class *elm_obj_systray_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_SYSTRAY_BASE_ID;
+
+enum
+{
+ ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_SET,
+ ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_GET,
+ ELM_OBJ_SYSTRAY_SUB_ID_STATUS_SET,
+ ELM_OBJ_SYSTRAY_SUB_ID_STATUS_GET,
+ ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_SET,
+ ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_GET,
+ ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_SET,
+ ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_GET,
+ ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_SET,
+ ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_GET,
+ ELM_OBJ_SYSTRAY_SUB_ID_ID_SET,
+ ELM_OBJ_SYSTRAY_SUB_ID_ID_GET,
+ ELM_OBJ_SYSTRAY_SUB_ID_TITLE_SET,
+ ELM_OBJ_SYSTRAY_SUB_ID_TITLE_GET,
+ ELM_OBJ_SYSTRAY_SUB_ID_MENU_SET,
+ ELM_OBJ_SYSTRAY_SUB_ID_MENU_GET,
+ ELM_OBJ_SYSTRAY_SUB_ID_REGISTER,
+ ELM_OBJ_SYSTRAY_SUB_ID_LAST
+};
+
+#define ELM_OBJ_SYSTRAY_ID(sub_id) (ELM_OBJ_SYSTRAY_BASE_ID + sub_id)
+
+/**
+ * @def elm_obj_systray_category_set
+ *
+ * Set the category of the Status Notifier Item.
+ *
+ * @param[in] cat Category
+ *
+ * @see Elm_Systray_Category
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_category_set(cat) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_SET), \
+ EO_TYPECHECK(Elm_Systray_Category, cat)
+
+/**
+ * @def elm_obj_systray_category_get
+ *
+ * Retrieve the category of the Status Notifier Item.
+ *
+ * @param[out] ret Category
+ *
+ * @see elm_obj_systray_category_set
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_category_get(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_CATEGORY_GET), \
+ EO_TYPECHECK(Elm_Systray_Category *, ret)
+
+/**
+ * @def elm_obj_systray_status_set
+ *
+ * Set the status of the Status Notifier Item.
+ *
+ * @param[in] st Status
+ *
+ * @see Elm_Systray_Status
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_status_set(st) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_STATUS_SET), \
+ EO_TYPECHECK(Elm_Systray_Status, st)
+
+/**
+ * @def elm_obj_systray_status_get
+ *
+ * Retrieve the status of the Status Notifier Item.
+ *
+ * @param[out] ret Status
+ *
+ * @see elm_obj_systray_status_set
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_status_get(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_STATUS_GET), \
+ EO_TYPECHECK(Elm_Systray_Status *, ret)
+
+/**
+ * @def elm_obj_systray_att_icon_name_set
+ *
+ * Set the name of the attention icon to be used by the Status Notifier Item.
+ *
+ * @param[in] att_icon_name
+ *
+ * @see elm_obj_systray_att_icon_name_get
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_att_icon_name_set(att_icon_name) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_SET), \
+ EO_TYPECHECK(const char *, att_icon_name)
+
+/**
+ * @def elm_obj_systray_att_icon_name_get
+ *
+ * Retrieve the name of the attention icon used by the Status Notifier Item.
+ *
+ * @param[out] ret
+ *
+ * @see elm_obj_systray_att_icon_name_set
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_att_icon_name_get(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ATT_ICON_NAME_GET), \
+ EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_systray_icon_name_set
+ *
+ * Set the name of the icon to be used by the Status Notifier Item.
+ *
+ * @param[in] icon_name
+ *
+ * @see elm_obj_systray_icon_name_get
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_icon_name_set(icon_name) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_SET), \
+ EO_TYPECHECK(const char *, icon_name)
+
+/**
+ * @def elm_obj_systray_icon_name_get
+ *
+ * Retrieve the name of the icon used by the Status Notifier Item.
+ *
+ * @param[out] ret
+ *
+ * @see elm_obj_systray_icon_name_set
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_icon_name_get(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_NAME_GET), \
+ EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_systray_icon_theme_path_set
+ *
+ * Set the path to the theme where the icons can be found.
+ * Set this value to "" to use the default path.
+ *
+ * @param[in] icon_theme_path
+ *
+ * @see elm_obj_systray_icon_theme_path_get
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_icon_theme_path_set(icon_theme_path) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_SET), \
+ EO_TYPECHECK(const char *, icon_theme_path)
+
+/**
+ * @def elm_obj_systray_icon_theme_path_get
+ *
+ * Retrieve the path to the icon's theme currently in use.
+ *
+ * @param[out] ret
+ *
+ * @see elm_obj_systray_icon_theme_path_set
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_icon_theme_path_get(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ICON_THEME_PATH_GET), \
+ EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_systray_id_set
+ *
+ * Set the id of the Status Notifier Item.
+ *
+ * @param[in] id
+ *
+ * @see elm_obj_systray_id_get
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_id_set(id) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ID_SET), \
+ EO_TYPECHECK(const char *, id)
+
+/**
+ * @def elm_obj_systray_id_get
+ *
+ * Retrieve the id of the Status Notifier Item.
+ *
+ * @param[out] ret
+ *
+ * @see elm_obj_systray_id_set
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_id_get(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_ID_GET), \
+ EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_systray_title_set
+ *
+ * Set the title of the Status Notifier Item.
+ *
+ * @param[in] title
+ *
+ * @see elm_obj_systray_title_get
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_title_set(title) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_TITLE_SET), \
+ EO_TYPECHECK(const char *, title)
+
+/**
+ * @def elm_obj_systray_title_get
+ *
+ * Retrieve the title of the Status Notifier Item.
+ *
+ * @param[out] ret
+ *
+ * @see elm_obj_systray_title_set
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_title_get(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_TITLE_GET), \
+ EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_systray_menu_set
+ *
+ * Set the object path of the D-Bus Menu that is to be show when the
+ * Status Notifier Item is activated by the user.
+ *
+ * @param[in] menu
+ *
+ * @see elm_obj_systray_menu_get
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_menu_set(menu) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_MENU_SET), \
+ EO_TYPECHECK(const Eo *, menu)
+
+/**
+ * @def elm_obj_systray_menu_get
+ *
+ * Retrieve the object path of the D-Bus Menu currently in use.
+ *
+ * @param[out] ret
+ *
+ * @see elm_obj_systray_menu_set
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_menu_get(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_MENU_GET), \
+ EO_TYPECHECK(const Eo **, ret)
+
+/**
+ * @def elm_obj_systray_register
+ *
+ * Register this Status Notifier Item in the System Tray Watcher.
+ * This function should only be called after the event
+ * ELM_EVENT_SYSTRAY_READY is emitted.
+ *
+ * @param[out] ret
+ *
+ * @since 1.8
+ */
+#define elm_obj_systray_register(ret) \
+ ELM_OBJ_SYSTRAY_ID(ELM_OBJ_SYSTRAY_SUB_ID_REGISTER), \
+ EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_table.h b/src/lib/elm_table.h
index e87ae14b5..4d040c811 100644
--- a/src/lib/elm_table.h
+++ b/src/lib/elm_table.h
@@ -29,280 +29,12 @@
* @{
*/
-#define ELM_OBJ_TABLE_CLASS elm_obj_table_class_get()
-
-const Eo_Class *elm_obj_table_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_TABLE_BASE_ID;
-
-enum
-{
- ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET,
- ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET,
- ELM_OBJ_TABLE_SUB_ID_PADDING_SET,
- ELM_OBJ_TABLE_SUB_ID_PADDING_GET,
- ELM_OBJ_TABLE_SUB_ID_PACK,
- ELM_OBJ_TABLE_SUB_ID_UNPACK,
- ELM_OBJ_TABLE_SUB_ID_PACK_SET,
- ELM_OBJ_TABLE_SUB_ID_PACK_GET,
- ELM_OBJ_TABLE_SUB_ID_CLEAR,
- ELM_OBJ_TABLE_SUB_ID_LAST
-};
-
-#define ELM_OBJ_TABLE_ID(sub_id) (ELM_OBJ_TABLE_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_table_homogeneous_set
- * @since 1.8
- *
- * @brief Set the homogeneous layout in the table
- *
- * @param[in] homogeneous
- *
- * @see elm_table_homogeneous_set
- */
-#define elm_obj_table_homogeneous_set(homogeneous) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET), EO_TYPECHECK(Eina_Bool, homogeneous)
-
-/**
- * @def elm_obj_table_homogeneous_get
- * @since 1.8
- *
- * @brief Get the current table homogeneous mode.
- *
- * @param[out] ret
- *
- * @see elm_table_homogeneous_get
- */
-#define elm_obj_table_homogeneous_get(ret) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_table_padding_set
- * @since 1.8
- *
- * @brief Set padding between cells.
- *
- * @param[in] horizontal
- * @param[in] vertical
- *
- * @see elm_table_padding_set
- */
-#define elm_obj_table_padding_set(horizontal, vertical) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_SET), EO_TYPECHECK(Evas_Coord, horizontal), EO_TYPECHECK(Evas_Coord, vertical)
-
-/**
- * @def elm_obj_table_padding_get
- * @since 1.8
- *
- * @brief Get padding between cells.
- *
- * @param[out] horizontal
- * @param[out] vertical
- *
- * @see elm_table_padding_get
- */
-#define elm_obj_table_padding_get(horizontal, vertical) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_GET), EO_TYPECHECK(Evas_Coord *, horizontal), EO_TYPECHECK(Evas_Coord *, vertical)
-
-/**
- * @def elm_obj_table_pack
- * @since 1.8
- *
- * @brief Add a subobject on the table with the coordinates passed
- *
- * @param[in] subobj
- * @param[in] x
- * @param[in] y
- * @param[in] w
- * @param[in] h
- *
- * @see elm_table_pack
- */
-#define elm_obj_table_pack(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
-
-/**
- * @def elm_obj_table_unpack
- * @since 1.8
- *
- * @brief Remove child from table.
- *
- * @param[in] subobj
- *
- * @see elm_table_unpack
- */
-#define elm_obj_table_unpack(subobj) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_UNPACK), EO_TYPECHECK(Evas_Object *, subobj)
-
-/**
- * @def elm_obj_table_pack_set
- * @since 1.8
- *
- * @brief Set the packing location of an existing child of the table
- *
- * @param[in] subobj
- * @param[in] x
- * @param[in] y
- * @param[in] w
- * @param[in] h
- *
- * @see elm_table_pack_set
- */
-#define elm_obj_table_pack_set(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_SET), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
-
-/**
- * @def elm_obj_table_pack_get
- * @since 1.8
- *
- * @brief Get the packing location of an existing child of the table
- *
- * @param[in] subobj
- * @param[out] x
- * @param[out] y
- * @param[out] w
- * @param[out] h
- *
- * @see elm_table_pack_get
- */
-#define elm_obj_table_pack_get(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_GET), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
-
-/**
- * @def elm_obj_table_clear
- * @since 1.8
- *
- * @brief Faster way to remove all child objects from a table object.
- *
- * @param[in] clear
- *
- * @see elm_table_clear
- */
-#define elm_obj_table_clear(clear) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_CLEAR), EO_TYPECHECK(Eina_Bool, clear)
-
-
-/**
- * @brief Add a new table to the parent
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- *
- * @ingroup Table
- */
-EAPI Evas_Object *elm_table_add(Evas_Object *parent);
-
-/**
- * @brief Set the homogeneous layout in the table
- *
- * @param obj The layout object
- * @param homogeneous A boolean to set if the layout is homogeneous in the
- * table (EINA_TRUE = homogeneous, EINA_FALSE = no homogeneous)
- *
- * @ingroup Table
- */
-EAPI void elm_table_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous);
-
-/**
- * @brief Get the current table homogeneous mode.
- *
- * @param obj The table object
- * @return A boolean to indicating if the layout is homogeneous in the table
- * (EINA_TRUE = homogeneous, EINA_FALSE = no homogeneous)
- *
- * @ingroup Table
- */
-EAPI Eina_Bool elm_table_homogeneous_get(const Evas_Object *obj);
-
-/**
- * @brief Set padding between cells.
- *
- * @param obj The layout object.
- * @param horizontal set the horizontal padding.
- * @param vertical set the vertical padding.
- *
- * Default value is 0.
- *
- * @ingroup Table
- */
-EAPI void elm_table_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical);
-
-/**
- * @brief Get padding between cells.
- *
- * @param obj The layout object.
- * @param horizontal set the horizontal padding.
- * @param vertical set the vertical padding.
- *
- * @ingroup Table
- */
-EAPI void elm_table_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical);
-
-/**
- * @brief Add a subobject on the table with the coordinates passed
- *
- * @param obj The table object
- * @param subobj The subobject to be added to the table
- * @param x Row number
- * @param y Column number
- * @param w colspan
- * @param h rowspan
- *
- * @note All positioning inside the table is relative to rows and columns, so
- * a value of 0 for x and y, means the top left cell of the table, and a
- * value of 1 for w and h means @p subobj only takes that 1 cell.
- *
- * @ingroup Table
- */
-EAPI void elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h);
-
-/**
- * @brief Remove child from table.
- *
- * @param obj The table object
- * @param subobj The subobject
- *
- * @ingroup Table
- */
-EAPI void elm_table_unpack(Evas_Object *obj, Evas_Object *subobj);
-
-/**
- * @brief Faster way to remove all child objects from a table object.
- *
- * @param obj The table object
- * @param clear If true, will delete children, else just remove from table.
- *
- * @ingroup Table
- */
-EAPI void elm_table_clear(Evas_Object *obj, Eina_Bool clear);
-
-/**
- * @brief Set the packing location of an existing child of the table
- *
- * @param subobj The subobject to be modified in the table
- * @param x Row number
- * @param y Column number
- * @param w rowspan
- * @param h colspan
- *
- * Modifies the position of an object already in the table.
- *
- * @note All positioning inside the table is relative to rows and columns, so
- * a value of 0 for x and y, means the top left cell of the table, and a
- * value of 1 for w and h means @p subobj only takes that 1 cell.
- *
- * @ingroup Table
- */
-EAPI void elm_table_pack_set(Evas_Object *subobj, int x, int y, int w, int h);
-
-/**
- * @brief Get the packing location of an existing child of the table
- *
- * @param subobj The subobject to be modified in the table
- * @param x Row number
- * @param y Column number
- * @param w rowspan
- * @param h colspan
- *
- * @see elm_table_pack_set()
- *
- * @ingroup Table
- */
-EAPI void elm_table_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h);
-
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_table_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_table_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_table_eo.h b/src/lib/elm_table_eo.h
new file mode 100644
index 000000000..23e0c759f
--- /dev/null
+++ b/src/lib/elm_table_eo.h
@@ -0,0 +1,162 @@
+#define ELM_OBJ_TABLE_CLASS elm_obj_table_class_get()
+
+const Eo_Class *elm_obj_table_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_TABLE_BASE_ID;
+
+enum
+{
+ ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET,
+ ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET,
+ ELM_OBJ_TABLE_SUB_ID_PADDING_SET,
+ ELM_OBJ_TABLE_SUB_ID_PADDING_GET,
+ ELM_OBJ_TABLE_SUB_ID_PACK,
+ ELM_OBJ_TABLE_SUB_ID_UNPACK,
+ ELM_OBJ_TABLE_SUB_ID_PACK_SET,
+ ELM_OBJ_TABLE_SUB_ID_PACK_GET,
+ ELM_OBJ_TABLE_SUB_ID_CLEAR,
+ ELM_OBJ_TABLE_SUB_ID_LAST
+};
+
+#define ELM_OBJ_TABLE_ID(sub_id) (ELM_OBJ_TABLE_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_table_homogeneous_set
+ * @since 1.8
+ *
+ * @brief Set the homogeneous layout in the table
+ *
+ * @param[in] homogeneous
+ *
+ * @see elm_table_homogeneous_set
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_homogeneous_set(homogeneous) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET), EO_TYPECHECK(Eina_Bool, homogeneous)
+
+/**
+ * @def elm_obj_table_homogeneous_get
+ * @since 1.8
+ *
+ * @brief Get the current table homogeneous mode.
+ *
+ * @param[out] ret
+ *
+ * @see elm_table_homogeneous_get
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_homogeneous_get(ret) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_table_padding_set
+ * @since 1.8
+ *
+ * @brief Set padding between cells.
+ *
+ * @param[in] horizontal
+ * @param[in] vertical
+ *
+ * @see elm_table_padding_set
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_padding_set(horizontal, vertical) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_SET), EO_TYPECHECK(Evas_Coord, horizontal), EO_TYPECHECK(Evas_Coord, vertical)
+
+/**
+ * @def elm_obj_table_padding_get
+ * @since 1.8
+ *
+ * @brief Get padding between cells.
+ *
+ * @param[out] horizontal
+ * @param[out] vertical
+ *
+ * @see elm_table_padding_get
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_padding_get(horizontal, vertical) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_GET), EO_TYPECHECK(Evas_Coord *, horizontal), EO_TYPECHECK(Evas_Coord *, vertical)
+
+/**
+ * @def elm_obj_table_pack
+ * @since 1.8
+ *
+ * @brief Add a subobject on the table with the coordinates passed
+ *
+ * @param[in] subobj
+ * @param[in] x
+ * @param[in] y
+ * @param[in] w
+ * @param[in] h
+ *
+ * @see elm_table_pack
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_pack(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * @def elm_obj_table_unpack
+ * @since 1.8
+ *
+ * @brief Remove child from table.
+ *
+ * @param[in] subobj
+ *
+ * @see elm_table_unpack
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_unpack(subobj) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_UNPACK), EO_TYPECHECK(Evas_Object *, subobj)
+
+/**
+ * @def elm_obj_table_pack_set
+ * @since 1.8
+ *
+ * @brief Set the packing location of an existing child of the table
+ *
+ * @param[in] subobj
+ * @param[in] x
+ * @param[in] y
+ * @param[in] w
+ * @param[in] h
+ *
+ * @see elm_table_pack_set
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_pack_set(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_SET), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * @def elm_obj_table_pack_get
+ * @since 1.8
+ *
+ * @brief Get the packing location of an existing child of the table
+ *
+ * @param[in] subobj
+ * @param[out] x
+ * @param[out] y
+ * @param[out] w
+ * @param[out] h
+ *
+ * @see elm_table_pack_get
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_pack_get(subobj, x, y, w, h) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_GET), EO_TYPECHECK(Evas_Object *, subobj), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+
+/**
+ * @def elm_obj_table_clear
+ * @since 1.8
+ *
+ * @brief Faster way to remove all child objects from a table object.
+ *
+ * @param[in] clear
+ *
+ * @see elm_table_clear
+ *
+ * @ingroup Table
+ */
+#define elm_obj_table_clear(clear) ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_CLEAR), EO_TYPECHECK(Eina_Bool, clear)
diff --git a/src/lib/elm_table_legacy.h b/src/lib/elm_table_legacy.h
new file mode 100644
index 000000000..1a20529c0
--- /dev/null
+++ b/src/lib/elm_table_legacy.h
@@ -0,0 +1,127 @@
+/**
+ * @brief Add a new table to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Table
+ */
+EAPI Evas_Object *elm_table_add(Evas_Object *parent);
+
+/**
+ * @brief Set the homogeneous layout in the table
+ *
+ * @param obj The layout object
+ * @param homogeneous A boolean to set if the layout is homogeneous in the
+ * table (EINA_TRUE = homogeneous, EINA_FALSE = no homogeneous)
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous);
+
+/**
+ * @brief Get the current table homogeneous mode.
+ *
+ * @param obj The table object
+ * @return A boolean to indicating if the layout is homogeneous in the table
+ * (EINA_TRUE = homogeneous, EINA_FALSE = no homogeneous)
+ *
+ * @ingroup Table
+ */
+EAPI Eina_Bool elm_table_homogeneous_get(const Evas_Object *obj);
+
+/**
+ * @brief Set padding between cells.
+ *
+ * @param obj The layout object.
+ * @param horizontal set the horizontal padding.
+ * @param vertical set the vertical padding.
+ *
+ * Default value is 0.
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical);
+
+/**
+ * @brief Get padding between cells.
+ *
+ * @param obj The layout object.
+ * @param horizontal set the horizontal padding.
+ * @param vertical set the vertical padding.
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical);
+
+/**
+ * @brief Add a subobject on the table with the coordinates passed
+ *
+ * @param obj The table object
+ * @param subobj The subobject to be added to the table
+ * @param x Row number
+ * @param y Column number
+ * @param w colspan
+ * @param h rowspan
+ *
+ * @note All positioning inside the table is relative to rows and columns, so
+ * a value of 0 for x and y, means the top left cell of the table, and a
+ * value of 1 for w and h means @p subobj only takes that 1 cell.
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h);
+
+/**
+ * @brief Remove child from table.
+ *
+ * @param obj The table object
+ * @param subobj The subobject
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_unpack(Evas_Object *obj, Evas_Object *subobj);
+
+/**
+ * @brief Set the packing location of an existing child of the table
+ *
+ * @param subobj The subobject to be modified in the table
+ * @param x Row number
+ * @param y Column number
+ * @param w rowspan
+ * @param h colspan
+ *
+ * Modifies the position of an object already in the table.
+ *
+ * @note All positioning inside the table is relative to rows and columns, so
+ * a value of 0 for x and y, means the top left cell of the table, and a
+ * value of 1 for w and h means @p subobj only takes that 1 cell.
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_pack_set(Evas_Object *subobj, int x, int y, int w, int h);
+
+/**
+ * @brief Get the packing location of an existing child of the table
+ *
+ * @param subobj The subobject to be modified in the table
+ * @param x Row number
+ * @param y Column number
+ * @param w rowspan
+ * @param h colspan
+ *
+ * @see elm_table_pack_set()
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h);
+
+/**
+ * @brief Faster way to remove all child objects from a table object.
+ *
+ * @param obj The table object
+ * @param clear If true, will delete children, else just remove from table.
+ *
+ * @ingroup Table
+ */
+EAPI void elm_table_clear(Evas_Object *obj, Eina_Bool clear);
diff --git a/src/lib/elm_thumb.h b/src/lib/elm_thumb.h
index 28a7299a1..7b0b1c747 100644
--- a/src/lib/elm_thumb.h
+++ b/src/lib/elm_thumb.h
@@ -51,339 +51,13 @@
* @{
*/
-#define ELM_OBJ_THUMB_CLASS elm_obj_thumb_class_get()
-
-const Eo_Class *elm_obj_thumb_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_THUMB_BASE_ID;
-
-enum
-{
- ELM_OBJ_THUMB_SUB_ID_RELOAD,
- ELM_OBJ_THUMB_SUB_ID_FILE_SET,
- ELM_OBJ_THUMB_SUB_ID_FILE_GET,
- ELM_OBJ_THUMB_SUB_ID_PATH_GET,
- ELM_OBJ_THUMB_SUB_ID_ANIMATE_SET,
- ELM_OBJ_THUMB_SUB_ID_ANIMATE_GET,
- ELM_OBJ_THUMB_SUB_ID_EDITABLE_SET,
- ELM_OBJ_THUMB_SUB_ID_EDITABLE_GET,
- ELM_OBJ_THUMB_SUB_ID_LAST
-};
-
-#define ELM_OBJ_THUMB_ID(sub_id) (ELM_OBJ_THUMB_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_thumb_reload
- * @since 1.8
- *
- * Reload thumbnail if it was generated before.
- *
- *
- * @see elm_thumb_reload
- */
-#define elm_obj_thumb_reload() ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_RELOAD)
-
-/**
- * @def elm_obj_thumb_file_set
- * @since 1.8
- *
- * Set the file that will be used as thumbnail source.
- *
- * @param[in] file
- * @param[in] key
- *
- * @see elm_thumb_file_set
- */
-#define elm_obj_thumb_file_set(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(const char *, key)
-
-/**
- * @def elm_obj_thumb_file_get
- * @since 1.8
- *
- * Get the image or video path and key used to generate the thumbnail.
- *
- * @param[out] file
- * @param[out] key
- *
- * @see elm_thumb_file_get
- */
-#define elm_obj_thumb_file_get(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key)
-
-/**
- * @def elm_obj_thumb_path_get
- * @since 1.8
- *
- * Get the path and key to the image or video thumbnail generated by ethumb.
- *
- * @param[out] file
- * @param[out] key
- *
- * @see elm_thumb_path_get
- */
-#define elm_obj_thumb_path_get(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_PATH_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key)
-
-/**
- * @def elm_obj_thumb_animate_set
- * @since 1.8
- *
- * Set the animation state for the thumb object. If its content is an animated
- *
- * @param[in] setting
- *
- * @see elm_thumb_animate_set
- */
-#define elm_obj_thumb_animate_set(setting) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_ANIMATE_SET), EO_TYPECHECK(Elm_Thumb_Animation_Setting, setting)
-
-/**
- * @def elm_obj_thumb_animate_get
- * @since 1.8
- *
- * Get the animation state for the thumb object.
- *
- * @param[out] ret
- *
- * @see elm_thumb_animate_get
- */
-#define elm_obj_thumb_animate_get(ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_ANIMATE_GET), EO_TYPECHECK(Elm_Thumb_Animation_Setting *, ret)
-
-/**
- * @def elm_obj_thumb_editable_set
- * @since 1.8
- *
- * Make the thumbnail 'editable'.
- *
- * @param[in] edit
- * @param[out] ret
- *
- * @see elm_thumb_editable_set
- */
-#define elm_obj_thumb_editable_set(edit, ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_EDITABLE_SET), EO_TYPECHECK(Eina_Bool, edit), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_thumb_editable_get
- * @since 1.8
- *
- * Make the thumbnail 'editable'.
- *
- * @param[out] ret
- *
- * @see elm_thumb_editable_get
- */
-#define elm_obj_thumb_editable_get(ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_EDITABLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @enum Elm_Thumb_Animation_Setting
- * @typedef Elm_Thumb_Animation_Setting
- *
- * Used to set if a video thumbnail is animating or not.
- *
- * @ingroup Thumb
- */
-typedef enum
-{
- ELM_THUMB_ANIMATION_START = 0, /**< Play animation once */
- ELM_THUMB_ANIMATION_LOOP, /**< Keep playing animation until stop is requested */
- ELM_THUMB_ANIMATION_STOP, /**< Stop playing the animation */
- ELM_THUMB_ANIMATION_LAST
-} Elm_Thumb_Animation_Setting;
-
-/**
- * Add a new thumb object to the parent.
- *
- * @param parent The parent object.
- * @return The new object or NULL if it cannot be created.
- *
- * @see elm_thumb_file_set()
- * @see elm_thumb_ethumb_client_get()
- *
- * @ingroup Thumb
- */
-EAPI Evas_Object *elm_thumb_add(Evas_Object *parent);
-
-/**
- * Reload thumbnail if it was generated before.
- *
- * @param obj The thumb object to reload
- *
- * This is useful if the ethumb client configuration changed, like its
- * size, aspect or any other property one set in the handle returned
- * by elm_thumb_ethumb_client_get().
- *
- * If the options didn't change, the thumbnail won't be generated again, but
- * the old one will still be used.
- *
- * @see elm_thumb_file_set()
- *
- * @ingroup Thumb
- */
-EAPI void elm_thumb_reload(Evas_Object *obj);
-
-/**
- * Set the file that will be used as thumbnail @b source.
- *
- * @param obj The thumb object.
- * @param file The path to file that will be used as thumbnail source.
- * @param key The key used in case of an EET file.
- *
- * The file can be an image or a video (in that case, acceptable
- * extensions are: avi, mp4, ogv, mov, mpg and wmv). To start the
- * video animation, use the function elm_thumb_animate().
- *
- * @see elm_thumb_file_get()
- * @see elm_thumb_reload()
- * @see elm_thumb_animate()
- *
- * @ingroup Thumb
- */
-EAPI void elm_thumb_file_set(Evas_Object *obj, const char *file, const char *key);
-
-/**
- * Get the image or video path and key used to generate the thumbnail.
- *
- * @param obj The thumb object.
- * @param file Pointer to filename.
- * @param key Pointer to key.
- *
- * @see elm_thumb_file_set()
- * @see elm_thumb_path_get()
- *
- * @ingroup Thumb
- */
-EAPI void elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key);
-
-/**
- * Get the path and key to the image or video thumbnail generated by ethumb.
- *
- * One just needs to make sure that the thumbnail was generated before getting
- * its path; otherwise, the path will be NULL. One way to do that is by asking
- * for the path when/after the "generate,stop" smart callback is called.
- *
- * @param obj The thumb object.
- * @param file Pointer to thumb path.
- * @param key Pointer to thumb key.
- *
- * @see elm_thumb_file_get()
- *
- * @ingroup Thumb
- */
-EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key);
-
-/**
- * Set the animation state for the thumb object. If its content is an animated
- * video, you may start/stop the animation or tell it to play continuously and
- * looping.
- *
- * @param obj The thumb object.
- * @param s The animation setting.
- *
- * @see elm_thumb_file_set()
- *
- * @ingroup Thumb
- */
-EAPI void elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s);
-
-/**
- * Get the animation state for the thumb object.
- *
- * @param obj The thumb object.
- * @return getting The animation setting or @c ELM_THUMB_ANIMATION_LAST,
- * on errors.
- *
- * @see elm_thumb_animate_set()
- *
- * @ingroup Thumb
- */
-EAPI Elm_Thumb_Animation_Setting elm_thumb_animate_get(const Evas_Object *obj);
-
-/**
- * Get the ethumb_client handle so custom configuration can be made.
- *
- * @return Ethumb_Client instance or NULL.
- *
- * This must be called before the objects are created to be sure no object is
- * visible and no generation started.
- *
- * Example of usage:
- *
- * @code
- * #include <Elementary.h>
- * #ifndef ELM_LIB_QUICKLAUNCH
- * EAPI_MAIN int
- * elm_main(int argc, char **argv)
- * {
- * Ethumb_Client *client;
- *
- * elm_need_ethumb();
- *
- * // ... your code
- *
- * client = elm_thumb_ethumb_client_get();
- * if (!client)
- * {
- * ERR("could not get ethumb_client");
- * return 1;
- * }
- * ethumb_client_size_set(client, 100, 100);
- * ethumb_client_crop_align_set(client, 0.5, 0.5);
- * // ... your code
- *
- * // Create elm_thumb objects here
- *
- * elm_run();
- * elm_shutdown();
- * return 0;
- * }
- * #endif
- * ELM_MAIN()
- * @endcode
- *
- * @note There's only one client handle for Ethumb, so once a configuration
- * change is done to it, any other request for thumbnails (for any thumbnail
- * object) will use that configuration. Thus, this configuration is global.
- *
- * @ingroup Thumb
- */
-EAPI void *elm_thumb_ethumb_client_get(void);
-
-/**
- * Get the ethumb_client connection state.
- *
- * @return EINA_TRUE if the client is connected to the server or EINA_FALSE
- * otherwise.
- */
-EAPI Eina_Bool elm_thumb_ethumb_client_connected_get(void);
-
-/**
- * Make the thumbnail 'editable'.
- *
- * @param obj Thumb object.
- * @param edit Turn on or off editability. Default is @c EINA_FALSE.
- *
- * This means the thumbnail is a valid drag target for drag and drop, and can be
- * cut or pasted too.
- *
- * @see elm_thumb_editable_get()
- *
- * @ingroup Thumb
- */
-EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit);
-
-/**
- * Make the thumbnail 'editable'.
- *
- * @param obj Thumb object.
- * @return Editability.
- *
- * This means the thumbnail is a valid drag target for drag and drop, and can be
- * cut or pasted too.
- *
- * @see elm_thumb_editable_set()
- *
- * @ingroup Thumb
- */
-EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj);
-
+#include "elm_thumb_common.h"
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_thumb_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_thumb_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_thumb_common.h b/src/lib/elm_thumb_common.h
new file mode 100644
index 000000000..4718da7dc
--- /dev/null
+++ b/src/lib/elm_thumb_common.h
@@ -0,0 +1,74 @@
+/**
+ * @enum Elm_Thumb_Animation_Setting
+ * @typedef Elm_Thumb_Animation_Setting
+ *
+ * Used to set if a video thumbnail is animating or not.
+ *
+ * @ingroup Thumb
+ */
+typedef enum
+{
+ ELM_THUMB_ANIMATION_START = 0, /**< Play animation once */
+ ELM_THUMB_ANIMATION_LOOP, /**< Keep playing animation until stop is requested */
+ ELM_THUMB_ANIMATION_STOP, /**< Stop playing the animation */
+ ELM_THUMB_ANIMATION_LAST
+} Elm_Thumb_Animation_Setting;
+
+/**
+ * Get the ethumb_client handle so custom configuration can be made.
+ *
+ * @return Ethumb_Client instance or NULL.
+ *
+ * This must be called before the objects are created to be sure no object is
+ * visible and no generation started.
+ *
+ * Example of usage:
+ *
+ * @code
+ * #include <Elementary.h>
+ * #ifndef ELM_LIB_QUICKLAUNCH
+ * EAPI_MAIN int
+ * elm_main(int argc, char **argv)
+ * {
+ * Ethumb_Client *client;
+ *
+ * elm_need_ethumb();
+ *
+ * // ... your code
+ *
+ * client = elm_thumb_ethumb_client_get();
+ * if (!client)
+ * {
+ * ERR("could not get ethumb_client");
+ * return 1;
+ * }
+ * ethumb_client_size_set(client, 100, 100);
+ * ethumb_client_crop_align_set(client, 0.5, 0.5);
+ * // ... your code
+ *
+ * // Create elm_thumb objects here
+ *
+ * elm_run();
+ * elm_shutdown();
+ * return 0;
+ * }
+ * #endif
+ * ELM_MAIN()
+ * @endcode
+ *
+ * @note There's only one client handle for Ethumb, so once a configuration
+ * change is done to it, any other request for thumbnails (for any thumbnail
+ * object) will use that configuration. Thus, this configuration is global.
+ *
+ * @ingroup Thumb
+ */
+EAPI void *elm_thumb_ethumb_client_get(void);
+
+/**
+ * Get the ethumb_client connection state.
+ *
+ * @return EINA_TRUE if the client is connected to the server or EINA_FALSE
+ * otherwise.
+ */
+EAPI Eina_Bool elm_thumb_ethumb_client_connected_get(void);
+
diff --git a/src/lib/elm_thumb_eo.h b/src/lib/elm_thumb_eo.h
new file mode 100644
index 000000000..f80229127
--- /dev/null
+++ b/src/lib/elm_thumb_eo.h
@@ -0,0 +1,136 @@
+#define ELM_OBJ_THUMB_CLASS elm_obj_thumb_class_get()
+
+const Eo_Class *elm_obj_thumb_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_THUMB_BASE_ID;
+
+enum
+{
+ ELM_OBJ_THUMB_SUB_ID_RELOAD,
+ ELM_OBJ_THUMB_SUB_ID_FILE_SET,
+ ELM_OBJ_THUMB_SUB_ID_FILE_GET,
+ ELM_OBJ_THUMB_SUB_ID_PATH_GET,
+ ELM_OBJ_THUMB_SUB_ID_ANIMATE_SET,
+ ELM_OBJ_THUMB_SUB_ID_ANIMATE_GET,
+ ELM_OBJ_THUMB_SUB_ID_EDITABLE_SET,
+ ELM_OBJ_THUMB_SUB_ID_EDITABLE_GET,
+ ELM_OBJ_THUMB_SUB_ID_LAST
+};
+
+#define ELM_OBJ_THUMB_ID(sub_id) (ELM_OBJ_THUMB_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_thumb_reload
+ * @since 1.8
+ *
+ * Reload thumbnail if it was generated before.
+ *
+ *
+ * @see elm_thumb_reload
+ *
+ * @ingroup Thumb
+ */
+#define elm_obj_thumb_reload() ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_RELOAD)
+
+/**
+ * @def elm_obj_thumb_file_set
+ * @since 1.8
+ *
+ * Set the file that will be used as thumbnail source.
+ *
+ * @param[in] file
+ * @param[in] key
+ *
+ * @see elm_thumb_file_set
+ *
+ * @ingroup Thumb
+ */
+#define elm_obj_thumb_file_set(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(const char *, key)
+
+/**
+ * @def elm_obj_thumb_file_get
+ * @since 1.8
+ *
+ * Get the image or video path and key used to generate the thumbnail.
+ *
+ * @param[out] file
+ * @param[out] key
+ *
+ * @see elm_thumb_file_get
+ *
+ * @ingroup Thumb
+ */
+#define elm_obj_thumb_file_get(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key)
+
+/**
+ * @def elm_obj_thumb_path_get
+ * @since 1.8
+ *
+ * Get the path and key to the image or video thumbnail generated by ethumb.
+ *
+ * @param[out] file
+ * @param[out] key
+ *
+ * @see elm_thumb_path_get
+ *
+ * @ingroup Thumb
+ */
+#define elm_obj_thumb_path_get(file, key) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_PATH_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key)
+
+/**
+ * @def elm_obj_thumb_animate_set
+ * @since 1.8
+ *
+ * Set the animation state for the thumb object. If its content is an animated
+ *
+ * @param[in] setting
+ *
+ * @see elm_thumb_animate_set
+ *
+ * @ingroup Thumb
+ */
+#define elm_obj_thumb_animate_set(setting) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_ANIMATE_SET), EO_TYPECHECK(Elm_Thumb_Animation_Setting, setting)
+
+/**
+ * @def elm_obj_thumb_animate_get
+ * @since 1.8
+ *
+ * Get the animation state for the thumb object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_thumb_animate_get
+ *
+ * @ingroup Thumb
+ */
+#define elm_obj_thumb_animate_get(ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_ANIMATE_GET), EO_TYPECHECK(Elm_Thumb_Animation_Setting *, ret)
+
+/**
+ * @def elm_obj_thumb_editable_set
+ * @since 1.8
+ *
+ * Make the thumbnail 'editable'.
+ *
+ * @param[in] edit
+ * @param[out] ret
+ *
+ * @see elm_thumb_editable_set
+ *
+ * @ingroup Thumb
+ */
+#define elm_obj_thumb_editable_set(edit, ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_EDITABLE_SET), EO_TYPECHECK(Eina_Bool, edit), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_thumb_editable_get
+ * @since 1.8
+ *
+ * Make the thumbnail 'editable'.
+ *
+ * @param[out] ret
+ *
+ * @see elm_thumb_editable_get
+ *
+ * @ingroup Thumb
+ */
+#define elm_obj_thumb_editable_get(ret) ELM_OBJ_THUMB_ID(ELM_OBJ_THUMB_SUB_ID_EDITABLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_thumb_legacy.h b/src/lib/elm_thumb_legacy.h
new file mode 100644
index 000000000..c7963bcfe
--- /dev/null
+++ b/src/lib/elm_thumb_legacy.h
@@ -0,0 +1,137 @@
+/**
+ * Add a new thumb object to the parent.
+ *
+ * @param parent The parent object.
+ * @return The new object or NULL if it cannot be created.
+ *
+ * @see elm_thumb_file_set()
+ * @see elm_thumb_ethumb_client_get()
+ *
+ * @ingroup Thumb
+ */
+EAPI Evas_Object *elm_thumb_add(Evas_Object *parent);
+
+/**
+ * Reload thumbnail if it was generated before.
+ *
+ * @param obj The thumb object to reload
+ *
+ * This is useful if the ethumb client configuration changed, like its
+ * size, aspect or any other property one set in the handle returned
+ * by elm_thumb_ethumb_client_get().
+ *
+ * If the options didn't change, the thumbnail won't be generated again, but
+ * the old one will still be used.
+ *
+ * @see elm_thumb_file_set()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_reload(Evas_Object *obj);
+
+/**
+ * Set the file that will be used as thumbnail @b source.
+ *
+ * @param obj The thumb object.
+ * @param file The path to file that will be used as thumbnail source.
+ * @param key The key used in case of an EET file.
+ *
+ * The file can be an image or a video (in that case, acceptable
+ * extensions are: avi, mp4, ogv, mov, mpg and wmv). To start the
+ * video animation, use the function elm_thumb_animate().
+ *
+ * @see elm_thumb_file_get()
+ * @see elm_thumb_reload()
+ * @see elm_thumb_animate()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_file_set(Evas_Object *obj, const char *file, const char *key);
+
+/**
+ * Get the image or video path and key used to generate the thumbnail.
+ *
+ * @param obj The thumb object.
+ * @param file Pointer to filename.
+ * @param key Pointer to key.
+ *
+ * @see elm_thumb_file_set()
+ * @see elm_thumb_path_get()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key);
+
+/**
+ * Get the path and key to the image or video thumbnail generated by ethumb.
+ *
+ * One just needs to make sure that the thumbnail was generated before getting
+ * its path; otherwise, the path will be NULL. One way to do that is by asking
+ * for the path when/after the "generate,stop" smart callback is called.
+ *
+ * @param obj The thumb object.
+ * @param file Pointer to thumb path.
+ * @param key Pointer to thumb key.
+ *
+ * @see elm_thumb_file_get()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key);
+
+/**
+ * Set the animation state for the thumb object. If its content is an animated
+ * video, you may start/stop the animation or tell it to play continuously and
+ * looping.
+ *
+ * @param obj The thumb object.
+ * @param s The animation setting.
+ *
+ * @see elm_thumb_file_set()
+ *
+ * @ingroup Thumb
+ */
+EAPI void elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s);
+
+/**
+ * Get the animation state for the thumb object.
+ *
+ * @param obj The thumb object.
+ * @return getting The animation setting or @c ELM_THUMB_ANIMATION_LAST,
+ * on errors.
+ *
+ * @see elm_thumb_animate_set()
+ *
+ * @ingroup Thumb
+ */
+EAPI Elm_Thumb_Animation_Setting elm_thumb_animate_get(const Evas_Object *obj);
+
+/**
+ * Make the thumbnail 'editable'.
+ *
+ * @param obj Thumb object.
+ * @param edit Turn on or off editability. Default is @c EINA_FALSE.
+ *
+ * This means the thumbnail is a valid drag target for drag and drop, and can be
+ * cut or pasted too.
+ *
+ * @see elm_thumb_editable_get()
+ *
+ * @ingroup Thumb
+ */
+EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit);
+
+/**
+ * Make the thumbnail 'editable'.
+ *
+ * @param obj Thumb object.
+ * @return Editability.
+ *
+ * This means the thumbnail is a valid drag target for drag and drop, and can be
+ * cut or pasted too.
+ *
+ * @see elm_thumb_editable_set()
+ *
+ * @ingroup Thumb
+ */
+EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj);
diff --git a/src/lib/elm_video.h b/src/lib/elm_video.h
index 4d68022df..e65c804e6 100644
--- a/src/lib/elm_video.h
+++ b/src/lib/elm_video.h
@@ -48,484 +48,13 @@
/**
* ELM_OBJ_PLAYER_CLASS
*/
-#define ELM_OBJ_PLAYER_CLASS elm_obj_player_class_get()
-const Eo_Class *elm_obj_player_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_PLAYER_BASE_ID;
-
-enum
-{
- ELM_OBJ_PLAYER_SUB_ID_LAST
-};
-
-#define ELM_OBJ_PLAYER_ID(sub_id) (ELM_OBJ_PLAYER_BASE_ID + sub_id)
-
-/**
- * ELM_OBJ_VIDEO_CLASS
- */
-#define ELM_OBJ_VIDEO_CLASS elm_obj_video_class_get()
-
-const Eo_Class *elm_obj_video_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_VIDEO_BASE_ID;
-
-enum
-{
- ELM_OBJ_VIDEO_SUB_ID_FILE_SET,
- ELM_OBJ_VIDEO_SUB_ID_EMOTION_GET,
- ELM_OBJ_VIDEO_SUB_ID_PLAY,
- ELM_OBJ_VIDEO_SUB_ID_PAUSE,
- ELM_OBJ_VIDEO_SUB_ID_STOP,
- ELM_OBJ_VIDEO_SUB_ID_IS_PLAYING_GET,
- ELM_OBJ_VIDEO_SUB_ID_IS_SEEKABLE_GET,
- ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_GET,
- ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_SET,
- ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_GET,
- ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_SET,
- ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_GET,
- ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_SET,
- ELM_OBJ_VIDEO_SUB_ID_PLAY_LENGTH_GET,
- ELM_OBJ_VIDEO_SUB_ID_TITLE_GET,
- ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_SET,
- ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_GET,
- ELM_OBJ_VIDEO_SUB_ID_LAST
-};
-
-#define ELM_OBJ_VIDEO_ID(sub_id) (ELM_OBJ_VIDEO_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_video_file_set
- * @since 1.8
- *
- * @brief Define the file or URI that will be the video source.
- *
- * @param[in] filename
- * @param[out] ret
- *
- * @see elm_video_file_set
- */
-#define elm_obj_video_file_set(filename, ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, filename), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_video_emotion_get
- * @since 1.8
- *
- * @brief Get the underlying Emotion object.
- *
- * @param[out] ret
- *
- * @see elm_video_emotion_get
- */
-#define elm_obj_video_emotion_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_EMOTION_GET), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def elm_obj_video_play
- * @since 1.8
- *
- * @brief Start to play the video
- *
- *
- * @see elm_video_play
- */
-#define elm_obj_video_play() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY)
-
-/**
- * @def elm_obj_video_pause
- * @since 1.8
- *
- * @brief Pause the video
- *
- *
- * @see elm_video_pause
- */
-#define elm_obj_video_pause() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PAUSE)
-
-/**
- * @def elm_obj_video_stop
- * @since 1.8
- *
- * @brief Stop the video
- *
- *
- * @see elm_video_stop
- */
-#define elm_obj_video_stop() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_STOP)
-
-/**
- * @def elm_obj_video_is_playing_get
- * @since 1.8
- *
- * @brief Is the video actually playing.
- *
- * @param[out] ret
- *
- * @see elm_video_is_playing_get
- */
-#define elm_obj_video_is_playing_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_IS_PLAYING_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_video_is_seekable_get
- * @since 1.8
- *
- * @brief Is it possible to seek inside the video.
- *
- * @param[out] ret
- *
- * @see elm_video_is_seekable_get
- */
-#define elm_obj_video_is_seekable_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_IS_SEEKABLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_video_audio_mute_get
- * @since 1.8
- *
- * @brief Is the audio muted.
- *
- * @param[out] ret
- *
- * @see elm_video_audio_mute_get
- */
-#define elm_obj_video_audio_mute_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_video_audio_mute_set
- * @since 1.8
- *
- * @brief Change the mute state of the Elm_Video object.
- *
- * @param[in] mute
- *
- * @see elm_video_audio_mute_set
- */
-#define elm_obj_video_audio_mute_set(mute) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_SET), EO_TYPECHECK(Eina_Bool, mute)
-
-/**
- * @def elm_obj_video_audio_level_get
- * @since 1.8
- *
- * @brief Get the audio level of the current video.
- *
- * @param[out] ret
- *
- * @see elm_video_audio_level_get
- */
-#define elm_obj_video_audio_level_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_video_audio_level_set
- * @since 1.8
- *
- * @brief Set the audio level of an Elm_Video object.
- *
- * @param[in] volume
- *
- * @see elm_video_audio_level_set
- */
-#define elm_obj_video_audio_level_set(volume) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_SET), EO_TYPECHECK(double, volume)
-
-/**
- * @def elm_obj_video_play_position_get
- * @since 1.8
- *
- * @brief Get the current position (in seconds) being played in the
- * Elm_Video object.
- *
- * @param[out] ret
- *
- * @see elm_video_play_position_get
- */
-#define elm_obj_video_play_position_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_video_play_position_set
- * @since 1.8
- *
- * @brief Set the current position (in seconds) to be played in the
- * Elm_Video object.
- *
- * @param[in] position
- *
- * @see elm_video_play_position_set
- */
-#define elm_obj_video_play_position_set(position) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_SET), EO_TYPECHECK(double, position)
-
-/**
- * @def elm_obj_video_play_length_get
- * @since 1.8
- *
- * @brief Get the total playing time (in seconds) of the Elm_Video object.
- *
- * @param[out] ret
- *
- * @see elm_video_play_length_get
- */
-#define elm_obj_video_play_length_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_LENGTH_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_video_title_get
- * @since 1.8
- *
- * @brief Get the title (for instance DVD title) from this emotion object.
- *
- * @param[out] ret
- *
- * @see elm_video_title_get
- */
-#define elm_obj_video_title_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_TITLE_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_video_remember_position_set
- * @since 1.8
- *
- * @brief Set whether the object can remember the last played position.
- *
- * @param[in] remember
- *
- * @see elm_video_remember_position_set
- */
-#define elm_obj_video_remember_position_set(remember) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_SET), EO_TYPECHECK(Eina_Bool, remember)
-
-/**
- * @def elm_obj_video_remember_position_get
- * @since 1.8
- *
- * @brief Set whether the object can remember the last played position.
- *
- * @param[out] ret
- *
- * @see elm_video_remember_position_get
- */
-#define elm_obj_video_remember_position_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @brief Add a new Elm_Player object to the given parent Elementary (container) object.
- *
- * @param parent The parent object
- * @return a new player widget handle or @c NULL, on errors.
- *
- * This function inserts a new player widget on the canvas.
- *
- * @see elm_object_part_content_set()
- *
- * @ingroup Video
- */
-EAPI Evas_Object *elm_player_add(Evas_Object *parent);
-
-/**
- * @brief Add a new Elm_Video object to the given parent Elementary (container) object.
- *
- * @param parent The parent object
- * @return a new video widget handle or @c NULL, on errors.
- *
- * This function inserts a new video widget on the canvas.
- *
- * @see elm_video_file_set()
- *
- * @ingroup Video
- */
-EAPI Evas_Object *elm_video_add(Evas_Object *parent);
-
-/**
- * @brief Define the file or URI that will be the video source.
- *
- * @param video The video object to define the file or URI for the video
- * of the Elm_Video object.
- *
- * @param filename The file or URI to target.
- * Local files can be specified using file:// or by using full file paths.
- * URI could be remote source of video, like http:// or local source like
- * WebCam (v4l2://). (You can use Emotion API to request and list
- * the available Webcam on your system).
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- *
- * This function will explicitly define a file or URI as a source
- * for the video of the Elm_Video object.
- *
- * @see elm_video_add()
- * @see elm_player_add()
- *
- * @ingroup Video
- */
-EAPI Eina_Bool elm_video_file_set(Evas_Object *video, const char *filename);
-
-/**
- * @brief Get the underlying Emotion object.
- *
- * @param video The video object to proceed the request on.
- * @return the underlying Emotion object.
- *
- * @ingroup Video
- */
-EAPI Evas_Object *elm_video_emotion_get(const Evas_Object *video);
-
-/**
- * @brief Start to play the video
- *
- * @param video The video object to proceed the request on.
- *
- * Start to play the video and cancel all suspend state.
- *
- * @ingroup Video
- */
-EAPI void elm_video_play(Evas_Object *video);
-
-/**
- * @brief Pause the video
- *
- * @param video The video object to proceed the request on.
- *
- * Pause the video and start a timer to trigger suspend mode.
- *
- * @ingroup Video
- */
-EAPI void elm_video_pause(Evas_Object *video);
-
-/**
- * @brief Stop the video
- *
- * @param video The video object to proceed the request on.
- *
- * Stop the video and put the emotion in deep sleep mode.
- *
- * @ingroup Video
- */
-EAPI void elm_video_stop(Evas_Object *video);
-
-/**
- * @brief Is the video actually playing.
- *
- * @param video The video object to proceed the request on.
- * @return @c EINA_TRUE if the video is actually playing.
- *
- * You should consider watching event on the object instead of polling
- * the object state.
- *
- * @ingroup Video
- */
-EAPI Eina_Bool elm_video_is_playing_get(const Evas_Object *video);
-
-/**
- * @brief Is it possible to seek inside the video.
- *
- * @param video The video object to proceed the request on.
- * @return @c EINA_TRUE if is possible to seek inside the video.
- *
- * @ingroup Video
- */
-EAPI Eina_Bool elm_video_is_seekable_get(const Evas_Object *video);
-
-/**
- * @brief Is the audio muted.
- *
- * @param video The video object to proceed the request on.
- * @return @c EINA_TRUE if the audio is muted.
- *
- * @ingroup Video
- */
-EAPI Eina_Bool elm_video_audio_mute_get(const Evas_Object *video);
-
-/**
- * @brief Change the mute state of the Elm_Video object.
- *
- * @param video The video object to proceed the request on.
- * @param mute The new mute state.
- *
- * @ingroup Video
- */
-EAPI void elm_video_audio_mute_set(Evas_Object *video, Eina_Bool mute);
-
-/**
- * @brief Get the audio level of the current video.
- *
- * @param video The video object to proceed the request on.
- * @return the current audio level.
- *
- * @ingroup Video
- */
-EAPI double elm_video_audio_level_get(const Evas_Object *video);
-
-/**
- * @brief Set the audio level of an Elm_Video object.
- *
- * @param video The video object to proceed the request on.
- * @param volume The new audio volume.
- *
- * @ingroup Video
- */
-EAPI void elm_video_audio_level_set(Evas_Object *video, double volume);
-
-/**
- * @brief Get the current position (in seconds) being played in the
- * Elm_Video object.
- *
- * @param video The video object.
- * @return The time (in seconds) since the beginning of the media file.
- *
- * @ingroup Video
- */
-EAPI double elm_video_play_position_get(const Evas_Object *video);
-
-/**
- * @brief Set the current position (in seconds) to be played in the
- * Elm_Video object.
- *
- * @param video The video object.
- * @param position The time (in seconds) since the beginning of the media file.
- *
- * @ingroup Video
- */
-EAPI void elm_video_play_position_set(Evas_Object *video, double position);
-/**
- * @brief Get the total playing time (in seconds) of the Elm_Video object.
- *
- * @param video The video object.
- * @return The total duration (in seconds) of the media file.
- *
- * @ingroup Video
- */
-EAPI double elm_video_play_length_get(const Evas_Object *video);
-
-/**
- * @brief Set whether the object can remember the last played position.
- *
- * @param video The video object.
- * @param remember the last played position of the Elm_Video object.
- *
- * @note This API only serves as indication. System support is required.
- *
- * @ingroup Video
- */
-EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember);
-
-/**
- * @brief Set whether the object can remember the last played position.
- *
- * @param video The video object.
- * @return whether the object remembers the last played position (@c EINA_TRUE)
- * or not.
- *
- * @note This API only serves as indication. System support is required.
- *
- * @ingroup Video
- */
-EAPI Eina_Bool elm_video_remember_position_get(const Evas_Object *video);
-
-/**
- * @brief Get the title (for instance DVD title) from this emotion object.
- *
- * @param video The Elm_Video object.
- * @return A string containing the title.
- *
- * This function is only useful when playing a DVD.
- *
- * @note Don't change or free the string returned by this function.
- *
- * @ingroup Video
- */
-EAPI const char *elm_video_title_get(const Evas_Object *video);
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_video_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_video_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_video_eo.h b/src/lib/elm_video_eo.h
new file mode 100644
index 000000000..6baa254b6
--- /dev/null
+++ b/src/lib/elm_video_eo.h
@@ -0,0 +1,284 @@
+#define ELM_OBJ_PLAYER_CLASS elm_obj_player_class_get()
+
+const Eo_Class *elm_obj_player_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_PLAYER_BASE_ID;
+
+enum
+{
+ ELM_OBJ_PLAYER_SUB_ID_LAST
+};
+
+#define ELM_OBJ_PLAYER_ID(sub_id) (ELM_OBJ_PLAYER_BASE_ID + sub_id)
+
+/**
+ * ELM_OBJ_VIDEO_CLASS
+ */
+#define ELM_OBJ_VIDEO_CLASS elm_obj_video_class_get()
+
+const Eo_Class *elm_obj_video_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_VIDEO_BASE_ID;
+
+enum
+{
+ ELM_OBJ_VIDEO_SUB_ID_FILE_SET,
+ ELM_OBJ_VIDEO_SUB_ID_EMOTION_GET,
+ ELM_OBJ_VIDEO_SUB_ID_PLAY,
+ ELM_OBJ_VIDEO_SUB_ID_PAUSE,
+ ELM_OBJ_VIDEO_SUB_ID_STOP,
+ ELM_OBJ_VIDEO_SUB_ID_IS_PLAYING_GET,
+ ELM_OBJ_VIDEO_SUB_ID_IS_SEEKABLE_GET,
+ ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_GET,
+ ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_SET,
+ ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_GET,
+ ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_SET,
+ ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_GET,
+ ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_SET,
+ ELM_OBJ_VIDEO_SUB_ID_PLAY_LENGTH_GET,
+ ELM_OBJ_VIDEO_SUB_ID_TITLE_GET,
+ ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_SET,
+ ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_GET,
+ ELM_OBJ_VIDEO_SUB_ID_LAST
+};
+
+#define ELM_OBJ_VIDEO_ID(sub_id) (ELM_OBJ_VIDEO_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_video_file_set
+ * @since 1.8
+ *
+ * @brief Define the file or URI that will be the video source.
+ *
+ * @param[in] filename
+ * @param[out] ret
+ *
+ * @see elm_video_file_set
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_file_set(filename, ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, filename), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_video_emotion_get
+ * @since 1.8
+ *
+ * @brief Get the underlying Emotion object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_emotion_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_emotion_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_EMOTION_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def elm_obj_video_play
+ * @since 1.8
+ *
+ * @brief Start to play the video
+ *
+ *
+ * @see elm_video_play
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_play() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY)
+
+/**
+ * @def elm_obj_video_pause
+ * @since 1.8
+ *
+ * @brief Pause the video
+ *
+ *
+ * @see elm_video_pause
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_pause() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PAUSE)
+
+/**
+ * @def elm_obj_video_stop
+ * @since 1.8
+ *
+ * @brief Stop the video
+ *
+ *
+ * @see elm_video_stop
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_stop() ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_STOP)
+
+/**
+ * @def elm_obj_video_is_playing_get
+ * @since 1.8
+ *
+ * @brief Is the video actually playing.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_is_playing_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_is_playing_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_IS_PLAYING_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_video_is_seekable_get
+ * @since 1.8
+ *
+ * @brief Is it possible to seek inside the video.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_is_seekable_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_is_seekable_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_IS_SEEKABLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_video_audio_mute_get
+ * @since 1.8
+ *
+ * @brief Is the audio muted.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_audio_mute_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_audio_mute_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_video_audio_mute_set
+ * @since 1.8
+ *
+ * @brief Change the mute state of the Elm_Video object.
+ *
+ * @param[in] mute
+ *
+ * @see elm_video_audio_mute_set
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_audio_mute_set(mute) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_MUTE_SET), EO_TYPECHECK(Eina_Bool, mute)
+
+/**
+ * @def elm_obj_video_audio_level_get
+ * @since 1.8
+ *
+ * @brief Get the audio level of the current video.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_audio_level_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_audio_level_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_video_audio_level_set
+ * @since 1.8
+ *
+ * @brief Set the audio level of an Elm_Video object.
+ *
+ * @param[in] volume
+ *
+ * @see elm_video_audio_level_set
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_audio_level_set(volume) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_AUDIO_LEVEL_SET), EO_TYPECHECK(double, volume)
+
+/**
+ * @def elm_obj_video_play_position_get
+ * @since 1.8
+ *
+ * @brief Get the current position (in seconds) being played in the
+ * Elm_Video object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_play_position_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_play_position_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_video_play_position_set
+ * @since 1.8
+ *
+ * @brief Set the current position (in seconds) to be played in the
+ * Elm_Video object.
+ *
+ * @param[in] position
+ *
+ * @see elm_video_play_position_set
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_play_position_set(position) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_POSITION_SET), EO_TYPECHECK(double, position)
+
+/**
+ * @def elm_obj_video_play_length_get
+ * @since 1.8
+ *
+ * @brief Get the total playing time (in seconds) of the Elm_Video object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_play_length_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_play_length_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_PLAY_LENGTH_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_video_title_get
+ * @since 1.8
+ *
+ * @brief Get the title (for instance DVD title) from this emotion object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_title_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_title_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_TITLE_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_video_remember_position_set
+ * @since 1.8
+ *
+ * @brief Set whether the object can remember the last played position.
+ *
+ * @param[in] remember
+ *
+ * @see elm_video_remember_position_set
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_remember_position_set(remember) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_SET), EO_TYPECHECK(Eina_Bool, remember)
+
+/**
+ * @def elm_obj_video_remember_position_get
+ * @since 1.8
+ *
+ * @brief Set whether the object can remember the last played position.
+ *
+ * @param[out] ret
+ *
+ * @see elm_video_remember_position_get
+ *
+ * @ingroup Video
+ */
+#define elm_obj_video_remember_position_get(ret) ELM_OBJ_VIDEO_ID(ELM_OBJ_VIDEO_SUB_ID_REMEMBER_POSITION_GET), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_video_legacy.h b/src/lib/elm_video_legacy.h
new file mode 100644
index 000000000..ddd30c6e9
--- /dev/null
+++ b/src/lib/elm_video_legacy.h
@@ -0,0 +1,228 @@
+/**
+ * @brief Add a new Elm_Player object to the given parent Elementary (container) object.
+ *
+ * @param parent The parent object
+ * @return a new player widget handle or @c NULL, on errors.
+ *
+ * This function inserts a new player widget on the canvas.
+ *
+ * @see elm_object_part_content_set()
+ *
+ * @ingroup Video
+ */
+EAPI Evas_Object *elm_player_add(Evas_Object *parent);
+
+/**
+ * @brief Add a new Elm_Video object to the given parent Elementary (container) object.
+ *
+ * @param parent The parent object
+ * @return a new video widget handle or @c NULL, on errors.
+ *
+ * This function inserts a new video widget on the canvas.
+ *
+ * @see elm_video_file_set()
+ *
+ * @ingroup Video
+ */
+EAPI Evas_Object *elm_video_add(Evas_Object *parent);
+
+/**
+ * @brief Define the file or URI that will be the video source.
+ *
+ * @param video The video object to define the file or URI for the video
+ * of the Elm_Video object.
+ *
+ * @param filename The file or URI to target.
+ * Local files can be specified using file:// or by using full file paths.
+ * URI could be remote source of video, like http:// or local source like
+ * WebCam (v4l2://). (You can use Emotion API to request and list
+ * the available Webcam on your system).
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * This function will explicitly define a file or URI as a source
+ * for the video of the Elm_Video object.
+ *
+ * @see elm_video_add()
+ * @see elm_player_add()
+ *
+ * @ingroup Video
+ */
+EAPI Eina_Bool elm_video_file_set(Evas_Object *video, const char *filename);
+
+/**
+ * @brief Get the underlying Emotion object.
+ *
+ * @param video The video object to proceed the request on.
+ * @return the underlying Emotion object.
+ *
+ * @ingroup Video
+ */
+EAPI Evas_Object *elm_video_emotion_get(const Evas_Object *video);
+
+/**
+ * @brief Start to play the video
+ *
+ * @param video The video object to proceed the request on.
+ *
+ * Start to play the video and cancel all suspend state.
+ *
+ * @ingroup Video
+ */
+EAPI void elm_video_play(Evas_Object *video);
+
+/**
+ * @brief Pause the video
+ *
+ * @param video The video object to proceed the request on.
+ *
+ * Pause the video and start a timer to trigger suspend mode.
+ *
+ * @ingroup Video
+ */
+EAPI void elm_video_pause(Evas_Object *video);
+
+/**
+ * @brief Stop the video
+ *
+ * @param video The video object to proceed the request on.
+ *
+ * Stop the video and put the emotion in deep sleep mode.
+ *
+ * @ingroup Video
+ */
+EAPI void elm_video_stop(Evas_Object *video);
+
+/**
+ * @brief Is the video actually playing.
+ *
+ * @param video The video object to proceed the request on.
+ * @return @c EINA_TRUE if the video is actually playing.
+ *
+ * You should consider watching event on the object instead of polling
+ * the object state.
+ *
+ * @ingroup Video
+ */
+EAPI Eina_Bool elm_video_is_playing_get(const Evas_Object *video);
+
+/**
+ * @brief Is it possible to seek inside the video.
+ *
+ * @param video The video object to proceed the request on.
+ * @return @c EINA_TRUE if is possible to seek inside the video.
+ *
+ * @ingroup Video
+ */
+EAPI Eina_Bool elm_video_is_seekable_get(const Evas_Object *video);
+
+/**
+ * @brief Is the audio muted.
+ *
+ * @param video The video object to proceed the request on.
+ * @return @c EINA_TRUE if the audio is muted.
+ *
+ * @ingroup Video
+ */
+EAPI Eina_Bool elm_video_audio_mute_get(const Evas_Object *video);
+
+/**
+ * @brief Change the mute state of the Elm_Video object.
+ *
+ * @param video The video object to proceed the request on.
+ * @param mute The new mute state.
+ *
+ * @ingroup Video
+ */
+EAPI void elm_video_audio_mute_set(Evas_Object *video, Eina_Bool mute);
+
+/**
+ * @brief Get the audio level of the current video.
+ *
+ * @param video The video object to proceed the request on.
+ * @return the current audio level.
+ *
+ * @ingroup Video
+ */
+EAPI double elm_video_audio_level_get(const Evas_Object *video);
+
+/**
+ * @brief Set the audio level of an Elm_Video object.
+ *
+ * @param video The video object to proceed the request on.
+ * @param volume The new audio volume.
+ *
+ * @ingroup Video
+ */
+EAPI void elm_video_audio_level_set(Evas_Object *video, double volume);
+
+/**
+ * @brief Get the current position (in seconds) being played in the
+ * Elm_Video object.
+ *
+ * @param video The video object.
+ * @return The time (in seconds) since the beginning of the media file.
+ *
+ * @ingroup Video
+ */
+EAPI double elm_video_play_position_get(const Evas_Object *video);
+
+/**
+ * @brief Set the current position (in seconds) to be played in the
+ * Elm_Video object.
+ *
+ * @param video The video object.
+ * @param position The time (in seconds) since the beginning of the media file.
+ *
+ * @ingroup Video
+ */
+EAPI void elm_video_play_position_set(Evas_Object *video, double position);
+/**
+ * @brief Get the total playing time (in seconds) of the Elm_Video object.
+ *
+ * @param video The video object.
+ * @return The total duration (in seconds) of the media file.
+ *
+ * @ingroup Video
+ */
+EAPI double elm_video_play_length_get(const Evas_Object *video);
+
+/**
+ * @brief Set whether the object can remember the last played position.
+ *
+ * @param video The video object.
+ * @param remember the last played position of the Elm_Video object.
+ *
+ * @note This API only serves as indication. System support is required.
+ *
+ * @ingroup Video
+ */
+EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember);
+
+/**
+ * @brief Set whether the object can remember the last played position.
+ *
+ * @param video The video object.
+ * @return whether the object remembers the last played position (@c EINA_TRUE)
+ * or not.
+ *
+ * @note This API only serves as indication. System support is required.
+ *
+ * @ingroup Video
+ */
+EAPI Eina_Bool elm_video_remember_position_get(const Evas_Object *video);
+
+/**
+ * @brief Get the title (for instance DVD title) from this emotion object.
+ *
+ * @param video The Elm_Video object.
+ * @return A string containing the title.
+ *
+ * This function is only useful when playing a DVD.
+ *
+ * @note Don't change or free the string returned by this function.
+ *
+ * @ingroup Video
+ */
+EAPI const char *elm_video_title_get(const Evas_Object *video);
+
diff --git a/src/lib/elm_web.h b/src/lib/elm_web.h
index c3eca551a..daa484d96 100644
--- a/src/lib/elm_web.h
+++ b/src/lib/elm_web.h
@@ -84,1590 +84,18 @@
* - @ref web_example_02
*/
-#define ELM_OBJ_WEB_CLASS elm_obj_web_class_get()
-
-const Eo_Class *elm_obj_web_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op ELM_OBJ_WEB_BASE_ID;
-
-enum
-{
- ELM_OBJ_WEB_SUB_ID_WEBKIT_VIEW_GET,
- ELM_OBJ_WEB_SUB_ID_WINDOW_CREATE_HOOK_SET,
- ELM_OBJ_WEB_SUB_ID_DIALOG_ALERT_HOOK_SET,
- ELM_OBJ_WEB_SUB_ID_DIALOG_CONFIRM_HOOK_SET,
- ELM_OBJ_WEB_SUB_ID_DIALOG_PROMPT_HOOK_SET,
- ELM_OBJ_WEB_SUB_ID_DIALOG_FILE_SELECTOR_HOOK_SET,
- ELM_OBJ_WEB_SUB_ID_CONSOLE_MESSAGE_HOOK_SET,
- ELM_OBJ_WEB_SUB_ID_USERAGENT_SET,
- ELM_OBJ_WEB_SUB_ID_USERAGENT_GET,
- ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_GET,
- ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET,
- ELM_OBJ_WEB_SUB_ID_URI_SET,
- ELM_OBJ_WEB_SUB_ID_URI_GET,
- ELM_OBJ_WEB_SUB_ID_TITLE_GET,
- ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET,
- ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET,
- ELM_OBJ_WEB_SUB_ID_SELECTION_GET,
- ELM_OBJ_WEB_SUB_ID_POPUP_SELECTED_SET,
- ELM_OBJ_WEB_SUB_ID_POPUP_DESTROY,
- ELM_OBJ_WEB_SUB_ID_TEXT_SEARCH,
- ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_MARK,
- ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_UNMARK_ALL,
- ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_SET,
- ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_GET,
- ELM_OBJ_WEB_SUB_ID_LOAD_PROGRESS_GET,
- ELM_OBJ_WEB_SUB_ID_STOP,
- ELM_OBJ_WEB_SUB_ID_RELOAD,
- ELM_OBJ_WEB_SUB_ID_RELOAD_FULL,
- ELM_OBJ_WEB_SUB_ID_BACK,
- ELM_OBJ_WEB_SUB_ID_FORWARD,
- ELM_OBJ_WEB_SUB_ID_NAVIGATE,
- ELM_OBJ_WEB_SUB_ID_BACK_POSSIBLE_GET,
- ELM_OBJ_WEB_SUB_ID_FORWARD_POSSIBLE_GET,
- ELM_OBJ_WEB_SUB_ID_NAVIGATE_POSSIBLE_GET,
- ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_GET,
- ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_SET,
- ELM_OBJ_WEB_SUB_ID_ZOOM_SET,
- ELM_OBJ_WEB_SUB_ID_ZOOM_GET,
- ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_SET,
- ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_GET,
- ELM_OBJ_WEB_SUB_ID_REGION_SHOW,
- ELM_OBJ_WEB_SUB_ID_REGION_BRING_IN,
- ELM_OBJ_WEB_SUB_ID_INWIN_MODE_SET,
- ELM_OBJ_WEB_SUB_ID_INWIN_MODE_GET,
- ELM_OBJ_WEB_SUB_ID_LAST
-};
-
-#define ELM_OBJ_WEB_ID(sub_id) (ELM_OBJ_WEB_BASE_ID + sub_id)
-
-
-/**
- * @def elm_obj_web_webkit_view_get
- * @since 1.8
- *
- * Get internal ewk_view object from web object.
- *
- * @param[out] ret
- *
- * @see elm_web_webkit_view_get
- */
-#define elm_obj_web_webkit_view_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_WEBKIT_VIEW_GET), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def elm_obj_web_window_create_hook_set
- * @since 1.8
- *
- * Sets the function to call when a new window is requested
- *
- * @param[in] func
- * @param[in] data
- *
- * @see elm_web_window_create_hook_set
- */
-#define elm_obj_web_window_create_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_WINDOW_CREATE_HOOK_SET), EO_TYPECHECK(Elm_Web_Window_Open, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def elm_obj_web_dialog_alert_hook_set
- * @since 1.8
- *
- * Sets the function to call when an alert dialog
- *
- * @param[in] func
- * @param[in] data
- *
- * @see elm_web_dialog_alert_hook_set
- */
-#define elm_obj_web_dialog_alert_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_ALERT_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Alert, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def elm_obj_web_dialog_confirm_hook_set
- * @since 1.8
- *
- * Sets the function to call when an confirm dialog
- *
- * @param[in] func
- * @param[in] data
- *
- * @see elm_web_dialog_confirm_hook_set
- */
-#define elm_obj_web_dialog_confirm_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_CONFIRM_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Confirm, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def elm_obj_web_dialog_prompt_hook_set
- * @since 1.8
- *
- * Sets the function to call when an prompt dialog
- *
- * @param[in] func
- * @param[in] data
- *
- * @see elm_web_dialog_prompt_hook_set
- */
-#define elm_obj_web_dialog_prompt_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_PROMPT_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Prompt, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def elm_obj_web_dialog_file_selector_hook_set
- * @since 1.8
- *
- * Sets the function to call when an file selector dialog
- *
- * @param[in] func
- * @param[in] data
- *
- * @see elm_web_dialog_file_selector_hook_set
- */
-#define elm_obj_web_dialog_file_selector_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_FILE_SELECTOR_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_File_Selector, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def elm_obj_web_console_message_hook_set
- * @since 1.8
- *
- * Sets the function to call when a console message is emitted from JS
- *
- * @param[in] func
- * @param[in] data
- *
- * @see elm_web_console_message_hook_set
- */
-#define elm_obj_web_console_message_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_CONSOLE_MESSAGE_HOOK_SET), EO_TYPECHECK(Elm_Web_Console_Message, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def elm_obj_web_useragent_set
- * @since 1.8
- *
- * Change useragent of a elm_web object
- *
- * @param[in] user_agent
- *
- * @see elm_web_useragent_set
- */
-#define elm_obj_web_useragent_set(user_agent) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_USERAGENT_SET), EO_TYPECHECK(const char *, user_agent)
-
-/**
- * @def elm_obj_web_useragent_get
- * @since 1.8
- *
- * Return current useragent of elm_web object
- *
- * @param[out] ret
- *
- * @see elm_web_useragent_get
- */
-#define elm_obj_web_useragent_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_USERAGENT_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_web_tab_propagate_get
- * @since 1.8
- *
- * Gets the status of the tab propagation
- *
- * @param[out] ret
- *
- * @see elm_web_tab_propagate_get
- */
-#define elm_obj_web_tab_propagate_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_tab_propagate_set
- * @since 1.8
- *
- * Sets whether to use tab propagation
- *
- * @param[in] propagate
- *
- * @see elm_web_tab_propagate_set
- */
-#define elm_obj_web_tab_propagate_set(propagate) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET), EO_TYPECHECK(Eina_Bool, propagate)
-
-/**
- * @def elm_obj_web_uri_set
- * @since 1.8
- *
- * Sets the URI for the web object
- *
- * @param[in] uri
- * @param[out] ret
- *
- * @see elm_web_uri_set
- */
-#define elm_obj_web_uri_set(uri, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URI_SET), EO_TYPECHECK(const char *, uri), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_uri_get
- * @since 1.8
- *
- * Gets the current URI for the object
- *
- * @param[out] ret
- *
- * @see elm_web_uri_get
- */
-#define elm_obj_web_uri_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URI_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_web_title_get
- * @since 1.8
- *
- * Gets the current title
- *
- * @param[out] ret
- *
- * @see elm_web_title_get
- */
-#define elm_obj_web_title_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TITLE_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_web_bg_color_set
- * @since 1.8
- *
- * Sets the background color to be used by the web object
- *
- * @param[in] r
- * @param[in] g
- * @param[in] b
- * @param[in] a
- *
- * @see elm_web_bg_color_set
- */
-#define elm_obj_web_bg_color_set(r, g, b, a) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
-
-/**
- * @def elm_obj_web_bg_color_get
- * @since 1.8
- *
- * Gets the background color to be used by the web object
- *
- * @param[out] r
- * @param[out] g
- * @param[out] b
- * @param[out] a
- *
- * @see elm_web_bg_color_get
- */
-#define elm_obj_web_bg_color_get(r, g, b, a) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
-
-/**
- * @def elm_obj_web_selection_get
- * @since 1.8
- *
- * Gets a copy of the currently selected text
- *
- * @param[out] ret
- *
- * @see elm_web_selection_get
- */
-#define elm_obj_web_selection_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_SELECTION_GET), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def elm_obj_web_popup_selected_set
- * @since 1.8
- *
- * Tells the web object which index in the currently open popup was selected
- *
- * @param[in] idx
- *
- * @see elm_web_popup_selected_set
- */
-#define elm_obj_web_popup_selected_set(idx) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_POPUP_SELECTED_SET), EO_TYPECHECK(int, idx)
-
-/**
- * @def elm_obj_web_popup_destroy
- * @since 1.8
- *
- * Dismisses an open dropdown popup
- *
- * @param[out] ret
- *
- * @see elm_web_popup_destroy
- */
-#define elm_obj_web_popup_destroy(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_POPUP_DESTROY), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_text_search
- * @since 1.8
- *
- * Searches the given string in a document.
- *
- * @param[in] string
- * @param[in] case_sensitive
- * @param[in] forward
- * @param[in] wrap
- * @param[out] ret
- *
- * @see elm_web_text_search
- */
-#define elm_obj_web_text_search(string, case_sensitive, forward, wrap, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_SEARCH), EO_TYPECHECK(const char *, string), EO_TYPECHECK(Eina_Bool, case_sensitive), EO_TYPECHECK(Eina_Bool, forward), EO_TYPECHECK(Eina_Bool, wrap), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_text_matches_mark
- * @since 1.8
- *
- * Marks matches of the given string in a document.
- *
- * @param[in] string
- * @param[in] case_sensitive
- * @param[in] highlight
- * @param[in] limit
- * @param[out] ret
- *
- * @see elm_web_text_matches_mark
- */
-#define elm_obj_web_text_matches_mark(string, case_sensitive, highlight, limit, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_MARK), EO_TYPECHECK(const char *, string), EO_TYPECHECK(Eina_Bool, case_sensitive), EO_TYPECHECK(Eina_Bool, highlight), EO_TYPECHECK(unsigned int, limit), EO_TYPECHECK(unsigned int *, ret)
-
-/**
- * @def elm_obj_web_text_matches_unmark_all
- * @since 1.8
- *
- * Clears all marked matches in the document
- *
- * @param[out] ret
- *
- * @see elm_web_text_matches_unmark_all
- */
-#define elm_obj_web_text_matches_unmark_all(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_UNMARK_ALL), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_text_matches_highlight_set
- * @since 1.8
- *
- * Sets whether to highlight the matched marks
- *
- * @param[in] highlight
- * @param[out] ret
- *
- * @see elm_web_text_matches_highlight_set
- */
-#define elm_obj_web_text_matches_highlight_set(highlight, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_SET), EO_TYPECHECK(Eina_Bool, highlight), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_text_matches_highlight_get
- * @since 1.8
- *
- * Gets whether highlighting marks is enabled
- *
- * @param[out] ret
- *
- * @see elm_web_text_matches_highlight_get
- */
-#define elm_obj_web_text_matches_highlight_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_load_progress_get
- * @since 1.8
- *
- * Gets the overall loading progress of the page
- *
- * @param[out] ret
- *
- * @see elm_web_load_progress_get
- */
-#define elm_obj_web_load_progress_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_LOAD_PROGRESS_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_web_stop
- * @since 1.8
- *
- * Stops loading the current page
- *
- * @param[out] ret
- *
- * @see elm_web_stop
- */
-#define elm_obj_web_stop(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_STOP), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_reload
- * @since 1.8
- *
- * Requests a reload of the current document in the object
- *
- * @param[out] ret
- *
- * @see elm_web_reload
- */
-#define elm_obj_web_reload(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_RELOAD), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_reload_full
- * @since 1.8
- *
- * Requests a reload of the current document, avoiding any existing caches
- *
- * @param[out] ret
- *
- * @see elm_web_reload_full
- */
-#define elm_obj_web_reload_full(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_RELOAD_FULL), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_back
- * @since 1.8
- *
- * Goes back one step in the browsing history
- *
- * @param[out] ret
- *
- * @see elm_web_back
- */
-#define elm_obj_web_back(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BACK), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_forward
- * @since 1.8
- *
- * Goes forward one step in the browsing history
- *
- * @param[out] ret
- *
- * @see elm_web_forward
- */
-#define elm_obj_web_forward(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_FORWARD), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_navigate
- * @since 1.8
- *
- * Jumps the given number of steps in the browsing history
- *
- * @param[in] steps
- * @param[out] ret
- *
- * @see elm_web_navigate
- */
-#define elm_obj_web_navigate(steps, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_NAVIGATE), EO_TYPECHECK(int, steps), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_back_possible_get
- * @since 1.8
- *
- * Queries whether it's possible to go back in history
- *
- * @param[out] ret
- *
- * @see elm_web_back_possible_get
- */
-#define elm_obj_web_back_possible_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BACK_POSSIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_forward_possible_get
- * @since 1.8
- *
- * Queries whether it's possible to go forward in history
- *
- * @param[out] ret
- *
- * @see elm_web_forward_possible_get
- */
-#define elm_obj_web_forward_possible_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_FORWARD_POSSIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_navigate_possible_get
- * @since 1.8
- *
- * Queries whether it's possible to jump the given number of steps
- *
- * @param[in] steps
- * @param[out] ret
- *
- * @see elm_web_navigate_possible_get
- */
-#define elm_obj_web_navigate_possible_get(steps, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_NAVIGATE_POSSIBLE_GET), EO_TYPECHECK(int, steps), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_history_enabled_get
- * @since 1.8
- *
- * Gets whether browsing history is enabled for the given object
- *
- * @param[out] ret
- *
- * @see elm_web_history_enabled_get
- */
-#define elm_obj_web_history_enabled_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def elm_obj_web_history_enabled_set
- * @since 1.8
- *
- * Enables or disables the browsing history
- *
- * @param[in] enable
- *
- * @see elm_web_history_enabled_set
- */
-#define elm_obj_web_history_enabled_set(enable) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_SET), EO_TYPECHECK(Eina_Bool, enable)
-
-/**
- * @def elm_obj_web_zoom_set
- * @since 1.8
- *
- * Sets the zoom level of the web object
- *
- * @param[in] zoom
- *
- * @see elm_web_zoom_set
- */
-#define elm_obj_web_zoom_set(zoom) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_SET), EO_TYPECHECK(double, zoom)
-
-/**
- * @def elm_obj_web_zoom_get
- * @since 1.8
- *
- * Gets the current zoom level set on the web object
- *
- * @param[out] ret
- *
- * @see elm_web_zoom_get
- */
-#define elm_obj_web_zoom_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def elm_obj_web_zoom_mode_set
- * @since 1.8
- *
- * Sets the zoom mode to use
- *
- * @param[in] mode
- *
- * @see elm_web_zoom_mode_set
- */
-#define elm_obj_web_zoom_mode_set(mode) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Web_Zoom_Mode, mode)
-
-/**
- * @def elm_obj_web_zoom_mode_get
- * @since 1.8
- *
- * Gets the currently set zoom mode
- *
- * @param[out] ret
- *
- * @see elm_web_zoom_mode_get
- */
-#define elm_obj_web_zoom_mode_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Web_Zoom_Mode *, ret)
-
-/**
- * @def elm_obj_web_region_show
- * @since 1.8
- *
- * Shows the given region in the web object
- *
- * @param[in] x
- * @param[in] y
- * @param[in] w
- * @param[in] h
- *
- * @see elm_web_region_show
- */
-#define elm_obj_web_region_show(x, y, w, h) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_REGION_SHOW), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
-
-/**
- * @def elm_obj_web_region_bring_in
- * @since 1.8
- *
- * Brings in the region to the visible area
- *
- * @param[in] x
- * @param[in] y
- * @param[in] w
- * @param[in] h
- *
- * @see elm_web_region_bring_in
- */
-#define elm_obj_web_region_bring_in(x, y, w, h) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_REGION_BRING_IN), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
-
-/**
- * @def elm_obj_web_inwin_mode_set
- * @since 1.8
- *
- * Sets the default dialogs to use an Inwin instead of a normal window
- *
- * @param[in] value
- *
- * @see elm_web_inwin_mode_set
- */
-#define elm_obj_web_inwin_mode_set(value) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_INWIN_MODE_SET), EO_TYPECHECK(Eina_Bool, value)
-
-/**
- * @def elm_obj_web_inwin_mode_get
- * @since 1.8
- *
- * Gets whether Inwin mode is set for the current object
- *
- * @param[out] ret
- *
- * @see elm_web_inwin_mode_get
- */
-#define elm_obj_web_inwin_mode_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_INWIN_MODE_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-
/**
* @addtogroup Web
* @{
*/
-/**
- * Structure used to report load errors.
- *
- * Load errors are reported as signal by elm_web. All the strings are
- * temporary references and should @b not be used after the signal
- * callback returns. If it's required, make copies with strdup() or
- * eina_stringshare_add() (they are not even guaranteed to be
- * stringshared, so must use eina_stringshare_add() and not
- * eina_stringshare_ref()).
- */
-typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error;
-
-/**
- * Structure used to report load errors.
- *
- * Load errors are reported as signal by elm_web. All the strings are
- * temporary references and should @b not be used after the signal
- * callback returns. If it's required, make copies with strdup() or
- * eina_stringshare_add() (they are not even guaranteed to be
- * stringshared, so must use eina_stringshare_add() and not
- * eina_stringshare_ref()).
- */
-struct _Elm_Web_Frame_Load_Error
-{
- int code; /**< Numeric error code */
- Eina_Bool is_cancellation; /**< Error produced by canceling a request */
- const char *domain; /**< Error domain name */
- const char *description; /**< Error description (already localized) */
- const char *failing_url; /**< The URL that failed to load */
- Evas_Object *frame; /**< Frame object that produced the error */
-};
-
-/**
- * The possibles types that the items in a menu can be
- */
-typedef enum
-{
- ELM_WEB_MENU_SEPARATOR,
- ELM_WEB_MENU_GROUP,
- ELM_WEB_MENU_OPTION
-} Elm_Web_Menu_Item_Type;
-
-/**
- * Structure describing the items in a menu
- */
-typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item;
-
-/**
- * Structure describing the items in a menu
- */
-struct _Elm_Web_Menu_Item
-{
- const char *text; /**< The text for the item */
- Elm_Web_Menu_Item_Type type; /**< The type of the item */
-};
-
-/**
- * Structure describing the menu of a popup
- *
- * This structure will be passed as the @c event_info for the "popup,create"
- * signal, which is emitted when a dropdown menu is opened. Users wanting
- * to handle these popups by themselves should listen to this signal and
- * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
- * property as @c EINA_FALSE means that the user will not handle the popup
- * and the default implementation will be used.
- *
- * When the popup is ready to be dismissed, a "popup,willdelete" signal
- * will be emitted to notify the user that it can destroy any objects and
- * free all data related to it.
- *
- * @see elm_web_popup_selected_set()
- * @see elm_web_popup_destroy()
- *
- * @ingroup Web
- */
-typedef struct _Elm_Web_Menu Elm_Web_Menu;
-
-/**
- * Structure describing the menu of a popup
- *
- * This structure will be passed as the @c event_info for the "popup,create"
- * signal, which is emitted when a dropdown menu is opened. Users wanting
- * to handle these popups by themselves should listen to this signal and
- * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
- * property as @c EINA_FALSE means that the user will not handle the popup
- * and the default implementation will be used.
- *
- * When the popup is ready to be dismissed, a "popup,willdelete" signal
- * will be emitted to notify the user that it can destroy any objects and
- * free all data related to it.
- *
- * @see elm_web_popup_selected_set()
- * @see elm_web_popup_destroy()
- *
- * @ingroup Web
- */
-struct _Elm_Web_Menu
-{
- Eina_List *items; /**< List of #Elm_Web_Menu_Item */
- int x; /**< The X position of the popup, relative to the elm_web object */
- int y; /**< The Y position of the popup, relative to the elm_web object */
- int width; /**< Width of the popup menu */
- int height; /**< Height of the popup menu */
-
- Eina_Bool handled : 1; /**< Set to @c EINA_TRUE by the user to indicate that the popup has been handled and the default implementation should be ignored. Leave as @c EINA_FALSE otherwise. */
-};
-
-typedef struct _Elm_Web_Download Elm_Web_Download;
-struct _Elm_Web_Download
-{
- const char *url;
-};
-
-/**
- * Types of zoom available.
- */
-typedef enum
-{
- ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_web_zoom_set */
- ELM_WEB_ZOOM_MODE_AUTO_FIT, /**< Zoom until content fits in web object */
- ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */
- ELM_WEB_ZOOM_MODE_LAST /**< Sentinel value to indicate end */
-} Elm_Web_Zoom_Mode;
-
-/**
- * Opaque handler containing the features (such as statusbar, menubar, etc)
- * that are to be set on a newly requested window.
- */
-typedef struct _Elm_Web_Window_Features Elm_Web_Window_Features;
-
-
-/**
- * Definitions of web window features.
- *
- */
-typedef enum
-{
- ELM_WEB_WINDOW_FEATURE_TOOLBAR,
- ELM_WEB_WINDOW_FEATURE_STATUSBAR,
- ELM_WEB_WINDOW_FEATURE_SCROLLBARS,
- ELM_WEB_WINDOW_FEATURE_MENUBAR,
- ELM_WEB_WINDOW_FEATURE_LOCATIONBAR,
- ELM_WEB_WINDOW_FEATURE_FULLSCREEN
-} Elm_Web_Window_Feature_Flag;
-
-/**
- * Callback type for the create_window hook.
- *
- * @param data User data pointer set when setting the hook function.
- * @param obj The elm_web object requesting the new window.
- * @param js Set to @c EINA_TRUE if the request was originated from
- * JavaScript. @c EINA_FALSE otherwise.
- * @param window_features A pointer of #Elm_Web_Window_Features indicating
- * the features requested for the new window.
- *
- * @return The @c elm_web widget where the request will be loaded. That is,
- * if a new window or tab is created, the elm_web widget in it should be
- * returned, and @b NOT the window object. Returning @c NULL should cancel
- * the request.
- *
- * @see elm_web_window_create_hook_set()
- *
- * @ingroup Web
- */
-typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features);
-
-/**
- * Callback type for the JS alert hook.
- *
- * @param data User data pointer set when setting the hook function.
- * @param obj The elm_web object requesting the new window.
- * @param message The message to show in the alert dialog.
- *
- * @return The object representing the alert dialog.
- * Elm_Web will run a second main loop to handle the dialog and normal
- * flow of the application will be restored when the object is deleted, so
- * the user should handle the popup properly in order to delete the object
- * when the action is finished.
- * If the function returns @c NULL the popup will be ignored.
- *
- * @see elm_web_dialog_alert_hook_set()
- *
- * @ingroup Web
- */
-typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message);
-
-/**
- * Callback type for the JS confirm hook.
- *
- * @param data User data pointer set when setting the hook function.
- * @param obj The elm_web object requesting the new window.
- * @param message The message to show in the confirm dialog.
- * @param ret Pointer to store the user selection. @c EINA_TRUE if
- * the user selected @c Ok, @c EINA_FALSE otherwise.
- *
- * @return The object representing the confirm dialog.
- * Elm_Web will run a second main loop to handle the dialog and normal
- * flow of the application will be restored when the object is deleted, so
- * the user should handle the popup properly in order to delete the object
- * when the action is finished.
- * If the function returns @c NULL the popup will be ignored.
- *
- * @see elm_web_dialog_confirm_hook_set()
- *
- * @ingroup Web
- */
-typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret);
-
-/**
- * Callback type for the JS prompt hook.
- *
- * @param data User data pointer set when setting the hook function.
- * @param obj The elm_web object requesting the new window.
- * @param message The message to show in the prompt dialog.
- * @param def_value The default value to present the user in the entry
- * @param value Pointer to store the value given by the user. Must
- * be a malloc'ed string or @c NULL if the user canceled the popup.
- * @param ret Pointer to store the user selection. @c EINA_TRUE if
- * the user selected @c Ok, @c EINA_FALSE otherwise.
- *
- * @return The object representing the prompt dialog.
- * Elm_Web will run a second main loop to handle the dialog and normal
- * flow of the application will be restored when the object is deleted, so
- * the user should handle the popup properly in order to delete the object
- * when the action is finished.
- * If the function returns @c NULL the popup will be ignored.
- *
- * @see elm_web_dialog_prompt_hook_set()
- *
- * @ingroup Web
- */
-typedef Evas_Object *(*Elm_Web_Dialog_Prompt)(void *data, Evas_Object *obj, const char *message, const char *def_value, const char **value, Eina_Bool *ret);
-
-/**
- * Callback type for the JS file selector hook.
- *
- * @param data User data pointer set when setting the hook function.
- * @param obj The elm_web object requesting the new window.
- * @param allows_multiple @c EINA_TRUE if multiple files can be selected.
- * @param accept_types Mime types accepted.
- * @param selected Pointer to store the list of malloc'ed strings
- * containing the path to each file selected. Must be @c NULL if the file
- * dialog is canceled.
- * @param ret Pointer to store the user selection. @c EINA_TRUE if
- * the user selected @c Ok, @c EINA_FALSE otherwise.
- *
- * @return The object representing the file selector dialog.
- * Elm_Web will run a second main loop to handle the dialog and normal
- * flow of the application will be restored when the object is deleted, so
- * the user should handle the popup properly in order to delete the object
- * when the action is finished.
- * If the function returns @c NULL the popup will be ignored.
- *
- * @see elm_web_dialog_file selector_hook_set()
- *
- * @ingroup Web
- */
-typedef Evas_Object *(*Elm_Web_Dialog_File_Selector)(void *data, Evas_Object *obj, Eina_Bool allows_multiple, Eina_List *accept_types, Eina_List **selected, Eina_Bool *ret);
-
-/**
- * Callback type for the JS console message hook.
- *
- * When a console message is added from JavaScript, any set function to the
- * console message hook will be called for the user to handle. There is no
- * default implementation of this hook.
- *
- * @param data User data pointer set when setting the hook function.
- * @param obj The elm_web object that originated the message.
- * @param message The message sent.
- * @param line_number The line number.
- * @param source_id Source id.
- *
- * @see elm_web_console_message_hook_set()
- *
- * @ingroup Web
- */
-typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id);
-
-/**
- * Add a new web object to the parent.
- *
- * @param parent The parent object.
- * @return The new object or @c NULL if it cannot be created.
- *
- * @see elm_web_uri_set()
- * @see elm_web_webkit_view_get()
- *
- * @ingroup Web
- */
-EAPI Evas_Object *elm_web_add(Evas_Object *parent);
-
-/**
- * Change useragent of a elm_web object
- *
- * @param obj The object
- * @param user_agent String for useragent
- *
- * @ingroup Web
- */
-EAPI void elm_web_useragent_set(Evas_Object *obj, const char *user_agent);
-
-/**
- * Return current useragent of elm_web object
- *
- * @param obj The object
- * @return Useragent string
- *
- * @ingroup Web
- */
-EAPI const char* elm_web_useragent_get(const Evas_Object *obj);
-
-/**
- * Get internal ewk_view object from web object.
- *
- * Elementary may not provide some low level features of EWebKit,
- * instead of cluttering the API with proxy methods we opted to
- * return the internal reference. Be careful using it as it may
- * interfere with elm_web behavior.
- *
- * @param obj The web object.
- * @return The internal ewk_view object or @c NULL if it does not
- * exist. (Failure to create or Elementary compiled without
- * ewebkit)
- *
- * @see elm_web_add()
- *
- * @ingroup Web
- */
-EAPI Evas_Object *elm_web_webkit_view_get(const Evas_Object *obj);
-
-/**
- * Sets the function to call when a new window is requested
- *
- * This hook will be called when a request to create a new window is
- * issued from the web page loaded.
- * There is no default implementation for this feature, so leaving this
- * unset or passing @c NULL in @p func will prevent new windows from
- * opening.
- *
- * @param obj The web object where to set the hook function
- * @param func The hook function to be called when a window is requested
- * @param data User data
- *
- * @ingroup Web
- */
-EAPI void elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data);
-
-/**
- * Sets the function to call when an alert dialog
- *
- * This hook will be called when a JavaScript alert dialog is requested.
- * If no function is set or @c NULL is passed in @p func, the default
- * implementation will take place.
- *
- * @param obj The web object where to set the hook function
- * @param func The callback function to be used
- * @param data User data
- *
- * @see elm_web_inwin_mode_set()
- *
- * @ingroup Web
- */
-EAPI void elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data);
-
-/**
- * Sets the function to call when an confirm dialog
- *
- * This hook will be called when a JavaScript confirm dialog is requested.
- * If no function is set or @c NULL is passed in @p func, the default
- * implementation will take place.
- *
- * @param obj The web object where to set the hook function
- * @param func The callback function to be used
- * @param data User data
- *
- * @see elm_web_inwin_mode_set()
- *
- * @ingroup Web
- */
-EAPI void elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data);
-
-/**
- * Sets the function to call when an prompt dialog
- *
- * This hook will be called when a JavaScript prompt dialog is requested.
- * If no function is set or @c NULL is passed in @p func, the default
- * implementation will take place.
- *
- * @param obj The web object where to set the hook function
- * @param func The callback function to be used
- * @param data User data
- *
- * @see elm_web_inwin_mode_set()
- *
- * @ingroup Web
- */
-EAPI void elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data);
-
-/**
- * Sets the function to call when an file selector dialog
- *
- * This hook will be called when a JavaScript file selector dialog is
- * requested.
- * If no function is set or @c NULL is passed in @p func, the default
- * implementation will take place.
- *
- * @param obj The web object where to set the hook function
- * @param func The callback function to be used
- * @param data User data
- *
- * @see elm_web_inwin_mode_set()
- *
- * @ingroup Web
- */
-EAPI void elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data);
-
-/**
- * Sets the function to call when a console message is emitted from JS
- *
- * This hook will be called when a console message is emitted from
- * JavaScript. There is no default implementation for this feature.
- *
- * @param obj The web object where to set the hook function
- * @param func The callback function to be used
- * @param data User data
- *
- * @ingroup Web
- */
-EAPI void elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data);
-
-/**
- * Gets the status of the tab propagation
- *
- * @param obj The web object to query
- * @return @c EINA_TRUE if tab propagation is enabled, @c EINA_FALSE otherwise
- *
- * @see elm_web_tab_propagate_set()
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_tab_propagate_get(const Evas_Object *obj);
-
-/**
- * Sets whether to use tab propagation
- *
- * If tab propagation is enabled, whenever the user presses the Tab key,
- * Elementary will handle it and switch focus to the next widget.
- * The default value is disabled, where WebKit will handle the Tab key to
- * cycle focus though its internal objects, jumping to the next widget
- * only when that cycle ends.
- *
- * @param obj The web object
- * @param propagate Whether to propagate Tab keys to Elementary or not
- *
- * @ingroup Web
- */
-EAPI void elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate);
-
-/**
- * Sets the URI for the web object
- *
- * It must be a full URI, with resource included, in the form
- * http://www.enlightenment.org or file:///tmp/something.html
- *
- * @param obj The web object
- * @param uri The URI to set
- * @return @c EINA_TRUE if the URI could be set, @c EINA_FALSE if an error occurred.
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_uri_set(Evas_Object *obj, const char *uri);
-
-/**
- * Gets the current URI for the object
- *
- * The returned string must not be freed and is guaranteed to be
- * stringshared.
- *
- * @param obj The web object
- * @return A stringshared internal string with the current URI, or @c NULL on
- * failure
- *
- * @ingroup Web
- */
-EAPI const char *elm_web_uri_get(const Evas_Object *obj);
-
-/**
- * Gets the current title
- *
- * The returned string must not be freed and is guaranteed to be
- * stringshared.
- *
- * @param obj The web object
- * @return A stringshared internal string with the current title, or @c NULL on
- * failure
- *
- * @ingroup Web
- */
-EAPI const char *elm_web_title_get(const Evas_Object *obj);
-
-/**
- * Sets the background color to be used by the web object
- *
- * This is the color that will be used by default when the loaded page
- * does not set it's own. Color values are pre-multiplied.
- *
- * @param obj The web object
- * @param r Red component
- * @param g Green component
- * @param b Blue component
- * @param a Alpha component
- *
- * @ingroup Web
- */
-EAPI void elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a);
-
-/**
- * Gets the background color to be used by the web object
- *
- * This is the color that will be used by default when the loaded page
- * does not set it's own. Color values are pre-multiplied.
- *
- * @param obj The web object
- * @param r Red component
- * @param g Green component
- * @param b Blue component
- * @param a Alpha component
- *
- * @ingroup Web
- */
-EAPI void elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
-
-/**
- * Gets a copy of the currently selected text
- *
- * The string returned must be freed by the user when it's done with it.
- *
- * @param obj The web object
- * @return A newly allocated string, or @c NULL if nothing is selected or an
- * error occurred
- *
- * @ingroup Web
- */
-EAPI const char *elm_web_selection_get(const Evas_Object *obj);
-
-/**
- * Tells the web object which index in the currently open popup was selected
- *
- * When the user handles the popup creation from the "popup,created" signal,
- * it needs to tell the web object which item was selected by calling this
- * function with the index corresponding to the item.
- *
- * @param obj The web object
- * @param index The index selected
- *
- * @see elm_web_popup_destroy()
- *
- * @ingroup Web
- */
-EAPI void elm_web_popup_selected_set(Evas_Object *obj, int index);
-
-/**
- * Dismisses an open dropdown popup
- *
- * When the popup from a dropdown widget is to be dismissed, either after
- * selecting an option or to cancel it, this function must be called, which
- * will later emit an "popup,willdelete" signal to notify the user that
- * any memory and objects related to this popup can be freed.
- *
- * @param obj The web object
- * @return @c EINA_TRUE if the menu was successfully destroyed, or @c EINA_FALSE
- * if there was no menu to destroy
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_popup_destroy(Evas_Object *obj);
-
-/**
- * Searches the given string in a document.
- *
- * @param obj The web object where to search the text
- * @param string String to search
- * @param case_sensitive If search should be case sensitive or not
- * @param forward If search is from cursor and on or backwards
- * @param wrap If search should wrap at the end
- *
- * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not
- * or failure
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
-
-/**
- * Marks matches of the given string in a document.
- *
- * @param obj The web object where to search text
- * @param string String to match
- * @param case_sensitive If match should be case sensitive or not
- * @param highlight If matches should be highlighted
- * @param limit Maximum amount of matches, or zero to unlimited
- *
- * @return number of matched @a string
- *
- * @ingroup Web
- */
-EAPI unsigned int elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
-
-/**
- * Clears all marked matches in the document
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_text_matches_unmark_all(Evas_Object *obj);
-
-/**
- * Sets whether to highlight the matched marks
- *
- * If enabled, marks set with elm_web_text_matches_mark() will be
- * highlighted.
- *
- * @param obj The web object
- * @param highlight Whether to highlight the marks or not
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight);
-
-/**
- * Gets whether highlighting marks is enabled
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE is marks are set to be highlighted, @c EINA_FALSE
- * otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_text_matches_highlight_get(const Evas_Object *obj);
-
-/**
- * Gets the overall loading progress of the page
- *
- * Returns the estimated loading progress of the page, with a value between
- * 0.0 and 1.0. This is an estimated progress accounting for all the frames
- * included in the page.
- *
- * @param obj The web object
- *
- * @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on
- * failure
- *
- * @ingroup Web
- */
-EAPI double elm_web_load_progress_get(const Evas_Object *obj);
-
-/**
- * Stops loading the current page
- *
- * Cancels the loading of the current page in the web object. This will
- * cause a "load,error" signal to be emitted, with the is_cancellation
- * flag set to @c EINA_TRUE.
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE if the cancel was successful, @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_stop(Evas_Object *obj);
-
-/**
- * Requests a reload of the current document in the object
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_reload(Evas_Object *obj);
-
-/**
- * Requests a reload of the current document, avoiding any existing caches
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_reload_full(Evas_Object *obj);
-
-/**
- * Goes back one step in the browsing history
- *
- * This is equivalent to calling elm_web_object_navigate(obj, -1);
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- *
- * @see elm_web_history_enabled_set()
- * @see elm_web_back_possible()
- * @see elm_web_forward()
- * @see elm_web_navigate()
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_back(Evas_Object *obj);
-
-/**
- * Goes forward one step in the browsing history
- *
- * This is equivalent to calling elm_web_object_navigate(obj, 1);
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- *
- * @see elm_web_history_enabled_set()
- * @see elm_web_forward_possible_get()
- * @see elm_web_back()
- * @see elm_web_navigate()
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_forward(Evas_Object *obj);
-
-/**
- * Jumps the given number of steps in the browsing history
- *
- * The @p steps value can be a negative integer to back in history, or a
- * positive to move forward.
- *
- * @param obj The web object
- * @param steps The number of steps to jump
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE on error or if not enough
- * history exists to jump the given number of steps
- *
- * @see elm_web_history_enabled_set()
- * @see elm_web_back()
- * @see elm_web_forward()
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_navigate(Evas_Object *obj, int steps);
-
-/**
- * Queries whether it's possible to go back in history
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE if it's possible to back in history, @c EINA_FALSE
- * otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_back_possible_get(Evas_Object *obj);
-
-/**
- * Queries whether it's possible to go forward in history
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE if it's possible to forward in history, @c EINA_FALSE
- * otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_forward_possible_get(Evas_Object *obj);
-
-/**
- * Queries whether it's possible to jump the given number of steps
- *
- * The @p steps value can be a negative integer to back in history, or a
- * positive to move forward.
- *
- * @param obj The web object
- * @param steps The number of steps to check for
- *
- * @return @c EINA_TRUE if enough history exists to perform the given jump,
- * @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_navigate_possible_get(Evas_Object *obj, int steps);
-
-/**
- * Gets whether browsing history is enabled for the given object
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE if history is enabled, @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_history_enabled_get(const Evas_Object *obj);
-
-/**
- * Enables or disables the browsing history
- *
- * @param obj The web object
- * @param enabled Whether to enable or disable the browsing history
- *
- * @ingroup Web
- */
-EAPI void elm_web_history_enabled_set(Evas_Object *obj, Eina_Bool enabled);
-
-/**
- * Sets the zoom level of the web object
- *
- * Zoom level matches the Webkit API, so 1.0 means normal zoom, with higher
- * values meaning zoom in and lower meaning zoom out. This function will
- * only affect the zoom level if the mode set with elm_web_zoom_mode_set()
- * is ::ELM_WEB_ZOOM_MODE_MANUAL.
- *
- * @param obj The web object
- * @param zoom The zoom level to set
- *
- * @ingroup Web
- */
-EAPI void elm_web_zoom_set(Evas_Object *obj, double zoom);
-
-/**
- * Gets the current zoom level set on the web object
- *
- * Note that this is the zoom level set on the web object and not that
- * of the underlying Webkit one. In the ::ELM_WEB_ZOOM_MODE_MANUAL mode,
- * the two zoom levels should match, but for the other two modes the
- * Webkit zoom is calculated internally to match the chosen mode without
- * changing the zoom level set for the web object.
- *
- * @param obj The web object
- *
- * @return The zoom level set on the object
- *
- * @ingroup Web
- */
-EAPI double elm_web_zoom_get(const Evas_Object *obj);
-
-/**
- * Sets the zoom mode to use
- *
- * The modes can be any of those defined in ::Elm_Web_Zoom_Mode, except
- * ::ELM_WEB_ZOOM_MODE_LAST. The default is ::ELM_WEB_ZOOM_MODE_MANUAL.
- *
- * ::ELM_WEB_ZOOM_MODE_MANUAL means the zoom level will be controlled
- * with the elm_web_zoom_set() function.
- * ::ELM_WEB_ZOOM_MODE_AUTO_FIT will calculate the needed zoom level to
- * make sure the entirety of the web object's contents are shown.
- * ::ELM_WEB_ZOOM_MODE_AUTO_FILL will calculate the needed zoom level to
- * fit the contents in the web object's size, without leaving any space
- * unused.
- *
- * @param obj The web object
- * @param mode The mode to set
- *
- * @ingroup Web
- */
-EAPI void elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode);
-
-/**
- * Gets the currently set zoom mode
- *
- * @param obj The web object
- *
- * @return The current zoom mode set for the object,
- * or ::ELM_WEB_ZOOM_MODE_LAST on error
- *
- * @ingroup Web
- */
-EAPI Elm_Web_Zoom_Mode elm_web_zoom_mode_get(const Evas_Object *obj);
-
-/**
- * Shows the given region in the web object
- *
- * @param obj The web object
- * @param x The x coordinate of the region to show
- * @param y The y coordinate of the region to show
- * @param w The width of the region to show
- * @param h The height of the region to show
- *
- * @ingroup Web
- */
-EAPI void elm_web_region_show(Evas_Object *obj, int x, int y, int w, int h);
-
-/**
- * Brings in the region to the visible area
- *
- * Like elm_web_region_show(), but it animates the scrolling of the object
- * to show the area
- *
- * @param obj The web object
- * @param x The x coordinate of the region to show
- * @param y The y coordinate of the region to show
- * @param w The width of the region to show
- * @param h The height of the region to show
- *
- * @ingroup Web
- */
-EAPI void elm_web_region_bring_in(Evas_Object *obj, int x, int y, int w, int h);
-
-/**
- * Sets the default dialogs to use an Inwin instead of a normal window
- *
- * If set, then the default implementation for the JavaScript dialogs and
- * file selector will be opened in an Inwin. Otherwise they will use a
- * normal separated window.
- *
- * @param obj The web object
- * @param value @c EINA_TRUE to use Inwin, @c EINA_FALSE to use a normal window
- *
- * @ingroup Web
- */
-EAPI void elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
-
-/**
- * Gets whether Inwin mode is set for the current object
- *
- * @param obj The web object
- *
- * @return @c EINA_TRUE if Inwin mode is set, @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_inwin_mode_get(const Evas_Object *obj);
-
-EAPI void elm_web_window_features_ref(Elm_Web_Window_Features *wf);
-EAPI void elm_web_window_features_unref(Elm_Web_Window_Features *wf);
-
-/**
- * Gets boolean properties from Elm_Web_Window_Features
- * (such as statusbar, menubar, etc) that are on a window.
- *
- * @param wf The web window features object
- * @param flag The web window feature flag whose value is required.
- *
- * @return @c EINA_TRUE if the flag is set, @c EINA_FALSE otherwise
- *
- * @ingroup Web
- */
-EAPI Eina_Bool elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag);
-
-/**
- *
- * TODO : Add documentation.
- *
- * @param wf The web window features object
- * @param x, y, w, h - the co-ordinates of the web view window.
- *
- * @ingroup Web
- */
-EAPI void elm_web_window_features_region_get(const Elm_Web_Window_Features *wf, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
-
+#include "elm_web_common.h"
+#ifdef EFL_EO_API_SUPPORT
+#include "elm_web_eo.h"
+#endif
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "elm_web_legacy.h"
+#endif
/**
* @}
*/
diff --git a/src/lib/elm_web_common.h b/src/lib/elm_web_common.h
new file mode 100644
index 000000000..3671c3e32
--- /dev/null
+++ b/src/lib/elm_web_common.h
@@ -0,0 +1,350 @@
+/**
+ * Structure used to report load errors.
+ *
+ * Load errors are reported as signal by elm_web. All the strings are
+ * temporary references and should @b not be used after the signal
+ * callback returns. If it's required, make copies with strdup() or
+ * eina_stringshare_add() (they are not even guaranteed to be
+ * stringshared, so must use eina_stringshare_add() and not
+ * eina_stringshare_ref()).
+ */
+typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error;
+
+/**
+ * Structure used to report load errors.
+ *
+ * Load errors are reported as signal by elm_web. All the strings are
+ * temporary references and should @b not be used after the signal
+ * callback returns. If it's required, make copies with strdup() or
+ * eina_stringshare_add() (they are not even guaranteed to be
+ * stringshared, so must use eina_stringshare_add() and not
+ * eina_stringshare_ref()).
+ */
+struct _Elm_Web_Frame_Load_Error
+{
+ int code; /**< Numeric error code */
+ Eina_Bool is_cancellation; /**< Error produced by canceling a request */
+ const char *domain; /**< Error domain name */
+ const char *description; /**< Error description (already localized) */
+ const char *failing_url; /**< The URL that failed to load */
+ Evas_Object *frame; /**< Frame object that produced the error */
+};
+
+/**
+ * The possibles types that the items in a menu can be
+ */
+typedef enum
+{
+ ELM_WEB_MENU_SEPARATOR,
+ ELM_WEB_MENU_GROUP,
+ ELM_WEB_MENU_OPTION
+} Elm_Web_Menu_Item_Type;
+
+/**
+ * Structure describing the items in a menu
+ */
+typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item;
+
+/**
+ * Structure describing the items in a menu
+ */
+struct _Elm_Web_Menu_Item
+{
+ const char *text; /**< The text for the item */
+ Elm_Web_Menu_Item_Type type; /**< The type of the item */
+};
+
+/**
+ * Structure describing the menu of a popup
+ *
+ * This structure will be passed as the @c event_info for the "popup,create"
+ * signal, which is emitted when a dropdown menu is opened. Users wanting
+ * to handle these popups by themselves should listen to this signal and
+ * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
+ * property as @c EINA_FALSE means that the user will not handle the popup
+ * and the default implementation will be used.
+ *
+ * When the popup is ready to be dismissed, a "popup,willdelete" signal
+ * will be emitted to notify the user that it can destroy any objects and
+ * free all data related to it.
+ *
+ * @see elm_web_popup_selected_set()
+ * @see elm_web_popup_destroy()
+ *
+ * @ingroup Web
+ */
+typedef struct _Elm_Web_Menu Elm_Web_Menu;
+
+/**
+ * Structure describing the menu of a popup
+ *
+ * This structure will be passed as the @c event_info for the "popup,create"
+ * signal, which is emitted when a dropdown menu is opened. Users wanting
+ * to handle these popups by themselves should listen to this signal and
+ * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
+ * property as @c EINA_FALSE means that the user will not handle the popup
+ * and the default implementation will be used.
+ *
+ * When the popup is ready to be dismissed, a "popup,willdelete" signal
+ * will be emitted to notify the user that it can destroy any objects and
+ * free all data related to it.
+ *
+ * @see elm_web_popup_selected_set()
+ * @see elm_web_popup_destroy()
+ *
+ * @ingroup Web
+ */
+struct _Elm_Web_Menu
+{
+ Eina_List *items; /**< List of #Elm_Web_Menu_Item */
+ int x; /**< The X position of the popup, relative to the elm_web object */
+ int y; /**< The Y position of the popup, relative to the elm_web object */
+ int width; /**< Width of the popup menu */
+ int height; /**< Height of the popup menu */
+
+ Eina_Bool handled : 1; /**< Set to @c EINA_TRUE by the user to indicate that the popup has been handled and the default implementation should be ignored. Leave as @c EINA_FALSE otherwise. */
+};
+
+typedef struct _Elm_Web_Download Elm_Web_Download;
+struct _Elm_Web_Download
+{
+ const char *url;
+};
+
+/**
+ * Types of zoom available.
+ */
+typedef enum
+{
+ ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_web_zoom_set */
+ ELM_WEB_ZOOM_MODE_AUTO_FIT, /**< Zoom until content fits in web object */
+ ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */
+ ELM_WEB_ZOOM_MODE_LAST /**< Sentinel value to indicate end */
+} Elm_Web_Zoom_Mode;
+
+/**
+ * Opaque handler containing the features (such as statusbar, menubar, etc)
+ * that are to be set on a newly requested window.
+ */
+typedef struct _Elm_Web_Window_Features Elm_Web_Window_Features;
+
+
+/**
+ * Definitions of web window features.
+ *
+ */
+typedef enum
+{
+ ELM_WEB_WINDOW_FEATURE_TOOLBAR,
+ ELM_WEB_WINDOW_FEATURE_STATUSBAR,
+ ELM_WEB_WINDOW_FEATURE_SCROLLBARS,
+ ELM_WEB_WINDOW_FEATURE_MENUBAR,
+ ELM_WEB_WINDOW_FEATURE_LOCATIONBAR,
+ ELM_WEB_WINDOW_FEATURE_FULLSCREEN
+} Elm_Web_Window_Feature_Flag;
+
+/**
+ * Callback type for the create_window hook.
+ *
+ * @param data User data pointer set when setting the hook function.
+ * @param obj The elm_web object requesting the new window.
+ * @param js Set to @c EINA_TRUE if the request was originated from
+ * JavaScript. @c EINA_FALSE otherwise.
+ * @param window_features A pointer of #Elm_Web_Window_Features indicating
+ * the features requested for the new window.
+ *
+ * @return The @c elm_web widget where the request will be loaded. That is,
+ * if a new window or tab is created, the elm_web widget in it should be
+ * returned, and @b NOT the window object. Returning @c NULL should cancel
+ * the request.
+ *
+ * @see elm_web_window_create_hook_set()
+ *
+ * @ingroup Web
+ */
+typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features);
+
+/**
+ * Callback type for the JS alert hook.
+ *
+ * @param data User data pointer set when setting the hook function.
+ * @param obj The elm_web object requesting the new window.
+ * @param message The message to show in the alert dialog.
+ *
+ * @return The object representing the alert dialog.
+ * Elm_Web will run a second main loop to handle the dialog and normal
+ * flow of the application will be restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished.
+ * If the function returns @c NULL the popup will be ignored.
+ *
+ * @see elm_web_dialog_alert_hook_set()
+ *
+ * @ingroup Web
+ */
+typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message);
+
+/**
+ * Callback type for the JS confirm hook.
+ *
+ * @param data User data pointer set when setting the hook function.
+ * @param obj The elm_web object requesting the new window.
+ * @param message The message to show in the confirm dialog.
+ * @param ret Pointer to store the user selection. @c EINA_TRUE if
+ * the user selected @c Ok, @c EINA_FALSE otherwise.
+ *
+ * @return The object representing the confirm dialog.
+ * Elm_Web will run a second main loop to handle the dialog and normal
+ * flow of the application will be restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished.
+ * If the function returns @c NULL the popup will be ignored.
+ *
+ * @see elm_web_dialog_confirm_hook_set()
+ *
+ * @ingroup Web
+ */
+typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret);
+
+/**
+ * Callback type for the JS prompt hook.
+ *
+ * @param data User data pointer set when setting the hook function.
+ * @param obj The elm_web object requesting the new window.
+ * @param message The message to show in the prompt dialog.
+ * @param def_value The default value to present the user in the entry
+ * @param value Pointer to store the value given by the user. Must
+ * be a malloc'ed string or @c NULL if the user canceled the popup.
+ * @param ret Pointer to store the user selection. @c EINA_TRUE if
+ * the user selected @c Ok, @c EINA_FALSE otherwise.
+ *
+ * @return The object representing the prompt dialog.
+ * Elm_Web will run a second main loop to handle the dialog and normal
+ * flow of the application will be restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished.
+ * If the function returns @c NULL the popup will be ignored.
+ *
+ * @see elm_web_dialog_prompt_hook_set()
+ *
+ * @ingroup Web
+ */
+typedef Evas_Object *(*Elm_Web_Dialog_Prompt)(void *data, Evas_Object *obj, const char *message, const char *def_value, const char **value, Eina_Bool *ret);
+
+/**
+ * Callback type for the JS file selector hook.
+ *
+ * @param data User data pointer set when setting the hook function.
+ * @param obj The elm_web object requesting the new window.
+ * @param allows_multiple @c EINA_TRUE if multiple files can be selected.
+ * @param accept_types Mime types accepted.
+ * @param selected Pointer to store the list of malloc'ed strings
+ * containing the path to each file selected. Must be @c NULL if the file
+ * dialog is canceled.
+ * @param ret Pointer to store the user selection. @c EINA_TRUE if
+ * the user selected @c Ok, @c EINA_FALSE otherwise.
+ *
+ * @return The object representing the file selector dialog.
+ * Elm_Web will run a second main loop to handle the dialog and normal
+ * flow of the application will be restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished.
+ * If the function returns @c NULL the popup will be ignored.
+ *
+ * @see elm_web_dialog_file selector_hook_set()
+ *
+ * @ingroup Web
+ */
+typedef Evas_Object *(*Elm_Web_Dialog_File_Selector)(void *data, Evas_Object *obj, Eina_Bool allows_multiple, Eina_List *accept_types, Eina_List **selected, Eina_Bool *ret);
+
+/**
+ * Callback type for the JS console message hook.
+ *
+ * When a console message is added from JavaScript, any set function to the
+ * console message hook will be called for the user to handle. There is no
+ * default implementation of this hook.
+ *
+ * @param data User data pointer set when setting the hook function.
+ * @param obj The elm_web object that originated the message.
+ * @param message The message sent.
+ * @param line_number The line number.
+ * @param source_id Source id.
+ *
+ * @see elm_web_console_message_hook_set()
+ *
+ * @ingroup Web
+ */
+typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id);
+
+/**
+ * Add a new web object to the parent.
+ *
+ * @param parent The parent object.
+ * @return The new object or @c NULL if it cannot be created.
+ *
+ * @see elm_web_uri_set()
+ * @see elm_web_webkit_view_get()
+ *
+ * @ingroup Web
+ */
+EAPI Evas_Object *elm_web_add(Evas_Object *parent);
+
+/**
+ * Sets the zoom mode to use
+ *
+ * The modes can be any of those defined in ::Elm_Web_Zoom_Mode, except
+ * ::ELM_WEB_ZOOM_MODE_LAST. The default is ::ELM_WEB_ZOOM_MODE_MANUAL.
+ *
+ * ::ELM_WEB_ZOOM_MODE_MANUAL means the zoom level will be controlled
+ * with the elm_web_zoom_set() function.
+ * ::ELM_WEB_ZOOM_MODE_AUTO_FIT will calculate the needed zoom level to
+ * make sure the entirety of the web object's contents are shown.
+ * ::ELM_WEB_ZOOM_MODE_AUTO_FILL will calculate the needed zoom level to
+ * fit the contents in the web object's size, without leaving any space
+ * unused.
+ *
+ * @param obj The web object
+ * @param mode The mode to set
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode);
+
+/**
+ * Gets the currently set zoom mode
+ *
+ * @param obj The web object
+ *
+ * @return The current zoom mode set for the object,
+ * or ::ELM_WEB_ZOOM_MODE_LAST on error
+ *
+ * @ingroup Web
+ */
+EAPI Elm_Web_Zoom_Mode elm_web_zoom_mode_get(const Evas_Object *obj);
+
+/**
+ * Gets boolean properties from Elm_Web_Window_Features
+ * (such as statusbar, menubar, etc) that are on a window.
+ *
+ * @param wf The web window features object
+ * @param flag The web window feature flag whose value is required.
+ *
+ * @return @c EINA_TRUE if the flag is set, @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag);
+
+/**
+ *
+ * TODO : Add documentation.
+ *
+ * @param wf The web window features object
+ * @param x, y, w, h - the co-ordinates of the web view window.
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_window_features_region_get(const Elm_Web_Window_Features *wf, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+EAPI void elm_web_window_features_ref(Elm_Web_Window_Features *wf);
+EAPI void elm_web_window_features_unref(Elm_Web_Window_Features *wf);
diff --git a/src/lib/elm_web_eo.h b/src/lib/elm_web_eo.h
new file mode 100644
index 000000000..01de93e6a
--- /dev/null
+++ b/src/lib/elm_web_eo.h
@@ -0,0 +1,703 @@
+#define ELM_OBJ_WEB_CLASS elm_obj_web_class_get()
+
+const Eo_Class *elm_obj_web_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op ELM_OBJ_WEB_BASE_ID;
+
+enum
+{
+ ELM_OBJ_WEB_SUB_ID_WEBKIT_VIEW_GET,
+ ELM_OBJ_WEB_SUB_ID_WINDOW_CREATE_HOOK_SET,
+ ELM_OBJ_WEB_SUB_ID_DIALOG_ALERT_HOOK_SET,
+ ELM_OBJ_WEB_SUB_ID_DIALOG_CONFIRM_HOOK_SET,
+ ELM_OBJ_WEB_SUB_ID_DIALOG_PROMPT_HOOK_SET,
+ ELM_OBJ_WEB_SUB_ID_DIALOG_FILE_SELECTOR_HOOK_SET,
+ ELM_OBJ_WEB_SUB_ID_CONSOLE_MESSAGE_HOOK_SET,
+ ELM_OBJ_WEB_SUB_ID_USERAGENT_SET,
+ ELM_OBJ_WEB_SUB_ID_USERAGENT_GET,
+ ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_GET,
+ ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET,
+ ELM_OBJ_WEB_SUB_ID_URI_SET,
+ ELM_OBJ_WEB_SUB_ID_URI_GET,
+ ELM_OBJ_WEB_SUB_ID_TITLE_GET,
+ ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET,
+ ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET,
+ ELM_OBJ_WEB_SUB_ID_SELECTION_GET,
+ ELM_OBJ_WEB_SUB_ID_POPUP_SELECTED_SET,
+ ELM_OBJ_WEB_SUB_ID_POPUP_DESTROY,
+ ELM_OBJ_WEB_SUB_ID_TEXT_SEARCH,
+ ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_MARK,
+ ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_UNMARK_ALL,
+ ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_SET,
+ ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_GET,
+ ELM_OBJ_WEB_SUB_ID_LOAD_PROGRESS_GET,
+ ELM_OBJ_WEB_SUB_ID_STOP,
+ ELM_OBJ_WEB_SUB_ID_RELOAD,
+ ELM_OBJ_WEB_SUB_ID_RELOAD_FULL,
+ ELM_OBJ_WEB_SUB_ID_BACK,
+ ELM_OBJ_WEB_SUB_ID_FORWARD,
+ ELM_OBJ_WEB_SUB_ID_NAVIGATE,
+ ELM_OBJ_WEB_SUB_ID_BACK_POSSIBLE_GET,
+ ELM_OBJ_WEB_SUB_ID_FORWARD_POSSIBLE_GET,
+ ELM_OBJ_WEB_SUB_ID_NAVIGATE_POSSIBLE_GET,
+ ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_GET,
+ ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_SET,
+ ELM_OBJ_WEB_SUB_ID_ZOOM_SET,
+ ELM_OBJ_WEB_SUB_ID_ZOOM_GET,
+ ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_SET,
+ ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_GET,
+ ELM_OBJ_WEB_SUB_ID_REGION_SHOW,
+ ELM_OBJ_WEB_SUB_ID_REGION_BRING_IN,
+ ELM_OBJ_WEB_SUB_ID_INWIN_MODE_SET,
+ ELM_OBJ_WEB_SUB_ID_INWIN_MODE_GET,
+ ELM_OBJ_WEB_SUB_ID_LAST
+};
+
+#define ELM_OBJ_WEB_ID(sub_id) (ELM_OBJ_WEB_BASE_ID + sub_id)
+
+
+/**
+ * @def elm_obj_web_webkit_view_get
+ * @since 1.8
+ *
+ * Get internal ewk_view object from web object.
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_webkit_view_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_webkit_view_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_WEBKIT_VIEW_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def elm_obj_web_window_create_hook_set
+ * @since 1.8
+ *
+ * Sets the function to call when a new window is requested
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see elm_web_window_create_hook_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_window_create_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_WINDOW_CREATE_HOOK_SET), EO_TYPECHECK(Elm_Web_Window_Open, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def elm_obj_web_dialog_alert_hook_set
+ * @since 1.8
+ *
+ * Sets the function to call when an alert dialog
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see elm_web_dialog_alert_hook_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_dialog_alert_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_ALERT_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Alert, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def elm_obj_web_dialog_confirm_hook_set
+ * @since 1.8
+ *
+ * Sets the function to call when an confirm dialog
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see elm_web_dialog_confirm_hook_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_dialog_confirm_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_CONFIRM_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Confirm, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def elm_obj_web_dialog_prompt_hook_set
+ * @since 1.8
+ *
+ * Sets the function to call when an prompt dialog
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see elm_web_dialog_prompt_hook_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_dialog_prompt_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_PROMPT_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_Prompt, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def elm_obj_web_dialog_file_selector_hook_set
+ * @since 1.8
+ *
+ * Sets the function to call when an file selector dialog
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see elm_web_dialog_file_selector_hook_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_dialog_file_selector_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_DIALOG_FILE_SELECTOR_HOOK_SET), EO_TYPECHECK(Elm_Web_Dialog_File_Selector, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def elm_obj_web_console_message_hook_set
+ * @since 1.8
+ *
+ * Sets the function to call when a console message is emitted from JS
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see elm_web_console_message_hook_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_console_message_hook_set(func, data) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_CONSOLE_MESSAGE_HOOK_SET), EO_TYPECHECK(Elm_Web_Console_Message, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def elm_obj_web_useragent_set
+ * @since 1.8
+ *
+ * Change useragent of a elm_web object
+ *
+ * @param[in] user_agent
+ *
+ * @see elm_web_useragent_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_useragent_set(user_agent) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_USERAGENT_SET), EO_TYPECHECK(const char *, user_agent)
+
+/**
+ * @def elm_obj_web_useragent_get
+ * @since 1.8
+ *
+ * Return current useragent of elm_web object
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_useragent_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_useragent_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_USERAGENT_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_web_tab_propagate_get
+ * @since 1.8
+ *
+ * Gets the status of the tab propagation
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_tab_propagate_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_tab_propagate_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_tab_propagate_set
+ * @since 1.8
+ *
+ * Sets whether to use tab propagation
+ *
+ * @param[in] propagate
+ *
+ * @see elm_web_tab_propagate_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_tab_propagate_set(propagate) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET), EO_TYPECHECK(Eina_Bool, propagate)
+
+/**
+ * @def elm_obj_web_uri_set
+ * @since 1.8
+ *
+ * Sets the URI for the web object
+ *
+ * @param[in] uri
+ * @param[out] ret
+ *
+ * @see elm_web_uri_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_uri_set(uri, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URI_SET), EO_TYPECHECK(const char *, uri), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_uri_get
+ * @since 1.8
+ *
+ * Gets the current URI for the object
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_uri_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_uri_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URI_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_web_title_get
+ * @since 1.8
+ *
+ * Gets the current title
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_title_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_title_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TITLE_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_web_bg_color_set
+ * @since 1.8
+ *
+ * Sets the background color to be used by the web object
+ *
+ * @param[in] r
+ * @param[in] g
+ * @param[in] b
+ * @param[in] a
+ *
+ * @see elm_web_bg_color_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_bg_color_set(r, g, b, a) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
+
+/**
+ * @def elm_obj_web_bg_color_get
+ * @since 1.8
+ *
+ * Gets the background color to be used by the web object
+ *
+ * @param[out] r
+ * @param[out] g
+ * @param[out] b
+ * @param[out] a
+ *
+ * @see elm_web_bg_color_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_bg_color_get(r, g, b, a) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
+
+/**
+ * @def elm_obj_web_selection_get
+ * @since 1.8
+ *
+ * Gets a copy of the currently selected text
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_selection_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_selection_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_SELECTION_GET), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def elm_obj_web_popup_selected_set
+ * @since 1.8
+ *
+ * Tells the web object which index in the currently open popup was selected
+ *
+ * @param[in] idx
+ *
+ * @see elm_web_popup_selected_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_popup_selected_set(idx) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_POPUP_SELECTED_SET), EO_TYPECHECK(int, idx)
+
+/**
+ * @def elm_obj_web_popup_destroy
+ * @since 1.8
+ *
+ * Dismisses an open dropdown popup
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_popup_destroy
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_popup_destroy(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_POPUP_DESTROY), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_text_search
+ * @since 1.8
+ *
+ * Searches the given string in a document.
+ *
+ * @param[in] string
+ * @param[in] case_sensitive
+ * @param[in] forward
+ * @param[in] wrap
+ * @param[out] ret
+ *
+ * @see elm_web_text_search
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_text_search(string, case_sensitive, forward, wrap, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_SEARCH), EO_TYPECHECK(const char *, string), EO_TYPECHECK(Eina_Bool, case_sensitive), EO_TYPECHECK(Eina_Bool, forward), EO_TYPECHECK(Eina_Bool, wrap), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_text_matches_mark
+ * @since 1.8
+ *
+ * Marks matches of the given string in a document.
+ *
+ * @param[in] string
+ * @param[in] case_sensitive
+ * @param[in] highlight
+ * @param[in] limit
+ * @param[out] ret
+ *
+ * @see elm_web_text_matches_mark
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_text_matches_mark(string, case_sensitive, highlight, limit, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_MARK), EO_TYPECHECK(const char *, string), EO_TYPECHECK(Eina_Bool, case_sensitive), EO_TYPECHECK(Eina_Bool, highlight), EO_TYPECHECK(unsigned int, limit), EO_TYPECHECK(unsigned int *, ret)
+
+/**
+ * @def elm_obj_web_text_matches_unmark_all
+ * @since 1.8
+ *
+ * Clears all marked matches in the document
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_text_matches_unmark_all
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_text_matches_unmark_all(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_UNMARK_ALL), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_text_matches_highlight_set
+ * @since 1.8
+ *
+ * Sets whether to highlight the matched marks
+ *
+ * @param[in] highlight
+ * @param[out] ret
+ *
+ * @see elm_web_text_matches_highlight_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_text_matches_highlight_set(highlight, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_SET), EO_TYPECHECK(Eina_Bool, highlight), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_text_matches_highlight_get
+ * @since 1.8
+ *
+ * Gets whether highlighting marks is enabled
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_text_matches_highlight_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_text_matches_highlight_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TEXT_MATCHES_HIGHLIGHT_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_load_progress_get
+ * @since 1.8
+ *
+ * Gets the overall loading progress of the page
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_load_progress_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_load_progress_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_LOAD_PROGRESS_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_web_stop
+ * @since 1.8
+ *
+ * Stops loading the current page
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_stop
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_stop(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_STOP), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_reload
+ * @since 1.8
+ *
+ * Requests a reload of the current document in the object
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_reload
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_reload(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_RELOAD), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_reload_full
+ * @since 1.8
+ *
+ * Requests a reload of the current document, avoiding any existing caches
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_reload_full
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_reload_full(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_RELOAD_FULL), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_back
+ * @since 1.8
+ *
+ * Goes back one step in the browsing history
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_back
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_back(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BACK), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_forward
+ * @since 1.8
+ *
+ * Goes forward one step in the browsing history
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_forward
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_forward(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_FORWARD), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_navigate
+ * @since 1.8
+ *
+ * Jumps the given number of steps in the browsing history
+ *
+ * @param[in] steps
+ * @param[out] ret
+ *
+ * @see elm_web_navigate
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_navigate(steps, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_NAVIGATE), EO_TYPECHECK(int, steps), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_back_possible_get
+ * @since 1.8
+ *
+ * Queries whether it's possible to go back in history
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_back_possible_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_back_possible_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BACK_POSSIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_forward_possible_get
+ * @since 1.8
+ *
+ * Queries whether it's possible to go forward in history
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_forward_possible_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_forward_possible_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_FORWARD_POSSIBLE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_navigate_possible_get
+ * @since 1.8
+ *
+ * Queries whether it's possible to jump the given number of steps
+ *
+ * @param[in] steps
+ * @param[out] ret
+ *
+ * @see elm_web_navigate_possible_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_navigate_possible_get(steps, ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_NAVIGATE_POSSIBLE_GET), EO_TYPECHECK(int, steps), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_history_enabled_get
+ * @since 1.8
+ *
+ * Gets whether browsing history is enabled for the given object
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_history_enabled_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_history_enabled_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def elm_obj_web_history_enabled_set
+ * @since 1.8
+ *
+ * Enables or disables the browsing history
+ *
+ * @param[in] enable
+ *
+ * @see elm_web_history_enabled_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_history_enabled_set(enable) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HISTORY_ENABLED_SET), EO_TYPECHECK(Eina_Bool, enable)
+
+/**
+ * @def elm_obj_web_zoom_set
+ * @since 1.8
+ *
+ * Sets the zoom level of the web object
+ *
+ * @param[in] zoom
+ *
+ * @see elm_web_zoom_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_zoom_set(zoom) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_SET), EO_TYPECHECK(double, zoom)
+
+/**
+ * @def elm_obj_web_zoom_get
+ * @since 1.8
+ *
+ * Gets the current zoom level set on the web object
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_zoom_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_zoom_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @def elm_obj_web_zoom_mode_set
+ * @since 1.8
+ *
+ * Sets the zoom mode to use
+ *
+ * @param[in] mode
+ *
+ * @see elm_web_zoom_mode_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_zoom_mode_set(mode) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_SET), EO_TYPECHECK(Elm_Web_Zoom_Mode, mode)
+
+/**
+ * @def elm_obj_web_zoom_mode_get
+ * @since 1.8
+ *
+ * Gets the currently set zoom mode
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_zoom_mode_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_zoom_mode_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_ZOOM_MODE_GET), EO_TYPECHECK(Elm_Web_Zoom_Mode *, ret)
+
+/**
+ * @def elm_obj_web_region_show
+ * @since 1.8
+ *
+ * Shows the given region in the web object
+ *
+ * @param[in] x
+ * @param[in] y
+ * @param[in] w
+ * @param[in] h
+ *
+ * @see elm_web_region_show
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_region_show(x, y, w, h) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_REGION_SHOW), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * @def elm_obj_web_region_bring_in
+ * @since 1.8
+ *
+ * Brings in the region to the visible area
+ *
+ * @param[in] x
+ * @param[in] y
+ * @param[in] w
+ * @param[in] h
+ *
+ * @see elm_web_region_bring_in
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_region_bring_in(x, y, w, h) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_REGION_BRING_IN), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * @def elm_obj_web_inwin_mode_set
+ * @since 1.8
+ *
+ * Sets the default dialogs to use an Inwin instead of a normal window
+ *
+ * @param[in] value
+ *
+ * @see elm_web_inwin_mode_set
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_inwin_mode_set(value) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_INWIN_MODE_SET), EO_TYPECHECK(Eina_Bool, value)
+
+/**
+ * @def elm_obj_web_inwin_mode_get
+ * @since 1.8
+ *
+ * Gets whether Inwin mode is set for the current object
+ *
+ * @param[out] ret
+ *
+ * @see elm_web_inwin_mode_get
+ *
+ * @ingroup Web
+ */
+#define elm_obj_web_inwin_mode_get(ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_INWIN_MODE_GET), EO_TYPECHECK(Eina_Bool *, ret)
diff --git a/src/lib/elm_web_legacy.h b/src/lib/elm_web_legacy.h
new file mode 100644
index 000000000..c0af13203
--- /dev/null
+++ b/src/lib/elm_web_legacy.h
@@ -0,0 +1,610 @@
+/**
+ * Get internal ewk_view object from web object.
+ *
+ * Elementary may not provide some low level features of EWebKit,
+ * instead of cluttering the API with proxy methods we opted to
+ * return the internal reference. Be careful using it as it may
+ * interfere with elm_web behavior.
+ *
+ * @param obj The web object.
+ * @return The internal ewk_view object or @c NULL if it does not
+ * exist. (Failure to create or Elementary compiled without
+ * ewebkit)
+ *
+ * @see elm_web_add()
+ *
+ * @ingroup Web
+ */
+EAPI Evas_Object *elm_web_webkit_view_get(const Evas_Object *obj);
+
+/**
+ * Sets the function to call when a new window is requested
+ *
+ * This hook will be called when a request to create a new window is
+ * issued from the web page loaded.
+ * There is no default implementation for this feature, so leaving this
+ * unset or passing @c NULL in @p func will prevent new windows from
+ * opening.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The hook function to be called when a window is requested
+ * @param data User data
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data);
+
+/**
+ * Sets the function to call when an alert dialog
+ *
+ * This hook will be called when a JavaScript alert dialog is requested.
+ * If no function is set or @c NULL is passed in @p func, the default
+ * implementation will take place.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @see elm_web_inwin_mode_set()
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data);
+
+/**
+ * Sets the function to call when an confirm dialog
+ *
+ * This hook will be called when a JavaScript confirm dialog is requested.
+ * If no function is set or @c NULL is passed in @p func, the default
+ * implementation will take place.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @see elm_web_inwin_mode_set()
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data);
+
+/**
+ * Sets the function to call when an prompt dialog
+ *
+ * This hook will be called when a JavaScript prompt dialog is requested.
+ * If no function is set or @c NULL is passed in @p func, the default
+ * implementation will take place.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @see elm_web_inwin_mode_set()
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data);
+
+/**
+ * Sets the function to call when an file selector dialog
+ *
+ * This hook will be called when a JavaScript file selector dialog is
+ * requested.
+ * If no function is set or @c NULL is passed in @p func, the default
+ * implementation will take place.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @see elm_web_inwin_mode_set()
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data);
+
+/**
+ * Sets the function to call when a console message is emitted from JS
+ *
+ * This hook will be called when a console message is emitted from
+ * JavaScript. There is no default implementation for this feature.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data);
+
+/**
+ * Change useragent of a elm_web object
+ *
+ * @param obj The object
+ * @param user_agent String for useragent
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_useragent_set(Evas_Object *obj, const char *user_agent);
+
+/**
+ * Return current useragent of elm_web object
+ *
+ * @param obj The object
+ * @return Useragent string
+ *
+ * @ingroup Web
+ */
+EAPI const char* elm_web_useragent_get(const Evas_Object *obj);
+
+/**
+ * Gets the status of the tab propagation
+ *
+ * @param obj The web object to query
+ * @return @c EINA_TRUE if tab propagation is enabled, @c EINA_FALSE otherwise
+ *
+ * @see elm_web_tab_propagate_set()
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_tab_propagate_get(const Evas_Object *obj);
+
+/**
+ * Sets whether to use tab propagation
+ *
+ * If tab propagation is enabled, whenever the user presses the Tab key,
+ * Elementary will handle it and switch focus to the next widget.
+ * The default value is disabled, where WebKit will handle the Tab key to
+ * cycle focus though its internal objects, jumping to the next widget
+ * only when that cycle ends.
+ *
+ * @param obj The web object
+ * @param propagate Whether to propagate Tab keys to Elementary or not
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate);
+
+/**
+ * Sets the URI for the web object
+ *
+ * It must be a full URI, with resource included, in the form
+ * http://www.enlightenment.org or file:///tmp/something.html
+ *
+ * @param obj The web object
+ * @param uri The URI to set
+ * @return @c EINA_TRUE if the URI could be set, @c EINA_FALSE if an error occurred.
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_uri_set(Evas_Object *obj, const char *uri);
+
+/**
+ * Gets the current URI for the object
+ *
+ * The returned string must not be freed and is guaranteed to be
+ * stringshared.
+ *
+ * @param obj The web object
+ * @return A stringshared internal string with the current URI, or @c NULL on
+ * failure
+ *
+ * @ingroup Web
+ */
+EAPI const char *elm_web_uri_get(const Evas_Object *obj);
+
+/**
+ * Gets the current title
+ *
+ * The returned string must not be freed and is guaranteed to be
+ * stringshared.
+ *
+ * @param obj The web object
+ * @return A stringshared internal string with the current title, or @c NULL on
+ * failure
+ *
+ * @ingroup Web
+ */
+EAPI const char *elm_web_title_get(const Evas_Object *obj);
+
+/**
+ * Sets the background color to be used by the web object
+ *
+ * This is the color that will be used by default when the loaded page
+ * does not set it's own. Color values are pre-multiplied.
+ *
+ * @param obj The web object
+ * @param r Red component
+ * @param g Green component
+ * @param b Blue component
+ * @param a Alpha component
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a);
+
+/**
+ * Gets the background color to be used by the web object
+ *
+ * This is the color that will be used by default when the loaded page
+ * does not set it's own. Color values are pre-multiplied.
+ *
+ * @param obj The web object
+ * @param r Red component
+ * @param g Green component
+ * @param b Blue component
+ * @param a Alpha component
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
+
+/**
+ * Gets a copy of the currently selected text
+ *
+ * The string returned must be freed by the user when it's done with it.
+ *
+ * @param obj The web object
+ * @return A newly allocated string, or @c NULL if nothing is selected or an
+ * error occurred
+ *
+ * @ingroup Web
+ */
+EAPI const char *elm_web_selection_get(const Evas_Object *obj);
+
+/**
+ * Tells the web object which index in the currently open popup was selected
+ *
+ * When the user handles the popup creation from the "popup,created" signal,
+ * it needs to tell the web object which item was selected by calling this
+ * function with the index corresponding to the item.
+ *
+ * @param obj The web object
+ * @param index The index selected
+ *
+ * @see elm_web_popup_destroy()
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_popup_selected_set(Evas_Object *obj, int index);
+
+/**
+ * Dismisses an open dropdown popup
+ *
+ * When the popup from a dropdown widget is to be dismissed, either after
+ * selecting an option or to cancel it, this function must be called, which
+ * will later emit an "popup,willdelete" signal to notify the user that
+ * any memory and objects related to this popup can be freed.
+ *
+ * @param obj The web object
+ * @return @c EINA_TRUE if the menu was successfully destroyed, or @c EINA_FALSE
+ * if there was no menu to destroy
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_popup_destroy(Evas_Object *obj);
+
+/**
+ * Searches the given string in a document.
+ *
+ * @param obj The web object where to search the text
+ * @param string String to search
+ * @param case_sensitive If search should be case sensitive or not
+ * @param forward If search is from cursor and on or backwards
+ * @param wrap If search should wrap at the end
+ *
+ * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not
+ * or failure
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
+
+/**
+ * Marks matches of the given string in a document.
+ *
+ * @param obj The web object where to search text
+ * @param string String to match
+ * @param case_sensitive If match should be case sensitive or not
+ * @param highlight If matches should be highlighted
+ * @param limit Maximum amount of matches, or zero to unlimited
+ *
+ * @return number of matched @a string
+ *
+ * @ingroup Web
+ */
+EAPI unsigned int elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
+
+/**
+ * Clears all marked matches in the document
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_text_matches_unmark_all(Evas_Object *obj);
+
+/**
+ * Sets whether to highlight the matched marks
+ *
+ * If enabled, marks set with elm_web_text_matches_mark() will be
+ * highlighted.
+ *
+ * @param obj The web object
+ * @param highlight Whether to highlight the marks or not
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight);
+
+/**
+ * Gets whether highlighting marks is enabled
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE is marks are set to be highlighted, @c EINA_FALSE
+ * otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_text_matches_highlight_get(const Evas_Object *obj);
+
+/**
+ * Gets the overall loading progress of the page
+ *
+ * Returns the estimated loading progress of the page, with a value between
+ * 0.0 and 1.0. This is an estimated progress accounting for all the frames
+ * included in the page.
+ *
+ * @param obj The web object
+ *
+ * @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on
+ * failure
+ *
+ * @ingroup Web
+ */
+EAPI double elm_web_load_progress_get(const Evas_Object *obj);
+
+/**
+ * Stops loading the current page
+ *
+ * Cancels the loading of the current page in the web object. This will
+ * cause a "load,error" signal to be emitted, with the is_cancellation
+ * flag set to @c EINA_TRUE.
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE if the cancel was successful, @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_stop(Evas_Object *obj);
+
+/**
+ * Requests a reload of the current document in the object
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_reload(Evas_Object *obj);
+
+/**
+ * Requests a reload of the current document, avoiding any existing caches
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_reload_full(Evas_Object *obj);
+
+/**
+ * Goes back one step in the browsing history
+ *
+ * This is equivalent to calling elm_web_object_navigate(obj, -1);
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @see elm_web_history_enabled_set()
+ * @see elm_web_back_possible()
+ * @see elm_web_forward()
+ * @see elm_web_navigate()
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_back(Evas_Object *obj);
+
+/**
+ * Goes forward one step in the browsing history
+ *
+ * This is equivalent to calling elm_web_object_navigate(obj, 1);
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @see elm_web_history_enabled_set()
+ * @see elm_web_forward_possible_get()
+ * @see elm_web_back()
+ * @see elm_web_navigate()
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_forward(Evas_Object *obj);
+
+/**
+ * Jumps the given number of steps in the browsing history
+ *
+ * The @p steps value can be a negative integer to back in history, or a
+ * positive to move forward.
+ *
+ * @param obj The web object
+ * @param steps The number of steps to jump
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE on error or if not enough
+ * history exists to jump the given number of steps
+ *
+ * @see elm_web_history_enabled_set()
+ * @see elm_web_back()
+ * @see elm_web_forward()
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_navigate(Evas_Object *obj, int steps);
+
+/**
+ * Queries whether it's possible to go back in history
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE if it's possible to back in history, @c EINA_FALSE
+ * otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_back_possible_get(Evas_Object *obj);
+
+/**
+ * Queries whether it's possible to go forward in history
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE if it's possible to forward in history, @c EINA_FALSE
+ * otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_forward_possible_get(Evas_Object *obj);
+
+/**
+ * Queries whether it's possible to jump the given number of steps
+ *
+ * The @p steps value can be a negative integer to back in history, or a
+ * positive to move forward.
+ *
+ * @param obj The web object
+ * @param steps The number of steps to check for
+ *
+ * @return @c EINA_TRUE if enough history exists to perform the given jump,
+ * @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_navigate_possible_get(Evas_Object *obj, int steps);
+
+/**
+ * Gets whether browsing history is enabled for the given object
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE if history is enabled, @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_history_enabled_get(const Evas_Object *obj);
+
+/**
+ * Enables or disables the browsing history
+ *
+ * @param obj The web object
+ * @param enabled Whether to enable or disable the browsing history
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_history_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * Sets the zoom level of the web object
+ *
+ * Zoom level matches the Webkit API, so 1.0 means normal zoom, with higher
+ * values meaning zoom in and lower meaning zoom out. This function will
+ * only affect the zoom level if the mode set with elm_web_zoom_mode_set()
+ * is ::ELM_WEB_ZOOM_MODE_MANUAL.
+ *
+ * @param obj The web object
+ * @param zoom The zoom level to set
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_zoom_set(Evas_Object *obj, double zoom);
+
+/**
+ * Gets the current zoom level set on the web object
+ *
+ * Note that this is the zoom level set on the web object and not that
+ * of the underlying Webkit one. In the ::ELM_WEB_ZOOM_MODE_MANUAL mode,
+ * the two zoom levels should match, but for the other two modes the
+ * Webkit zoom is calculated internally to match the chosen mode without
+ * changing the zoom level set for the web object.
+ *
+ * @param obj The web object
+ *
+ * @return The zoom level set on the object
+ *
+ * @ingroup Web
+ */
+EAPI double elm_web_zoom_get(const Evas_Object *obj);
+
+/**
+ * Shows the given region in the web object
+ *
+ * @param obj The web object
+ * @param x The x coordinate of the region to show
+ * @param y The y coordinate of the region to show
+ * @param w The width of the region to show
+ * @param h The height of the region to show
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_region_show(Evas_Object *obj, int x, int y, int w, int h);
+
+/**
+ * Brings in the region to the visible area
+ *
+ * Like elm_web_region_show(), but it animates the scrolling of the object
+ * to show the area
+ *
+ * @param obj The web object
+ * @param x The x coordinate of the region to show
+ * @param y The y coordinate of the region to show
+ * @param w The width of the region to show
+ * @param h The height of the region to show
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_region_bring_in(Evas_Object *obj, int x, int y, int w, int h);
+
+/**
+ * Sets the default dialogs to use an Inwin instead of a normal window
+ *
+ * If set, then the default implementation for the JavaScript dialogs and
+ * file selector will be opened in an Inwin. Otherwise they will use a
+ * normal separated window.
+ *
+ * @param obj The web object
+ * @param value @c EINA_TRUE to use Inwin, @c EINA_FALSE to use a normal window
+ *
+ * @ingroup Web
+ */
+EAPI void elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
+
+/**
+ * Gets whether Inwin mode is set for the current object
+ *
+ * @param obj The web object
+ *
+ * @return @c EINA_TRUE if Inwin mode is set, @c EINA_FALSE otherwise
+ *
+ * @ingroup Web
+ */
+EAPI Eina_Bool elm_web_inwin_mode_get(const Evas_Object *obj);