elm: change elm_object_content_part_set/get/unset to elm_object_part_content_set...
[framework/uifw/elementary.git] / src / lib / Elementary.h.in
index baaf172..f1f99ef 100644 (file)
@@ -312,6 +312,7 @@ contact with the developers and maintainers.
 @ELM_EDBUS_DEF@ ELM_EDBUS
 @ELM_EFREET_DEF@ ELM_EFREET
 @ELM_ETHUMB_DEF@ ELM_ETHUMB
+@ELM_WEB_DEF@ ELM_WEB
 @ELM_EMAP_DEF@ ELM_EMAP
 @ELM_DEBUG_DEF@ ELM_DEBUG
 @ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H
@@ -367,6 +368,7 @@ contact with the developers and maintainers.
 #include <Ecore_Evas.h>
 #include <Ecore_File.h>
 #include <Ecore_IMF.h>
+#include <Ecore_Con.h>
 #include <Edje.h>
 
 #ifdef ELM_EDBUS
@@ -413,6 +415,11 @@ contact with the developers and maintainers.
 # endif
 #endif /* ! _WIN32 */
 
+#ifdef _WIN32
+# define EAPI_MAIN
+#else
+# define EAPI_MAIN EAPI
+#endif
 
 /* allow usage from c++ */
 #ifdef __cplusplus
@@ -887,9 +894,24 @@ extern "C" {
 
    EAPI Eina_Bool    elm_need_efreet(void);
    EAPI Eina_Bool    elm_need_e_dbus(void);
+
+   /**
+    * This must be called before any other function that deals with
+    * elm_thumb objects or ethumb_client instances.
+    *
+    * @ingroup Thumb
+    */
    EAPI Eina_Bool    elm_need_ethumb(void);
 
    /**
+    * This must be called before any other function that deals with
+    * elm_web objects or ewk_view instances.
+    *
+    * @ingroup Web
+    */
+   EAPI Eina_Bool    elm_need_web(void);
+
+   /**
     * Set a new policy's value (for a given policy group/identifier).
     *
     * @param policy policy identifier, as in @ref Elm_Policy.
@@ -951,12 +973,38 @@ extern "C" {
     * @param label The new text of the label
     *
     * @note Elementary objects may have many labels (e.g. Action Slider)
+    * @deprecated Use elm_object_part_text_set() instead.
+    * @ingroup General
+    */
+   EINA_DEPRECATED EAPI void elm_object_text_part_set(Evas_Object *obj, const char *part, const char *label);
+
+   /**
+    * Set a label of an object
+    *
+    * @param obj The Elementary object
+    * @param part The text part name to set (NULL for the default label)
+    * @param label The new text of the label
+    *
+    * @note Elementary objects may have many labels (e.g. Action Slider)
     *
     * @ingroup General
     */
-   EAPI void         elm_object_text_part_set(Evas_Object *obj, const char *part, const char *label);
+   EAPI void elm_object_part_text_set(Evas_Object *obj, const char *part, const char *label);
+
+#define elm_object_text_set(obj, label) elm_object_part_text_set((obj), NULL, (label))
 
-#define elm_object_text_set(obj, label) elm_object_text_part_set((obj), NULL, (label))
+   /**
+    * Get a label of an object
+    *
+    * @param obj The Elementary object
+    * @param part The text part name to get (NULL for the default label)
+    * @return text of the label or NULL for any error
+    *
+    * @note Elementary objects may have many labels (e.g. Action Slider)
+    * @deprecated Use elm_object_part_text_get() instead.
+    * @ingroup General
+    */
+   EINA_DEPRECATED EAPI const char  *elm_object_text_part_get(const Evas_Object *obj, const char *part);
 
    /**
     * Get a label of an object
@@ -969,9 +1017,69 @@ extern "C" {
     *
     * @ingroup General
     */
-   EAPI const char  *elm_object_text_part_get(const Evas_Object *obj, const char *part);
+   EAPI const char  *elm_object_part_text_get(const Evas_Object *obj, const char *part);
+
+#define elm_object_text_get(obj) elm_object_part_text_get((obj), NULL)
+
+   /**
+    * Set the text for an objects' part, marking it as translatable.
+    *
+    * The string to set as @p text must be the original one. Do not pass the
+    * return of @c gettext() here. Elementary will translate the string
+    * internally and set it on the object using elm_object_part_text_set(),
+    * also storing the original string so that it can be automatically
+    * translated when the language is changed with elm_language_set().
+    *
+    * The @p domain will be stored along to find the translation in the
+    * correct catalog. It can be NULL, in which case it will use whatever
+    * domain was set by the application with @c textdomain(). This is useful
+    * in case you are building a library on top of Elementary that will have
+    * its own translatable strings, that should not be mixed with those of
+    * programs using the library.
+    *
+    * @param obj The object containing the text part
+    * @param part The name of the part to set
+    * @param domain The translation domain to use
+    * @param text The original, non-translated text to set
+    *
+    * @ingroup General
+    */
+   EAPI void         elm_object_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text);
+
+#define elm_object_domain_translatable_text_set(obj, domain, text) elm_object_domain_translatable_text_part_set((obj), NULL, (domain), (text))
+
+#define elm_object_translatable_text_set(obj, text) elm_object_domain_translatable_text_part_set((obj), NULL, NULL, (text))
+
+   /**
+    * Gets the original string set as translatable for an object
+    *
+    * When setting translated strings, the function elm_object_part_text_get()
+    * will return the translation returned by @c gettext(). To get the
+    * original string use this function.
+    *
+    * @param obj The object
+    * @param part The name of the part that was set
+    *
+    * @return The original, untranslated string
+    *
+    * @ingroup General
+    */
+   EAPI const char  *elm_object_translatable_text_part_get(const Evas_Object *obj, const char *part);
 
-#define elm_object_text_get(obj) elm_object_text_part_get((obj), NULL)
+#define elm_object_translatable_text_get(obj) elm_object_translatable_text_part_get((obj), NULL)
+
+   /**
+    * Set a content of an object
+    *
+    * @param obj The Elementary object
+    * @param part The content part name to set (NULL for the default content)
+    * @param content The new content of the object
+    *
+    * @note Elementary objects may have many contents
+    * @deprecated Use elm_object_part_content_set instead.
+    * @ingroup General
+    */
+   EINA_DEPRECATED EAPI void elm_object_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content);
 
    /**
     * Set a content of an object
@@ -984,9 +1092,22 @@ extern "C" {
     *
     * @ingroup General
     */
-   EAPI void elm_object_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content);
+   EAPI void elm_object_part_content_set(Evas_Object *obj, const char *part, Evas_Object *content);
+
+#define elm_object_content_set(obj, content) elm_object_part_content_set((obj), NULL, (content))
 
-#define elm_object_content_set(obj, content) elm_object_content_part_set((obj), NULL, (content))
+   /**
+    * Get a content of an object
+    *
+    * @param obj The Elementary object
+    * @param item The content part name to get (NULL for the default content)
+    * @return content of the object or NULL for any error
+    *
+    * @note Elementary objects may have many contents
+    * @deprecated Use elm_object_part_content_get instead.
+    * @ingroup General
+    */
+   EINA_DEPRECATED EAPI Evas_Object *elm_object_content_part_get(const Evas_Object *obj, const char *part);
 
    /**
     * Get a content of an object
@@ -999,9 +1120,21 @@ extern "C" {
     *
     * @ingroup General
     */
-   EAPI Evas_Object *elm_object_content_part_get(const Evas_Object *obj, const char *part);
+   EAPI Evas_Object *elm_object_part_content_get(const Evas_Object *obj, const char *part);
 
-#define elm_object_content_get(obj) elm_object_content_part_get((obj), NULL)
+#define elm_object_content_get(obj) elm_object_part_content_get((obj), NULL)
+
+   /**
+    * Unset a content of an object
+    *
+    * @param obj The Elementary object
+    * @param item The content part name to unset (NULL for the default content)
+    *
+    * @note Elementary objects may have many contents
+    * @deprecated Use elm_object_part_content_unset instead.
+    * @ingroup General
+    */
+   EINA_DEPRECATED EAPI Evas_Object *elm_object_content_part_unset(Evas_Object *obj, const char *part);
 
    /**
     * Unset a content of an object
@@ -1013,9 +1146,21 @@ extern "C" {
     *
     * @ingroup General
     */
-   EAPI Evas_Object *elm_object_content_part_unset(Evas_Object *obj, const char *part);
+   EAPI Evas_Object *elm_object_part_content_unset(Evas_Object *obj, const char *part);
 
-#define elm_object_content_unset(obj) elm_object_content_part_unset((obj), NULL)
+#define elm_object_content_unset(obj) elm_object_part_content_unset((obj), NULL)
+
+   /**
+    * Get the widget object's handle which contains a given item
+    *
+    * @param item The Elementary object item
+    * @return The widget object
+    *
+    * @note This returns the widget object itself that an item belongs to.
+    *
+    * @ingroup General
+    */
+   EAPI Evas_Object *elm_object_item_object_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
 
    /**
     * Set a content of an object item
@@ -1089,6 +1234,27 @@ extern "C" {
     */
    EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
 
+   /**
+    * Set the text to read out when in accessibility mode
+    *
+    * @param obj The object which is to be described
+    * @param txt The text that describes the widget to people with poor or no vision
+    *
+    * @ingroup General
+    */
+   EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt);
+
+   /**
+    * Set the text to read out when in accessibility mode
+    *
+    * @param it The object item which is to be described
+    * @param txt The text that describes the widget to people with poor or no vision
+    *
+    * @ingroup General
+    */
+   EAPI void elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt);
+
+
 #define elm_object_item_text_get(it) elm_object_item_text_part_get((it), NULL)
 
    /**
@@ -1113,7 +1279,7 @@ extern "C" {
 
    /**
     * Get the data associated with an object item
-    * @param it The object item
+    * @param it The Elementary object item
     * @return The data associated with @p it
     *
     * @ingroup General
@@ -1122,7 +1288,7 @@ extern "C" {
 
    /**
     * Set the data associated with an object item
-    * @param it The object item
+    * @param it The Elementary object item
     * @param data The data to be associated with @p it
     *
     * @ingroup General
@@ -1405,6 +1571,38 @@ extern "C" {
     */
 
    /**
+    * Get the global scaling factor
+    *
+    * This gets the globally configured scaling factor that is applied to all
+    * objects.
+    *
+    * @return The scaling factor
+    * @ingroup Scaling
+    */
+   EAPI double       elm_scale_get(void);
+
+   /**
+    * Set the global scaling factor
+    *
+    * This sets the globally configured scaling factor that is applied to all
+    * objects.
+    *
+    * @param scale The scaling factor to set
+    * @ingroup Scaling
+    */
+   EAPI void         elm_scale_set(double scale);
+
+   /**
+    * Set the global scaling factor for all applications on the display
+    *
+    * This sets the globally configured scaling factor that is applied to all
+    * objects for all applications.
+    * @param scale The scaling factor to set
+    * @ingroup Scaling
+    */
+   EAPI void         elm_scale_all_set(double scale);
+
+   /**
     * Set the scaling factor for a given Elementary object
     *
     * @param obj The Elementary to operate on
@@ -1501,6 +1699,9 @@ extern "C" {
     * @{
     */
 
+   EAPI Eina_Bool    elm_mirrored_get(void);
+   EAPI void         elm_mirrored_set(Eina_Bool mirrored);
+
    /**
     * Get the system mirrored mode. This determines the default mirrored mode
     * of widgets.
@@ -1696,9 +1897,6 @@ extern "C" {
     *
     * @{
     */
-   EAPI double       elm_scale_get(void);
-   EAPI void         elm_scale_set(double scale);
-   EAPI void         elm_scale_all_set(double scale);
 
    /**
     * Save back Elementary's configuration, so that it will persist on
@@ -1713,8 +1911,7 @@ extern "C" {
     * configuration file.
     *
     */
-   EAPI Eina_Bool    elm_mirrored_get(void);
-   EAPI void         elm_mirrored_set(Eina_Bool mirrored);
+   EAPI Eina_Bool    elm_config_save(void);
 
    /**
     * Reload Elementary's configuration, bounded to current selected
@@ -1725,10 +1922,9 @@ extern "C" {
     *
     * Useful when you want to force reloading of configuration values for
     * a profile. If one removes user custom configuration directories,
-    * for example, it will force a reload with system values insted.
+    * for example, it will force a reload with system values instead.
     *
     */
-   EAPI Eina_Bool    elm_config_save(void);
    EAPI void         elm_config_reload(void);
 
    /**
@@ -1855,6 +2051,8 @@ extern "C" {
     * @li "opengl_sdl"
     * @li "buffer"
     * @li "ews"
+    * @li "opengl_cocoa"
+    * @li "psl1ght"
     *
     * @{
     */
@@ -2221,6 +2419,25 @@ extern "C" {
    EAPI Eina_Bool        elm_object_focus_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
+    * Set/unset focus to a given Elementary object.
+    *
+    * @param obj The Elementary object to operate on.
+    * @param enable @c EINA_TRUE Set focus to a given object,
+    *               @c EINA_FALSE Unset focus to a given object.
+    *
+    * @note When you set focus to this object, if it can handle focus, will
+    * take the focus away from the one who had it previously and will, for
+    * now on, be the one receiving input events. Unsetting focus will remove
+    * the focus from @p obj, passing it back to the previous element in the
+    * focus chain list.
+    *
+    * @see elm_object_focus_get(), elm_object_focus_custom_chain_get()
+    *
+    * @ingroup Focus
+    */
+   EAPI void             elm_object_focus_set(Evas_Object *obj, Eina_Bool focus) EINA_ARG_NONNULL(1);
+
+   /**
     * Make a given Elementary object the focused one.
     *
     * @param obj The Elementary object to make focused.
@@ -2934,8 +3151,6 @@ extern "C" {
     * @ingroup General
     */
    EAPI void             elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source) EINA_ARG_NONNULL(1);
-   EAPI void             elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) EINA_ARG_NONNULL(1, 4);
-   EAPI void            *elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) EINA_ARG_NONNULL(1, 4);
 
    /**
     * Add a callback for a signal emitted by widget edje object.
@@ -3509,6 +3724,8 @@ extern "C" {
     * @li "sdl-16", "software-16-sdl", "software_16_sdl" (Rendering to SDL
     * buffer with 16bit software renderer)
     * @li "ews" (rendering to EWS - Ecore + Evas Single Process Windowing System)
+    * @li "gl-cocoa", "gl_cocoa", "opengl-cocoa", "opengl_cocoa" (OpenGL rendering in Cocoa)
+    * @li "psl1ght" (PS3 rendering using PSL1GHT)
     *
     * All engines use a simple string to select the engine to render, EXCEPT
     * the "shot" engine. This actually encodes the output of the virtual
@@ -3665,6 +3882,22 @@ extern "C" {
     */
    EAPI Evas_Object *elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type);
    /**
+    * Adds a window object with standard setup
+    *
+    * @param name The name of the window
+    * @param title The title for the window
+    *
+    * This creates a window like elm_win_add() but also puts in a standard
+    * background with elm_bg_add(), as well as setting the window title to
+    * @p title. The window type created is of type ELM_WIN_BASIC, with NULL
+    * as the parent widget.
+    * 
+    * @return The created object, or NULL on failure
+    *
+    * @see elm_win_add()
+    */
+   EAPI Evas_Object *elm_win_util_standard_add(const char *name, const char *title);
+   /**
     * Add @p subobj as a resize object of window @p obj.
     *
     *
@@ -4367,7 +4600,7 @@ extern "C" {
     * centered, scaled or stretched.
     * 
     * Default contents parts of the bg widget that you can use for are:
-    * @li "elm.swallow.content" - overlay of the bg
+    * @li "overlay" - overlay of the bg
     *
     * Here is some sample code using it:
     * @li @ref bg_01_example_page
@@ -4482,6 +4715,8 @@ extern "C" {
     * deleted, even if you set the new one to NULL. If you want to keep that
     * old content object, use the elm_bg_overlay_unset() function.
     *
+    * @deprecated use elm_object_part_content_set() instead
+    *
     * @ingroup Bg
     */
 
@@ -4495,9 +4730,11 @@ extern "C" {
     *
     * Return the content object which is set for this widget
     *
+    * @deprecated use elm_object_part_content_get() instead
+    *
     * @ingroup Bg
     */
-   EAPI Evas_Object  *elm_bg_overlay_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object  *elm_bg_overlay_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Get the overlay object used for the background object.
@@ -4507,6 +4744,8 @@ extern "C" {
     *
     * Unparent and return the overlay object which was set for this widget
     *
+    * @deprecated use elm_object_part_content_unset() instead
+    *
     * @ingroup Bg
     */
    EAPI Evas_Object  *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -4688,7 +4927,7 @@ extern "C" {
     * @ingroup Icon
     */
    EAPI void                  elm_icon_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
-   EAPI void                  elm_icon_thumb_set(const Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
+   EAPI void                  elm_icon_thumb_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
    /**
     * Set the icon by icon standards names.
     *
@@ -4901,6 +5140,15 @@ extern "C" {
     */
    EAPI int                   elm_icon_prescale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
+    * Gets the image object of the icon. DO NOT MODIFY THIS.
+    *
+    * @param obj The icon object
+    * @return The internal icon object
+    *
+    * @ingroup Icon
+    */
+   EAPI Evas_Object          *elm_icon_object_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
     * Sets the icon lookup order used by elm_icon_standard_set().
     *
     * @param obj The icon object
@@ -4927,6 +5175,14 @@ extern "C" {
     */
    EAPI Elm_Icon_Lookup_Order elm_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
+    * Enable or disable preloading of the icon
+    *
+    * @param obj The icon object
+    * @param disable If EINA_TRUE, preloading will be disabled
+    * @ingroup Icon
+    */
+   EAPI void                  elm_icon_preload_set(Evas_Object *obj, Eina_Bool disable) EINA_ARG_NONNULL(1);
+   /**
     * Get if the icon supports animation or not.
     *
     * @param obj The icon object
@@ -4938,7 +5194,7 @@ extern "C" {
     * elm_icon_animated_XXX APIs won't work.
     * @ingroup Icon
     */
-   EAPI Eina_Bool             elm_icon_anim_available_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool           elm_icon_animated_available_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Set animation mode of the icon.
     *
@@ -4953,7 +5209,7 @@ extern "C" {
     * Set it to EINA_TRUE when the icon needs to be animated.
     * @ingroup Icon
     */
-   EAPI void                  elm_icon_anim_set(Evas_Object *obj, Eina_Bool anim) EINA_ARG_NONNULL(1);
+   EAPI void                elm_icon_animated_set(Evas_Object *obj, Eina_Bool animated) EINA_ARG_NONNULL(1);
    /**
     * Get animation mode of the icon.
     *
@@ -4962,7 +5218,7 @@ extern "C" {
     * @see elm_icon_animated_set
     * @ingroup Icon
     */
-   EAPI Eina_Bool             elm_icon_anim_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool           elm_icon_animated_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Set animation play mode of the icon.
     *
@@ -4979,7 +5235,7 @@ extern "C" {
     *    Then animation will be stopped and vice versa
     * @ingroup Icon
     */
-   EAPI void                  elm_icon_anim_play_set(Evas_Object *obj, Eina_Bool play) EINA_ARG_NONNULL(1);
+   EAPI void                elm_icon_animated_play_set(Evas_Object *obj, Eina_Bool play) EINA_ARG_NONNULL(1);
    /**
     * Get animation play mode of the icon.
     *
@@ -4989,13 +5245,61 @@ extern "C" {
     * @see elm_icon_animated_play_get
     * @ingroup Icon
     */
-   EAPI Eina_Bool             elm_icon_anim_play_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool           elm_icon_animated_play_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /* compatibility code to avoid API and ABI breaks */
+   EINA_DEPRECATED EAPI extern inline void elm_icon_anim_set(Evas_Object *obj, Eina_Bool animated)
+     {
+        elm_icon_animated_set(obj, animated);
+     }
+
+   EINA_DEPRECATED EAPI extern inline Eina_Bool elm_icon_anim_get(const Evas_Object *obj)
+     {
+        return elm_icon_animated_get(obj);
+     }
+
+   EINA_DEPRECATED EAPI extern inline void elm_icon_anim_play_set(Evas_Object *obj, Eina_Bool play)
+     {
+        elm_icon_animated_play_set(obj, play);
+     }
+
+   EINA_DEPRECATED EAPI extern inline Eina_Bool elm_icon_anim_play_get(const Evas_Object *obj)
+     {
+        return elm_icon_animated_play_get(obj);
+     }
 
    /**
     * @}
     */
 
    /**
+    * @defgroup Image Image
+    *
+    * @image html img/widget/image/preview-00.png
+    * @image latex img/widget/image/preview-00.eps
+
+    *
+    * An object that allows one to load an image file to it. It can be used
+    * anywhere like any other elementary widget.
+    *
+    * This widget provides most of the functionality provided from @ref Bg or @ref
+    * Icon, but with a slightly different API (use the one that fits better your
+    * needs).
+    *
+    * The features not provided by those two other image widgets are:
+    * @li allowing to get the basic @c Evas_Object with elm_image_object_get();
+    * @li change the object orientation with elm_image_orient_set();
+    * @li and turning the image editable with elm_image_editable_set().
+    *
+    * Signals that you can add callbacks for are:
+    *
+    * @li @c "clicked" - This is called when a user has clicked the image
+    *
+    * An example of usage for this API follows:
+    * @li @ref tutorial_image
+    */
+
+   /**
     * @addtogroup Image
     * @{
     */
@@ -5334,16 +5638,11 @@ extern "C" {
     * @}
     */
 
-   /**
-    * @defgroup GLView
-    *
-    * A simple GLView widget that allows GL rendering.
-    *
-    * Signals that you can add callbacks for are:
-    *
-    * @{
-    */
-   typedef void (*Elm_GLView_Func)(Evas_Object *obj);
+   /* glview */
+   typedef void (*Elm_GLView_Func_Cb)(Evas_Object *obj);
+
+   /* old API compatibility */
+   typedef Elm_GLView_Func_Cb Elm_GLView_Func;
 
    typedef enum _Elm_GLView_Mode
      {
@@ -5352,6 +5651,11 @@ extern "C" {
         ELM_GLVIEW_STENCIL = 4
      } Elm_GLView_Mode;
 
+   /**
+    * Defines a policy for the glview resizing.
+    *
+    * @note Default is ELM_GLVIEW_RESIZE_POLICY_RECREATE
+    */
    typedef enum _Elm_GLView_Resize_Policy
      {
         ELM_GLVIEW_RESIZE_POLICY_RECREATE = 1,      /**< Resize the internal surface along with the image */
@@ -5364,6 +5668,15 @@ extern "C" {
         ELM_GLVIEW_RENDER_POLICY_ALWAYS    = 2      /**< Render always even when it is not visible */
      } Elm_GLView_Render_Policy;
 
+   /**
+    * @defgroup GLView
+    *
+    * A simple GLView widget that allows GL rendering.
+    *
+    * Signals that you can add callbacks for are:
+    *
+    * @{
+    */
 
    /**
     * Add a new glview to the parent
@@ -5467,7 +5780,7 @@ extern "C" {
     *
     * @ingroup GLView
     */
-   EAPI void             elm_glview_init_func_set(Evas_Object *obj, Elm_GLView_Func func) EINA_ARG_NONNULL(1);
+   EAPI void             elm_glview_init_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
 
    /**
     * Set the render function that runs in the main loop.
@@ -5479,7 +5792,7 @@ extern "C" {
     *
     * @ingroup GLView
     */
-   EAPI void             elm_glview_del_func_set(Evas_Object *obj, Elm_GLView_Func func) EINA_ARG_NONNULL(1);
+   EAPI void             elm_glview_del_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
 
    /**
     * Set the resize function that gets called when resize happens.
@@ -5489,7 +5802,7 @@ extern "C" {
     *
     * @ingroup GLView
     */
-   EAPI void             elm_glview_resize_func_set(Evas_Object *obj, Elm_GLView_Func func) EINA_ARG_NONNULL(1);
+   EAPI void             elm_glview_resize_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
 
    /**
     * Set the render function that runs in the main loop.
@@ -5499,7 +5812,7 @@ extern "C" {
     *
     * @ingroup GLView
     */
-   EAPI void             elm_glview_render_func_set(Evas_Object *obj, Elm_GLView_Func func) EINA_ARG_NONNULL(1);
+   EAPI void             elm_glview_render_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
 
    /**
     * Notifies that there has been changes in the GLView.
@@ -5518,6 +5831,12 @@ extern "C" {
    /**
     * @defgroup Box Box
     *
+    * @image html img/widget/box/preview-00.png
+    * @image latex img/widget/box/preview-00.eps width=\textwidth
+    *
+    * @image html img/box.png
+    * @image latex img/box.eps width=\textwidth
+    *
     * A box arranges objects in a linear fashion, governed by a layout function
     * that defines the details of this arrangement.
     *
@@ -5618,7 +5937,7 @@ extern "C" {
     * Get the horizontal orientation
     *
     * @param obj The box object
-    * @return EINA_TRUE if the box is set to horizintal mode, EINA_FALSE otherwise
+    * @return EINA_TRUE if the box is set to horizontal mode, EINA_FALSE otherwise
     */
    EAPI Eina_Bool           elm_box_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
@@ -5819,6 +6138,19 @@ extern "C" {
    EAPI void                elm_box_align_get(const Evas_Object *obj, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
 
    /**
+    * Force the box to recalculate its children packing.
+    *
+    * If any children was added or removed, box will not calculate the
+    * values immediately rather leaving it to the next main loop
+    * iteration. While this is great as it would save lots of
+    * recalculation, whenever you need to get the position of a just
+    * added item you must force recalculate before doing so.
+    *
+    * @param obj The box object.
+    */
+   EAPI void                 elm_box_recalculate(Evas_Object *obj);
+
+   /**
     * Set the layout defining function to be used by the box
     *
     * Whenever anything changes that requires the box in @p obj to recalculate
@@ -5935,9 +6267,12 @@ extern "C" {
    /**
     * @defgroup Button Button
     *
-    * @image html  widget/button/preview-00.png
-    * @image html  widget/button/preview-01.png
-    * @image html  widget/button/preview-02.png
+    * @image html img/widget/button/preview-00.png
+    * @image latex img/widget/button/preview-00.eps
+    * @image html img/widget/button/preview-01.png
+    * @image latex img/widget/button/preview-01.eps
+    * @image html img/widget/button/preview-02.png
+    * @image latex img/widget/button/preview-02.eps
     *
     * This is a push-button. Press it and run some function. It can contain
     * a simple label and icon object and it also has an autorepeat feature.
@@ -5959,6 +6294,12 @@ extern "C" {
     * continuous look across its options.
     * @li hoversel_vertical_entry: Another internal for @ref Hoversel.
     *
+    * Default contents parts of the button widget that you can use for are:
+    * @li "icon" - A icon of the button
+    *
+    * Default text parts of the button widget that you can use for are:
+    * @li "default" - Label of the button
+    *
     * Follow through a complete example @ref button_example_01 "here".
     * @{
     */
@@ -6042,6 +6383,7 @@ extern "C" {
     *
     * @param obj The button object
     * @param icon The icon object for the button
+    * @deprecated use elm_object_part_content_set() instead.
     */
    EAPI void         elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
@@ -6054,7 +6396,7 @@ extern "C" {
     * @param obj The button object
     * @return The icon object that is being used
     *
-    * @see elm_button_icon_unset()
+    * @deprecated use elm_object_part_content_get() instead
     */
    EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
@@ -6067,6 +6409,7 @@ extern "C" {
     *
     * @param obj The button object
     * @return The icon object that was being used
+    * @deprecated use elm_object_part_content_unset() instead.
     */
    EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
@@ -6846,11 +7189,8 @@ extern "C" {
     * @note When Elementary is in desktop mode the thumbscroll(a.k.a.
     * fingerscroll) won't work.
     *
-    * To set/get/unset the content of the panel, you can use
-    * elm_object_content_set/get/unset APIs.
-    * Once the content object is set, a previously set one will be deleted.
-    * If you want to keep that old content object, use the
-    * elm_object_content_unset() function
+    * Default contents parts of the scroller widget that you can use for are:
+    * @li "default" - A content of the scroller
     *
     * In @ref tutorial_scroller you'll find an example of how to use most of
     * this API.
@@ -6884,7 +7224,7 @@ extern "C" {
     * Once the content object is set, a previously set one will be deleted.
     * If you want to keep that old content object, use the
     * elm_scroller_content_unset() function.
-    * @deprecated See elm_object_content_set()
+    * @deprecated use elm_object_content_set() instead
     */
    EAPI void         elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1);
    /**
@@ -7054,42 +7394,120 @@ extern "C" {
     */
    EAPI void         elm_scroller_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize) EINA_ARG_NONNULL(1);
    /**
-    * @brief Show a specific virtual region within the scroller content object.
+    * @brief Get scroll current page number.
     *
     * @param obj The scroller object
-    * @param x X coordinate of the region
-    * @param y Y coordinate of the region
-    * @param w Width of the region
-    * @param h Height of the region
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
     *
-    * This will ensure all (or part if it does not fit) of the designated
-    * region in the virtual content object (0, 0 starting at the top-left of the
-    * virtual content object) is shown within the scroller. Unlike
-    * elm_scroller_region_show(), this allow the scroller to "smoothly slide"
-    * to this location (if configuration in general calls for transitions). It
-    * may not jump immediately to the new location and make take a while and
-    * show other content along the way.
+    * The page number starts from 0. 0 is the first page.
+    * Current page means the page which meets the top-left of the viewport.
+    * If there are two or more pages in the viewport, it returns the number of the page
+    * which meets the top-left of the viewport.
     *
-    * @see elm_scroller_region_show()
+    * @see elm_scroller_last_page_get()
+    * @see elm_scroller_page_show()
+    * @see elm_scroller_page_brint_in()
     */
-   EAPI void         elm_scroller_region_bring_in(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
+   EAPI void         elm_scroller_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
    /**
-    * @brief Set event propagation on a scroller
+    * @brief Get scroll last page number.
     *
     * @param obj The scroller object
-    * @param propagation If propagation is enabled or not
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
     *
-    * This enables or disabled event propagation from the scroller content to
-    * the scroller and its parent. By default event propagation is disabled.
+    * The page number starts from 0. 0 is the first page.
+    * This returns the last page number among the pages.
+    *
+    * @see elm_scroller_current_page_get()
+    * @see elm_scroller_page_show()
+    * @see elm_scroller_page_brint_in()
     */
-   EAPI void         elm_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation) EINA_ARG_NONNULL(1);
+   EAPI void         elm_scroller_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
    /**
-    * @brief Get event propagation for a scroller
+    * Show a specific virtual region within the scroller content object by page number.
     *
     * @param obj The scroller object
-    * @return The propagation state
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
     *
-    * This gets the event propagation for a scroller.
+    * 0, 0 of the indicated page is located at the top-left of the viewport.
+    * This will jump to the page directly without animation.
+    *
+    * Example of usage:
+    *
+    * @code
+    * sc = elm_scroller_add(win);
+    * elm_scroller_content_set(sc, content);
+    * elm_scroller_page_relative_set(sc, 1, 0);
+    * elm_scroller_current_page_get(sc, &h_page, &v_page);
+    * elm_scroller_page_show(sc, h_page + 1, v_page);
+    * @endcode
+    *
+    * @see elm_scroller_page_bring_in()
+    */
+   EAPI void         elm_scroller_page_show(Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+   /**
+    * Show a specific virtual region within the scroller content object by page number.
+    *
+    * @param obj The scroller object
+    * @param h_pagenumber The horizontal page number
+    * @param v_pagenumber The vertical page number
+    *
+    * 0, 0 of the indicated page is located at the top-left of the viewport.
+    * This will slide to the page with animation.
+    *
+    * Example of usage:
+    *
+    * @code
+    * sc = elm_scroller_add(win);
+    * elm_scroller_content_set(sc, content);
+    * elm_scroller_page_relative_set(sc, 1, 0);
+    * elm_scroller_last_page_get(sc, &h_page, &v_page);
+    * elm_scroller_page_bring_in(sc, h_page, v_page);
+    * @endcode
+    *
+    * @see elm_scroller_page_show()
+    */
+   EAPI void         elm_scroller_page_bring_in(Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Show a specific virtual region within the scroller content object.
+    *
+    * @param obj The scroller object
+    * @param x X coordinate of the region
+    * @param y Y coordinate of the region
+    * @param w Width of the region
+    * @param h Height of the region
+    *
+    * This will ensure all (or part if it does not fit) of the designated
+    * region in the virtual content object (0, 0 starting at the top-left of the
+    * virtual content object) is shown within the scroller. Unlike
+    * elm_scroller_region_show(), this allow the scroller to "smoothly slide"
+    * to this location (if configuration in general calls for transitions). It
+    * may not jump immediately to the new location and make take a while and
+    * show other content along the way.
+    *
+    * @see elm_scroller_region_show()
+    */
+   EAPI void         elm_scroller_region_bring_in(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set event propagation on a scroller
+    *
+    * @param obj The scroller object
+    * @param propagation If propagation is enabled or not
+    *
+    * This enables or disabled event propagation from the scroller content to
+    * the scroller and its parent. By default event propagation is disabled.
+    */
+   EAPI void         elm_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get event propagation for a scroller
+    *
+    * @param obj The scroller object
+    * @return The propagation state
+    *
+    * This gets the event propagation for a scroller.
     *
     * @see elm_scroller_propagate_events_set()
     */
@@ -7354,207 +7772,11 @@ extern "C" {
     */
 
    /**
-    * @defgroup Toggle Toggle
-    *
-    * @image html img/widget/toggle/preview-00.png
-    * @image latex img/widget/toggle/preview-00.eps
-    *
-    * @brief A toggle is a slider which can be used to toggle between
-    * two values.  It has two states: on and off.
-    *
-    * This widget is deprecated. Please use elm_check_add() instead using the
-    * toggle style like:
-    * 
-    * @code
-    * obj = elm_check_add(parent);
-    * elm_object_style_set(obj, "toggle");
-    * elm_object_text_part_set(obj, "on", "ON");
-    * elm_object_text_part_set(obj, "off", "OFF");
-    * @endcode
-    * 
-    * Signals that you can add callbacks for are:
-    * @li "changed" - Whenever the toggle value has been changed.  Is not called
-    *                 until the toggle is released by the cursor (assuming it
-    *                 has been triggered by the cursor in the first place).
-    *
-    * @ref tutorial_toggle show how to use a toggle.
-    * @{
-    */
-   /**
-    * @brief Add a toggle to @p parent.
-    *
-    * @param parent The parent object
-    *
-    * @return The toggle object
-    */
-   EAPI Evas_Object *elm_toggle_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Sets the label to be displayed with the toggle.
-    *
-    * @param obj The toggle object
-    * @param label The label to be displayed
-    *
-    * @deprecated use elm_object_text_set() instead.
-    */
-   EINA_DEPRECATED EAPI void         elm_toggle_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Gets the label of the toggle
-    *
-    * @param obj  toggle object
-    * @return The label of the toggle
-    *
-    * @deprecated use elm_object_text_get() instead.
-    */
-   EINA_DEPRECATED EAPI const char  *elm_toggle_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Set the icon used for the toggle
-    *
-    * @param obj The toggle object
-    * @param icon The icon object for the button
-    *
-    * Once the icon object is set, a previously set one will be deleted
-    * If you want to keep that old content object, use the
-    * elm_toggle_icon_unset() function.
-    *
-    * @deprecated use elm_object_content_set() instead.
-    */
-   EAPI void         elm_toggle_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Get the icon used for the toggle
-    *
-    * @param obj The toggle object
-    * @return The icon object that is being used
-    *
-    * Return the icon object which is set for this widget.
-    *
-    * @see elm_toggle_icon_set()
-    *
-    * @deprecated use elm_object_content_get() instead.
-    */
-   EAPI Evas_Object *elm_toggle_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Unset the icon used for the toggle
-    *
-    * @param obj The toggle object
-    * @return The icon object that was being used
-    *
-    * Unparent and return the icon object which was set for this widget.
-    *
-    * @see elm_toggle_icon_set()
-    *
-    * @deprecated use elm_object_content_unset() instead.
-    */
-   EAPI Evas_Object *elm_toggle_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Sets the labels to be associated with the on and off states of the toggle.
-    *
-    * @param obj The toggle object
-    * @param onlabel The label displayed when the toggle is in the "on" state
-    * @param offlabel The label displayed when the toggle is in the "off" state
-    *
-    * @deprecated use elm_object_text_part_set() for "on" and "off" parts
-    * instead.
-    */
-   EAPI void         elm_toggle_states_labels_set(Evas_Object *obj, const char *onlabel, const char *offlabel) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Gets the labels associated with the on and off states of the
-    * toggle.
-    *
-    * @param obj The toggle object
-    * @param onlabel A char** to place the onlabel of @p obj into
-    * @param offlabel A char** to place the offlabel of @p obj into
-    *
-    * @deprecated use elm_object_text_part_get() for "on" and "off" parts
-    * instead.
-    */
-   EAPI void         elm_toggle_states_labels_get(const Evas_Object *obj, const char **onlabel, const char **offlabel) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Sets the state of the toggle to @p state.
-    *
-    * @param obj The toggle object
-    * @param state The state of @p obj
-    *
-    * @deprecated use elm_check_state_set() instead.
-    */
-   EAPI void         elm_toggle_state_set(Evas_Object *obj, Eina_Bool state) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Gets the state of the toggle to @p state.
-    *
-    * @param obj The toggle object
-    * @return The state of @p obj
-    *
-    * @deprecated use elm_check_state_get() instead.
-    */
-   EAPI Eina_Bool    elm_toggle_state_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * @brief Sets the state pointer of the toggle to @p statep.
-    *
-    * @param obj The toggle object
-    * @param statep The state pointer of @p obj
-    *
-    * @deprecated use elm_check_state_pointer_set() instead.
-    */
-   EAPI void         elm_toggle_state_pointer_set(Evas_Object *obj, Eina_Bool *statep) EINA_ARG_NONNULL(1);
-   /**
-    * @}
-    */
-
-   /**
-    * @page tutorial_frame Frame example
-    * @dontinclude frame_example_01.c
-    *
-    * In this example we are going to create 4 Frames with different styles and
-    * add a rectangle of different color in each.
-    *
-    * We start we the usual setup code:
-    * @until show(bg)
-    *
-    * And then create one rectangle:
-    * @until show
-    *
-    * To add it in our first frame, which since it doesn't have it's style
-    * specifically set uses the default style:
-    * @until show
-    *
-    * And then create another rectangle:
-    * @until show
-    *
-    * To add it in our second frame, which uses the "pad_small" style, note that
-    * even tough we are setting a text for this frame it won't be show, only the
-    * default style shows the Frame's title:
-    * @until show
-    * @note The "pad_small", "pad_medium", "pad_large" and "pad_huge" styles are
-    * very similar, their only difference is the size of the empty area around
-    * the content of the frame.
-    *
-    * And then create yet another rectangle:
-    * @until show
-    *
-    * To add it in our third frame, which uses the "outdent_top" style, note
-    * that even tough we are setting a text for this frame it won't be show,
-    * only the default style shows the Frame's title:
-    * @until show
-    *
-    * And then create one last rectangle:
-    * @until show
-    *
-    * To add it in our fourth and final frame, which uses the "outdent_bottom"
-    * style, note that even tough we are setting a text for this frame it won't
-    * be show, only the default style shows the Frame's title:
-    * @until show
-    *
-    * And now we are left with just some more setup code:
-    * @until ELM_MAIN()
-    *
-    * Our example will look like this:
-    * @image html screenshots/frame_example_01.png
-    * @image latex screenshots/frame_example_01.eps
-    *
-    * @example frame_example_01.c
-    */
-   /**
     * @defgroup Frame Frame
     *
+    * @image html img/widget/frame/preview-00.png
+    * @image latex img/widget/frame/preview-00.eps
+    *
     * @brief Frame is a widget that holds some content and has a title.
     *
     * The default look is a frame with a title, but Frame supports multple
@@ -7569,6 +7791,12 @@ extern "C" {
     *
     * Of all this styles only default shows the title. Frame emits no signals.
     *
+    * Default contents parts of the frame widget that you can use for are:
+    * @li "default" - A content of the frame
+    *
+    * Default text parts of the frame widget that you can use for are:
+    * @li "elm.text" - Label of the frame
+    *
     * For a detailed example see the @ref tutorial_frame.
     *
     * @{
@@ -7608,6 +7836,8 @@ extern "C" {
     *
     * @param obj The frame object
     * @param content The content will be filled in this frame object
+    *
+    * @deprecated use elm_object_content_set() instead.
     */
    EAPI void         elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
    /**
@@ -7617,6 +7847,8 @@ extern "C" {
     *
     * @param obj The frame object
     * @return The content that is being used
+    *
+    * @deprecated use elm_object_content_get() instead.
     */
    EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
@@ -7626,6 +7858,8 @@ extern "C" {
     *
     * @param obj The frame object
     * @return The content that was being used
+    *
+    * @deprecated use elm_object_content_unset() instead.
     */
    EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
@@ -7832,7 +8066,7 @@ extern "C" {
     * of the existing text parts in the Edje group implementing the
     * item's theme. This function @b must return a strdup'()ed string,
     * as the caller will free() it when done. See
-    * #GridItemLabelGetFunc.
+    * #Elm_Gengrid_Item_Label_Get_Cb.
     * - @c func.content_get - This function is called when an item object
     * is actually created. The @c data parameter will point to the
     * same data passed to elm_gengrid_item_append() and related item
@@ -7842,7 +8076,7 @@ extern "C" {
     * item's theme. It must return @c NULL, when no content is desired,
     * or a valid object handle, otherwise. The object will be deleted
     * by the gengrid on its deletion or when the item is "unrealized".
-    * See #GridItemIconGetFunc.
+    * See #Elm_Gengrid_Item_Content_Get_Cb.
     * - @c func.state_get - This function is called when an item
     * object is actually created. The @c data parameter will point to
     * the same data passed to elm_gengrid_item_append() and related
@@ -7854,12 +8088,12 @@ extern "C" {
     * with @c "elm,state,XXX,active" and @c "elm" as "emission" and
     * "source" arguments, respectively, when the state is true (the
     * default is false), where @c XXX is the name of the (state) part.
-    * See #GridItemStateGetFunc.
+    * See #Elm_Gengrid_Item_State_Get_Cb.
     * - @c func.del - This is called when elm_gengrid_item_del() is
     * called on an item or elm_gengrid_clear() is called on the
     * gengrid. This is intended for use when gengrid items are
     * deleted, so any data attached to the item (e.g. its data
-    * parameter on creation) can be deleted. See #GridItemDelFunc.
+    * parameter on creation) can be deleted. See #Elm_Gengrid_Item_Del_Cb.
     *
     * @section Gengrid_Usage_Hints Usage hints
     *
@@ -7971,10 +8205,16 @@ extern "C" {
    typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class; /**< Gengrid item class definition structs */
    typedef struct _Elm_Gengrid_Item Elm_Gengrid_Item; /**< Gengrid item handles */
    typedef struct _Elm_Gengrid_Item_Class_Func Elm_Gengrid_Item_Class_Func; /**< Class functions for gengrid item classes. */
-   typedef char        *(*GridItemLabelGetFunc) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gengrid item classes. */
-   typedef Evas_Object *(*GridItemIconGetFunc)  (void *data, Evas_Object *obj, const char *part); /**< Content (swallowed object) fetching class function for gengrid item classes. */
-   typedef Eina_Bool    (*GridItemStateGetFunc) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gengrid item classes. */
-   typedef void         (*GridItemDelFunc)      (void *data, Evas_Object *obj); /**< Deletion class function for gengrid item classes. */
+   typedef char        *(*Elm_Gengrid_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gengrid item classes. */
+   typedef Evas_Object *(*Elm_Gengrid_Item_Content_Get_Cb)  (void *data, Evas_Object *obj, const char *part); /**< Content (swallowed object) fetching class function for gengrid item classes. */
+   typedef Eina_Bool    (*Elm_Gengrid_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gengrid item classes. */
+   typedef void         (*Elm_Gengrid_Item_Del_Cb)      (void *data, Evas_Object *obj); /**< Deletion class function for gengrid item classes. */
+
+   /* temporary compatibility code */
+   typedef Elm_Gengrid_Item_Label_Get_Cb GridItemLabelGetFunc EINA_DEPRECATED;
+   typedef Elm_Gengrid_Item_Content_Get_Cb GridItemIconGetFunc EINA_DEPRECATED;
+   typedef Elm_Gengrid_Item_State_Get_Cb GridItemStateGetFunc EINA_DEPRECATED;
+   typedef Elm_Gengrid_Item_Del_Cb GridItemDelFunc EINA_DEPRECATED;
 
    /**
     * @struct _Elm_Gengrid_Item_Class
@@ -7987,10 +8227,13 @@ extern "C" {
         const char             *item_style;
         struct _Elm_Gengrid_Item_Class_Func
           {
-             GridItemLabelGetFunc  label_get;
-             GridItemIconGetFunc   icon_get;
-             GridItemStateGetFunc  state_get;
-             GridItemDelFunc       del;
+             Elm_Gengrid_Item_Label_Get_Cb label_get;
+             union { /* temporary compatibility code */
+               Elm_Gengrid_Item_Content_Get_Cb icon_get EINA_DEPRECATED;
+               Elm_Gengrid_Item_Content_Get_Cb content_get;
+             };
+             Elm_Gengrid_Item_State_Get_Cb state_get;
+             Elm_Gengrid_Item_Del_Cb       del;
           } func;
      }; /**< #Elm_Gengrid_Item_Class member definitions */
    /**
@@ -9101,6 +9344,9 @@ extern "C" {
    /**
     * @defgroup Clock Clock
     *
+    * @image html img/widget/clock/preview-00.png
+    * @image latex img/widget/clock/preview-00.eps
+    *
     * This is a @b digital clock widget. In its default theme, it has a
     * vintage "flipping numbers clock" appearance, which will animate
     * sheets of individual algarisms individually as time goes by.
@@ -9190,7 +9436,7 @@ extern "C" {
     * even if the clock is not in "military" mode.
     *
     * @warning The behavior for values set out of those ranges is @b
-    * indefined.
+    * undefined.
     *
     * @ingroup Clock
     */
@@ -9492,7 +9738,7 @@ extern "C" {
     * column or row span if necessary.
     *
     * Again, we could have this design by adding a @ref Table widget to the @c
-    * SWALLOW part using elm_object_content_part_set(). The same difference happens
+    * SWALLOW part using elm_object_part_content_set(). The same difference happens
     * here when choosing to use the Layout Table (a @c TABLE part) instead of
     * the @ref Table plus @c SWALLOW part. It's just a matter of convenience.
     *
@@ -9588,7 +9834,7 @@ extern "C" {
     *
     * Once the content object is set, a previously set one will be deleted.
     * If you want to keep that old content object, use the
-    * elm_object_content_part_unset() function.
+    * elm_object_part_content_unset() function.
     *
     * @note In an Edje theme, the part used as a content container is called @c
     * SWALLOW. This is why the parameter name is called @p swallow, but it is
@@ -9596,9 +9842,10 @@ extern "C" {
     * elm_layout_box_append().
     *
     * @see elm_layout_box_append()
-    * @see elm_object_content_part_get()
-    * @see elm_object_content_part_unset()
+    * @see elm_object_part_content_get()
+    * @see elm_object_part_content_unset()
     * @see @ref secBox
+    * @deprecated use elm_object_part_content_set() instead
     *
     * @ingroup Layout
     */
@@ -9611,7 +9858,7 @@ extern "C" {
     *
     * @return The swallowed object or NULL if none or an error occurred
     *
-    * @see elm_object_content_part_set()
+    * @deprecated use elm_object_part_content_get() instead
     *
     * @ingroup Layout
     */
@@ -9625,7 +9872,7 @@ extern "C" {
     *
     * Unparent and return the content object which was set for this part.
     *
-    * @see elm_object_content_part_set()
+    * @deprecated use elm_object_part_content_unset() instead
     *
     * @ingroup Layout
     */
@@ -9638,7 +9885,7 @@ extern "C" {
     * @param text The text to set
     *
     * @ingroup Layout
-    * @deprecated use elm_object_text_* instead.
+    * @deprecated use elm_object_part_text_set() instead.
     */
    EINA_DEPRECATED EAPI void               elm_layout_text_set(Evas_Object *obj, const char *part, const char *text) EINA_ARG_NONNULL(1);
    /**
@@ -9650,7 +9897,7 @@ extern "C" {
     * @return The text set in @p part
     *
     * @ingroup Layout
-    * @deprecated use elm_object_text_* instead.
+    * @deprecated use elm_object_part_text_get() instead.
     */
    EINA_DEPRECATED EAPI const char        *elm_layout_text_get(const Evas_Object *obj, const char *part) EINA_ARG_NONNULL(1);
    /**
@@ -9745,7 +9992,7 @@ extern "C" {
     *
     * The object will be removed from the box part and its lifetime will
     * not be handled by the layout anymore. This is equivalent to
-    * elm_object_content_part_unset() for box.
+    * elm_object_part_content_unset() for box.
     *
     * @see elm_layout_box_append()
     * @see elm_layout_box_remove_all()
@@ -9816,7 +10063,7 @@ extern "C" {
     *
     * The object will be unpacked from the table part and its lifetime
     * will not be handled by the layout anymore. This is equivalent to
-    * elm_object_content_part_unset() for table.
+    * elm_object_part_content_unset() for table.
     *
     * @see elm_layout_table_pack()
     * @see elm_layout_table_clear()
@@ -9853,7 +10100,7 @@ extern "C" {
     *
     * This returns the edje object. It is not expected to be used to then
     * swallow objects via edje_object_part_swallow() for example. Use
-    * elm_object_content_part_set() instead so child object handling and sizing is
+    * elm_object_part_content_set() instead so child object handling and sizing is
     * done properly.
     *
     * @note This function should only be used if you really need to call some
@@ -9863,8 +10110,8 @@ extern "C" {
     *
     * @see elm_object_signal_callback_add()
     * @see elm_object_signal_emit()
-    * @see elm_object_text_part_set()
-    * @see elm_object_content_part_set()
+    * @see elm_object_part_text_set()
+    * @see elm_object_part_content_set()
     * @see elm_layout_box_append()
     * @see elm_layout_table_pack()
     * @see elm_layout_data_get()
@@ -10029,7 +10276,7 @@ extern "C" {
 #define elm_layout_icon_set(_ly, _obj) \
   do { \
     const char *sig; \
-    elm_layout_content_set((_ly), "elm.swallow.icon", (_obj)); \
+    elm_object_part_content_set((_ly), "elm.swallow.icon", (_obj)); \
     if ((_obj)) sig = "elm,state,icon,visible"; \
     else sig = "elm,state,icon,hidden"; \
     elm_object_signal_emit((_ly), sig, "elm"); \
@@ -10043,7 +10290,7 @@ extern "C" {
  * @ingroup Layout
  */
 #define elm_layout_icon_get(_ly) \
-  elm_layout_content_get((_ly), "elm.swallow.icon")
+  elm_object_part_content_get((_ly), "elm.swallow.icon")
 
 /**
  * @def elm_layout_end_set
@@ -10055,7 +10302,7 @@ extern "C" {
 #define elm_layout_end_set(_ly, _obj) \
   do { \
     const char *sig; \
-    elm_layout_content_set((_ly), "elm.swallow.end", (_obj)); \
+    elm_object_part_content_set((_ly), "elm.swallow.end", (_obj)); \
     if ((_obj)) sig = "elm,state,end,visible"; \
     else sig = "elm,state,end,hidden"; \
     elm_object_signal_emit((_ly), sig, "elm"); \
@@ -10069,7 +10316,7 @@ extern "C" {
  * @ingroup Layout
  */
 #define elm_layout_end_get(_ly) \
-  elm_layout_content_get((_ly), "elm.swallow.end")
+  elm_object_part_content_get((_ly), "elm.swallow.end")
 
 /**
  * @def elm_layout_label_set
@@ -10077,7 +10324,7 @@ extern "C" {
  * Elementary naming convention for its parts.
  *
  * @ingroup Layout
- * @deprecated use elm_object_text_* instead.
+ * @deprecated use elm_object_text_set() instead.
  */
 #define elm_layout_label_set(_ly, _txt) \
   elm_layout_text_set((_ly), "elm.text", (_txt))
@@ -10088,7 +10335,7 @@ extern "C" {
  * Elementary naming convention for its parts.
  *
  * @ingroup Layout
- * @deprecated use elm_object_text_* instead.
+ * @deprecated use elm_object_text_set() instead.
  */
 #define elm_layout_label_get(_ly) \
   elm_layout_text_get((_ly), "elm.text")
@@ -10113,7 +10360,7 @@ extern "C" {
     * @li "block,clicked" - when a click outside of the notify happens
     *
     * Default contents parts of the notify widget that you can use for are:
-    * @li "elm.swallow.content" - A content of the notify
+    * @li "default" - A content of the notify
     *
     * @ref tutorial_notify show usage of the API.
     *
@@ -11551,10 +11798,16 @@ extern "C" {
     * @}
     */
 
+   /* composite widgets - these basically put together basic widgets above
+    * in convenient packages that do more than basic stuff */
+
    /* anchorview */
    /**
     * @defgroup Anchorview Anchorview
     *
+    * @image html img/widget/anchorview/preview-00.png
+    * @image latex img/widget/anchorview/preview-00.eps
+    *
     * Anchorview is for displaying text that contains markup with anchors
     * like <c>\<a href=1234\>something\</\></c> in it.
     *
@@ -12039,10 +12292,18 @@ extern "C" {
     * Signals that you can add callbacks for are:
     * @li "clicked" - This is called when a user has clicked the bubble.
     *
-    * For an example of using a buble see @ref bubble_01_example_page "this".
+    * Default contents parts of the bubble that you can use for are:
+    * @li "default" - A content of the bubble
+    * @li "icon" - An icon of the bubble
+    *
+    * Default text parts of the button widget that you can use for are:
+    * @li NULL - Label of the bubble
+    * 
+        * For an example of using a buble see @ref bubble_01_example_page "this".
     *
     * @{
     */
+
    /**
     * Add a new bubble to the parent
     *
@@ -12081,7 +12342,7 @@ extern "C" {
     *
     * This function sets the info of the bubble. Where this appears depends on
     * the selected corner.
-    * @deprecated use elm_object_text_part_set() instead. (with "info" as the parameter).
+    * @deprecated use elm_object_part_text_set() instead. (with "info" as the parameter).
     */
    EINA_DEPRECATED EAPI void         elm_bubble_info_set(Evas_Object *obj, const char *info) EINA_ARG_NONNULL(1);
    /**
@@ -12092,7 +12353,7 @@ extern "C" {
     * @return The "info" string of the bubble
     *
     * This function gets the info text.
-    * @deprecated use elm_object_text_part_get() instead. (with "info" as the parameter).
+    * @deprecated use elm_object_part_text_get() instead. (with "info" as the parameter).
     */
    EINA_DEPRECATED EAPI const char  *elm_bubble_info_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
@@ -12135,8 +12396,11 @@ extern "C" {
     *
     * @param obj The bubble object
     * @param icon The given icon for the bubble
+    *
+    * @deprecated use elm_object_part_content_set() instead
+    *
     */
-   EAPI void         elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
     * Get the icon of the bubble
     *
@@ -12144,8 +12408,11 @@ extern "C" {
     * @return The icon for the bubble
     *
     * This function gets the icon shown on the top left of bubble.
+    *
+    * @deprecated use elm_object_part_content_get() instead
+    *
     */
-   EAPI Evas_Object *elm_bubble_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object *elm_bubble_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Unset the icon of the bubble
     *
@@ -12153,8 +12420,11 @@ extern "C" {
     *
     * @param obj The bubble object
     * @return The icon that was being used
+    *
+    * @deprecated use elm_object_part_content_unset() instead
+    *
     */
-   EAPI Evas_Object *elm_bubble_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object *elm_bubble_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Set the corner of the bubble
     *
@@ -12226,6 +12496,17 @@ extern "C" {
     */
    EAPI Eina_Bool    elm_photo_file_set(Evas_Object *obj, const char *file) EINA_ARG_NONNULL(1);
 
+    /**
+    * Set the file that will be used as thumbnail in the photo.
+    *
+    * @param obj The photo object.
+    * @param file The path to file that will be used as thumb.
+    * @param group The key used in case of an EET file.
+    *
+    * @ingroup Photo
+    */
+   EAPI void         elm_photo_thumb_set(const Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
+
    /**
     * Set the size that will be used on the photo
     *
@@ -12432,7 +12713,6 @@ extern "C" {
    struct _Elm_Gesture_Line_Info
      {  /* Report line ends, timestamps, and momentum computed      */
         Elm_Gesture_Momentum_Info momentum; /**< Line momentum info */
-        /* FIXME should be radians, bot degrees */
         double angle;              /**< Angle (direction) of lines  */
      };
 
@@ -12842,7 +13122,6 @@ extern "C" {
     * @}
     */
 
-#if 0
    /**
     * @defgroup Web Web
     *
@@ -13693,7 +13972,6 @@ extern "C" {
    /**
     * @}
     */
-#endif
 
    /**
     * @defgroup Hoversel Hoversel
@@ -14030,6 +14308,7 @@ extern "C" {
         ELM_TOOLBAR_SHRINK_HIDE,   /**< Hide exceeding items. */
         ELM_TOOLBAR_SHRINK_SCROLL, /**< Allow accessing exceeding items through a scroller. */
         ELM_TOOLBAR_SHRINK_MENU,   /**< Inserts a button to pop up a menu with exceeding items. */
+        ELM_TOOLBAR_SHRINK_LAST    /**< Indicates error if returned by elm_toolbar_shrink_mode_get() */
      } Elm_Toolbar_Shrink_Mode;
 
    typedef struct _Elm_Toolbar_Item Elm_Toolbar_Item; /**< Item of Elm_Toolbar. Sub-type of Elm_Widget_Item. Can be created with elm_toolbar_item_append(), elm_toolbar_item_prepend() and functions to add items in relative positions, like elm_toolbar_item_insert_before(), and deleted with elm_toolbar_item_del(). */
@@ -14103,6 +14382,38 @@ extern "C" {
    EAPI Elm_Icon_Lookup_Order   elm_toolbar_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
+    * Set whether the toolbar should always have an item selected.
+    *
+    * @param obj The toolbar object.
+    * @param wrap @c EINA_TRUE to enable always-select mode or @c EINA_FALSE to
+    * disable it.
+    *
+    * This will cause the toolbar to always have an item selected, and clicking
+    * the selected item will not cause a selected event to be emitted. Enabling this mode
+    * will immediately select the first toolbar item.
+    *
+    * Always-selected is disabled by default.
+    *
+    * @see elm_toolbar_always_select_mode_get().
+    *
+    * @ingroup Toolbar
+    */
+   EAPI void                    elm_toolbar_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get whether the toolbar should always have an item selected.
+    *
+    * @param obj The toolbar object.
+    * @return @c EINA_TRUE means an item will always be selected, @c EINA_FALSE indicates
+    * that it is possible to have no items selected. If @p obj is @c NULL, @c EINA_FALSE is returned.
+    *
+    * @see elm_toolbar_always_select_mode_set() for details.
+    *
+    * @ingroup Toolbar
+    */
+   EAPI Eina_Bool               elm_toolbar_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
     * Set whether the toolbar items' should be selected by the user or not.
     *
     * @param obj The toolbar object.
@@ -14865,7 +15176,7 @@ extern "C" {
     *
     * @ingroup Toolbar
     */
-   EAPI Evas_Object            *elm_toolbar_item_menu_get(Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object            *elm_toolbar_item_menu_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Add a new state to @p item.
@@ -15237,12 +15548,23 @@ extern "C" {
     * @}
     */
 
-   /* tooltip */
+   /**
+    * @defgroup Tooltips Tooltips
+    *
+    * The Tooltip is an (internal, for now) smart object used to show a
+    * content in a frame on mouse hover of objects(or widgets), with
+    * tips/information about them.
+    *
+    * @{
+    */
+
    EAPI double       elm_tooltip_delay_get(void);
    EAPI Eina_Bool    elm_tooltip_delay_set(double delay);
    EAPI void         elm_object_tooltip_show(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_object_tooltip_hide(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_object_tooltip_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1, 2);
+   EAPI void         elm_object_tooltip_domain_translatable_text_set(Evas_Object *obj, const char *domain, const char *text) EINA_ARG_NONNULL(1, 3);
+#define elm_object_tooltip_translatable_text_set(obj, text) elm_object_tooltip_domain_translatable_text_set((obj), NULL, (text))
    EAPI void         elm_object_tooltip_content_cb_set(Evas_Object *obj, Elm_Tooltip_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
    EAPI void         elm_object_tooltip_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_object_tooltip_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
@@ -15484,6 +15806,20 @@ extern "C" {
     */
    EAPI Elm_Menu_Item     *elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
    /**
+    * @brief Add an object swallowed in an item at the end of the given menu
+    * widget
+    *
+    * @param obj The menu object.
+    * @param parent The parent menu item (optional)
+    * @param subobj The object to swallow
+    * @param func Function called when the user select the item.
+    * @param data Data sent by the callback.
+    * @return Returns the new item.
+    *
+    * Add an evas object as an item to the menu.
+    */
+   EAPI Elm_Menu_Item     *elm_menu_item_add_object(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+   /**
     * @brief Set the label of a menu item
     *
     * @param item The menu item object.
@@ -15500,9 +15836,62 @@ extern "C" {
     * @return The label of @p item
     */
    EAPI const char        *elm_menu_item_label_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
-   EAPI void               elm_menu_item_icon_set(Elm_Menu_Item *item, const char *icon) EINA_ARG_NONNULL(1, 2);
-   EAPI const char        *elm_menu_item_icon_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
-   EAPI const Evas_Object *elm_menu_item_object_icon_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set the icon of a menu item to the standard icon with name @p icon
+    *
+    * @param item The menu item object.
+    * @param icon The icon object to set for the content of @p item
+    *
+    * Once this icon is set, any previously set icon will be deleted.
+    */
+   EAPI void               elm_menu_item_object_icon_name_set(Elm_Menu_Item *item, const char *icon) EINA_ARG_NONNULL(1, 2);
+   /**
+    * @brief Get the string representation from the icon of a menu item
+    *
+    * @param item The menu item object.
+    * @return The string representation of @p item's icon or NULL
+    *
+    * @see elm_menu_item_object_icon_name_set()
+    */
+   EAPI const char        *elm_menu_item_object_icon_name_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set the content object of a menu item
+    *
+    * @param item The menu item object
+    * @param The content object or NULL
+    * @return EINA_TRUE on success, else EINA_FALSE
+    *
+    * Use this function to change the object swallowed by a menu item, deleting
+    * any previously swallowed object.
+    */
+   EAPI Eina_Bool          elm_menu_item_object_content_set(Elm_Menu_Item *item, Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the content object of a menu item
+    *
+    * @param item The menu item object
+    * @return The content object or NULL
+    * @note If @p item was added with elm_menu_item_add_object, this
+    * function will return the object passed, else it will return the
+    * icon object.
+    *
+    * @see elm_menu_item_object_content_set()
+    */
+   EAPI Evas_Object *elm_menu_item_object_content_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
+
+   EINA_DEPRECATED extern inline void elm_menu_item_icon_set(Elm_Menu_Item *item, const char *icon) EINA_ARG_NONNULL(1, 2)
+     {
+        elm_menu_item_object_icon_name_set(item, icon);
+     }
+
+   EINA_DEPRECATED extern inline Evas_Object *elm_menu_item_object_icon_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1)
+     {
+        return elm_menu_item_object_content_get(item);
+     }
+
+   EINA_DEPRECATED extern inline const char *elm_menu_item_icon_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1)
+     {
+        return elm_menu_item_object_icon_name_get(item);
+     }
 
    /**
     * @brief Set the selected state of @p item.
@@ -15598,30 +15987,83 @@ extern "C" {
     * @see elm_menu_add()
     */
    EAPI const Eina_List   *elm_menu_item_subitems_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
-   EAPI const Elm_Menu_Item *elm_menu_selected_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
-   EAPI const Elm_Menu_Item *elm_menu_last_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
-   EAPI const Elm_Menu_Item *elm_menu_first_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
-   EAPI const Elm_Menu_Item *elm_menu_item_next_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
-   EAPI const Elm_Menu_Item *elm_menu_item_prev_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
-
    /**
-    * @}
+    * @brief Get the position of a menu item
+    *
+    * @param item 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
     */
-
+   EAPI unsigned int       elm_menu_item_index_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1) EINA_PURE;
    /**
-    * @defgroup List List
-    * @ingroup Elementary
+    * @brief @brief Return a menu item's owner menu
     *
-    * @image html img/widget/list/preview-00.png
-    * @image latex img/widget/list/preview-00.eps width=\textwidth
+    * @param item The menu item
+    * @return The menu object owning @p item, or NULL on failure
     *
-    * @image html img/list.png
-    * @image latex img/list.eps width=\textwidth
+    * Use this function to get the menu object owning an item.
+    */
+   EAPI Evas_Object       *elm_menu_item_menu_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1) EINA_PURE;
+   /**
+    * @brief Get the selected item in the menu
     *
-    * A list widget is a container whose children are displayed vertically or
-    * horizontally, in order, and can be selected.
-    * The list can accept only one or multiple items selection. Also has many
-    * modes of items displaying.
+    * @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()
+    */
+   EAPI Elm_Menu_Item *elm_menu_selected_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the last item in the menu
+    *
+    * @param obj The menu object
+    * @return The last item, or NULL if none
+    */
+   EAPI Elm_Menu_Item *elm_menu_last_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the first item in the menu
+    *
+    * @param obj The menu object
+    * @return The first item, or NULL if none
+    */
+   EAPI Elm_Menu_Item *elm_menu_first_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the next item in the menu.
+    *
+    * @param item The menu item object.
+    * @return The item after it, or NULL if none
+    */
+   EAPI Elm_Menu_Item *elm_menu_item_next_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the previous item in the menu.
+    *
+    * @param item The menu item object.
+    * @return The item before it, or NULL if none
+    */
+   EAPI Elm_Menu_Item *elm_menu_item_prev_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @}
+    */
+
+   /**
+    * @defgroup List List
+    * @ingroup Elementary
+    *
+    * @image html img/widget/list/preview-00.png
+    * @image latex img/widget/list/preview-00.eps width=\textwidth
+    *
+    * @image html img/list.png
+    * @image latex img/list.eps width=\textwidth
+    *
+    * A list widget is a container whose children are displayed vertically or
+    * horizontally, in order, and can be selected.
+    * The list can accept only one or multiple items selection. Also has many
+    * modes of items displaying.
     *
     * A list is a very simple type of list widget.  For more robust
     * lists, @ref Genlist should probably be used.
@@ -16846,16 +17288,15 @@ extern "C" {
     * - @c "default"
     *
     * Default contents parts of the slider widget that you can use for are:
-    * @li "elm.swallow.icon" - A icon of the slider
-    * @li "elm.swallow.end" - A end part content of the slider
+    * @li "icon" - A icon of the slider
+    * @li "end" - A end part content of the slider
     * 
+    * Default text parts of the silder widget that you can use for are:
+    * @li "default" - Label of the silder
     * Here is an example on its usage:
     * @li @ref slider_example
     */
 
-#define ELM_SLIDER_CONTENT_ICON "elm.swallow.icon"
-#define ELM_SLIDER_CONTENT_END "elm.swallow.end"
-
    /**
     * @addtogroup Slider
     * @{
@@ -16913,7 +17354,7 @@ extern "C" {
     * it won't get properly displayed.
     *
     * @ingroup Slider
-    * @deprecated use elm_object_content_set() instead.
+    * @deprecated use elm_object_part_content_set() instead.
     */
    EAPI void               elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
 
@@ -16932,7 +17373,7 @@ extern "C" {
     *
     * @see elm_slider_icon_set() for more details
     * @see elm_slider_icon_get()
-    * @deprecated use elm_object_content_unset() instead.
+    * @deprecated use elm_object_part_content_unset() instead.
     *
     * @ingroup Slider
     */
@@ -16951,6 +17392,8 @@ extern "C" {
     * @see elm_slider_icon_set() for more details
     * @see elm_slider_icon_unset()
     *
+    * @deprecated use elm_object_part_content_get() instead.
+    *
     * @ingroup Slider
     */
    EAPI Evas_Object       *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -16971,6 +17414,8 @@ extern "C" {
     * @warning If the object being set does not have minimum size hints set,
     * it won't get properly displayed.
     *
+    * @deprecated use elm_object_part_content_set() instead.
+    *
     * @ingroup Slider
     */
    EAPI void               elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1);
@@ -16991,6 +17436,9 @@ extern "C" {
     * @see elm_slider_end_set() for more details.
     * @see elm_slider_end_get()
     *
+    * @deprecated use elm_object_part_content_unset() instead
+    * instead.
+    *
     * @ingroup Slider
     */
    EAPI Evas_Object       *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -17008,6 +17456,10 @@ extern "C" {
     * @see elm_slider_end_set() for more details.
     * @see elm_slider_end_unset()
     *
+    *
+    * @deprecated use elm_object_part_content_get() instead 
+    * instead.
+    *
     * @ingroup Slider
     */
    EAPI Evas_Object       *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -17334,15 +17786,25 @@ extern "C" {
     * @}
     */
 
-   /* actionslider */
-
    /**
     * @addtogroup Actionslider Actionslider
     *
-    * A actionslider is a switcher for 2 or 3 labels with customizable magnet
-    * properties. The indicator is the element the user drags to choose a label.
-    * When the position is set with magnet, when released the indicator will be
-    * moved to it if it's nearest the magnetized position.
+    * @image html img/widget/actionslider/preview-00.png
+    * @image latex img/widget/actionslider/preview-00.eps
+    *
+    * An actionslider is a switcher for 2 or 3 labels with customizable magnet
+    * properties. The user drags and releases the indicator, to choose a label.
+    *
+    * Labels occupy the following positions.
+    * a. Left
+    * b. Right
+    * c. Center
+    *
+    * Positions can be enabled or disabled.
+    *
+    * Magnets can be set on the above positions.
+    *
+    * When the indicator is released, it will move to its nearest "enabled and magnetized" position.
     *
     * @note By default all positions are set as enabled.
     *
@@ -17483,21 +17945,8 @@ extern "C" {
     * @deprecated use elm_object_text_get() instead.
     */
    EINA_DEPRECATED EAPI const char           *elm_actionslider_indicator_label_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
-
-   /**
-   * Hold actionslider object movement.
-   *
-   * @param[in] obj The actionslider object
-   * @param[in] flag Actionslider hold/release
-   * (EINA_TURE = hold/EIN_FALSE = release)
-   *
-   * @ingroup Actionslider
-   */
-   EAPI void                             elm_actionslider_hold(Evas_Object *obj, Eina_Bool flag) EINA_ARG_NONNULL(1);
-
-
    /**
-    *
+    * @}
     */
 
    /**
@@ -17632,7 +18081,7 @@ extern "C" {
     * item before another item and elm_genlist_item_insert_after() inserts after
     * the indicated item.
     *
-    * The application can clear the list with elm_genlist_clear() which deletes
+    * The application can clear the list with elm_gen_clear() which deletes
     * all the items in the list and elm_genlist_item_del() will delete a specific
     * item. elm_genlist_item_subitems_clear() will clear all items that are
     * children of the indicated parent item.
@@ -17659,7 +18108,7 @@ extern "C" {
     *
     * @section Genlist_Usage_Hints Usage hints
     *
-    * There are also convenience functions. elm_genlist_item_genlist_get() will
+    * There are also convenience functions. elm_gen_item_genlist_get() will
     * return the genlist object the item belongs to. elm_genlist_item_show()
     * will make the scroller scroll to show that specific item so its visible.
     * elm_genlist_item_data_get() returns the data pointer set by the item
@@ -17690,7 +18139,7 @@ extern "C" {
     *
     * Items will only call their selection func and callback when first becoming
     * selected. Any further clicks will do nothing, unless you enable always
-    * select with elm_genlist_always_select_mode_set(). This means even if
+    * select with elm_gen_always_select_mode_set(). This means even if
     * selected, every click will make the selected callbacks be called.
     * elm_genlist_no_select_mode_set() will turn off the ability to select
     * items entirely and they will neither appear selected nor call selected
@@ -17897,7 +18346,7 @@ extern "C" {
     *
     * @see elm_genlist_item_append()
     * @see elm_genlist_item_del()
-    * @see elm_genlist_clear()
+    * @see elm_gen_clear()
     *
     * @ingroup Genlist
     */
@@ -18572,7 +19021,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   EINA_DEPRECATED EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
+   EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
    /**
     * Get whether a given genlist item is selected or not
     *
@@ -18583,7 +19032,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   EINA_DEPRECATED EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
    /**
     * Sets the expanded state of an item.
     *
@@ -19248,50 +19697,15 @@ extern "C" {
     */
 
    /**
-    * @page tutorial_check Check example
-    * @dontinclude check_example_01.c
-    *
-    * This example will show 2 checkboxes, one with just a label and the second
-    * one with both a label and an icon. This example also ilustrates how to
-    * have the checkbox change the value of a variable and how to react to those
-    * changes.
-    *
-    * We will start with the usual setup code:
-    * @until show(bg)
-    *
-    * And now we create our first checkbox, set its label, tell it to change
-    * the value of @p value when the checkbox stats is changed and ask to be
-    * notified of state changes:
-    * @until show
-    *
-    * For our second checkbox we are going to set an icon so we need to create
-    * and icon:
-    * @until show
-    * @note For simplicity we are using a rectangle as icon, but any evas object
-    * can be used.
-    *
-    * And for our second checkbox we set the label, icon and state to true:
-    * @until show
-    *
-    * We now do some more setup:
-    * @until ELM_MAIN
-    *
-    * And finally implement the callback that will be called when the first
-    * checkbox's state changes. This callback will use @p data to print a
-    * message:
-    * @until }
-    * @note This work because @p data is @p value(from the main function) and @p
-    * value is changed when the checkbox is changed.
-    *
-    * Our example will look like this:
-    * @image html screenshots/check_example_01.png
-    * @image latex screenshots/check_example_01.eps
-    *
-    * @example check_example_01.c
-    */
-   /**
     * @defgroup Check Check
     *
+    * @image html img/widget/check/preview-00.png
+    * @image latex img/widget/check/preview-00.eps
+    * @image html img/widget/check/preview-01.png
+    * @image latex img/widget/check/preview-01.eps
+    * @image html img/widget/check/preview-02.png
+    * @image latex img/widget/check/preview-02.eps
+    *
     * @brief The check widget allows for toggling a value between true and
     * false.
     *
@@ -19307,7 +19721,14 @@ extern "C" {
     * "changed" - This is called whenever the user changes the state of one of
     *             the check object(event_info is NULL).
     *
-    * @ref tutorial_check should give you a firm grasp of how to use this widget.
+    * Default contents parts of the check widget that you can use for are:
+    * @li "icon" - A icon of the check
+    *
+    * Default text parts of the check widget that you can use for are:
+    * @li "elm.text" - Label of the check
+    *
+    * @ref tutorial_check should give you a firm grasp of how to use this widget
+    * .
     * @{
     */
    /**
@@ -19343,16 +19764,22 @@ extern "C" {
     *
     * Once the icon object is set, a previously set one will be deleted.
     * If you want to keep that old content object, use the
-    * elm_check_icon_unset() function.
+    * elm_object_content_unset() function.
+    *
+    * @deprecated use elm_object_part_content_set() instead.
+    *
     */
-   EAPI void         elm_check_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_check_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the icon object of the check object
     *
     * @param obj The check object
     * @return The icon object
+    *
+    * @deprecated use elm_object_part_content_get() instead.
+    *  
     */
-   EAPI Evas_Object *elm_check_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object *elm_check_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Unset the icon used for the check object
     *
@@ -19360,8 +19787,11 @@ extern "C" {
     * @return The icon object that was being used
     *
     * Unparent and return the icon object which was set for this widget.
+    *
+    * @deprecated use elm_object_part_content_unset() instead.
+    *
     */
-   EAPI Evas_Object *elm_check_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object *elm_check_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Set the on/off state of the check object
     *
@@ -19398,6 +19828,71 @@ extern "C" {
     * @}
     */
 
+   /* compatibility code for toggle controls */
+
+   EINA_DEPRECATED EAPI extern inline Evas_Object *elm_toggle_add(Evas_Object *parent) EINA_ARG_NONNULL(1)
+     {
+        Evas_Object *obj;
+
+        obj = elm_check_add(parent);
+        elm_object_style_set(obj, "toggle");
+        elm_object_part_text_set(obj, "on", "ON");
+        elm_object_part_text_set(obj, "off", "OFF");
+        return obj;
+     }
+
+   EINA_DEPRECATED EAPI extern inline void elm_toggle_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1)
+     {
+        elm_object_text_set(obj, label);
+     }
+
+   EINA_DEPRECATED EAPI extern inline const char  *elm_toggle_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1)
+     {
+        return elm_object_text_get(obj);
+     }
+
+   EINA_DEPRECATED EAPI extern inline void elm_toggle_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1)
+     {
+        elm_object_content_set(obj, icon);
+     }
+
+   EINA_DEPRECATED EAPI extern inline Evas_Object *elm_toggle_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1)
+     {
+        return elm_object_content_get(obj);
+     }
+
+   EINA_DEPRECATED EAPI extern inline Evas_Object *elm_toggle_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1)
+     {
+        return elm_object_content_unset(obj);
+     }
+
+   EINA_DEPRECATED EAPI extern inline void elm_toggle_states_labels_set(Evas_Object *obj, const char *onlabel, const char *offlabel) EINA_ARG_NONNULL(1)
+     {
+        elm_object_part_text_set(obj, "on", onlabel);
+        elm_object_part_text_set(obj, "off", offlabel);
+     }
+
+   EINA_DEPRECATED EAPI extern inline void elm_toggle_states_labels_get(const Evas_Object *obj, const char **onlabel, const char **offlabel) EINA_ARG_NONNULL(1)
+     {
+        if (onlabel) *onlabel = elm_object_part_text_get(obj, "on");
+        if (offlabel) *offlabel = elm_object_part_text_get(obj, "off");
+     }
+
+   EINA_DEPRECATED EAPI extern inline void elm_toggle_state_set(Evas_Object *obj, Eina_Bool state) EINA_ARG_NONNULL(1)
+     {
+        elm_check_state_set(obj, state);
+     }
+
+   EINA_DEPRECATED EAPI extern inline Eina_Bool elm_toggle_state_get(const Evas_Object *obj) EINA_ARG_NONNULL(1)
+     {
+        return elm_check_state_get(obj);
+     }
+
+   EINA_DEPRECATED EAPI extern inline void elm_toggle_state_pointer_set(Evas_Object *obj, Eina_Bool *statep) EINA_ARG_NONNULL(1)
+     {
+        elm_check_state_pointer_set(obj, statep);
+     }
+
    /**
     * @defgroup Radio Radio
     *
@@ -19427,7 +19922,7 @@ extern "C" {
     * the radio objects within the group of radio objects that work together.
     *
     * Default contents parts of the radio widget that you can use for are:
-    * @li "elm.swallow.content" - A icon of the radio
+    * @li "icon" - A icon of the radio
     *
     * @ref tutorial_radio show most of this API in action.
     * @{
@@ -19466,8 +19961,9 @@ extern "C" {
     * Once the icon object is set, a previously set one will be deleted. If you
     * want to keep that old content object, use the elm_radio_icon_unset()
     * function.
-    &
-    * @deprecated use elm_object_content_set() instead.
+    *
+    * @deprecated use elm_object_part_content_set() instead.
+    *
     */
    EAPI void         elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
@@ -19477,6 +19973,9 @@ extern "C" {
     * @return The icon object
     *
     * @see elm_radio_icon_set()
+    *
+    * @deprecated use elm_object_part_content_get() instead.
+    *
     */
    EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
@@ -19488,7 +19987,8 @@ extern "C" {
     * Unparent and return the icon object which was set for this widget.
     *
     * @see elm_radio_icon_set()
-    * @deprecated use elm_object_content_unset() instead.
+    * @deprecated use elm_object_part_content_unset() instead.
+    *
     */
    EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
@@ -19660,7 +20160,7 @@ extern "C" {
    EAPI Evas_Object *elm_pager_content_top_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    EAPI void         elm_pager_to_content_pop(Evas_Object *obj, Evas_Object *content); EINA_ARG_NONNULL(1);
-   EAPI void         elm_pager_animation_disabled_set(Evas_Object *obj, Eina_Bool disable); EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED    EAPI void         elm_pager_animation_disabled_set(Evas_Object *obj, Eina_Bool disable); EINA_ARG_NONNULL(1);
 
    /**
     * @}
@@ -20575,7 +21075,7 @@ extern "C" {
     *      "pulse" effect is available)
     *
     * Default contents parts of the progressbar widget that you can use for are:
-    * @li "elm.swallow.content" - A icon of the progressbar
+    * @li "icon" - A icon of the progressbar
     * 
     * Here is an example on its usage:
     * @li @ref progressbar_example
@@ -20713,7 +21213,7 @@ extern "C" {
     * elm_progressbar_icon_unset() function.
     *
     * @see elm_progressbar_icon_get()
-    * @deprecated use elm_object_content_set() instead.
+    * @deprecated use elm_object_part_content_set() instead.
     *
     * @ingroup Progressbar
     */
@@ -20727,7 +21227,7 @@ extern "C" {
     * otherwise (and on errors)
     *
     * @see elm_progressbar_icon_set() for more details
-    * @deprecated use elm_object_content_set() instead.
+    * @deprecated use elm_object_part_content_get() instead.
     *
     * @ingroup Progressbar
     */
@@ -20744,7 +21244,7 @@ extern "C" {
     * for this widget, previously, on success.
     *
     * @see elm_progressbar_icon_set() for more details
-    * @deprecated use elm_object_content_unset() instead.
+    * @deprecated use elm_object_part_content_unset() instead.
     *
     * @ingroup Progressbar
     */
@@ -20927,6 +21427,42 @@ extern "C" {
     */
 
    /**
+    * @defgroup Spinner Spinner
+    * @ingroup Elementary
+    *
+    * @image html img/widget/spinner/preview-00.png
+    * @image latex img/widget/spinner/preview-00.eps
+    *
+    * A spinner is a widget which allows the user to increase or decrease
+    * numeric values using arrow buttons, or edit values directly, clicking
+    * over it and typing the new value.
+    *
+    * By default the spinner will not wrap and has a label
+    * of "%.0f" (just showing the integer value of the double).
+    *
+    * A spinner has a label that is formatted with floating
+    * point values and thus accepts a printf-style format string, like
+    * “%1.2f units”.
+    *
+    * It also allows specific values to be replaced by pre-defined labels.
+    *
+    * Smart callbacks one can register to:
+    *
+    * - "changed" - Whenever the spinner value is changed.
+    * - "delay,changed" - A short time after the value is changed by the user.
+    *    This will be called only when the user stops dragging for a very short
+    *    period or when they release their finger/mouse, so it avoids possibly
+    *    expensive reactions to the value change.
+    *
+    * Available styles for it:
+    * - @c "default";
+    * - @c "vertical": up/down buttons at the right side and text left aligned.
+    *
+    * Here is an example on its usage:
+    * @ref spinner_example
+    */
+
+   /**
     * @addtogroup Spinner
     * @{
     */
@@ -23271,6 +23807,7 @@ extern "C" {
    EAPI double elm_route_lon_max_get(Evas_Object *obj);
    EAPI double elm_route_lat_max_get(Evas_Object *obj);
 
+
    /**
     * @defgroup Panel Panel
     *
@@ -23285,11 +23822,8 @@ extern "C" {
     * @li ELM_PANEL_ORIENT_LEFT
     * @li ELM_PANEL_ORIENT_RIGHT
     *
-    * To set/get/unset the content of the panel, you can use
-    * elm_object_content_set/get/unset APIs.
-    * Once the content object is set, a previously set one will be deleted.
-    * If you want to keep that old content object, use the
-    * elm_object_content_unset() function
+    * Default contents parts of the panel widget that you can use for are:
+    * @li "default" - A content of the panel
     *
     * @ref tutorial_panel shows one way to use this widget.
     * @{
@@ -23411,8 +23945,8 @@ extern "C" {
     * - @c "default"
     *
     * Default contents parts of the panes widget that you can use for are:
-    * @li "elm.swallow.left" - A leftside content of the panes
-    * @li "elm.swallow.right" - A rightside content of the panes
+    * @li "left" - A leftside content of the panes
+    * @li "right" - A rightside content of the panes
     *
     * If panes is displayed vertically, left content will be displayed at
     * top.
@@ -23421,9 +23955,6 @@ extern "C" {
     * @li @ref panes_example
     */
 
-#define ELM_PANES_CONTENT_LEFT "elm.swallow.left"
-#define ELM_PANES_CONTENT_RIGHT "elm.swallow.right"
-
    /**
     * @addtogroup Panes
     * @{
@@ -23458,9 +23989,11 @@ extern "C" {
     * @see elm_panes_content_left_get()
     * @see elm_panes_content_right_set() to set content on the other side.
     *
+    * @deprecated use elm_object_part_content_set() instead
+    *
     * @ingroup Panes
     */
-   EAPI void                  elm_panes_content_left_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void                  elm_panes_content_left_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
 
    /**
     * Set the right content of the panes widget.
@@ -23478,9 +24011,11 @@ extern "C" {
     * @see elm_panes_content_right_get()
     * @see elm_panes_content_left_set() to set content on the other side.
     *
+    * @deprecated use elm_object_part_content_set() instead
+    *
     * @ingroup Panes
     */
-   EAPI void                  elm_panes_content_right_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void                  elm_panes_content_right_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
 
    /**
     * Get the left content of the panes.
@@ -23492,9 +24027,11 @@ extern "C" {
     *
     * @see elm_panes_content_left_set() for details.
     *
+    * @deprecated use elm_object_part_content_get() instead
+    *
     * @ingroup Panes
     */
-   EAPI Evas_Object          *elm_panes_content_left_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object          *elm_panes_content_left_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Get the right content of the panes.
@@ -23506,9 +24043,11 @@ extern "C" {
     *
     * @see elm_panes_content_right_set() for details.
     *
+    * @deprecated use elm_object_part_content_get() instead
+    *
     * @ingroup Panes
     */
-   EAPI Evas_Object          *elm_panes_content_right_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object          *elm_panes_content_right_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Unset the left content used for the panes.
@@ -23521,9 +24060,11 @@ extern "C" {
     * @see elm_panes_content_left_set() for details.
     * @see elm_panes_content_left_get().
     *
+    * @deprecated use elm_object_part_content_unset() instead
+    *
     * @ingroup Panes
     */
-   EAPI Evas_Object          *elm_panes_content_left_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object          *elm_panes_content_left_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Unset the right content used for the panes.
@@ -23537,6 +24078,8 @@ extern "C" {
     * @see elm_panes_content_right_set() for details.
     * @see elm_panes_content_right_get().
     *
+    * @deprecated use elm_object_part_content_unset() instead
+    *
     * @ingroup Panes
     */
    EAPI Evas_Object          *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -23981,7 +24524,7 @@ extern "C" {
     * - @c "default"
     *
     * Default contents parts of the conformant widget that you can use for are:
-    * @li "elm.swallow.content" - A content of the conformant
+    * @li "default" - A content of the conformant
     *
     * See how to use this widget in this example:
     * @ref conformant_example
@@ -24072,21 +24615,201 @@ extern "C" {
     * @}
     */
 
-   /* mapbuf */
+   /**
+    * @defgroup Mapbuf Mapbuf
+    * @ingroup Elementary
+    *
+    * @image html img/widget/mapbuf/preview-00.png
+    * @image latex img/widget/mapbuf/preview-00.eps width=\textwidth
+    *
+    * This holds one content object and uses an Evas Map of transformation
+    * points to be later used with this content. So the content will be
+    * moved, resized, etc as a single image. So it will improve performance
+    * when you have a complex interafce, with a lot of elements, and will
+    * need to resize or move it frequently (the content object and its
+    * children).
+    *
+    * Default contents parts of the mapbuf widget that you can use for are:
+    * @li "default" - A content of the mapbuf
+    *
+    * To enable map, elm_mapbuf_enabled_set() should be used.
+    * 
+    * See how to use this widget in this example:
+    * @ref mapbuf_example
+    */
+
+   /**
+    * @addtogroup Mapbuf
+    * @{
+    */
+
+   /**
+    * Add a new mapbuf widget to the given parent Elementary
+    * (container) object.
+    *
+    * @param parent The parent object.
+    * @return A new mapbuf widget handle or @c NULL, on errors.
+    *
+    * This function inserts a new mapbuf widget on the canvas.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI Evas_Object *elm_mapbuf_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the content of the mapbuf.
+    *
+    * @param obj The mapbuf object.
+    * @param content The content that will be filled in this mapbuf object.
+    *
+    * Once the content object is set, a previously set one will be deleted.
+    * If you want to keep that old content object, use the
+    * elm_mapbuf_content_unset() function.
+    *
+    * To enable map, elm_mapbuf_enabled_set() should be used.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI void         elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the content of the mapbuf.
+    *
+    * @param obj The mapbuf object.
+    * @return The content that is being used.
+    *
+    * Return the content object which is set for this widget.
+    *
+    * @see elm_mapbuf_content_set() for details.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Unset the content of the mapbuf.
+    *
+    * @param obj The mapbuf object.
+    * @return The content that was being used.
+    *
+    * Unparent and return the content object which was set for this widget.
+    *
+    * @see elm_mapbuf_content_set() for details.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Enable or disable the map.
+    *
+    * @param obj The mapbuf object.
+    * @param enabled @c EINA_TRUE to enable map or @c EINA_FALSE to disable it.
+    *
+    * This enables the map that is set or disables it. On enable, the object
+    * geometry will be saved, and the new geometry will change (position and
+    * size) to reflect the map geometry set.
+    *
+    * Also, when enabled, alpha and smooth states will be used, so if the
+    * content isn't solid, alpha should be enabled, for example, otherwise
+    * a black retangle will fill the content.
+    *
+    * When disabled, the stored map will be freed and geometry prior to
+    * enabling the map will be restored.
+    *
+    * It's disabled by default.
+    *
+    * @see elm_mapbuf_alpha_set()
+    * @see elm_mapbuf_smooth_set()
+    *
+    * @ingroup Mapbuf
+    */
    EAPI void         elm_mapbuf_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get a value whether map is enabled or not.
+    *
+    * @param obj The mapbuf object.
+    * @return @c EINA_TRUE means map is enabled. @c EINA_FALSE indicates
+    * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
+    *
+    * @see elm_mapbuf_enabled_set() for details.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI Eina_Bool    elm_mapbuf_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Enable or disable smooth map rendering.
+    *
+    * @param obj The mapbuf object.
+    * @param smooth @c EINA_TRUE to enable smooth map rendering or @c EINA_FALSE
+    * to disable it.
+    *
+    * This sets smoothing for map rendering. If the object is a type that has
+    * its own smoothing settings, then both the smooth settings for this object
+    * and the map must be turned off.
+    *
+    * By default smooth maps are enabled.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI void         elm_mapbuf_smooth_set(Evas_Object *obj, Eina_Bool smooth) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get a value whether smooth map rendering is enabled or not.
+    *
+    * @param obj The mapbuf object.
+    * @return @c EINA_TRUE means smooth map rendering is enabled. @c EINA_FALSE
+    * indicates it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
+    *
+    * @see elm_mapbuf_smooth_set() for details.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI Eina_Bool    elm_mapbuf_smooth_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set or unset alpha flag for map rendering.
+    *
+    * @param obj The mapbuf object.
+    * @param alpha @c EINA_TRUE to enable alpha blending or @c EINA_FALSE
+    * to disable it.
+    *
+    * This sets alpha flag for map rendering. If the object is a type that has
+    * its own alpha settings, then this will take precedence. Only image objects
+    * have this currently. It stops alpha blending of the map area, and is
+    * useful if you know the object and/or all sub-objects is 100% solid.
+    *
+    * Alpha is enabled by default.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI void         elm_mapbuf_alpha_set(Evas_Object *obj, Eina_Bool alpha) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get a value whether alpha blending is enabled or not.
+    *
+    * @param obj The mapbuf object.
+    * @return @c EINA_TRUE means alpha blending is enabled. @c EINA_FALSE
+    * indicates it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
+    *
+    * @see elm_mapbuf_alpha_set() for details.
+    *
+    * @ingroup Mapbuf
+    */
    EAPI Eina_Bool    elm_mapbuf_alpha_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
+    * @}
+    */
+
+   /**
     * @defgroup Flipselector Flip Selector
     *
+    * @image html img/widget/flipselector/preview-00.png
+    * @image latex img/widget/flipselector/preview-00.eps
+    *
     * A flip selector is a widget to show a set of @b text items, one
     * at a time, with the same sheet switching style as the @ref Clock
     * "clock" widget, when one changes the current displaying sheet
@@ -24108,6 +24831,10 @@ extern "C" {
     * Available styles for it:
     * - @c "default"
     *
+        * To set/get the label of the flipselector item, you can use
+        * elm_object_item_text_set/get APIs.
+        * Once the text is set, a previously set one will be deleted.
+        * 
     * Here is an example on its usage:
     * @li @ref flipselector_example
     */
@@ -24215,13 +24942,13 @@ extern "C" {
     * Get the internal list of items in a given flip selector widget.
     *
     * @param obj The flipselector object
-    * @return The list of items (#Elm_Flipselector_Item as data) or @c
-    * NULL on errors.
+    * @return The list of items (#Elm_Flipselector_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_flipselector_item_label_set(),
-    * elm_flipselector_item_label_get(), elm_flipselector_item_del(),
+    * elm_flipselector_item_label_get(),
     * elm_flipselector_item_del(),
     * elm_flipselector_item_selected_get(),
     * elm_flipselector_item_selected_set().
@@ -24411,434 +25138,1574 @@ extern "C" {
     * @ingroup Flipselector
     */
    EAPI double                     elm_flipselector_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
    /**
     * @}
     */
 
    /**
-    * @addtogroup Animator Animator
-    * @ingroup Elementary
+    * @addtogroup Calendar
+    * @{
+    */
+
+   /**
+    * @enum _Elm_Calendar_Mark_Repeat
+    * @typedef Elm_Calendar_Mark_Repeat
     *
-    * @brief Functions to ease creation of animations.
+    * Event periodicity, used to define if a mark should be repeated
+    * @b beyond event's day. It's set when a mark is added.
     *
-    * elm_animator is designed to provide an easy way to create animations.
-    * Creating an animation with elm_animator is as simple as setting a
-    * duration, an operating callback and telling it to run the animation.
-    * However that is not the full extent of elm_animator's ability, animations
-    * can be paused and resumed, reversed and the animation need not be linear.
+    * So, for a mark added to 13th May with periodicity set to WEEKLY,
+    * there will be marks every week after this date. Marks will be displayed
+    * at 13th, 20th, 27th, 3rd June ...
     *
-    * To run an animation you must specify at least a duration and operation
-    * callback, not setting any other properties will create a linear animation
-    * that runs once and is not reversed.
+    * Values don't work as bitmask, only one can be choosen.
     *
-    * @ref elm_animator_example_page_01 "This" example should make all of that
-    * very clear.
+    * @see elm_calendar_mark_add()
     *
-    * @warning elm_animator is @b not a widget.
-    * @{
+    * @ingroup Calendar
     */
+   typedef enum _Elm_Calendar_Mark_Repeat
+     {
+        ELM_CALENDAR_UNIQUE, /**< Default value. Marks will be displayed only on event day. */
+        ELM_CALENDAR_DAILY, /**< Marks will be displayed everyday after event day (inclusive). */
+        ELM_CALENDAR_WEEKLY, /**< Marks will be displayed every week after event day (inclusive) - i.e. each seven days. */
+        ELM_CALENDAR_MONTHLY, /**< Marks will be displayed every month day that coincides to event day. E.g.: if an event is set to 30th Jan, no marks will be displayed on Feb, but will be displayed on 30th Mar*/
+        ELM_CALENDAR_ANNUALLY /**< Marks will be displayed every year that coincides to event day (and month). E.g. an event added to 30th Jan 2012 will be repeated on 30th Jan 2013. */
+     } Elm_Calendar_Mark_Repeat;
+
+   typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark; /**< Item handle for a calendar mark. Created with elm_calendar_mark_add() and deleted with elm_calendar_mark_del(). */
+
    /**
-    * @brief Type of curve desired for animation.
+    * Add a new calendar widget to the given parent Elementary
+    * (container) object.
+    *
+    * @param parent The parent object.
+    * @return a new calendar widget handle or @c NULL, on errors.
+    *
+    * This function inserts a new calendar widget on the canvas.
     *
-    * The speed in which an animation happens doesn't have to be linear, some
-    * animations will look better if they're accelerating or decelerating, so
-    * elm_animator provides four options in this regard:
-    * @image html elm_animator_curve_style.png
-    * @image latex elm_animator_curve_style.eps width=\textwidth
-    * As can be seen in the image the speed of the animation will be:
-    * @li ELM_ANIMATOR_CURVE_LINEAR constant
-    * @li ELM_ANIMATOR_CURVE_IN_OUT start slow, speed up and then slow down
-    * @li ELM_ANIMATOR_CURVE_IN start slow and then speed up
-    * @li ELM_ANIMATOR_CURVE_OUT start fast and then slow down
+    * @ref calendar_example_01
+    *
+    * @ingroup Calendar
     */
-   typedef enum
-     {
-        ELM_ANIMATOR_CURVE_LINEAR,
-        ELM_ANIMATOR_CURVE_IN_OUT,
-        ELM_ANIMATOR_CURVE_IN,
-        ELM_ANIMATOR_CURVE_OUT
-     } Elm_Animator_Curve_Style;
-   typedef struct _Elm_Animator Elm_Animator;
-  /**
-   * Called back per loop of an elementary animators cycle
-   * @param data user-data given to elm_animator_operation_callback_set()
-   * @param animator the animator being run
-   * @param double the position in the animation
-   */
-   typedef void (*Elm_Animator_Operation_Cb) (void *data, Elm_Animator *animator, double frame);
-  /**
-   * Called back when an elementary animator finishes
-   * @param data user-data given to elm_animator_completion_callback_set()
-   */
-   typedef void (*Elm_Animator_Completion_Cb) (void *data);
+   EAPI Evas_Object       *elm_calendar_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get weekdays names displayed by the calendar.
+    *
+    * @param obj The calendar object.
+    * @return Array of seven strings to be used as weekday names.
+    *
+    * By default, weekdays abbreviations get from system are displayed:
+    * E.g. for an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat"
+    * The first string is related to Sunday, the second to Monday...
+    *
+    * @see elm_calendar_weekdays_name_set()
+    *
+    * @ref calendar_example_05
+    *
+    * @ingroup Calendar
+    */
+   EAPI const char       **elm_calendar_weekdays_names_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set weekdays names to be displayed by the calendar.
+    *
+    * @param obj The calendar object.
+    * @param weekdays Array of seven strings to be used as weekday names.
+    * @warning It must have 7 elements, or it will access invalid memory.
+    * @warning The strings must be NULL terminated ('@\0').
+    *
+    * By default, weekdays abbreviations get from system are displayed:
+    * E.g. for an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat"
+    *
+    * The first string should be related to Sunday, the second to Monday...
+    *
+    * The usage should be like this:
+    * @code
+    *   const char *weekdays[] =
+    *   {
+    *      "Sunday", "Monday", "Tuesday", "Wednesday",
+    *      "Thursday", "Friday", "Saturday"
+    *   };
+    *   elm_calendar_weekdays_names_set(calendar, weekdays);
+    * @endcode
+    *
+    * @see elm_calendar_weekdays_name_get()
+    *
+    * @ref calendar_example_02
+    *
+    * @ingroup Calendar
+    */
+   EAPI void               elm_calendar_weekdays_names_set(Evas_Object *obj, const char *weekdays[]) EINA_ARG_NONNULL(1, 2);
 
    /**
-    * @brief Create a new animator.
+    * Set the minimum and maximum values for the year
+    *
+    * @param obj The calendar object
+    * @param min The minimum year, greater than 1901;
+    * @param max The maximum year;
+    *
+    * Maximum must be greater than minimum, except if you don't wan't to set
+    * maximum year.
+    * Default values are 1902 and -1.
     *
-    * @param[in] parent Parent object
+    * If the maximum year is a negative value, it will be limited depending
+    * on the platform architecture (year 2037 for 32 bits);
     *
-    * The @a parent argument can be set to NULL for no parent. If a parent is set
-    * there is no need to call elm_animator_del(), when the parent is deleted it
-    * will delete the animator.
-    * @deprecated Use @ref Transit instead.
+    * @see elm_calendar_min_max_year_get()
+    *
+    * @ref calendar_example_03
+    *
+    * @ingroup Calendar
+    */
+   EAPI void               elm_calendar_min_max_year_set(Evas_Object *obj, int min, int max) EINA_ARG_NONNULL(1);
 
+   /**
+    * Get the minimum and maximum values for the year
+    *
+    * @param obj The calendar object.
+    * @param min The minimum year.
+    * @param max The maximum year.
+    *
+    * Default values are 1902 and -1.
+    *
+    * @see elm_calendar_min_max_year_get() for more details.
+    *
+    * @ref calendar_example_05
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI Elm_Animator*            elm_animator_add(Evas_Object *parent);
+   EAPI void               elm_calendar_min_max_year_get(const Evas_Object *obj, int *min, int *max) EINA_ARG_NONNULL(1);
+
    /**
-    * Deletes the animator freeing any resources it used. If the animator was
-    * created with a NULL parent this must be called, otherwise it will be
-    * automatically called when the parent is deleted.
+    * Enable or disable day selection
+    *
+    * @param obj The calendar object.
+    * @param enabled @c EINA_TRUE to enable selection or @c EINA_FALSE to
+    * disable it.
+    *
+    * Enabled by default. If disabled, the user still can select months,
+    * but not days. Selected days are highlighted on calendar.
+    * It should be used if you won't need such selection for the widget usage.
+    *
+    * When a day is selected, or month is changed, smart callbacks for
+    * signal "changed" will be called.
     *
-    * @param[in] animator Animator object
-    * @deprecated Use @ref Transit instead.
+    * @see elm_calendar_day_selection_enable_get()
+    *
+    * @ref calendar_example_04
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_del(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI void               elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
+
    /**
-    * Set the duration of the animation.
+    * Get a value whether day selection is enabled or not.
     *
-    * @param[in] animator Animator object
-    * @param[in] duration Duration in second
-    * @deprecated Use @ref Transit instead.
+    * @see elm_calendar_day_selection_enable_set() for details.
+    *
+    * @param obj The calendar object.
+    * @return EINA_TRUE means day selection is enabled. EINA_FALSE indicates
+    * it's disabled. If @p obj is NULL, EINA_FALSE is returned.
+    *
+    * @ref calendar_example_05
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_duration_set(Elm_Animator *animator, double duration) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool          elm_calendar_day_selection_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+
    /**
-    * @brief Set the callback function for animator operation.
+    * Set selected date to be highlighted on calendar.
+    *
+    * @param obj The calendar object.
+    * @param selected_time A @b tm struct to represent the selected date.
+    *
+    * Set the selected date, changing the displayed month if needed.
+    * Selected date changes when the user goes to next/previous month or
+    * select a day pressing over it on calendar.
     *
-    * @param[in] animator Animator object
-    * @param[in] func @ref Elm_Animator_Operation_Cb "Callback" function pointer
-    * @param[in] data Callback function user argument
+    * @see elm_calendar_selected_time_get()
     *
-    * The @p func callback will be called with a frame value in range [0, 1] which
-    * indicates how far along the animation should be. It is the job of @p func to
-    * actually change the state of any object(or objects) that are being animated.
-    * @deprecated Use @ref Transit instead.
+    * @ref calendar_example_04
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_operation_callback_set(Elm_Animator *animator, Elm_Animator_Operation_Cb func, void *data) EINA_ARG_NONNULL(1);
+   EAPI void               elm_calendar_selected_time_set(Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1);
+
    /**
-    * Set the callback function for the when the animation ends.
+    * Get selected date.
+    *
+    * @param obj The calendar object
+    * @param selected_time A @b tm struct to point to selected date
+    * @return EINA_FALSE means an error ocurred and returned time shouldn't
+    * be considered.
     *
-    * @param[in]  animator Animator object
-    * @param[in]  func   Callback function pointe
-    * @param[in]  data Callback function user argument
+    * Get date selected by the user or set by function
+    * elm_calendar_selected_time_set().
+    * Selected date changes when the user goes to next/previous month or
+    * select a day pressing over it on calendar.
     *
-    * @warning @a func will not be executed if elm_animator_stop() is called.
-    * @deprecated Use @ref Transit instead.
+    * @see elm_calendar_selected_time_get()
+    *
+    * @ref calendar_example_05
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_completion_callback_set(Elm_Animator *animator, Elm_Animator_Completion_Cb func, void *data) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool          elm_calendar_selected_time_get(const Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1, 2);
+
    /**
-    * @brief Stop animator.
+    * Set a function to format the string that will be used to display
+    * month and year;
+    *
+    * @param obj The calendar object
+    * @param format_function Function to set the month-year string given
+    * the selected date
+    *
+    * By default it uses strftime with "%B %Y" format string.
+    * It should allocate the memory that will be used by the string,
+    * that will be freed by the widget after usage.
+    * A pointer to the string and a pointer to the time struct will be provided.
+    *
+    * Example:
+    * @code
+    * static char *
+    * _format_month_year(struct tm *selected_time)
+    * {
+    *    char buf[32];
+    *    if (!strftime(buf, sizeof(buf), "%B %Y", selected_time)) return NULL;
+    *    return strdup(buf);
+    * }
+    *
+    * elm_calendar_format_function_set(calendar, _format_month_year);
+    * @endcode
     *
-    * @param[in] animator Animator object
+    * @ref calendar_example_02
     *
-    * If called before elm_animator_animate() it does nothing. If there is an
-    * animation in progress the animation will be stopped(the operation callback
-    * will not be executed again) and it can't be restarted using
-    * elm_animator_resume().
-    * @deprecated Use @ref Transit instead.
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_stop(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI void               elm_calendar_format_function_set(Evas_Object *obj, char * (*format_function) (struct tm *stime)) EINA_ARG_NONNULL(1);
+
    /**
-    * Set the animator repeat count.
+    * Add a new mark to the calendar
+    *
+    * @param obj The calendar object
+    * @param mark_type A string used to define the type of mark. It will be
+    * emitted to the theme, that should display a related modification on these
+    * days representation.
+    * @param mark_time A time struct to represent the date of inclusion of the
+    * mark. For marks that repeats it will just be displayed after the inclusion
+    * date in the calendar.
+    * @param repeat Repeat the event following this periodicity. Can be a unique
+    * mark (that don't repeat), daily, weekly, monthly or annually.
+    * @return The created mark or @p NULL upon failure.
+    *
+    * Add a mark that will be drawn in the calendar respecting the insertion
+    * time and periodicity. It will emit the type as signal to the widget theme.
+    * Default theme supports "holiday" and "checked", but it can be extended.
+    *
+    * It won't immediately update the calendar, drawing the marks.
+    * For this, call elm_calendar_marks_draw(). However, when user selects
+    * next or previous month calendar forces marks drawn.
+    *
+    * Marks created with this method can be deleted with
+    * elm_calendar_mark_del().
+    *
+    * Example
+    * @code
+    * struct tm selected_time;
+    * time_t current_time;
+    *
+    * current_time = time(NULL) + 5 * 84600;
+    * localtime_r(&current_time, &selected_time);
+    * elm_calendar_mark_add(cal, "holiday", selected_time,
+    *     ELM_CALENDAR_ANNUALLY);
+    *
+    * current_time = time(NULL) + 1 * 84600;
+    * localtime_r(&current_time, &selected_time);
+    * elm_calendar_mark_add(cal, "checked", selected_time, ELM_CALENDAR_UNIQUE);
+    *
+    * elm_calendar_marks_draw(cal);
+    * @endcode
+    *
+    * @see elm_calendar_marks_draw()
+    * @see elm_calendar_mark_del()
     *
-    * @param[in]  animator Animator object
-    * @param[in]  repeat_cnt Repeat count
-    * @deprecated Use @ref Transit instead.
+    * @ref calendar_example_06
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt) EINA_ARG_NONNULL(1);
+   EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat repeat) EINA_ARG_NONNULL(1);
+
    /**
-    * @brief Start animation.
+    * Delete mark from the calendar.
+    *
+    * @param mark The mark to be deleted.
+    *
+    * If deleting all calendar marks is required, elm_calendar_marks_clear()
+    * should be used instead of getting marks list and deleting each one.
+    *
+    * @see elm_calendar_mark_add()
     *
-    * @param[in] animator Animator object
+    * @ref calendar_example_06
     *
-    * This function starts the animation if the nescessary properties(duration
-    * and operation callback) have been set. Once started the animation will
-    * run until complete or elm_animator_stop() is called.
-    * @deprecated Use @ref Transit instead.
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_animate(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI void               elm_calendar_mark_del(Elm_Calendar_Mark *mark) EINA_ARG_NONNULL(1);
+
    /**
-    * Sets the animation @ref Elm_Animator_Curve_Style "acceleration style".
+    * Remove all calendar's marks
+    *
+    * @param obj The calendar object.
+    *
+    * @see elm_calendar_mark_add()
+    * @see elm_calendar_mark_del()
     *
-    * @param[in] animator Animator object
-    * @param[in] cs Curve style. Default is ELM_ANIMATOR_CURVE_LINEAR
-    * @deprecated Use @ref Transit instead.
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_curve_style_set(Elm_Animator *animator, Elm_Animator_Curve_Style cs) EINA_ARG_NONNULL(1);
+   EAPI void               elm_calendar_marks_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+
    /**
-    * Gets the animation @ref Elm_Animator_Curve_Style "acceleration style".
+    * Get a list of all the calendar marks.
+    *
+    * @param obj The calendar object.
+    * @return An @c Eina_List of calendar marks objects, or @c NULL on failure.
     *
-    * @param[in] animator Animator object
-    * @param[in] cs Curve style. Default is ELM_ANIMATOR_CURVE_LINEAR
-    * @deprecated Use @ref Transit instead.
+    * @see elm_calendar_mark_add()
+    * @see elm_calendar_mark_del()
+    * @see elm_calendar_marks_clear()
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI Elm_Animator_Curve_Style elm_animator_curve_style_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI const Eina_List   *elm_calendar_marks_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
    /**
-    * @brief Sets wether the animation should be automatically reversed.
+    * Draw calendar marks.
+    *
+    * @param obj The calendar object.
     *
-    * @param[in] animator Animator object
-    * @param[in] reverse Reverse or not
+    * Should be used after adding, removing or clearing marks.
+    * It will go through the entire marks list updating the calendar.
+    * If lots of marks will be added, add all the marks and then call
+    * this function.
     *
-    * This controls wether the animation will be run on reverse imediately after
-    * running forward. When this is set together with repetition the animation
-    * will run in reverse once for each time it ran forward.@n
-    * Runnin an animation in reverse is accomplished by calling the operation
-    * callback with a frame value starting at 1 and diminshing until 0.
-    * @deprecated Use @ref Transit instead.
+    * When the month is changed, i.e. user selects next or previous month,
+    * marks will be drawed.
+    *
+    * @see elm_calendar_mark_add()
+    * @see elm_calendar_mark_del()
+    * @see elm_calendar_marks_clear()
+    *
+    * @ref calendar_example_06
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse) EINA_ARG_NONNULL(1);
+   EAPI void               elm_calendar_marks_draw(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
    /**
-    * Gets wether the animation will automatically reversed
+    * Set a day text color to the same that represents Saturdays.
+    *
+    * @param obj The calendar object.
+    * @param pos The text position. Position is the cell counter, from left
+    * to right, up to down. It starts on 0 and ends on 41.
+    *
+    * @deprecated use elm_calendar_mark_add() instead like:
+    *
+    * @code
+    * struct tm t = { 0, 0, 12, 6, 0, 0, 6, 6, -1 };
+    * elm_calendar_mark_add(obj, "sat", &t, ELM_CALENDAR_WEEKLY);
+    * @endcode
     *
-    * @param[in] animator Animator object
-    * @deprecated Use @ref Transit instead.
+    * @see elm_calendar_mark_add()
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI Eina_Bool                elm_animator_auto_reverse_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_calendar_text_saturday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
+
    /**
-    * Gets the status for the animator operation. The status of the animator @b
-    * doesn't take in to account elm_animator_pause() or elm_animator_resume(), it
-    * only informs if the animation was started and has not ended(either normally
-    * or through elm_animator_stop()).
+    * Set a day text color to the same that represents Sundays.
+    *
+    * @param obj The calendar object.
+    * @param pos The text position. Position is the cell counter, from left
+    * to right, up to down. It starts on 0 and ends on 41.
+
+    * @deprecated use elm_calendar_mark_add() instead like:
+    *
+    * @code
+    * struct tm t = { 0, 0, 12, 7, 0, 0, 0, 0, -1 };
+    * elm_calendar_mark_add(obj, "sat", &t, ELM_CALENDAR_WEEKLY);
+    * @endcode
     *
-    * @param[in] animator Animator object
-    * @deprecated Use @ref Transit instead.
+    * @see elm_calendar_mark_add()
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI Eina_Bool                elm_animator_operating_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_calendar_text_sunday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
+
    /**
-    * Gets how many times the animation will be repeated
+    * Set a day text color to the same that represents Weekdays.
+    *
+    * @param obj The calendar object
+    * @param pos The text position. Position is the cell counter, from left
+    * to right, up to down. It starts on 0 and ends on 41.
+    *
+    * @deprecated use elm_calendar_mark_add() instead like:
+    *
+    * @code
+    * struct tm t = { 0, 0, 12, 1, 0, 0, 0, 0, -1 };
+    *
+    * elm_calendar_mark_add(obj, "week", &t, ELM_CALENDAR_WEEKLY); // monday
+    * t.tm_tm_mday++; t.tm_wday++; t.tm_yday++;
+    * elm_calendar_mark_add(obj, "week", &t, ELM_CALENDAR_WEEKLY); // tuesday
+    * t.tm_tm_mday++; t.tm_wday++; t.tm_yday++;
+    * elm_calendar_mark_add(obj, "week", &t, ELM_CALENDAR_WEEKLY); // wednesday
+    * t.tm_tm_mday++; t.tm_wday++; t.tm_yday++;
+    * elm_calendar_mark_add(obj, "week", &t, ELM_CALENDAR_WEEKLY); // thursday
+    * t.tm_tm_mday++; t.tm_wday++; t.tm_yday++;
+    * elm_calendar_mark_add(obj, "week", &t, ELM_CALENDAR_WEEKLY); // friday
+    * @endcode
     *
-    * @param[in] animator Animator object
-    * @deprecated Use @ref Transit instead.
+    * @see elm_calendar_mark_add()
+    *
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI unsigned int             elm_animator_repeat_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_calendar_text_weekday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
+
    /**
-    * Pause the animator.
+    * Set the interval on time updates for an user mouse button hold
+    * on calendar widgets' month selection.
+    *
+    * @param obj The calendar object
+    * @param interval The (first) interval value in seconds
+    *
+    * This interval value is @b decreased while the user holds the
+    * mouse pointer either selecting next or previous month.
+    *
+    * This helps the user to get to a given month 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
+    * 1.05, so it decreases a little bit.
+    *
+    * The default starting interval value for automatic changes is
+    * @b 0.85 seconds.
     *
-    * @param[in]  animator Animator object
+    * @see elm_calendar_interval_get()
     *
-    * This causes the animation to be temporarily stopped(the operation callback
-    * will not be called). If the animation is not yet running this is a no-op.
-    * Once an animation has been paused with this function it can be resumed
-    * using elm_animator_resume().
-    * @deprecated Use @ref Transit instead.
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_pause(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI void               elm_calendar_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
+
    /**
-    * @brief Resumes the animator.
+    * Get the interval on time updates for an user mouse button hold
+    * on calendar widgets' month selection.
     *
-    * @param[in]  animator Animator object
+    * @param obj The calendar object
+    * @return The (first) interval value, in seconds, set on it
     *
-    * Resumes an animation that was paused using elm_animator_pause(), after
-    * calling this function calls to the operation callback will happen
-    * normally. If an animation is stopped by means of elm_animator_stop it
-    * @b can't be restarted with this function.@n
+    * @see elm_calendar_interval_set() for more details
     *
-    * @warning When an animation is resumed it doesn't start from where it was paused, it
-    * will go to where it would have been if it had not been paused. If an
-    * animation with a duration of 3 seconds is paused after 1 second for 1 second
-    * it will resume as if it had ben animating for 2 seconds, the operating
-    * callback will be called with a frame value of aproximately 2/3.
-    * @deprecated Use @ref Transit instead.
+    * @ingroup Calendar
     */
-   EINA_DEPRECATED EAPI void                     elm_animator_resume(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI double             elm_calendar_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
    /**
     * @}
     */
 
-   /* calendar */
-   typedef enum
-     {
-        ELM_CALENDAR_UNIQUE,
-        ELM_CALENDAR_DAILY,
-        ELM_CALENDAR_WEEKLY,
-        ELM_CALENDAR_MONTHLY,
-        ELM_CALENDAR_ANNUALLY
-     } Elm_Calendar_Mark_Repeat;
-   typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark;
+   /**
+    * @defgroup Diskselector Diskselector
+    * @ingroup Elementary
+    *
+    * @image html img/widget/diskselector/preview-00.png
+    * @image latex img/widget/diskselector/preview-00.eps
+    *
+    * A diskselector is a kind of list widget. It scrolls horizontally,
+    * and can contain label and icon objects. Three items are displayed
+    * with the selected one in the middle.
+    *
+    * It can act like a circular list with round mode and labels can be
+    * reduced for a defined length for side items.
+    *
+    * Smart callbacks one can listen to:
+    * - "selected" - when item is selected, i.e. scroller stops.
+    *
+    * Available styles for it:
+    * - @c "default"
+    *
+    * List of examples:
+    * @li @ref diskselector_example_01
+    * @li @ref diskselector_example_02
+    */
 
-   EAPI Evas_Object       *elm_calendar_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI const char       **elm_calendar_weekdays_names_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_weekdays_names_set(Evas_Object *obj, const char *weekdays[]) EINA_ARG_NONNULL(1, 2);
-   EAPI double             elm_calendar_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_min_max_year_get(const Evas_Object *obj, int *min, int *max) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_min_max_year_set(Evas_Object *obj, int min, int max) EINA_ARG_NONNULL(1);
-   EAPI Eina_Bool          elm_calendar_day_selection_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
-   EAPI Eina_Bool          elm_calendar_selected_time_get(const Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1, 2);
-   EAPI void               elm_calendar_selected_time_set(Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_format_function_set(Evas_Object *obj, char * (*format_function) (struct tm *stime)) EINA_ARG_NONNULL(1);
-   EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat repeat) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_mark_del(Elm_Calendar_Mark *mark) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_marks_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI const Eina_List   *elm_calendar_marks_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void               elm_calendar_marks_draw(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void               elm_calendar_text_saturday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void               elm_calendar_text_sunday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void               elm_calendar_text_weekday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
-   /* smart callbacks called:
-    * changed - emitted when the user select a day or change the displayed
-    * month.
+   /**
+    * @addtogroup Diskselector
+    * @{
     */
 
-   /* diskselector */
-   typedef struct _Elm_Diskselector_Item Elm_Diskselector_Item;
+   typedef struct _Elm_Diskselector_Item Elm_Diskselector_Item; /**< Item handle for a diskselector item. Created with elm_diskselector_item_append() and deleted with elm_diskselector_item_del(). */
 
+   /**
+    * Add a new diskselector widget to the given parent Elementary
+    * (container) object.
+    *
+    * @param parent The parent object.
+    * @return a new diskselector widget handle or @c NULL, on errors.
+    *
+    * This function inserts a new diskselector widget on the canvas.
+    *
+    * @ingroup Diskselector
+    */
    EAPI Evas_Object           *elm_diskselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI Eina_Bool              elm_diskselector_round_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Enable or disable round mode.
+    *
+    * @param obj The diskselector object.
+    * @param round @c EINA_TRUE to enable round mode or @c EINA_FALSE to
+    * disable it.
+    *
+    * Disabled by default. If round mode is enabled the items list will
+    * work like a circle list, so when the user reaches the last item,
+    * the first one will popup.
+    *
+    * @see elm_diskselector_round_get()
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_round_set(Evas_Object *obj, Eina_Bool round) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get a value whether round mode is enabled or not.
+    *
+    * @see elm_diskselector_round_set() for details.
+    *
+    * @param obj The diskselector object.
+    * @return @c EINA_TRUE means round mode is enabled. @c EINA_FALSE indicates
+    * it's disabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
+    *
+    * @ingroup Diskselector
+    */
+   EAPI Eina_Bool              elm_diskselector_round_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the side labels max length.
+    *
+    * @deprecated use elm_diskselector_side_label_length_get() instead:
+    *
+    * @param obj The diskselector object.
+    * @return The max length defined for side labels, or 0 if not a valid
+    * diskselector.
+    *
+    * @ingroup Diskselector
+    */
    EINA_DEPRECATED EAPI int    elm_diskselector_side_label_lenght_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the side labels max length.
+    *
+    * @deprecated use elm_diskselector_side_label_length_set() instead:
+    *
+    * @param obj The diskselector object.
+    * @param len The max length defined for side labels.
+    *
+    * @ingroup Diskselector
+    */
    EINA_DEPRECATED EAPI void   elm_diskselector_side_label_lenght_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the side labels max length.
+    *
+    * @see elm_diskselector_side_label_length_set() for details.
+    *
+    * @param obj The diskselector object.
+    * @return The max length defined for side labels, or 0 if not a valid
+    * diskselector.
+    *
+    * @ingroup Diskselector
+    */
    EAPI int                    elm_diskselector_side_label_length_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void                   elm_diskselector_side_label_length_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
-   EAPI void                   elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
-   EAPI void                   elm_diskselector_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
-   EAPI void                   elm_diskselector_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
-   EAPI void                   elm_diskselector_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
-   EAPI void                   elm_diskselector_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI const Eina_List       *elm_diskselector_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI Elm_Diskselector_Item *elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
-   EAPI void                   elm_diskselector_item_del(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the side labels max length.
+    *
+    * @param obj The diskselector object.
+    * @param len The max length defined for side labels.
+    *
+    * Length is the number of characters of items' label that will be
+    * visible when it's set on side positions. It will just crop
+    * the string after defined size. E.g.:
+    *
+    * An item with label "January" would be displayed on side position as
+    * "Jan" if max length is set to 3, or "Janu", if this property
+    * is set to 4.
+    *
+    * When it's selected, the entire label will be displayed, except for
+    * width restrictions. In this case label will be cropped and "..."
+    * will be concatenated.
+    *
+    * Default side label max length is 3.
+    *
+    * This property will be applyed over all items, included before or
+    * later this function call.
+    *
+    * @ingroup Diskselector
+    */
+   EAPI void                   elm_diskselector_side_label_length_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the number of items to be displayed.
+    *
+    * @param obj The diskselector object.
+    * @param num The number of items the diskselector will display.
+    *
+    * Default value is 3, and also it's the minimun. If @p num is less
+    * than 3, it will be set to 3.
+    *
+    * Also, it can be set on theme, using data item @c display_item_num
+    * on group "elm/diskselector/item/X", where X is style set.
+    * E.g.:
+    *
+    * group { name: "elm/diskselector/item/X";
+    * data {
+    *     item: "display_item_num" "5";
+    *     }
+    *
+    * @ingroup Diskselector
+    */
+   EAPI void                   elm_diskselector_display_item_num_set(Evas_Object *obj, int num) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the number of items in the diskselector object.
+    *
+    * @param obj The diskselector object.
+    *
+    * @ingroup Diskselector
+    */
+   EAPI int                   elm_diskselector_display_item_num_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set bouncing behaviour when the scrolled content reaches an edge.
+    *
+    * Tell the internal scroller object whether it should bounce or not
+    * when it reaches the respective edges for each axis.
+    *
+    * @param obj The diskselector object.
+    * @param h_bounce Whether to bounce or not in the horizontal axis.
+    * @param v_bounce Whether to bounce or not in the vertical axis.
+    *
+    * @see elm_scroller_bounce_set()
+    *
+    * @ingroup Diskselector
+    */
+   EAPI void                   elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the bouncing behaviour of the internal scroller.
+    *
+    * Get whether the internal scroller should bounce when the edge of each
+    * axis is reached scrolling.
+    *
+    * @param obj The diskselector object.
+    * @param h_bounce Pointer where to store the bounce state of the horizontal
+    * axis.
+    * @param v_bounce Pointer where to store the bounce state of the vertical
+    * axis.
+    *
+    * @see elm_scroller_bounce_get()
+    * @see elm_diskselector_bounce_set()
+    *
+    * @ingroup Diskselector
+    */
+   EAPI void                   elm_diskselector_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the scrollbar policy.
+    *
+    * @see elm_diskselector_scroller_policy_get() for details.
+    *
+    * @param obj The diskselector object.
+    * @param policy_h Pointer where to store horizontal scrollbar policy.
+    * @param policy_v Pointer where to store vertical scrollbar policy.
+    *
+    * @ingroup Diskselector
+    */
+   EAPI void                   elm_diskselector_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the scrollbar policy.
+    *
+    * @param obj The diskselector object.
+    * @param policy_h Horizontal scrollbar policy.
+    * @param policy_v Vertical scrollbar policy.
+    *
+    * This sets the scrollbar visibility policy for the given scroller.
+    * #ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it
+    * is needed, and otherwise kept hidden. #ELM_SCROLLER_POLICY_ON turns
+    * it on all the time, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
+    * This applies respectively for the horizontal and vertical scrollbars.
+    *
+    * The both are disabled by default, i.e., are set to
+    * #ELM_SCROLLER_POLICY_OFF.
+    *
+    * @ingroup Diskselector
+    */
+   EAPI void                   elm_diskselector_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
+
+   /**
+    * Remove all diskselector's items.
+    *
+    * @param obj The diskselector object.
+    *
+    * @see elm_diskselector_item_del()
+    * @see elm_diskselector_item_append()
+    *
+    * @ingroup Diskselector
+    */
+   EAPI void                   elm_diskselector_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get a list of all the diskselector items.
+    *
+    * @param obj The diskselector object.
+    * @return An @c Eina_List of diskselector items, #Elm_Diskselector_Item,
+    * or @c NULL on failure.
+    *
+    * @see elm_diskselector_item_append()
+    * @see elm_diskselector_item_del()
+    * @see elm_diskselector_clear()
+    *
+    * @ingroup Diskselector
+    */
+   EAPI const Eina_List       *elm_diskselector_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Appends a new item to the diskselector object.
+    *
+    * @param obj The diskselector object.
+    * @param label The label of the diskselector item.
+    * @param icon The icon object to use at left side of the item. An
+    * icon can be any Evas object, but usually it is an icon created
+    * with elm_icon_add().
+    * @param func The function to call when the item is selected.
+    * @param data The data to associate with the item for related callbacks.
+    *
+    * @return The created item or @c NULL upon failure.
+    *
+    * A new item will be created and appended to the diskselector, i.e., will
+    * be set as last item. Also, if there is no selected item, it will
+    * be selected. This will always happens for the first appended item.
+    *
+    * If no icon is set, label will be centered on item position, otherwise
+    * the icon will be placed at left of the label, that will be shifted
+    * to the right.
+    *
+    * Items created with this method can be deleted with
+    * elm_diskselector_item_del().
+    *
+    * Associated @p data can be properly freed when item is deleted if a
+    * callback function is set with elm_diskselector_item_del_cb_set().
+    *
+    * If a function is passed as argument, it will be called everytime this item
+    * is selected, i.e., the user stops the diskselector with this
+    * item on center position. If such function isn't needed, just passing
+    * @c NULL as @p func is enough. The same should be done for @p data.
+    *
+    * Simple example (with no function callback or data associated):
+    * @code
+    * disk = elm_diskselector_add(win);
+    * ic = elm_icon_add(win);
+    * elm_icon_file_set(ic, "path/to/image", NULL);
+    * elm_icon_scale_set(ic, EINA_TRUE, EINA_TRUE);
+    * elm_diskselector_item_append(disk, "label", ic, NULL, NULL);
+    * @endcode
+    *
+    * @see elm_diskselector_item_del()
+    * @see elm_diskselector_item_del_cb_set()
+    * @see elm_diskselector_clear()
+    * @see elm_icon_add()
+    *
+    * @ingroup Diskselector
+    */
+   EAPI Elm_Diskselector_Item *elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+
+
+   /**
+    * Delete them item from the diskselector.
+    *
+    * @param it The item of diskselector to be deleted.
+    *
+    * If deleting all diskselector items is required, elm_diskselector_clear()
+    * should be used instead of getting items list and deleting each one.
+    *
+    * @see elm_diskselector_clear()
+    * @see elm_diskselector_item_append()
+    * @see elm_diskselector_item_del_cb_set()
+    *
+    * @ingroup Diskselector
+    */
+   EAPI void                   elm_diskselector_item_del(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the function called when a diskselector item is freed.
+    *
+    * @param it The item to set the callback on
+    * @param func The function called
+    *
+    * If there is a @p func, then it will be called prior item's memory release.
+    * That will be called with the following arguments:
+    * @li item's data;
+    * @li item's Evas object;
+    * @li item itself;
+    *
+    * This way, a data associated to a diskselector item could be properly
+    * freed.
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_del_cb_set(Elm_Diskselector_Item *item, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the data associated to the item.
+    *
+    * @param it The diskselector item
+    * @return The data associated to @p it
+    *
+    * The return value is a pointer to data associated to @p item when it was
+    * created, with function elm_diskselector_item_append(). If no data
+    * was passed as argument, it will return @c NULL.
+    *
+    * @see elm_diskselector_item_append()
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                  *elm_diskselector_item_data_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
-   EAPI Evas_Object           *elm_diskselector_item_icon_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the icon associated to the item.
+    *
+    * @param it The diskselector item
+    * @param icon The icon object to associate with @p it
+    *
+    * The icon object to use at left side of the item. An
+    * icon can be any Evas object, but usually it is an icon created
+    * with elm_icon_add().
+    *
+    * Once the icon object is set, a previously set one will be deleted.
+    * @warning Setting the same icon for two items will cause the icon to
+    * dissapear from the first item.
+    *
+    * If an icon was passed as argument on item creation, with function
+    * elm_diskselector_item_append(), it will be already
+    * associated to the item.
+    *
+    * @see elm_diskselector_item_append()
+    * @see elm_diskselector_item_icon_get()
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_icon_set(Elm_Diskselector_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
-   EAPI const char            *elm_diskselector_item_label_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the icon associated to the item.
+    *
+    * @param it The diskselector item
+    * @return The icon associated to @p it
+    *
+    * The return value is a pointer to the icon associated to @p item when it was
+    * created, with function elm_diskselector_item_append(), or later
+    * with function elm_diskselector_item_icon_set. If no icon
+    * was passed as argument, it will return @c NULL.
+    *
+    * @see elm_diskselector_item_append()
+    * @see elm_diskselector_item_icon_set()
+    *
+    * @ingroup Diskselector
+    */
+   EAPI Evas_Object           *elm_diskselector_item_icon_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the label of item.
+    *
+    * @param it The item of diskselector.
+    * @param label The label of item.
+    *
+    * The label to be displayed by the item.
+    *
+    * If no icon is set, label will be centered on item position, otherwise
+    * the icon will be placed at left of the label, that will be shifted
+    * to the right.
+    *
+    * An item with label "January" would be displayed on side position as
+    * "Jan" if max length is set to 3 with function
+    * elm_diskselector_side_label_lenght_set(), or "Janu", if this property
+    * is set to 4.
+    *
+    * When this @p item is selected, the entire label will be displayed,
+    * except for width restrictions.
+    * In this case label will be cropped and "..." will be concatenated,
+    * but only for display purposes. It will keep the entire string, so
+    * if diskselector is resized the remaining characters will be displayed.
+    *
+    * If a label was passed as argument on item creation, with function
+    * elm_diskselector_item_append(), it will be already
+    * displayed by the item.
+    *
+    * @see elm_diskselector_side_label_lenght_set()
+    * @see elm_diskselector_item_label_get()
+    * @see elm_diskselector_item_append()
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_label_set(Elm_Diskselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the label of item.
+    *
+    * @param it The item of diskselector.
+    * @return The label of item.
+    *
+    * The return value is a pointer to the label associated to @p item when it was
+    * created, with function elm_diskselector_item_append(), or later
+    * with function elm_diskselector_item_label_set. If no label
+    * was passed as argument, it will return @c NULL.
+    *
+    * @see elm_diskselector_item_label_set() for more details.
+    * @see elm_diskselector_item_append()
+    *
+    * @ingroup Diskselector
+    */
+   EAPI const char            *elm_diskselector_item_label_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the selected item.
+    *
+    * @param obj The diskselector object.
+    * @return The selected diskselector item.
+    *
+    * The selected item can be unselected with function
+    * elm_diskselector_item_selected_set(), and the first item of
+    * diskselector will be selected.
+    *
+    * The selected item always will be centered on diskselector, with
+    * full label displayed, i.e., max lenght set to side labels won't
+    * apply on the selected item. More details on
+    * elm_diskselector_side_label_length_set().
+    *
+    * @ingroup Diskselector
+    */
    EAPI Elm_Diskselector_Item *elm_diskselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the selected state of an item.
+    *
+    * @param it The diskselector item
+    * @param selected 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 previosly selected will be unselected.
+    * Previoulsy selected item can be get with function
+    * elm_diskselector_selected_item_get().
+    *
+    * If the item @p it is unselected, the first item of diskselector will
+    * be selected.
+    *
+    * Selected items will be visible on center position of diskselector.
+    * So if it was on another position before selected, or was invisible,
+    * diskselector will animate items until the selected item reaches center
+    * position.
+    *
+    * @see elm_diskselector_item_selected_get()
+    * @see elm_diskselector_selected_item_get()
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_selected_set(Elm_Diskselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
+
+   /*
+    * Get whether the @p item is selected or not.
+    *
+    * @param it The diskselector item.
+    * @return @c EINA_TRUE means item is selected. @c EINA_FALSE indicates
+    * it's not. If @p obj is @c NULL, @c EINA_FALSE is returned.
+    *
+    * @see elm_diskselector_selected_item_set() for details.
+    * @see elm_diskselector_item_selected_get()
+    *
+    * @ingroup Diskselector
+    */
    EAPI Eina_Bool              elm_diskselector_item_selected_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the first item of the diskselector.
+    *
+    * @param obj The diskselector object.
+    * @return The first item, or @c NULL if none.
+    *
+    * The list of items follows append order. So it will return the first
+    * item appended to the widget that wasn't deleted.
+    *
+    * @see elm_diskselector_item_append()
+    * @see elm_diskselector_items_get()
+    *
+    * @ingroup Diskselector
+    */
    EAPI Elm_Diskselector_Item *elm_diskselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the last item of the diskselector.
+    *
+    * @param obj The diskselector object.
+    * @return The last item, or @c NULL if none.
+    *
+    * The list of items follows append order. So it will return last first
+    * item appended to the widget that wasn't deleted.
+    *
+    * @see elm_diskselector_item_append()
+    * @see elm_diskselector_items_get()
+    *
+    * @ingroup Diskselector
+    */
    EAPI Elm_Diskselector_Item *elm_diskselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the item before @p item in diskselector.
+    *
+    * @param it The diskselector item.
+    * @return The item before @p item, or @c NULL if none or on failure.
+    *
+    * The list of items follows append order. So it will return item appended
+    * just before @p item and that wasn't deleted.
+    *
+    * If it is the first item, @c NULL will be returned.
+    * First item can be get by elm_diskselector_first_item_get().
+    *
+    * @see elm_diskselector_item_append()
+    * @see elm_diskselector_items_get()
+    *
+    * @ingroup Diskselector
+    */
    EAPI Elm_Diskselector_Item *elm_diskselector_item_prev_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the item after @p item in diskselector.
+    *
+    * @param it The diskselector item.
+    * @return The item after @p item, or @c NULL if none or on failure.
+    *
+    * The list of items follows append order. So it will return item appended
+    * just after @p item and that wasn't deleted.
+    *
+    * If it is the last item, @c NULL will be returned.
+    * Last item can be get by elm_diskselector_last_item_get().
+    *
+    * @see elm_diskselector_item_append()
+    * @see elm_diskselector_items_get()
+    *
+    * @ingroup Diskselector
+    */
    EAPI Elm_Diskselector_Item *elm_diskselector_item_next_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the text to be shown in the diskselector item.
+    *
+    * @param item Target item
+    * @param text The text to set in the content
+    *
+    * Setup the text as tooltip to object. The item can have only one tooltip,
+    * so any previous tooltip data is removed.
+    *
+    * @see elm_object_tooltip_text_set() for more details.
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_tooltip_text_set(Elm_Diskselector_Item *item, const char *text) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the content to be shown in the tooltip item.
+    *
+    * Setup the tooltip to item. The item can have only one tooltip,
+    * so any previous tooltip data is removed. @p func(with @p data) will
+    * be called every time that need show the tooltip and it should
+    * return a valid Evas_Object. This object is then managed fully by
+    * tooltip system and is deleted when the tooltip is gone.
+    *
+    * @param item the diskselector item being attached a tooltip.
+    * @param func the function used to create the tooltip contents.
+    * @param data what to provide to @a func as callback data/context.
+    * @param del_cb called when data is not needed anymore, either when
+    *        another callback replaces @p func, the tooltip is unset with
+    *        elm_diskselector_item_tooltip_unset() or the owner @a item
+    *        dies. This callback receives as the first parameter the
+    *        given @a data, and @c event_info is the item.
+    *
+    * @see elm_object_tooltip_content_cb_set() for more details.
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_tooltip_content_cb_set(Elm_Diskselector_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
+
+   /**
+    * Unset tooltip from item.
+    *
+    * @param item diskselector item to remove previously set tooltip.
+    *
+    * Remove tooltip from item. The callback provided as del_cb to
+    * elm_diskselector_item_tooltip_content_cb_set() will be called to notify
+    * it is not used anymore.
+    *
+    * @see elm_object_tooltip_unset() for more details.
+    * @see elm_diskselector_item_tooltip_content_cb_set()
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_tooltip_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+
+   /**
+    * Sets a different style for this item tooltip.
+    *
+    * @note before you set a style you should define a tooltip with
+    *       elm_diskselector_item_tooltip_content_cb_set() or
+    *       elm_diskselector_item_tooltip_text_set()
+    *
+    * @param item diskselector item with tooltip already set.
+    * @param style the theme style to use (default, transparent, ...)
+    *
+    * @see elm_object_tooltip_style_set() for more details.
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_tooltip_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the style for this item tooltip.
+    *
+    * @param item diskselector item with tooltip already set.
+    * @return style the theme style in use, defaults to "default". If the
+    *         object does not have a tooltip set, then NULL is returned.
+    *
+    * @see elm_object_tooltip_style_get() for more details.
+    * @see elm_diskselector_item_tooltip_style_set()
+    *
+    * @ingroup Diskselector
+    */
    EAPI const char            *elm_diskselector_item_tooltip_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the cursor to be shown when mouse is over the diskselector item
+    *
+    * @param item Target item
+    * @param cursor the cursor name to be used.
+    *
+    * @see elm_object_cursor_set() for more details.
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_cursor_set(Elm_Diskselector_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the cursor to be shown when mouse is over the diskselector item
+    *
+    * @param item diskselector item with cursor already set.
+    * @return the cursor name.
+    *
+    * @see elm_object_cursor_get() for more details.
+    * @see elm_diskselector_cursor_set()
+    *
+    * @ingroup Diskselector
+    */
    EAPI const char            *elm_diskselector_item_cursor_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+
+   /**
+    * Unset the cursor to be shown when mouse is over the diskselector item
+    *
+    * @param item Target item
+    *
+    * @see elm_object_cursor_unset() for more details.
+    * @see elm_diskselector_cursor_set()
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_cursor_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+   /**
+    * Sets a different style for this item cursor.
+    *
+    * @note before you set a style you should define a cursor with
+    *       elm_diskselector_item_cursor_set()
+    *
+    * @param item diskselector item with cursor already set.
+    * @param style the theme style to use (default, transparent, ...)
+    *
+    * @see elm_object_cursor_style_set() for more details.
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_cursor_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
+
+
+   /**
+    * Get the style for this item cursor.
+    *
+    * @param item diskselector item with cursor already set.
+    * @return style the theme style in use, defaults to "default". If the
+    *         object does not have a cursor set, then @c NULL is returned.
+    *
+    * @see elm_object_cursor_style_get() for more details.
+    * @see elm_diskselector_item_cursor_style_set()
+    *
+    * @ingroup Diskselector
+    */
    EAPI const char            *elm_diskselector_item_cursor_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+
+
+   /**
+    * Set if the cursor set should be searched on the theme or should use
+    * the provided by the engine, only.
+    *
+    * @note before you set if should look on theme you should define a cursor
+    * with elm_diskselector_item_cursor_set().
+    * By default it will only look for cursors provided by the engine.
+    *
+    * @param item widget item with cursor already set.
+    * @param engine_only boolean to define if cursors set with
+    * elm_diskselector_item_cursor_set() should be searched only
+    * between cursors provided by the engine or searched on widget's
+    * theme as well.
+    *
+    * @see elm_object_cursor_engine_only_set() for more details.
+    *
+    * @ingroup Diskselector
+    */
    EAPI void                   elm_diskselector_item_cursor_engine_only_set(Elm_Diskselector_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the cursor engine only usage for this item cursor.
+    *
+    * @param item widget item with cursor already set.
+    * @return engine_only boolean to define it cursors should be looked only
+    * between the provided by the engine or searched on widget's theme as well.
+    * If the item does not have a cursor set, then @c EINA_FALSE is returned.
+    *
+    * @see elm_object_cursor_engine_only_get() for more details.
+    * @see elm_diskselector_item_cursor_engine_only_set()
+    *
+    * @ingroup Diskselector
+    */
    EAPI Eina_Bool              elm_diskselector_item_cursor_engine_only_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
-   EAPI void                   elm_diskselector_display_item_num_set(Evas_Object *obj, int num) EINA_ARG_NONNULL(1);
-   /* smart callbacks called:
-    * "selected" - when item is selected (scroller stops)
+
+   /**
+    * @}
+    */
+
+   /**
+    * @defgroup Colorselector Colorselector
+    *
+    * @{
+    *
+    * @image html img/widget/colorselector/preview-00.png
+    * @image latex img/widget/colorselector/preview-00.eps
+    *
+    * @brief Widget for user to select a color.
+    *
+    * Signals that you can add callbacks for are:
+    * "changed" - When the color value changes(event_info is NULL).
+    *
+    * See @ref tutorial_colorselector.
+    */
+   /**
+    * @brief Add a new colorselector to the parent
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
+    *
+    * @ingroup Colorselector
+    */
+   EAPI Evas_Object *elm_colorselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+   /**
+    * Set a color for the colorselector
+    *
+    * @param obj   Colorselector object
+    * @param r     r-value of color
+    * @param g     g-value of color
+    * @param b     b-value of color
+    * @param a     a-value of color
+    *
+    * @ingroup Colorselector
+    */
+   EAPI void         elm_colorselector_color_set(Evas_Object *obj, int r, int g , int b, int a) EINA_ARG_NONNULL(1);
+   /**
+    * Get a color from the colorselector
+    *
+    * @param obj   Colorselector object
+    * @param r     integer pointer for r-value of color
+    * @param g     integer pointer for g-value of color
+    * @param b     integer pointer for b-value of color
+    * @param a     integer pointer for a-value of color
+    *
+    * @ingroup Colorselector
+    */
+   EAPI void         elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g , int *b, int *a) EINA_ARG_NONNULL(1);
+   /**
+    * @}
+    */
+
+   /**
+    * @defgroup Ctxpopup Ctxpopup
+    *
+    * @image html img/widget/ctxpopup/preview-00.png
+    * @image latex img/widget/ctxpopup/preview-00.eps
+    *
+    * @brief Context popup widet.
+    *
+    * A ctxpopup is a widget that, when shown, pops up a list of items.
+    * It automatically chooses an area inside its parent object's view
+    * (set via elm_ctxpopup_add() and elm_ctxpopup_hover_parent_set()) to
+    * optimally fit into it. In the default theme, it will also point an
+    * arrow to it's top left position at the time one shows it. Ctxpopup
+    * items have a label and/or an icon. It is intended for a small
+    * number of items (hence the use of list, not genlist).
+    *
+    * @note Ctxpopup is a especialization of @ref Hover.
+    *
+    * Signals that you can add callbacks for are:
+    * "dismissed" - the ctxpopup was dismissed
+    *
+    * Default contents parts of the ctxpopup widget that you can use for are:
+    * @li "default" - A content of the ctxpopup
+    *
+    * @ref tutorial_ctxpopup shows the usage of a good deal of the API.
+    * @{
+    */
+   typedef enum _Elm_Ctxpopup_Direction
+     {
+        ELM_CTXPOPUP_DIRECTION_DOWN, /**< ctxpopup show appear below clicked
+                                          area */
+        ELM_CTXPOPUP_DIRECTION_RIGHT, /**< ctxpopup show appear to the right of
+                                           the clicked area */
+        ELM_CTXPOPUP_DIRECTION_LEFT, /**< ctxpopup show appear to the left of
+                                          the clicked area */
+        ELM_CTXPOPUP_DIRECTION_UP, /**< ctxpopup show appear above the clicked
+                                        area */
+        ELM_CTXPOPUP_DIRECTION_UNKNOWN, /**< ctxpopup does not determine it's direction yet*/
+     } Elm_Ctxpopup_Direction;
+#define Elm_Ctxpopup_Item Elm_Object_Item
+
+   /**
+    * @brief Add a new Ctxpopup object to the parent.
+    *
+    * @param parent Parent object
+    * @return New object or @c NULL, if it cannot be created
+    */
+   EAPI Evas_Object  *elm_ctxpopup_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set the Ctxpopup's parent
+    *
+    * @param obj The ctxpopup object
+    * @param area The parent to use
+    *
+    * Set the parent object.
+    *
+    * @note elm_ctxpopup_add() will automatically call this function
+    * with its @c parent argument.
+    *
+    * @see elm_ctxpopup_add()
+    * @see elm_hover_parent_set()
+    */
+   EAPI void          elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1, 2);
+   /**
+    * @brief Get the Ctxpopup's parent
+    *
+    * @param obj The ctxpopup object
+    *
+    * @see elm_ctxpopup_hover_parent_set() for more information
+    */
+   EAPI Evas_Object  *elm_ctxpopup_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Clear all items in the given ctxpopup object.
+    *
+    * @param obj Ctxpopup object
+    */
+   EAPI void          elm_ctxpopup_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Change the ctxpopup's orientation to horizontal or vertical.
+    *
+    * @param obj Ctxpopup object
+    * @param horizontal @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical
+    */
+   EAPI void          elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the value of current ctxpopup object's orientation.
+    *
+    * @param obj Ctxpopup object
+    * @return @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical mode (or errors)
+    *
+    * @see elm_ctxpopup_horizontal_set()
+    */
+   EAPI Eina_Bool     elm_ctxpopup_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Add a new item to a ctxpopup object.
+    *
+    * @param obj Ctxpopup object
+    * @param icon Icon to be set on new item
+    * @param label The Label of the new item
+    * @param func Convenience function called when item selected
+    * @param data Data passed to @p func
+    * @return A handle to the item added or @c NULL, on errors
+    *
+    * @warning Ctxpopup can't hold both an item list and a content at the same
+    * time. When an item is added, any previous content will be removed.
+    *
+    * @see elm_ctxpopup_content_set()
+    */
+   Elm_Object_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Delete the given item in a ctxpopup object.
+    *
+    * @param it Ctxpopup item to be deleted
+    *
+    * @see elm_ctxpopup_item_append()
+    */
+   EAPI void          elm_ctxpopup_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set the ctxpopup item's state as disabled or enabled.
+    *
+    * @param it Ctxpopup item to be enabled/disabled
+    * @param disabled @c EINA_TRUE to disable it, @c EINA_FALSE to enable it
+    *
+    * When disabled the item is greyed out to indicate it's state.
     */
-
+   EAPI void          elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
    /**
-    * @page tutorial_colorselector Color selector example
-    * @dontinclude colorselector_example_01.c
+    * @brief Get the ctxpopup item's disabled/enabled state.
     *
-    * This example shows how to change the color of a rectangle using a color
-    * selector. We aren't going to explain a lot of the code since it's the
-    * usual setup code:
-    * @until show(rect)
+    * @param it Ctxpopup item to be enabled/disabled
+    * @return disabled @c EINA_TRUE, if disabled, @c EINA_FALSE otherwise
     *
-    * Now that we have a window with background and a rectangle we can create
-    * our color_selector and set it's initial color to fully opaque blue:
-    * @until show
+    * @see elm_ctxpopup_item_disabled_set()
+    * @deprecated use elm_object_item_disabled_get() instead
+    */
+   EAPI Eina_Bool     elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the icon object for the given ctxpopup item.
     *
-    * Next we tell ask to be notified whenever the color changes:
-    * @until changed
+    * @param it Ctxpopup item
+    * @return icon object or @c NULL, if the item does not have icon or an error
+    * occurred
     *
-    * We follow that we some more run of the mill setup code:
-    * @until ELM_MAIN()
+    * @see elm_ctxpopup_item_append()
+    * @see elm_ctxpopup_item_icon_set()
+    */
+   EAPI Evas_Object  *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Sets the side icon associated with the ctxpopup item
     *
-    * And now get to the callback that sets the color of the rectangle:
-    * @until }
+    * @param it Ctxpopup item
+    * @param icon Icon object to be set
     *
-    * This example will look like this:
-    * @image html screenshots/colorselector_example_01.png
-    * @image latex screenshots/colorselector_example_01.eps
+    * Once the icon object is set, a previously set one will be deleted.
+    * @warning Setting the same icon for two items will cause the icon to
+    * dissapear from the first item.
     *
-    * @example colorselector_example_01.c
+    * @see elm_ctxpopup_item_append()
     */
+   EAPI void          elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
-    * @defgroup Colorselector Colorselector
-    *
-    * @{
+    * @brief Get the label for the given ctxpopup item.
     *
-    * @brief Widget for user to select a color.
+    * @param it Ctxpopup item
+    * @return label string or @c NULL, if the item does not have label or an
+    * error occured
     *
-    * Signals that you can add callbacks for are:
-    * "changed" - When the color value changes(event_info is NULL).
+    * @see elm_ctxpopup_item_append()
+    * @see elm_ctxpopup_item_label_set()
+    */
+   EAPI const char   *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief (Re)set the label on the given ctxpopup item.
     *
-    * See @ref tutorial_colorselector.
+    * @param it Ctxpopup item
+    * @param label String to set as label
     */
+   EAPI void          elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
    /**
-    * @brief Add a new colorselector to the parent
+    * @brief Set an elm widget as the content of the ctxpopup.
     *
-    * @param parent The parent object
-    * @return The new object or NULL if it cannot be created
+    * @param obj Ctxpopup object
+    * @param content Content to be swallowed
     *
-    * @ingroup Colorselector
+    * If the content object is already set, a previous one will bedeleted. If
+    * you want to keep that old content object, use the
+    * elm_ctxpopup_content_unset() function.
+    *
+    * @deprecated use elm_object_content_set()
+    *
+    * @warning Ctxpopup can't hold both a item list and a content at the same
+    * time. When a content is set, any previous items will be removed.
     */
-   EAPI Evas_Object *elm_colorselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
    /**
-    * Set a color for the colorselector
+    * @brief Unset the ctxpopup content
     *
-    * @param obj   Colorselector object
-    * @param r     r-value of color
-    * @param g     g-value of color
-    * @param b     b-value of color
-    * @param a     a-value of color
+    * @param obj Ctxpopup object
+    * @return The content that was being used
     *
-    * @ingroup Colorselector
+    * Unparent and return the content object which was set for this widget.
+    *
+    * @deprecated use elm_object_content_unset()
+    *
+    * @see elm_ctxpopup_content_set()
     */
-   EAPI void         elm_colorselector_color_set(Evas_Object *obj, int r, int g , int b, int a) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object  *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
-    * Get a color from the colorselector
+    * @brief Set the direction priority of a ctxpopup.
     *
-    * @param obj   Colorselector object
-    * @param r     integer pointer for r-value of color
-    * @param g     integer pointer for g-value of color
-    * @param b     integer pointer for b-value of color
-    * @param a     integer pointer for a-value of color
+    * @param obj Ctxpopup object
+    * @param first 1st priority of direction
+    * @param second 2nd priority of direction
+    * @param third 3th priority of direction
+    * @param fourth 4th priority of direction
     *
-    * @ingroup Colorselector
+    * This functions gives a chance to user to set the priority of ctxpopup
+    * showing direction. This doesn't guarantee the ctxpopup will appear in the
+    * requested direction.
+    *
+    * @see Elm_Ctxpopup_Direction
     */
-   EAPI void         elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g , int *b, int *a) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_direction_priority_set(Evas_Object *obj, Elm_Ctxpopup_Direction first, Elm_Ctxpopup_Direction second, Elm_Ctxpopup_Direction third, Elm_Ctxpopup_Direction fourth) EINA_ARG_NONNULL(1);
    /**
-    * @}
+    * @brief Get the direction priority of a ctxpopup.
+    *
+    * @param obj Ctxpopup object
+    * @param first 1st priority of direction to be returned
+    * @param second 2nd priority of direction to be returned
+    * @param third 3th priority of direction to be returned
+    * @param fourth 4th priority of direction to be returned
+    *
+    * @see elm_ctxpopup_direction_priority_set() for more information.
     */
-
-   /* Contextual Popup */
-   typedef struct _Elm_Ctxpopup_Item Elm_Ctxpopup_Item;
-
-   typedef enum _Elm_Ctxpopup_Direction
-     {
-        ELM_CTXPOPUP_DIRECTION_DOWN,
-        ELM_CTXPOPUP_DIRECTION_RIGHT,
-        ELM_CTXPOPUP_DIRECTION_LEFT,
-        ELM_CTXPOPUP_DIRECTION_UP,
-        ELM_CTXPOPUP_DIRECTION_UNKNOWN, /**< ctxpopup does not determine it's direction yet*/
-     } Elm_Ctxpopup_Direction;
-
-   EAPI Evas_Object  *elm_ctxpopup_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI Evas_Object  *elm_ctxpopup_item_icon_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_item_icon_set(Elm_Ctxpopup_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
-   EAPI const char   *elm_ctxpopup_item_label_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_item_label_set(Elm_Ctxpopup_Item *item, const char *label) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1, 2);
-   EAPI Evas_Object  *elm_ctxpopup_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
-   EAPI Eina_Bool     elm_ctxpopup_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   Elm_Ctxpopup_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_item_del(Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_item_disabled_set(Elm_Ctxpopup_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
-   EAPI Eina_Bool     elm_ctxpopup_item_disabled_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
-   EAPI Evas_Object  *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void          elm_ctxpopup_direction_priority_set(Evas_Object *obj, Elm_Ctxpopup_Direction first, Elm_Ctxpopup_Direction second, Elm_Ctxpopup_Direction third, Elm_Ctxpopup_Direction fourth) EINA_ARG_NONNULL(1);
    EAPI void          elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth) EINA_ARG_NONNULL(1);
+
+   /**
+    * @brief Get the current direction of a ctxpopup.
+    *
+    * @param obj Ctxpopup object
+    * @return current direction of a ctxpopup
+    *
+    * @warning Once the ctxpopup showed up, the direction would be determined
+    */
    EAPI Elm_Ctxpopup_Direction elm_ctxpopup_direction_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /* smart callbacks called:
-    * "dismissed" - the ctxpopup was dismissed
+
+   /**
+    * @}
     */
 
    /* transit */
@@ -25784,13 +27651,16 @@ extern "C" {
    EAPI void                    elm_store_filesystem_directory_set(Elm_Store *st, const char *dir) EINA_ARG_NONNULL(1);
    EAPI const char             *elm_store_filesystem_directory_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
    EAPI const char             *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+
    EAPI void                    elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) EINA_ARG_NONNULL(1);
+
    EAPI void                    elm_store_cache_set(Elm_Store *st, int max) EINA_ARG_NONNULL(1);
    EAPI int                     elm_store_cache_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
    EAPI void                    elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
    EAPI void                    elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
    EAPI void                    elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool               elm_store_fetch_thread_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+
    EAPI void                    elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
    EAPI void                    elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool               elm_store_sorted_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
@@ -25799,63 +27669,689 @@ extern "C" {
    EAPI const Elm_Store        *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
    EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
 
-   /* SegmentControl */
-   typedef struct _Elm_Segment_Item Elm_Segment_Item;
+   /**
+    * @defgroup SegmentControl SegmentControl
+    * @ingroup Elementary
+    *
+    * @image html img/widget/segment_control/preview-00.png
+    * @image latex img/widget/segment_control/preview-00.eps width=\textwidth
+    *
+    * @image html img/segment_control.png
+    * @image latex img/segment_control.eps width=\textwidth
+    *
+    * Segment control widget is a horizontal control made of multiple segment
+    * items, each segment item functioning similar to discrete two state button.
+    * A segment control groups the items together and provides compact
+    * single button with multiple equal size segments.
+    *
+    * Segment item size is determined by base widget
+    * size and the number of items added.
+    * Only one segment item can be at selected state. A segment item can display
+    * combination of Text and any Evas_Object like Images or other widget.
+    *
+    * Smart callbacks one can listen to:
+    * - "changed" - When the user clicks on a segment item which is not
+    *   previously selected and get selected. The event_info parameter is the
+    *   segment item pointer.
+    *
+    * Available styles for it:
+    * - @c "default"
+    *
+    * Here is an example on its usage:
+    * @li @ref segment_control_example
+    */
+
+   /**
+    * @addtogroup SegmentControl
+    * @{
+    */
+
+   typedef struct _Elm_Segment_Item Elm_Segment_Item; /**< Item handle for a segment control widget. */
+
+   /**
+    * 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) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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_segment_control_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.
+    *
+    * Simple example:
+    * @code
+    * sc = elm_segment_control_add(win);
+    * ic = elm_icon_add(win);
+    * elm_icon_file_set(ic, "path/to/image", NULL);
+    * elm_icon_scale_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_segment_control_item_del()
+    *
+    * @ingroup SegmentControl
+    */
    EAPI Elm_Segment_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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_segment_control_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_segment_control_item_del()
+    *
+    * @ingroup SegmentControl
+    */
    EAPI Elm_Segment_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index) EINA_ARG_NONNULL(1);
+
+   /**
+    * Remove a segment control item from its parent, deleting it.
+    *
+    * @param it The item to be removed.
+    *
+    * 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(Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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_Segment_Item *elm_segment_control_item_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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_segment_control_item_label_set. If no label
+    * was passed as argument, it will return @c NULL.
+    *
+    * @see elm_segment_control_item_label_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) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the label of item.
+    *
+    * @param it The item of segment control.
+    * @param text The label of item.
+    *
+    * The label to be displayed by the item.
+    * Label will be at right of the icon (if set).
+    *
+    * If a label was passed as argument on item creation, with function
+    * elm_control_segment_item_add(), it will be already
+    * displayed by the item.
+    *
+    * @see elm_segment_control_item_label_get()
+    * @see elm_segment_control_item_add()
+    *
+    * @ingroup SegmentControl
+    */
    EAPI void              elm_segment_control_item_label_set(Elm_Segment_Item* it, const char* label) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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_segment_control_item_icon_set(). If no icon
+    * was passed as argument, it will return @c NULL.
+    *
+    * @see elm_segment_control_item_add()
+    * @see elm_segment_control_item_icon_set()
+    *
+    * @ingroup SegmentControl
+    */
    EAPI Evas_Object      *elm_segment_control_item_icon_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the icon associated to the item.
+    *
+    * @param it The segment control item.
+    * @param icon The icon object to associate with @p it.
+    *
+    * The icon object to use at left side of the item. An
+    * icon can be any Evas object, but usually it is an icon created
+    * with elm_icon_add().
+    *
+    * Once the icon object is set, a previously set one will be deleted.
+    * @warning Setting the same icon for two items will cause the icon to
+    * dissapear from the first item.
+    *
+    * If an icon was passed as argument on item creation, with function
+    * elm_segment_control_item_add(), it will be already
+    * associated to the item.
+    *
+    * @see elm_segment_control_item_add()
+    * @see elm_segment_control_item_icon_get()
+    *
+    * @ingroup SegmentControl
+    */
    EAPI void              elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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_Segment_Item *it) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the base object of the item.
+    *
+    * @param it The segment control item.
+    * @return The base 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_Segment_Item *it) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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_Segment_Item *elm_segment_control_item_selected_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * 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 previosly selected will be unselected.
+    * Previoulsy selected item can be get 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_Segment_Item *it, Eina_Bool select) EINA_ARG_NONNULL(1);
-   /* smart callbacks called:
-    * "changed" -when the user clicks on a segment item which is not previously
-    *            selected and get selected. The event_info parameter is the
-    *            segment item index.
+
+   /**
+    * @}
+    */
+
+   /**
+    * @defgroup Grid Grid
+    *
+    * The grid is a grid layout widget that lays out a series of children as a
+    * fixed "grid" of widgets using a given percentage of the grid width and
+    * height each using the child object.
+    *
+    * The Grid uses a "Virtual resolution" that is stretched to fill the grid
+    * widgets size itself. The default is 100 x 100, so that means the
+    * position and sizes of children will effectively be percentages (0 to 100)
+    * of the width or height of the grid widget
+    *
+    * @{
     */
 
+   /**
+    * Add a new grid to the parent
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
+    *
+    * @ingroup Grid
+    */
    EAPI Evas_Object *elm_grid_add(Evas_Object *parent);
+
+   /**
+    * Set the virtual size of the grid
+    *
+    * @param obj The grid object
+    * @param w The virtual width of the grid
+    * @param h The virtual height of the grid
+    *
+    * @ingroup Grid
+    */
    EAPI void         elm_grid_size_set(Evas_Object *obj, int w, int h);
+
+   /**
+    * Get the virtual size of the grid
+    *
+    * @param obj The grid object
+    * @param w Pointer to integer to store the virtual width of the grid
+    * @param h Pointer to integer to store the virtual height of the grid
+    *
+    * @ingroup Grid
+    */
    EAPI void         elm_grid_size_get(Evas_Object *obj, int *w, int *h);
+
+   /**
+    * Pack child at given position and size
+    *
+    * @param obj The grid object
+    * @param subobj The child to pack
+    * @param x The virtual x coord at which to pack it
+    * @param y The virtual y coord at which to pack it
+    * @param w The virtual width at which to pack it
+    * @param h The virtual height at which to pack it
+    *
+    * @ingroup Grid
+    */
    EAPI void         elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h);
+
+   /**
+    * Unpack a child from a grid object
+    *
+    * @param obj The grid object
+    * @param subobj The child to unpack
+    *
+    * @ingroup Grid
+    */
    EAPI void         elm_grid_unpack(Evas_Object *obj, Evas_Object *subobj);
+
+   /**
+    * Faster way to remove all child objects from a grid object.
+    *
+    * @param obj The grid object
+    * @param clear If true, it will delete just removed children
+    *
+    * @ingroup Grid
+    */
    EAPI void         elm_grid_clear(Evas_Object *obj, Eina_Bool clear);
+
+   /**
+    * Set packing of an existing child at to position and size
+    *
+    * @param subobj The child to set packing of
+    * @param x The virtual x coord at which to pack it
+    * @param y The virtual y coord at which to pack it
+    * @param w The virtual width at which to pack it
+    * @param h The virtual height at which to pack it
+    *
+    * @ingroup Grid
+    */
    EAPI void         elm_grid_pack_set(Evas_Object *subobj, int x, int y, int w, int h);
+
+   /**
+    * get packing of a child
+    *
+    * @param subobj The child to query
+    * @param x Pointer to integer to store the virtual x coord
+    * @param y Pointer to integer to store the virtual y coord
+    * @param w Pointer to integer to store the virtual width
+    * @param h Pointer to integer to store the virtual height
+    *
+    * @ingroup Grid
+    */
    EAPI void         elm_grid_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h);
 
-   EAPI Evas_Object *elm_genscroller_add(Evas_Object *parent);
-   EAPI void         elm_genscroller_world_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+   /**
+    * @}
+    */
+
+   EAPI Evas_Object *elm_factory_add(Evas_Object *parent);
+   EINA_DEPRECATED EAPI void         elm_factory_content_set(Evas_Object *obj, Evas_Object *content);
+   EINA_DEPRECATED EAPI Evas_Object *elm_factory_content_get(const Evas_Object *obj);
+   EAPI void         elm_factory_maxmin_mode_set(Evas_Object *obj, Eina_Bool enabled);
+   EAPI Eina_Bool    elm_factory_maxmin_mode_get(const Evas_Object *obj);
+   EAPI void         elm_factory_maxmin_reset_set(Evas_Object *obj);
+
+   /**
+    * @defgroup Video Video
+    *
+    * @addtogroup Video
+    * @{
+    *
+    * Elementary comes with two object that help design application that need
+    * to display video. The main one, Elm_Video, display a video by using Emotion.
+    * It does embedded the video inside an Edje object, so you can do some
+    * animation depending on the video state change. It does also implement a
+    * ressource management policy to remove this burden from the application writer.
+    *
+    * The second one, Elm_Player is a video player that need to be linked with and Elm_Video.
+    * It take care of updating its content according to Emotion event and provide a
+    * way to theme itself. It also does automatically raise the priority of the
+    * linked Elm_Video so it will use the video decoder if available. It also does
+    * activate the remember function on the linked Elm_Video object.
+    *
+    * Signals that you can add callback for are :
+    *
+    * "forward,clicked" - the user clicked the forward button.
+    * "info,clicked" - the user clicked the info button.
+    * "next,clicked" - the user clicked the next button.
+    * "pause,clicked" - the user clicked the pause button.
+    * "play,clicked" - the user clicked the play button.
+    * "prev,clicked" - the user clicked the prev button.
+    * "rewind,clicked" - the user clicked the rewind button.
+    * "stop,clicked" - the user clicked the stop button.
+    * 
+    * Default contents parts of the player widget that you can use for are:
+    * @li "video" - A video of the player
+    * 
+    */
+
+   /**
+    * @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 Link a Elm_Payer with an Elm_Video object.
+    *
+    * @param player the Elm_Player object.
+    * @param video The Elm_Video object.
+    *
+    * This mean that action on the player widget will affect the
+    * video object and the state of the video will be reflected in
+    * the player itself.
+    *
+    * @see elm_player_add()
+    * @see elm_video_add()
+    * @deprecated use elm_object_part_content_set() instead
+    *
+    * @ingroup Video
+    */
+   EINA_DEPRECATED EAPI void elm_player_video_set(Evas_Object *player, Evas_Object *video);
 
+   /**
+    * @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.
+    *
+    * @seeelm_video_file_set()
+    * @see elm_video_uri_set()
+    *
+    * @ingroup Video
+    */
    EAPI Evas_Object *elm_video_add(Evas_Object *parent);
+
+   /**
+    * @brief Define the file that will be the video source.
+    *
+    * @param video The video object to define the file for.
+    * @param filename The file to target.
+    *
+    * This function will explicitly define a filename as a source
+    * for the video of the Elm_Video object.
+    *
+    * @see elm_video_uri_set()
+    * @see elm_video_add()
+    * @see elm_player_add()
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_file_set(Evas_Object *video, const char *filename);
+
+   /**
+    * @brief Define the uri that will be the video source.
+    *
+    * @param video The video object to define the file for.
+    * @param uri The uri to target.
+    *
+    * This function will define an uri as a source for the video of the
+    * Elm_Video object. URI could be remote source of video, like http:// or local source
+    * like for example WebCam who are most of the time v4l2:// (but that depend and
+    * you should use Emotion API to request and list the available Webcam on your system).
+    *
+    * @see elm_video_file_set()
+    * @see elm_video_add()
+    * @see elm_player_add()
+    *
+    * @ingroup Video
+    */
    EAPI void elm_video_uri_set(Evas_Object *video, const char *uri);
-   EAPI Evas_Object *elm_video_emotion_get(Evas_Object *video);
+
+   /**
+    * @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);
-   EAPI Eina_Bool elm_video_is_playing(Evas_Object *video);
-   EAPI Eina_Bool elm_video_is_seekable(Evas_Object *video);
-   EAPI Eina_Bool elm_video_audio_mute_get(Evas_Object *video);
+
+   /**
+    * @brief Is the video actually playing.
+    *
+    * @param video The video object to proceed the request on.
+    * @return 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(const Evas_Object *video);
+
+   /**
+    * @brief Is it possible to seek inside the video.
+    *
+    * @param video The video object to proceed the request on.
+    * @return EINA_TRUE if is possible to seek inside the video.
+    *
+    * @ingroup Video
+    */
+   EAPI Eina_Bool elm_video_is_seekable(const Evas_Object *video);
+
+   /**
+    * @brief Is the audio muted.
+    *
+    * @param video The video object to proceed the request on.
+    * @return 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);
-   EAPI double elm_video_audio_level_get(Evas_Object *video);
+
+   /**
+    * @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 anElm_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);
-   EAPI double elm_video_play_position_get(Evas_Object *video);
+
+   EAPI double elm_video_play_position_get(const Evas_Object *video);
    EAPI void elm_video_play_position_set(Evas_Object *video, double position);
-   EAPI double elm_video_play_length_get(Evas_Object *video);
+   EAPI double elm_video_play_length_get(const Evas_Object *video);
    EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember);
-   EAPI Eina_Bool elm_video_remember_position_get(Evas_Object *video);
-   EAPI const char *elm_video_title_get(Evas_Object *video);
-
-   EAPI Evas_Object *elm_player_add(Evas_Object *parent);
-   EAPI void elm_player_video_set(Evas_Object *player, Evas_Object *video);
+   EAPI Eina_Bool elm_video_remember_position_get(const Evas_Object *video);
+   EAPI const char *elm_video_title_get(const Evas_Object *video);
+   /**
+    * @}
+    */
 
    // FIXME: incomplete - carousel. don't use this until this comment is removed
    typedef struct _Elm_Carousel_Item Elm_Carousel_Item;
@@ -25984,28 +28480,28 @@ extern "C" {
         ELM_NAVIGATIONBAR_BACK_BUTTON
      } Elm_Navi_Button_Type;
 
-   EAPI Evas_Object *elm_navigationbar_add(Evas_Object *parent);
-   EAPI void         elm_navigationbar_push(Evas_Object *obj, const char *title, Evas_Object *fn_btn1, Evas_Object *fn_btn2, Evas_Object *fn_btn3, Evas_Object *content);
-   EAPI void         elm_navigationbar_pop(Evas_Object *obj);
-   EAPI void         elm_navigationbar_to_content_pop(Evas_Object *obj, Evas_Object *content);
-   EAPI void         elm_navigationbar_title_label_set(Evas_Object *obj, Evas_Object *content, const char *title);
-   EAPI const char  *elm_navigationbar_title_label_get(Evas_Object *obj, Evas_Object *content);
-   EAPI void         elm_navigationbar_title_object_add(Evas_Object *obj, Evas_Object *content, Evas_Object *title_obj);
-   EAPI Evas_Object *elm_navigationbar_title_object_get(Evas_Object *obj, Evas_Object *content);
-   EAPI Eina_List   *elm_navigationbar_title_object_list_get(Evas_Object *obj, Evas_Object *content);
-   EAPI Evas_Object *elm_navigationbar_content_top_get(Evas_Object *obj);
-   EAPI Evas_Object *elm_navigationbar_content_bottom_get(Evas_Object *obj);
-   EAPI void         elm_navigationbar_hidden_set(Evas_Object *obj, Eina_Bool hidden);
-   EAPI void         elm_navigationbar_title_button_set(Evas_Object *obj, Evas_Object *content, Evas_Object *button, Elm_Navi_Button_Type button_type);
-   EAPI Evas_Object *elm_navigationbar_title_button_get(Evas_Object *obj, Evas_Object *content, Elm_Navi_Button_Type button_type);
-   EAPI const char  *elm_navigationbar_subtitle_label_get(Evas_Object *obj, Evas_Object *content);
-   EAPI void         elm_navigationbar_subtitle_label_set(Evas_Object *obj, Evas_Object *content, const char *subtitle);
-   EAPI void         elm_navigationbar_title_object_list_unset(Evas_Object *obj, Evas_Object *content, Eina_List **list);
-   EAPI void         elm_navigationbar_animation_disabled_set(Evas_Object *obj, Eina_Bool disable);
-   EAPI void         elm_navigationbar_title_object_visible_set(Evas_Object *obj, Evas_Object *content, Eina_Bool visible);
-   Eina_Bool         elm_navigationbar_title_object_visible_get(Evas_Object *obj, Evas_Object *content);
-   EAPI void         elm_navigationbar_title_icon_set(Evas_Object *obj, Evas_Object *content, Evas_Object *icon);
-   EAPI Evas_Object *elm_navigationbar_title_icon_get(Evas_Object *obj, Evas_Object *content);
+   EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_add(Evas_Object *parent);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_push(Evas_Object *obj, const char *title, Evas_Object *fn_btn1, Evas_Object *fn_btn2, Evas_Object *fn_btn3, Evas_Object *content);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_pop(Evas_Object *obj);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_to_content_pop(Evas_Object *obj, Evas_Object *content);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_label_set(Evas_Object *obj, Evas_Object *content, const char *title);
+   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_title_label_get(Evas_Object *obj, Evas_Object *content);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_object_add(Evas_Object *obj, Evas_Object *content, Evas_Object *title_obj);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_title_object_get(Evas_Object *obj, Evas_Object *content);
+   EINA_DEPRECATED    EAPI Eina_List   *elm_navigationbar_title_object_list_get(Evas_Object *obj, Evas_Object *content);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_content_top_get(Evas_Object *obj);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_content_bottom_get(Evas_Object *obj);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_hidden_set(Evas_Object *obj, Eina_Bool hidden);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_button_set(Evas_Object *obj, Evas_Object *content, Evas_Object *button, Elm_Navi_Button_Type button_type);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_title_button_get(Evas_Object *obj, Evas_Object *content, Elm_Navi_Button_Type button_type);
+   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_subtitle_label_get(Evas_Object *obj, Evas_Object *content);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_subtitle_label_set(Evas_Object *obj, Evas_Object *content, const char *subtitle);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_object_list_unset(Evas_Object *obj, Evas_Object *content, Eina_List **list);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_animation_disabled_set(Evas_Object *obj, Eina_Bool disable);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_object_visible_set(Evas_Object *obj, Evas_Object *content, Eina_Bool visible);
+   EINA_DEPRECATED    Eina_Bool         elm_navigationbar_title_object_visible_get(Evas_Object *obj, Evas_Object *content);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_icon_set(Evas_Object *obj, Evas_Object *content, Evas_Object *icon);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_title_icon_get(Evas_Object *obj, Evas_Object *content);
 
    /* NavigationBar */
    #define NAVIBAR_EX_TITLEOBJ_INSTANT_HIDE "elm,state,hide,noanimate,title", "elm"
@@ -26021,49 +28517,38 @@ extern "C" {
      } Elm_Navi_ex_Button_Type;
    typedef struct _Elm_Navigationbar_ex_Item Elm_Navigationbar_ex_Item;
 
-   EAPI Evas_Object *elm_navigationbar_ex_add(Evas_Object *parent);
-   EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_push(Evas_Object *obj, Evas_Object *content, const char *item_style);
-   EAPI void         elm_navigationbar_ex_item_pop(Evas_Object *obj);
-   EAPI void         elm_navigationbar_ex_item_promote(Elm_Navigationbar_ex_Item* item);
-   EAPI void         elm_navigationbar_ex_to_item_pop(Elm_Navigationbar_ex_Item* item);
-   EAPI void         elm_navigationbar_ex_item_title_label_set(Elm_Navigationbar_ex_Item *item, const char *title);
-   EAPI const char  *elm_navigationbar_ex_item_title_label_get(Elm_Navigationbar_ex_Item* item);
-   EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_top_get(const Evas_Object *obj);
-   EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_bottom_get(const Evas_Object *obj);
-   EAPI void         elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char *btn_label, Evas_Object *icon, int button_type, Evas_Smart_Cb func, const void *data);
-   EAPI Evas_Object *elm_navigationbar_ex_item_title_button_get(Elm_Navigationbar_ex_Item* item, int button_type);
-   EAPI void         elm_navigationbar_ex_item_title_object_set(Elm_Navigationbar_ex_Item* item, Evas_Object *title_obj);
-   EAPI Evas_Object *elm_navigationbar_ex_item_title_object_unset(Elm_Navigationbar_ex_Item* item);
-   EAPI void         elm_navigationbar_ex_item_title_hidden_set(Elm_Navigationbar_ex_Item* item, Eina_Bool hidden);
-   EAPI Evas_Object *elm_navigationbar_ex_item_title_object_get(Elm_Navigationbar_ex_Item* item);
-   EAPI const char  *elm_navigationbar_ex_item_subtitle_label_get(Elm_Navigationbar_ex_Item* item);
-   EAPI void         elm_navigationbar_ex_item_subtitle_label_set( Elm_Navigationbar_ex_Item* item, const char *subtitle);
-   EAPI void         elm_navigationbar_ex_item_style_set(Elm_Navigationbar_ex_Item* item, const char* item_style);
-   EAPI const char  *elm_navigationbar_ex_item_style_get(Elm_Navigationbar_ex_Item* item);
-   EAPI Evas_Object *elm_navigationbar_ex_item_content_unset(Elm_Navigationbar_ex_Item* item);
-   EAPI Evas_Object *elm_navigationbar_ex_item_content_get(Elm_Navigationbar_ex_Item* item);
-   EAPI void         elm_navigationbar_ex_delete_on_pop_set(Evas_Object *obj, Eina_Bool del_on_pop);
-   EAPI Evas_Object *elm_navigationbar_ex_item_icon_get(Elm_Navigationbar_ex_Item* item);
-   EAPI void         elm_navigationbar_ex_item_icon_set(Elm_Navigationbar_ex_Item* item, Evas_Object *icon);
-   EAPI Evas_Object *elm_navigationbar_ex_item_title_button_unset(Elm_Navigationbar_ex_Item* item, int button_type);
-   EAPI void         elm_navigationbar_ex_animation_disable_set(Evas_Object *obj, Eina_Bool disable);
-   EAPI void         elm_navigationbar_ex_title_object_visible_set(Elm_Navigationbar_ex_Item* item, Eina_Bool visible);
-   Eina_Bool         elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item);
-
-  /* naviframe */
-  #define ELM_NAVIFRAME_ITEM_CONTENT "elm.swallow.content"
-  #define ELM_NAVIFRAME_ITEM_ICON "elm.swallow.icon"
-  #define ELM_NAVIFRAME_ITEM_OPTIONHEADER "elm.swallow.optionheader"
-  #define ELM_NAVIFRAME_ITEM_OPTIONHEADER2 "elm.swallow.optionheader2"
-  #define ELM_NAVIFRAME_ITEM_TITLE_LABEL "elm.text.title"
-  #define ELM_NAVIFRAME_ITEM_PREV_BTN "elm.swallow.prev_btn"
-  #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE "elm,state,optionheader,close", ""
-  #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN "elm,state,optionheader,open", ""
-  #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_CLOSE "elm,state,optionheader,instant_close", ""
-  #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN "elm,state,optionheader,instant_open", ""
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_add(Evas_Object *parent);
+   EINA_DEPRECATED    EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_push(Evas_Object *obj, Evas_Object *content, const char *item_style);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_pop(Evas_Object *obj);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_promote(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_to_item_pop(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_title_label_set(Elm_Navigationbar_ex_Item *item, const char *title);
+   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_ex_item_title_label_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_top_get(const Evas_Object *obj);
+   EINA_DEPRECATED    EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_bottom_get(const Evas_Object *obj);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char *btn_label, Evas_Object *icon, int button_type, Evas_Smart_Cb func, const void *data);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_title_button_get(Elm_Navigationbar_ex_Item* item, int button_type);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_title_object_set(Elm_Navigationbar_ex_Item* item, Evas_Object *title_obj);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_title_object_unset(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_title_hidden_set(Elm_Navigationbar_ex_Item* item, Eina_Bool hidden);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_title_object_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_ex_item_subtitle_label_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_subtitle_label_set( Elm_Navigationbar_ex_Item* item, const char *subtitle);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_style_set(Elm_Navigationbar_ex_Item* item, const char* item_style);
+   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_ex_item_style_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_content_unset(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_content_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_delete_on_pop_set(Evas_Object *obj, Eina_Bool del_on_pop);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_icon_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_icon_set(Elm_Navigationbar_ex_Item* item, Evas_Object *icon);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_title_button_unset(Elm_Navigationbar_ex_Item* item, int button_type);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_animation_disable_set(Evas_Object *obj, Eina_Bool disable);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_title_object_visible_set(Elm_Navigationbar_ex_Item* item, Eina_Bool visible);
+   EINA_DEPRECATED    Eina_Bool         elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item);
 
-  /**
+   /**
     * @defgroup Naviframe Naviframe
+    * @ingroup Elementary
     *
     * @brief Naviframe is a kind of view manager for the applications.
     *
@@ -26079,29 +28564,61 @@ extern "C" {
     * application.
     *
     * Signals that you can add callback for are:
-    *
     * @li "transition,finished" - When the transition is finished in changing
     *     the item
     * @li "title,clicked" - User clicked title area
     *
-    * Default contents parts for the naviframe items that you can use for are:
+    * Default contents parts of the naviframe items that you can use for are:
+    * @li "default" - A main content of the page
+    * @li "icon" - A icon in the title area
+    * @li "prev_btn" - A button to go to the previous page
+    * @li "next_btn" - A button to go to the next page
     *
-    * @li "elm.swallow.content" - The main content of the page
-    * @li "elm.swallow.prev_btn" - The button to go to the previous page
-    * @li "elm.swallow.next_btn" - The button to go to the next page
-    *
-    * Default text parts of naviframe items that you can be used are:
-    *
-    * @li "elm.text.title" - The title label in the title area
+    * Default text parts of the naviframe items that you can use for are:
+    * @li "default" - Title label in the title area
+    * @li "subtitle" - Sub-title label in the title area
     *
     * @ref tutorial_naviframe gives a good overview of the usage of the API.
+    */
+
+  //Available commonly
+  #define ELM_NAVIFRAME_ITEM_CONTENT "elm.swallow.content"
+  #define ELM_NAVIFRAME_ITEM_ICON "elm.swallow.icon"
+  #define ELM_NAVIFRAME_ITEM_OPTIONHEADER "elm.swallow.optionheader"
+  #define ELM_NAVIFRAME_ITEM_TITLE_LABEL "elm.text.title"
+  #define ELM_NAVIFRAME_ITEM_PREV_BTN "elm.swallow.prev_btn"
+  #define ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN "elm.swallow.left_btn"
+  #define ELM_NAVIFRAME_ITEM_TITLE_RIGHT_BTN "elm.swallow.right_btn"
+  #define ELM_NAVIFRAME_ITEM_TITLE_MORE_BTN "elm.swallow.more_btn"
+  #define ELM_NAVIFRAME_ITEM_CONTROLBAR "elm.swallow.controlbar"
+  #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE "elm,state,optionheader,close", ""
+  #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN "elm,state,optionheader,open", ""
+  #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_CLOSE "elm,state,optionheader,instant_close", ""
+  #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN "elm,state,optionheader,instant_open", ""
+  #define ELM_NAVIFRAME_ITEM_SIGNAL_CONTROLBAR_CLOSE "elm,state,controlbar,close", ""
+  #define ELM_NAVIFRAME_ITEM_SIGNAL_CONTROLBAR_OPEN "elm,state,controlbar,open", ""
+  #define ELM_NAVIFRAME_ITEM_SIGNAL_CONTROLBAR_INSTANT_CLOSE "elm,state,controlbar,instant_close", ""
+  #define ELM_NAVIFRAME_ITEM_SIGNAL_CONTROLBAR_INSTANT_OPEN "elm,state,controlbar,instant_open", ""
+
+   //Available only in a style - "2line"
+  #define ELM_NAVIFRAME_ITEM_OPTIONHEADER2 "elm.swallow.optionheader2"
+
+  //Available only in a style - "segment"
+  #define ELM_NAVIFRAME_ITEM_SEGMENT2 "elm.swallow.segment2"
+  #define ELM_NAVIFRAME_ITEM_SEGMENT3 "elm.swallow.segment3"
+
+   /**
+    * @addtogroup Naviframe
     * @{
     */
+
    /**
     * @brief Add a new Naviframe object to the parent.
     *
     * @param parent Parent object
     * @return New object or @c NULL, if it cannot be created
+    *
+    * @ingroup Naviframe
     */
    EAPI Evas_Object        *elm_naviframe_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
    /**
@@ -26125,11 +28642,75 @@ extern "C" {
     * deleted when it is popped.
     *
     * @see also elm_naviframe_item_style_set()
+    * @see also elm_naviframe_item_insert_before()
+    * @see also elm_naviframe_item_insert_after()
     *
     * The following styles are available for this item:
     * @li @c "default"
+    *
+    * @ingroup Naviframe
     */
    EAPI Elm_Object_Item    *elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) EINA_ARG_NONNULL(1, 5);
+    /**
+    * @brief Insert a new item into the naviframe before item @p before.
+    *
+    * @param before The naviframe item to insert before.
+    * @param title_label The label in the title area. The name of the title
+    *        label part is "elm.text.title"
+    * @param prev_btn The button to go to the previous item. If it is NULL,
+    *        then naviframe will create a back button automatically. The name of
+    *        the prev_btn part is "elm.swallow.prev_btn"
+    * @param next_btn The button to go to the next item. Or It could be just an
+    *        extra function button. The name of the next_btn part is
+    *        "elm.swallow.next_btn"
+    * @param content The main content object. The name of content part is
+    *        "elm.swallow.content"
+    * @param item_style The current item style name. @c NULL would be default.
+    * @return The created item or @c NULL upon failure.
+    *
+    * The item is inserted into the naviframe straight away without any
+    * transition operations. This item will be deleted when it is popped.
+    *
+    * @see also elm_naviframe_item_style_set()
+    * @see also elm_naviframe_item_push()
+    * @see also elm_naviframe_item_insert_after()
+    *
+    * The following styles are available for this item:
+    * @li @c "default"
+    *
+    * @ingroup Naviframe
+    */
+   EAPI Elm_Object_Item    *elm_naviframe_item_insert_before(Elm_Object_Item *before, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) EINA_ARG_NONNULL(1, 5);
+   /**
+    * @brief Insert a new item into the naviframe after item @p after.
+    *
+    * @param after The naviframe item to insert after.
+    * @param title_label The label in the title area. The name of the title
+    *        label part is "elm.text.title"
+    * @param prev_btn The button to go to the previous item. If it is NULL,
+    *        then naviframe will create a back button automatically. The name of
+    *        the prev_btn part is "elm.swallow.prev_btn"
+    * @param next_btn The button to go to the next item. Or It could be just an
+    *        extra function button. The name of the next_btn part is
+    *        "elm.swallow.next_btn"
+    * @param content The main content object. The name of content part is
+    *        "elm.swallow.content"
+    * @param item_style The current item style name. @c NULL would be default.
+    * @return The created item or @c NULL upon failure.
+    *
+    * The item is inserted into the naviframe straight away without any
+    * transition operations. This item will be deleted when it is popped.
+    *
+    * @see also elm_naviframe_item_style_set()
+    * @see also elm_naviframe_item_push()
+    * @see also elm_naviframe_item_insert_before()
+    *
+    * The following styles are available for this item:
+    * @li @c "default"
+    *
+    * @ingroup Naviframe
+    */
+   EAPI Elm_Object_Item    *elm_naviframe_item_insert_after(Elm_Object_Item *after, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) EINA_ARG_NONNULL(1, 5);
    /**
     * @brief Pop an item that is on top of the stack
     *
@@ -26291,7 +28872,19 @@ extern "C" {
     * @see also elm_naviframe_item_push()
     *           elm_naviframe_prev_btn_auto_pushed_set()
     */
-   EAPI Eina_Bool           elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj); EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool           elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get a list of all the naviframe items.
+    *
+    * @param obj The naviframe object
+    * @return An Eina_Inlist* of naviframe items, #Elm_Object_Item,
+    * or @c NULL on failure.
+    */
+   EAPI Eina_Inlist        *elm_naviframe_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * @}
+    */
 
    /* Control Bar */
    #define CONTROLBAR_SYSTEM_ICON_ALBUMS "controlbar_albums"
@@ -26422,8 +29015,8 @@ extern "C" {
     *
     * @li NULL/"default" - Operates on tickernoti content-text
     *
-    * Parts which can be used with elm_object_content_part_set() and
-    * elm_object_content_part_get():
+    * Parts which can be used with elm_object_content_part_set(),
+    * elm_object_content_part_get() and elm_object_content_part_unset():
     *
     * @li "icon" - Operates on tickernoti's icon
     * @li "button" - Operates on tickernoti's button
@@ -26497,30 +29090,30 @@ extern "C" {
    typedef struct _Multibuttonentry_Item Elm_Multibuttonentry_Item;
    typedef Eina_Bool (*Elm_Multibuttonentry_Item_Verify_Callback) (Evas_Object *obj, const char *item_label, void *item_data, void *data);
    EAPI Evas_Object               *elm_multibuttonentry_add(Evas_Object *parent);
-   EAPI const char                *elm_multibuttonentry_label_get(Evas_Object *obj);
+   EAPI const char                *elm_multibuttonentry_label_get(const Evas_Object *obj);
    EAPI void                       elm_multibuttonentry_label_set(Evas_Object *obj, const char *label);
-   EAPI Evas_Object               *elm_multibuttonentry_entry_get(Evas_Object *obj);
-   EAPI const char *               elm_multibuttonentry_guide_text_get(Evas_Object *obj);
+   EAPI Evas_Object               *elm_multibuttonentry_entry_get(const Evas_Object *obj);
+   EAPI const char *               elm_multibuttonentry_guide_text_get(const Evas_Object *obj);
    EAPI void                       elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext);
-   EAPI int                        elm_multibuttonentry_contracted_state_get(Evas_Object *obj);
+   EAPI int                        elm_multibuttonentry_contracted_state_get(const Evas_Object *obj);
    EAPI void                       elm_multibuttonentry_contracted_state_set(Evas_Object *obj, int contracted);
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *data);
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *data);
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *before, void *data);
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *after, void *data);
-   EAPI const Eina_List           *elm_multibuttonentry_items_get(Evas_Object *obj);
-   EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_first_get(Evas_Object *obj);
-   EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_last_get(Evas_Object *obj);
-   EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_selected_get(Evas_Object *obj);
+   EAPI const Eina_List           *elm_multibuttonentry_items_get(const Evas_Object *obj);
+   EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_first_get(const Evas_Object *obj);
+   EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_last_get(const Evas_Object *obj);
+   EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_selected_get(const Evas_Object *obj);
    EAPI void                       elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item);
    EAPI void                       elm_multibuttonentry_item_unselect_all(Evas_Object *obj);
    EAPI void                       elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item);
    EAPI void                       elm_multibuttonentry_items_del(Evas_Object *obj);
-   EAPI const char                *elm_multibuttonentry_item_label_get(Elm_Multibuttonentry_Item *item);
+   EAPI const char                *elm_multibuttonentry_item_label_get(const Elm_Multibuttonentry_Item *item);
    EAPI void                       elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char *str);
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item);
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item);
-   EAPI void                      *elm_multibuttonentry_item_data_get(Elm_Multibuttonentry_Item *item);
+   EAPI void                      *elm_multibuttonentry_item_data_get(const Elm_Multibuttonentry_Item *item);
    EAPI void                       elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data);
    EAPI void                       elm_multibuttonentry_item_verify_callback_set(Evas_Object *obj, Elm_Multibuttonentry_Item_Verify_Callback func, void *data);
    /* smart callback called: