[elementary] Documenting/exemplifying the following:
[framework/uifw/elementary.git] / src / lib / Elementary.h.in
index 81703b4..4f9003c 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 /**
-@file elementary.dox
+@file Elementary.h.in
 @brief Elementary Widget Library
 */
 
@@ -677,6 +677,37 @@ extern "C" {
    EAPI int          elm_policy_get(unsigned int policy);
 
    /**
+    * Set a label of an object
+    *
+    * @param obj The Elementary object
+    * @param item The label id 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 *item, const char *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 item The label id 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)
+    *
+    * @ingroup General
+    */
+   EAPI const char  *elm_object_text_part_get(const Evas_Object *obj, const char *item);
+
+#define elm_object_text_get(obj) elm_object_text_part_get((obj), NULL)
+
+   /**
     * @}
     */
 
@@ -1574,8 +1605,8 @@ extern "C" {
    EAPI int          elm_win_quickpanel_priority_minor_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_win_quickpanel_zone_set(Evas_Object *obj, int zone) EINA_ARG_NONNULL(1);
    EAPI int          elm_win_quickpanel_zone_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void         elm_win_prop_focus_skip_set(Evas_Object *obj, Eina_Bool skip); EINA_ARG_NONNULL(1);
-   EAPI void         elm_win_illume_command_send(Evas_Object *obj, Elm_Illume_Command command, void *params); EINA_ARG_NONNULL(1);
+   EAPI void         elm_win_prop_focus_skip_set(Evas_Object *obj, Eina_Bool skip) EINA_ARG_NONNULL(1);
+   EAPI void         elm_win_illume_command_send(Evas_Object *obj, Elm_Illume_Command command, void *params) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_win_inlined_image_object_get(Evas_Object *obj);
    EAPI void         elm_win_focus_highlight_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool    elm_win_focus_highlight_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -1858,6 +1889,9 @@ extern "C" {
    EAPI void             elm_image_editable_set(Evas_Object *obj, Eina_Bool set) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool        elm_image_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Evas_Object     *elm_image_object_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void             elm_image_aspect_ratio_retained_set(Evas_Object *obj, Eina_Bool retained) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool        elm_image_aspect_ratio_retained_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
    /* smart callbacks called:
     * "clicked" - the user clicked the image
     */
@@ -1904,45 +1938,437 @@ extern "C" {
    EAPI void             elm_glview_changed_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /* box */
+   /**
+    * @defgroup Box Box
+    *
+    * A box arranges objects in a linear fashion, governed by a layout function
+    * that defines the details of this arrangement.
+    *
+    * By default, the box will use an internal function to set the layout to
+    * a single row, either vertical or horizontal. This layout is affected
+    * by a number of parameters, such as the homogeneous flag set by
+    * elm_box_homogeneous_set(), the values given by elm_box_padding_set() and
+    * elm_box_align_set() and the hints set to each object in the box.
+    *
+    * For this default layout, it's possible to change the orientation with
+    * elm_box_horizontal_set(). The box will start in the vertical orientation,
+    * placing its elements ordered from top to bottom. When horizontal is set,
+    * the order will go from left to right. If the box is set to be
+    * homogeneous, every object in it will be assigned the same space, that
+    * of the largest object. Padding can be used to set some spacing between
+    * the cell given to each object. The alignment of the box, set with
+    * elm_box_align_set(), determines how the bounding box of all the elements
+    * will be placed within the space given to the box widget itself.
+    *
+    * The size hints of each object also affect how they are placed and sized
+    * within the box. evas_object_size_hint_min_set() will give the minimum
+    * size the object can have, and the box will use it as the basis for all
+    * latter calculations. Elementary widgets set their own minimum size as
+    * needed, so there's rarely any need to use it manually.
+    *
+    * evas_object_size_hint_weight_set(), when not in homogeneous mode, is
+    * used to tell whether the object will be allocated the minimum size it
+    * needs or if the space given to it should be expanded. It's important
+    * to realize that expanding the size given to the object is not the same
+    * thing as resizing the object. It could very well end being a small
+    * widget floating in a much larger empty space. If not set, the weight
+    * for objects will normally be 0.0 for both axis, meaning the widget will
+    * not be expanded. To take as much space possible, set the weight to
+    * EVAS_HINT_EXPAND (defined to 1.0) for the desired axis to expand.
+    *
+    * Besides how much space each object is allocated, it's possible to control
+    * how the widget will be placed within that space using
+    * evas_object_size_hint_align_set(). By default, this value will be 0.5
+    * for both axis, meaning the object will be centered, but any value from
+    * 0.0 (left or top, for the @c x and @c y axis, respectively) to 1.0
+    * (right or bottom) can be used. The special value EVAS_HINT_FILL, which
+    * is -1.0, means the object will be resized to fill the entire space it
+    * was allocated.
+    *
+    * In addition, customized functions to define the layout can be set, which
+    * allow the application developer to organize the objects within the box
+    * in any number of ways.
+    *
+    * The special elm_box_layout_transition() function can be used
+    * to switch from one layout to another, animating the motion of the
+    * children of the box.
+    *
+    * @note Objects should not be added to box objects using _add() calls.
+    *
+    * Some examples on how to use boxes follow:
+    * @li @ref box_example_01
+    * @li @ref box_example_02
+    *
+    * @{
+    */
+   /**
+    * @typedef Elm_Box_Transition
+    *
+    * Opaque handler containing the parameters to perform an animated
+    * transition of the layout the box uses.
+    *
+    * @see elm_box_transition_new()
+    * @see elm_box_layout_set()
+    * @see elm_box_layout_transition()
+    */
    typedef struct _Elm_Box_Transition Elm_Box_Transition;
 
+   /**
+    * Add a new box to the parent
+    *
+    * By default, the box will be in vertical mode and non-homogeneous.
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
+    */
    EAPI Evas_Object        *elm_box_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+   /**
+    * Set the horizontal orientation
+    *
+    * By default, box object arranges their contents vertically from top to
+    * bottom.
+    * By calling this function with @p horizontal as EINA_TRUE, the box will
+    * become horizontal, arranging contents from left to right.
+    *
+    * @note This flag is ignored if a custom layout function is set.
+    *
+    * @param obj The box object
+    * @param horizontal The horizontal flag (EINA_TRUE = horizontal,
+    * EINA_FALSE = vertical)
+    */
    EAPI void                elm_box_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
+   /**
+    * Get the horizontal orientation
+    *
+    * @param obj The box object
+    * @return EINA_TRUE if the box is set to horizintal mode, EINA_FALSE otherwise
+    */
    EAPI Eina_Bool           elm_box_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the box to arrange its children homogeneously
+    *
+    * If enabled, homogeneous layout makes all items the same size, according
+    * to the size of the largest of its children.
+    *
+    * @note This flag is ignored if a custom layout function is set.
+    *
+    * @param obj The box object
+    * @param homogeneous The homogeneous flag
+    */
    EAPI void                elm_box_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) EINA_ARG_NONNULL(1);
+   /**
+    * Get whether the box is using homogeneous mode or not
+    *
+    * @param obj The box object
+    * @return EINA_TRUE if it's homogeneous, EINA_FALSE otherwise
+    */
    EAPI Eina_Bool           elm_box_homogeneous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EINA_DEPRECATED EAPI void elm_box_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
    EINA_DEPRECATED EAPI Eina_Bool elm_box_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Add an object to the beginning of the pack list
+    *
+    * Pack @p subobj into the box @p obj, placing it first in the list of
+    * children objects. The actual position the object will get on screen
+    * depends on the layout used. If no custom layout is set, it will be at
+    * the top or left, depending if the box is vertical or horizontal,
+    * respectively.
+    *
+    * @param obj The box object
+    * @param subobj The object to add to the box
+    *
+    * @see elm_box_pack_end()
+    * @see elm_box_pack_before()
+    * @see elm_box_pack_after()
+    * @see elm_box_unpack()
+    * @see elm_box_unpack_all()
+    * @see elm_box_clear()
+    */
    EAPI void                elm_box_pack_start(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
+   /**
+    * Add an object at the end of the pack list
+    *
+    * Pack @p subobj into the box @p obj, placing it last in the list of
+    * children objects. The actual position the object will get on screen
+    * depends on the layout used. If no custom layout is set, it will be at
+    * the bottom or right, depending if the box is vertical or horizontal,
+    * respectively.
+    *
+    * @param obj The box object
+    * @param subobj The object to add to the box
+    *
+    * @see elm_box_pack_start()
+    * @see elm_box_pack_before()
+    * @see elm_box_pack_after()
+    * @see elm_box_unpack()
+    * @see elm_box_unpack_all()
+    * @see elm_box_clear()
+    */
    EAPI void                elm_box_pack_end(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
+   /**
+    * Adds an object to the box before the indicated object
+    *
+    * This will add the @p subobj to the box indicated before the object
+    * indicated with @p before. If @p before is not already in the box, results
+    * are undefined. Before means either to the left of the indicated object or
+    * above it depending on orientation.
+    *
+    * @param obj The box object
+    * @param subobj The object to add to the box
+    * @param before The object before which to add it
+    *
+    * @see elm_box_pack_start()
+    * @see elm_box_pack_end()
+    * @see elm_box_pack_after()
+    * @see elm_box_unpack()
+    * @see elm_box_unpack_all()
+    * @see elm_box_clear()
+    */
    EAPI void                elm_box_pack_before(Evas_Object *obj, Evas_Object *subobj, Evas_Object *before) EINA_ARG_NONNULL(1);
+   /**
+    * Adds an object to the box after the indicated object
+    *
+    * This will add the @p subobj to the box indicated after the object
+    * indicated with @p after. If @p after is not already in the box, results
+    * are undefined. After means either to the right of the indicated object or
+    * below it depending on orientation.
+    *
+    * @param obj The box object
+    * @param subobj The object to add to the box
+    * @param after The object after which to add it
+    *
+    * @see elm_box_pack_start()
+    * @see elm_box_pack_end()
+    * @see elm_box_pack_before()
+    * @see elm_box_unpack()
+    * @see elm_box_unpack_all()
+    * @see elm_box_clear()
+    */
    EAPI void                elm_box_pack_after(Evas_Object *obj, Evas_Object *subobj, Evas_Object *after) EINA_ARG_NONNULL(1);
+   /**
+    * Clear the box of all children
+    *
+    * Remove all the elements contained by the box, deleting the respective
+    * objects.
+    *
+    * @param obj The box object
+    *
+    * @see elm_box_unpack()
+    * @see elm_box_unpack_all()
+    */
    EAPI void                elm_box_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Unpack a box item
+    *
+    * Remove the object given by @p subobj from the box @p obj without
+    * deleting it.
+    *
+    * @param obj The box object
+    *
+    * @see elm_box_unpack_all()
+    * @see elm_box_clear()
+    */
    EAPI void                elm_box_unpack(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
+   /**
+    * Remove all items from the box, without deleting them
+    *
+    * Clear the box from all children, but don't delete the respective objects.
+    * If no other references of the box children exist, the objects will never
+    * be deleted, and thus the application will leak the memory. Make sure
+    * when using this function that you hold a reference to all the objects
+    * in the box @p obj.
+    *
+    * @param obj The box object
+    *
+    * @see elm_box_clear()
+    * @see elm_box_unpack()
+    */
    EAPI void                elm_box_unpack_all(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Retrieve a list of the objects packed into the box
+    *
+    * Returns a new @c Eina_List with a pointer to @c Evas_Object in its nodes.
+    * The order of the list corresponds to the packing order the box uses.
+    *
+    * You must free this list with eina_list_free() once you are done with it.
+    *
+    * @param obj The box object
+    */
    EAPI const Eina_List    *elm_box_children_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the space (padding) between the box's elements.
+    *
+    * Extra space in pixels that will be added between a box child and its
+    * neighbors after its containing cell has been calculated. This padding
+    * is set for all elements in the box, besides any possible padding that
+    * individual elements may have through their size hints.
+    *
+    * @param obj The box object
+    * @param horizontal The horizontal space between elements
+    * @param vertical The vertical space between elements
+    */
    EAPI void                elm_box_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
+   /**
+    * Get the space (padding) between the box's elements.
+    *
+    * @param obj The box object
+    * @param horizontal The horizontal space between elements
+    * @param vertical The vertical space between elements
+    *
+    * @see elm_box_padding_set()
+    */
    EAPI void                elm_box_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
+   /**
+    * Set the alignment of the whole bouding box of contents.
+    *
+    * Sets how the bounding box containing all the elements of the box, after
+    * their sizes and position has been calculated, will be aligned within
+    * the space given for the whole box widget.
+    *
+    * @param obj The box object
+    * @param horizontal The horizontal alignment of elements
+    * @param vertical The vertical alignment of elements
+    */
    EAPI void                elm_box_align_set(Evas_Object *obj, double horizontal, double vertical) EINA_ARG_NONNULL(1);
+   /**
+    * Get the alignment of the whole bouding box of contents.
+    *
+    * @param obj The box object
+    * @param horizontal The horizontal alignment of elements
+    * @param vertical The vertical alignment of elements
+    *
+    * @see elm_box_align_set()
+    */
    EAPI void                elm_box_align_get(const Evas_Object *obj, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
 
+   /**
+    * Set the layout defining function to be used by the box
+    *
+    * Whenever anything changes that requires the box in @p obj to recalculate
+    * the size and position of its elements, the function @p cb will be called
+    * to determine what the layout of the children will be.
+    *
+    * Once a custom function is set, everything about the children layout
+    * is defined by it. The flags set by elm_box_horizontal_set() and
+    * elm_box_homogeneous_set() no longer have any meaning, and the values
+    * given by elm_box_padding_set() and elm_box_align_set() are up to this
+    * layout function to decide if they are used and how. These last two
+    * will be found in the @c priv parameter, of type @c Evas_Object_Box_Data,
+    * passed to @p cb. The @c Evas_Object the function receives is not the
+    * Elementary widget, but the internal Evas Box it uses, so none of the
+    * functions described here can be used on it.
+    *
+    * Any of the layout functions in @c Evas can be used here, as well as the
+    * special elm_box_layout_transition().
+    *
+    * The final @p data argument received by @p cb is the same @p data passed
+    * here, and the @p free_data function will be called to free it
+    * whenever the box is destroyed or another layout function is set.
+    *
+    * Setting @p cb to NULL will revert back to the default layout function.
+    *
+    * @param obj The box object
+    * @param cb The callback function used for layout
+    * @param data Data that will be passed to layout function
+    * @param free_data Function called to free @p data
+    *
+    * @see elm_box_layout_transition()
+    */
    EAPI void                elm_box_layout_set(Evas_Object *obj, Evas_Object_Box_Layout cb, const void *data, void (*free_data)(void *data)) EINA_ARG_NONNULL(1);
+   /**
+    * Special layout function that animates the transition from one layout to another
+    *
+    * Normally, when switching the layout function for a box, this will be
+    * reflected immediately on screen on the next render, but it's also
+    * possible to do this through an animated transition.
+    *
+    * This is done by creating an ::Elm_Box_Transition and setting the box
+    * layout to this function.
+    *
+    * For example:
+    * @code
+    * Elm_Box_Transition *t = elm_box_transition_new(1.0,
+    *                            evas_object_box_layout_vertical, // start
+    *                            NULL, // data for initial layout
+    *                            NULL, // free function for initial data
+    *                            evas_object_box_layout_horizontal, // end
+    *                            NULL, // data for final layout
+    *                            NULL, // free function for final data
+    *                            anim_end, // will be called when animation ends
+    *                            NULL); // data for anim_end function\
+    * elm_box_layout_set(box, elm_box_layout_transition, t,
+    *                    elm_box_transition_free);
+    * @endcode
+    *
+    * @note This function can only be used with elm_box_layout_set(). Calling
+    * it directly will not have the expected results.
+    *
+    * @see elm_box_transition_new
+    * @see elm_box_transition_free
+    * @see elm_box_layout_set
+    */
    EAPI void                elm_box_layout_transition(Evas_Object *obj, Evas_Object_Box_Data *priv, void *data);
+   /**
+    * Create a new ::Elm_Box_Transition to animate the switch of layouts
+    *
+    * If you want to animate the change from one layout to another, you need
+    * to set the layout function of the box to elm_box_layout_transition(),
+    * passing as user data to it an instance of ::Elm_Box_Transition with the
+    * necessary information to perform this animation. The free function to
+    * set for the layout is elm_box_transition_free().
+    *
+    * The parameters to create an ::Elm_Box_Transition sum up to how long
+    * will it be, in seconds, a layout function to describe the initial point,
+    * another for the final position of the children and one function to be
+    * called when the whole animation ends. This last function is useful to
+    * set the definitive layout for the box, usually the same as the end
+    * layout for the animation, but could be used to start another transition.
+    *
+    * @param start_layout The layout function that will be used to start the animation
+    * @param start_layout_data The data to be passed the @p start_layout function
+    * @param start_layout_free_data Function to free @p start_layout_data
+    * @param end_layout The layout function that will be used to end the animation
+    * @param end_layout_free_data The data to be passed the @p end_layout function
+    * @param end_layout_free_data Function to free @p end_layout_data
+    * @param transition_end_cb Callback function called when animation ends
+    * @param transition_end_data Data to be passed to @p transition_end_cb
+    * @return An instance of ::Elm_Box_Transition
+    *
+    * @see elm_box_transition_new
+    * @see elm_box_layout_transition
+    */
    EAPI Elm_Box_Transition *elm_box_transition_new(const double duration, Evas_Object_Box_Layout start_layout, void *start_layout_data, void(*start_layout_free_data)(void *data), Evas_Object_Box_Layout end_layout, void *end_layout_data, void(*end_layout_free_data)(void *data), void(*transition_end_cb)(void *data), void *transition_end_data) EINA_ARG_NONNULL(2, 5);
+   /**
+    * Free a Elm_Box_Transition instance created with elm_box_transition_new().
+    *
+    * This function is mostly useful as the @c free_data parameter in
+    * elm_box_layout_set() when elm_box_layout_transition().
+    *
+    * @param data The Elm_Box_Transition instance to be freed.
+    *
+    * @see elm_box_transition_new
+    * @see elm_box_layout_transition
+    */
    EAPI void                elm_box_transition_free(void *data);
-   /* smart callbacks called:
+   /**
+    * @}
     */
 
    /* button */
    /**
     * @defgroup Button Button
     *
+    * @image html  widget/button/preview-00.png
+    * @image html  widget/button/preview-01.png
+    * @image html  widget/button/preview-02.png
+    *
     * 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.
     *
     * This widgets emits the following signals:
     * @li "clicked": the user clicked the button (press/release).
     * @li "repeated": the user pressed the button without releasing it.
+    * @li "pressed": button was pressed.
     * @li "unpressed": button was released after being pressed.
     * In all three cases, the @c event parameter of the callback will be
     * @c NULL.
@@ -1955,24 +2381,154 @@ extern "C" {
     * @li hoversel_vertical: Internally used by @ref Hoversel to give a
     * continuous look across its options.
     * @li hoversel_vertical_entry: Another internal for @ref Hoversel.
+    *
+    * Follow through a complete example @ref button_example_01 "here".
+    * @{
+    */
+   /**
+    * Add a new button to the parent's canvas
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
     */
    EAPI Evas_Object *elm_button_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the label used in the button
+    *
+    * The passed @p label can be NULL to clean any existing text in it and
+    * leave the button as an icon only object.
+    *
+    * @param obj The button object
+    * @param label The text will be written on the button
+    * @deprecated use elm_object_text_set() instead.
+    */
+   EINA_DEPRECATED EAPI void         elm_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   /**
+    * Get the label set for the button
+    *
+    * The string returned is an internal pointer and should not be freed or
+    * altered. It will also become invalid when the button is destroyed.
+    * The string returned, if not NULL, is a stringshare, so if you need to
+    * keep it around even after the button is destroyed, you can use
+    * eina_stringshare_ref().
+    *
+    * @param obj The button object
+    * @return The text set to the label, or NULL if nothing is set
+    * @deprecated use elm_object_text_set() instead.
+    */
+   EINA_DEPRECATED EAPI const char  *elm_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the icon used for the button
+    *
+    * Setting a new icon will delete any other that was previously set, making
+    * any reference to them invalid. If you need to maintain the previous
+    * object alive, unset it first with elm_button_icon_unset().
+    *
+    * @param obj The button object
+    * @param icon The icon object for the button
+    */
    EAPI void         elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   /**
+    * Get the icon used for the button
+    *
+    * Return the icon object which is set for this widget. If the button is
+    * destroyed or another icon is set, the returned object will be deleted
+    * and any reference to it will be invalid.
+    *
+    * @param obj The button object
+    * @return The icon object that is being used
+    *
+    * @see elm_button_icon_unset()
+    */
    EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Remove the icon set without deleting it and return the object
+    *
+    * This function drops the reference the button holds of the icon object
+    * and returns this last object. It is used in case you want to remove any
+    * icon, or set another one, without deleting the actual object. The button
+    * will be left without an icon set.
+    *
+    * @param obj The button object
+    * @return The icon object that was being used
+    */
    EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Turn on/off the autorepeat event generated when the button is kept pressed
+    *
+    * When off, no autorepeat is performed and buttons emit a normal @c clicked
+    * signal when they are clicked.
+    *
+    * When on, keeping a button pressed will continuously emit a @c repeated
+    * signal until the button is released. The time it takes until it starts
+    * emitting the signal is given by
+    * elm_button_autorepeat_initial_timeout_set(), and the time between each
+    * new emission by elm_button_autorepeat_gap_timeout_set().
+    *
+    * @param obj The button object
+    * @param on  A bool to turn on/off the event
+    */
    EAPI void         elm_button_autorepeat_set(Evas_Object *obj, Eina_Bool on) EINA_ARG_NONNULL(1);
+   /**
+    * Get whether the autorepeat feature is enabled
+    *
+    * @param obj The button object
+    * @return EINA_TRUE if autorepeat is on, EINA_FALSE otherwise
+    *
+    * @see elm_button_autorepeat_set()
+    */
    EAPI Eina_Bool    elm_button_autorepeat_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the initial timeout before the autorepeat event is generated
+    *
+    * Sets the timeout, in seconds, since the button is pressed until the
+    * first @c repeated signal is emitted. If @p t is 0.0 or less, there
+    * won't be any delay and the even will be fired the moment the button is
+    * pressed.
+    *
+    * @param obj The button object
+    * @param t   Timeout in seconds
+    *
+    * @see elm_button_autorepeat_set()
+    * @see elm_button_autorepeat_gap_timeout_set()
+    */
    EAPI void         elm_button_autorepeat_initial_timeout_set(Evas_Object *obj, double t) EINA_ARG_NONNULL(1);
+   /**
+    * Get the initial timeout before the autorepeat event is generated
+    *
+    * @param obj The button object
+    * @return Timeout in seconds
+    *
+    * @see elm_button_autorepeat_initial_timeout_set()
+    */
    EAPI double       elm_button_autorepeat_initial_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the interval between each generated autorepeat event
+    *
+    * After the first @c repeated event is fired, all subsequent ones will
+    * follow after a delay of @p t seconds for each.
+    *
+    * @param obj The button object
+    * @param t   Interval in seconds
+    *
+    * @see elm_button_autorepeat_initial_timeout_set()
+    */
    EAPI void         elm_button_autorepeat_gap_timeout_set(Evas_Object *obj, double t) EINA_ARG_NONNULL(1);
+   /**
+    * Get the interval between each generated autorepeat event
+    *
+    * @param obj The button object
+    * @return Interval in seconds
+    */
    EAPI double       elm_button_autorepeat_gap_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @}
+    */
 
    /* fileselector */
    EAPI Evas_Object *elm_fileselector_button_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_fileselector_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_fileselector_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_fileselector_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char  *elm_fileselector_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_fileselector_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_fileselector_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_fileselector_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -2002,8 +2558,8 @@ extern "C" {
     */
 
    EAPI Evas_Object *elm_fileselector_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_fileselector_entry_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_fileselector_entry_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_fileselector_entry_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char  *elm_fileselector_entry_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_fileselector_entry_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_fileselector_entry_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_fileselector_entry_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -2065,8 +2621,8 @@ extern "C" {
 
    /* label */
    EAPI Evas_Object *elm_label_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_label_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_label_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void elm_label_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1); /* deprecated, use elm_object_text_set instead */
+   EINA_DEPRECATED EAPI const char *elm_label_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /* deprecated, use elm_object_text_get instead */
    EAPI void         elm_label_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
    EAPI Elm_Wrap_Type elm_label_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_label_wrap_width_set(Evas_Object *obj, Evas_Coord w) EINA_ARG_NONNULL(1);
@@ -2091,8 +2647,8 @@ extern "C" {
 
    /* toggle */
    EAPI Evas_Object *elm_toggle_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_toggle_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_toggle_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_toggle_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char  *elm_toggle_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_toggle_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_toggle_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_toggle_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -2107,23 +2663,137 @@ extern "C" {
     *             by the cursor in the first place).
     */
 
-   /* frame */
+   /**
+    * @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
+    *
+    * @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
+    * styles:
+    * @li default
+    * @li pad_small
+    * @li pad_medium
+    * @li pad_large
+    * @li pad_huge
+    * @li outdent_top
+    * @li outdent_bottom
+    *
+    * Of all this styles only default shows the title. Frame emits no signals.
+    *
+    * For a detailed example see the @ref tutorial_frame.
+    *
+    * @{
+    */
+   /**
+    * @brief Add a new frame to the parent
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
+    */
    EAPI Evas_Object *elm_frame_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_frame_label_set(Evas_Object *obj, const char *label); EINA_ARG_NONNULL(1)
-   EAPI const char  *elm_frame_label_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
-   EAPI void         elm_frame_content_set(Evas_Object *obj, Evas_Object *content); EINA_ARG_NONNULL(1)
-   EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
-   EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj); EINA_ARG_NONNULL(1)
-   /* available styles:
-    * default
-    * pad_small
-    * pad_medium
-    * pad_large
-    * pad_huge
-    * outdent_top
-    * outdent_bottom
+   /**
+    * @brief Set the frame label
+    *
+    * @param obj The frame object
+    * @param label The label of this frame object
+    *
+    * @deprecated use elm_object_text_set() instead.
     */
-   /* smart callbacks called:
+   EINA_DEPRECATED EAPI void         elm_frame_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the frame label
+    *
+    * @param obj The frame object
+    *
+    * @return The label of this frame objet or NULL if unable to get frame
+    *
+    * @deprecated use elm_object_text_get() instead.
+    */
+   EINA_DEPRECATED EAPI const char  *elm_frame_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set the content of the frame widget
+    *
+    * 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_frame_content_unset() function.
+    *
+    * @param obj The frame object
+    * @param content The content will be filled in this frame object
+    */
+   EAPI void         elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get the content of the frame widget
+    *
+    * Return the content object which is set for this widget
+    *
+    * @param obj The frame object
+    * @return The content that is being used
+    */
+   EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Unset the content of the frame widget
+    *
+    * Unparent and return the content object which was set for this widget
+    *
+    * @param obj The frame object
+    * @return The content that was being used
+    */
+   EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * @}
     */
 
    /* table */
@@ -2139,7 +2809,7 @@ extern "C" {
    EAPI void         elm_table_clear(Evas_Object *obj, Eina_Bool clear) EINA_ARG_NONNULL(1);
    EAPI void         elm_table_pack_set(Evas_Object *subobj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
    EAPI void         elm_table_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1);
-         
+
    /* gengrid */
    typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class;
    typedef struct _Elm_Gengrid_Item_Class_Func Elm_Gengrid_Item_Class_Func;
@@ -2247,34 +2917,305 @@ extern "C" {
     * "drag,stop" - Gengrid is not being dragged.
     */
 
-   /* clock */
+   /**
+    * @defgroup Clock Clock
+    *
+    * 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.
+    *
+    * A newly created clock will fetch system's time (already
+    * considering local time adjustments) to start with, and will tick
+    * accondingly. It may or may not show seconds.
+    *
+    * Clocks have an @b edition mode. When in it, the sheets will
+    * display extra arrow indications on the top and bottom and the
+    * user may click on them to raise or lower the time values. After
+    * it's told to exit edition mode, it will keep ticking with that
+    * new time set (it keeps the difference from local time).
+    *
+    * Also, when under edition mode, user clicks on the cited arrows
+    * which are @b held for some time will make the clock to flip the
+    * sheet, thus editing the time, continuosly and automatically for
+    * the user. The interval between sheet flips will keep growing in
+    * time, so that it helps the user to reach a time which is distant
+    * from the one set.
+    *
+    * The time display is, by default, in military mode (24h), but an
+    * am/pm indicator may be optionally shown, too, when it will
+    * switch to 12h.
+    *
+    * Smart callbacks one can register to:
+    * - "changed" - the clock's user changed the time
+    *
+    * Here is an example on its usage:
+    * @li @ref clock_example
+    */
+
+   /**
+    * @addtogroup Clock
+    * @{
+    */
+
+   /**
+    * Identifiers for which clock digits should be editable, when a
+    * clock widget is in edition mode. Values may be ORed together to
+    * make a mask, naturally.
+    *
+    * @see elm_clock_edit_set()
+    * @see elm_clock_digit_edit_set()
+    */
    typedef enum _Elm_Clock_Digedit
      {
-        ELM_CLOCK_NONE         = 0,
-        ELM_CLOCK_HOUR_DECIMAL = 1 << 0,
-        ELM_CLOCK_HOUR_UNIT    = 1 << 1,
-        ELM_CLOCK_MIN_DECIMAL  = 1 << 2,
-        ELM_CLOCK_MIN_UNIT     = 1 << 3,
-        ELM_CLOCK_SEC_DECIMAL  = 1 << 4,
-        ELM_CLOCK_SEC_UNIT     = 1 << 5,
-        ELM_CLOCK_ALL          = (1 << 6) - 1
+        ELM_CLOCK_NONE         = 0, /**< Default value. Means that all digits are editable, when in edition mode. */
+        ELM_CLOCK_HOUR_DECIMAL = 1 << 0, /**< Decimal algarism of hours value should be editable */
+        ELM_CLOCK_HOUR_UNIT    = 1 << 1, /**< Unit algarism of hours value should be editable */
+        ELM_CLOCK_MIN_DECIMAL  = 1 << 2, /**< Decimal algarism of minutes value should be editable */
+        ELM_CLOCK_MIN_UNIT     = 1 << 3, /**< Unit algarism of minutes value should be editable */
+        ELM_CLOCK_SEC_DECIMAL  = 1 << 4, /**< Decimal algarism of seconds value should be editable */
+        ELM_CLOCK_SEC_UNIT     = 1 << 5, /**< Unit algarism of seconds value should be editable */
+        ELM_CLOCK_ALL          = (1 << 6) - 1 /**< All digits should be editable */
      } Elm_Clock_Digedit;
 
+   /**
+    * Add a new clock widget to the given parent Elementary
+    * (container) object
+    *
+    * @param parent The parent object
+    * @return a new clock widget handle or @c NULL, on errors
+    *
+    * This function inserts a new clock widget on the canvas.
+    *
+    * @ingroup Clock
+    */
    EAPI Evas_Object      *elm_clock_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set a clock widget's time, programmatically
+    *
+    * @param obj The clock widget object
+    * @param hrs The hours to set
+    * @param min The minutes to set
+    * @param sec The secondes to set
+    *
+    * This function updates the time that is showed by the clock
+    * widget.
+    *
+    *  Values @b must be set within the following ranges:
+    * - 0 - 23, for hours
+    * - 0 - 59, for minutes
+    * - 0 - 59, for seconds,
+    *
+    * even if the clock is not in "military" mode.
+    *
+    * @warning The behavior for values set out of those ranges is @b
+    * indefined.
+    *
+    * @ingroup Clock
+    */
    EAPI void              elm_clock_time_set(Evas_Object *obj, int hrs, int min, int sec) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get a clock widget's time values
+    *
+    * @param obj The clock object
+    * @param[out] hrs Pointer to the variable to get the hours value
+    * @param[out] min Pointer to the variable to get the minutes value
+    * @param[out] sec Pointer to the variable to get the seconds value
+    *
+    * This function gets the time set for @p obj, returning
+    * it on the variables passed as the arguments to function
+    *
+    * @note Use @c NULL pointers on the time values you're not
+    * interested in: they'll be ignored by the function.
+    *
+    * @ingroup Clock
+    */
    EAPI void              elm_clock_time_get(const Evas_Object *obj, int *hrs, int *min, int *sec) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set whether a given clock widget is under <b>edition mode</b> or
+    * under (default) displaying-only mode.
+    *
+    * @param obj The clock object
+    * @param edit @c EINA_TRUE to put it in edition, @c EINA_FALSE to
+    * put it back to "displaying only" mode
+    *
+    * This function makes a clock's time to be editable or not <b>by
+    * user interaction</b>. When in edition mode, clocks @b stop
+    * ticking, until one brings them back to canonical mode. The
+    * elm_clock_digit_edit_set() function will influence which digits
+    * of the clock will be editable. By default, all of them will be
+    * (#ELM_CLOCK_NONE).
+    *
+    * @note am/pm sheets, if being shown, will @b always be editable
+    * under edition mode.
+    *
+    * @see elm_clock_edit_get()
+    *
+    * @ingroup Clock
+    */
    EAPI void              elm_clock_edit_set(Evas_Object *obj, Eina_Bool edit) EINA_ARG_NONNULL(1);
+
+   /**
+    * Retrieve whether a given clock widget is under <b>edition
+    * mode</b> or under (default) displaying-only mode.
+    *
+    * @param obj The clock object
+    * @param edit @c EINA_TRUE, if it's in edition mode, @c EINA_FALSE
+    * otherwise
+    *
+    * This function retrieves whether the clock's time can be edited
+    * or not by user interaction.
+    *
+    * @see elm_clock_edit_set() for more details
+    *
+    * @ingroup Clock
+    */
    EAPI Eina_Bool         elm_clock_edit_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set what digits of the given clock widget should be editable
+    * when in edition mode.
+    *
+    * @param obj The clock object
+    * @param digedit Bit mask indicating the digits to be editable
+    * (values in #Elm_Clock_Digedit).
+    *
+    * If the @p digedit param is #ELM_CLOCK_NONE, editing will be
+    * disabled on @p obj (same effect as elm_clock_edit_set(), with @c
+    * EINA_FALSE).
+    *
+    * @see elm_clock_digit_edit_get()
+    *
+    * @ingroup Clock
+    */
    EAPI void              elm_clock_digit_edit_set(Evas_Object *obj, Elm_Clock_Digedit digedit) EINA_ARG_NONNULL(1);
+
+   /**
+    * Retrieve what digits of the given clock widget should be
+    * editable when in edition mode.
+    *
+    * @param obj The clock object
+    * @return Bit mask indicating the digits to be editable
+    * (values in #Elm_Clock_Digedit).
+    *
+    * @see elm_clock_digit_edit_set() for more details
+    *
+    * @ingroup Clock
+    */
    EAPI Elm_Clock_Digedit elm_clock_digit_edit_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set if the given clock widget must show hours in military or
+    * am/pm mode
+    *
+    * @param obj The clock object
+    * @param am_pm @c EINA_TRUE to put it in am/pm mode, @c EINA_FALSE
+    * to military mode
+    *
+    * This function sets if the clock must show hours in military or
+    * am/pm mode. In some countries like Brazil the military mode
+    * (00-24h-format) is used, in opposition to the USA, where the
+    * am/pm mode is more commonly used.
+    *
+    * @see elm_clock_show_am_pm_get()
+    *
+    * @ingroup Clock
+    */
    EAPI void              elm_clock_show_am_pm_set(Evas_Object *obj, Eina_Bool am_pm) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get if the given clock widget shows hours in military or am/pm
+    * mode
+    *
+    * @param obj The clock object
+    * @return @c EINA_TRUE, if in am/pm mode, @c EINA_FALSE if in
+    * military
+    *
+    * This function gets if the clock shows hours in military or am/pm
+    * mode.
+    *
+    * @see elm_clock_show_am_pm_set() for more details
+    *
+    * @ingroup Clock
+    */
    EAPI Eina_Bool         elm_clock_show_am_pm_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set if the given clock widget must show time with seconds or not
+    *
+    * @param obj The clock object
+    * @param seconds @c EINA_TRUE to show seconds, @c EINA_FALSE otherwise
+    *
+    * This function sets if the given clock must show or not elapsed
+    * seconds. By default, they are @b not shown.
+    *
+    * @see elm_clock_show_seconds_get()
+    *
+    * @ingroup Clock
+    */
    EAPI void              elm_clock_show_seconds_set(Evas_Object *obj, Eina_Bool seconds) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get whether the given clock widget is showing time with seconds
+    * or not
+    *
+    * @param obj The clock object
+    * @return @c EINA_TRUE if it's showing seconds, @c EINA_FALSE otherwise
+    *
+    * This function gets whether @p obj is showing or not the elapsed
+    * seconds.
+    *
+    * @see elm_clock_show_seconds_set()
+    *
+    * @ingroup Clock
+    */
    EAPI Eina_Bool         elm_clock_show_seconds_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the interval on time updates for an user mouse button hold
+    * on clock widgets' time edition.
+    *
+    * @param obj The clock object
+    * @param interval The (first) interval value in seconds
+    *
+    * This interval value is @b decreased while the user holds the
+    * mouse pointer either incrementing or decrementing a given the
+    * clock digit's value.
+    *
+    * This helps the user to get to a given time distant from the
+    * current one easier/faster, as it will start to flip quicker and
+    * quicker on mouse button holds.
+    *
+    * The calculation for the next flip 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 flips is
+    * @b 0.85 seconds.
+    *
+    * @see elm_clock_interval_get()
+    *
+    * @ingroup Clock
+    */
    EAPI void              elm_clock_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
+
+   /**
+    * Get the interval on time updates for an user mouse button hold
+    * on clock widgets' time edition.
+    *
+    * @param obj The clock object
+    * @return The (first) interval value, in seconds, set on it
+    *
+    * @see elm_clock_interval_set() for more details
+    *
+    * @ingroup Clock
+    */
    EAPI double            elm_clock_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /* smart callbacks called:
-    * "changed" - the user changed the time
+
+   /**
+    * @}
     */
 
    /* layout */
@@ -2284,8 +3225,8 @@ extern "C" {
    EAPI void               elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
    EAPI Evas_Object       *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
    EAPI Evas_Object       *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
-   EAPI void               elm_layout_text_set(Evas_Object *obj, const char *part, const char *text) EINA_ARG_NONNULL(1);
-   EAPI const char        *elm_layout_text_get(const Evas_Object *obj, const char *part) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_layout_text_set(Evas_Object *obj, const char *part, const char *text) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char        *elm_layout_text_get(const Evas_Object *obj, const char *part) EINA_ARG_NONNULL(1);
    EAPI void               elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1);
    EAPI void               elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1);
    EAPI void               elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference) EINA_ARG_NONNULL(1);
@@ -2363,6 +3304,7 @@ extern "C" {
  * Elementary naming convention for its parts.
  *
  * @ingroup Layout
+ * @deprecate use elm_object_text_* instead.
  */
 #define elm_layout_label_set(_ly, _txt) \
   elm_layout_text_set((_ly), "elm.text", (_txt))
@@ -2373,6 +3315,7 @@ extern "C" {
  * Elementary naming convention for its parts.
  *
  * @ingroup Layout
+ * @deprecate use elm_object_text_* instead.
  */
 #define elm_layout_label_get(_ly) \
   elm_layout_text_get((_ly), "elm.text")
@@ -2468,6 +3411,7 @@ extern "C" {
    EAPI const char  *elm_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
    EAPI void         elm_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
+   EAPI Elm_Wrap_Type elm_entry_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool    elm_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -2523,7 +3467,7 @@ extern "C" {
    EAPI void         elm_entry_scrollbar_policy_set(Evas_Object *obj, Elm_Scroller_Policy h, Elm_Scroller_Policy v);
    EAPI void         elm_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
    EAPI void         elm_entry_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
-         
+
    /* pre-made filters for entries */
    typedef struct _Elm_Entry_Filter_Limit_Size Elm_Entry_Filter_Limit_Size;
    struct _Elm_Entry_Filter_Limit_Size
@@ -2657,8 +3601,9 @@ extern "C" {
     *
     * Other markup can be used to style the text in different ways, but it's
     * up to the style defined in the theme which tags do what.
+    * @deprecated use elm_object_text_set() instead.
     */
-   EAPI void         elm_anchorview_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_anchorview_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
    /**
     * Get the markup text set for the anchorview
     *
@@ -2667,8 +3612,9 @@ extern "C" {
     * @param obj The anchorview object
     * @return The markup text set or @c NULL if nothing was set or an error
     * occurred
+    * @deprecated use elm_object_text_set() instead.
     */
-   EAPI const char  *elm_anchorview_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char  *elm_anchorview_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Set the parent of the hover popup
     *
@@ -2823,7 +3769,11 @@ extern "C" {
     * @see Hover
     *
     * Since examples are usually better than plain words, we might as well
-    * try one. This exampel will show both Anchorblock and @ref Anchorview,
+    * try @ref tutorial_anchorblock_example "one".
+    */
+   /**
+    * @page tutorial_anchorblock_example Anchorblock/Anchorview example
+    * This exampel will show both Anchorblock and @ref Anchorview,
     * since both are very similar and it's easier to show them once and side
     * by side, so the difference is more clear.
     *
@@ -2920,8 +3870,11 @@ extern "C" {
     * @until evas_object_del(box)
     * @until }
     * @until }
-    */
-   /**
+    *
+    * The example will look like this:
+    * @image html screenshots/anchorblock_01.png
+    * @image latex screenshots/anchorblock_01.eps
+    *
     * @example anchorblock_example_01.c
     */
    /**
@@ -2992,8 +3945,9 @@ extern "C" {
     *
     * Other markup can be used to style the text in different ways, but it's
     * up to the style defined in the theme which tags do what.
+    * @deprecated use elm_object_text_set() instead.
     */
-   EAPI void         elm_anchorblock_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_anchorblock_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
    /**
     * Get the markup text set for the anchorblock
     *
@@ -3002,8 +3956,9 @@ extern "C" {
     * @param obj The anchorblock object
     * @return The markup text set or @c NULL if nothing was set or an error
     * occurred
+    * @deprecated use elm_object_text_set() instead.
     */
-   EAPI const char  *elm_anchorblock_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char  *elm_anchorblock_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Set the parent of the hover popup
     *
@@ -3108,23 +4063,176 @@ extern "C" {
     * @}
     */
 
-   /* bubble */
+   /**
+    * @defgroup Bubble Bubble
+    *
+    * @brief The Bubble is a widget to show text similarly to how speech is
+    * represented in comics.
+    *
+    * The bubble widget contains 5 important visual elements:
+    * @li The frame is a rectangle with rounded rectangles and an "arrow".
+    * @li The @p icon is an image to which the frame's arrow points to.
+    * @li The @p label is a text which appears to the right of the icon if the
+    * corner is "top_left" or "bottom_left" and is right aligned to the frame
+    * otherwise.
+    * @li The @p info is a text which appears to the right of the label. Info's
+    * font is of a ligther color than label.
+    * @li The @p content is an evas object that is shown inside the frame.
+    *
+    * The position of the arrow, icon, label and info depends on which corner is
+    * selected. The four available corners are:
+    * @li "top_left" - Default
+    * @li "top_right"
+    * @li "bottom_left"
+    * @li "bottom_right"
+    *
+    * 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".
+    *
+    * @{
+    */
+   /**
+    * Add a new bubble to the parent
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
+    *
+    * This function adds a text bubble to the given parent evas object.
+    */
    EAPI Evas_Object *elm_bubble_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_bubble_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_bubble_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void         elm_bubble_info_set(Evas_Object *obj, const char *info) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_bubble_info_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
+   /**
+    * Set the label of the bubble
+    *
+    * @param obj The bubble object
+    * @param label The string to set in the label
+    *
+    * This function sets the title of the bubble. Where this appears depends on
+    * the selected corner.
+    * @deprecated use elm_object_text_set() instead.
+    */
+   EINA_DEPRECATED EAPI void         elm_bubble_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   /**
+    * Get the label of the bubble
+    *
+    * @param obj The bubble object
+    * @return The string of set in the label
+    *
+    * This function gets the title of the bubble.
+    * @deprecated use elm_object_text_set() instead.
+    */
+   EINA_DEPRECATED EAPI const char  *elm_bubble_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the info of the bubble
+    *
+    * @param obj The bubble object
+    * @param info The given info about the bubble
+    *
+    * This function sets the info of the bubble. Where this appears depends on
+    * the selected corner.
+    * @deprecated use elm_object_text_set() instead.
+    */
+   EINA_DEPRECATED EAPI void         elm_bubble_info_set(Evas_Object *obj, const char *info) EINA_ARG_NONNULL(1);
+   /**
+    * Get the info of the bubble
+    *
+    * @param obj The bubble object
+    *
+    * @return The "info" string of the bubble
+    *
+    * This function gets the info text.
+    * @deprecated use elm_object_text_set() instead.
+    */
+   EINA_DEPRECATED EAPI const char  *elm_bubble_info_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the content to be shown in the bubble
+    *
+    * Once the content object is set, a previously set one will be deleted.
+    * If you want to keep the old content object, use the
+    * elm_bubble_content_unset() function.
+    *
+    * @param obj The bubble object
+    * @param content The given content of the bubble
+    *
+    * This function sets the content shown on the middle of the bubble.
+    */
    EAPI void         elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   /**
+    * Get the content shown in the bubble
+    *
+    * Return the content object which is set for this widget.
+    *
+    * @param obj The bubble object
+    * @return The content that is being used
+    */
    EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Unset the content shown in the bubble
+    *
+    * Unparent and return the content object which was set for this widget.
+    *
+    * @param obj The bubble object
+    * @return The content that was being used
+    */
    EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the icon of the bubble
+    *
+    * Once the icon object is set, a previously set one will be deleted.
+    * If you want to keep the old content object, use the
+    * elm_icon_content_unset() function.
+    *
+    * @param obj The bubble object
+    * @param icon The given icon for the bubble
+    */
    EAPI void         elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   /**
+    * Get the icon of the bubble
+    *
+    * @param obj The bubble object
+    * @return The icon for the bubble
+    *
+    * This function gets the icon shown on the top left of bubble.
+    */
    EAPI Evas_Object *elm_bubble_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Unset the icon of the bubble
+    *
+    * Unparent and return the icon object which was set for this widget.
+    *
+    * @param obj The bubble object
+    * @return The icon that was being used
+    */
    EAPI Evas_Object *elm_bubble_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Set the corner of the bubble
+    *
+    * @param obj The bubble object.
+    * @param corner The given corner for the bubble.
+    *
+    * This function sets the corner of the bubble. The corner will be used to
+    * determine where the arrow in the frame points to and where label, icon and
+    * info arre shown.
+    *
+    * Possible values for corner are:
+    * @li "top_left" - Default
+    * @li "top_right"
+    * @li "bottom_left"
+    * @li "bottom_right"
+    */
    EAPI void         elm_bubble_corner_set(Evas_Object *obj, const char *corner) EINA_ARG_NONNULL(1, 2);
+   /**
+    * Get the corner of the bubble
+    *
+    * @param obj The bubble object.
+    * @return The given corner for the bubble.
+    *
+    * This function gets the selected corner of the bubble.
+    */
    EAPI const char  *elm_bubble_corner_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /* smart callbacks called:
-    * "clicked" - the user clicked the bubble
+   /**
+    * @}
     */
 
    /* photo */
@@ -3139,6 +4247,273 @@ extern "C" {
     * "drag,end" - Dragged item was dropped (somewhere)
     */
 
+   /* gesture layer */
+   /** @defgroup Elm_Gesture_Layer Gesture Layer */
+   /**
+    * @enum _Elm_Gesture_Types
+    * Emum of supported gesture types.
+    * @ingroup Elm_Gesture_Layer
+    */
+   enum _Elm_Gesture_Types
+     {
+        ELM_GESTURE_FIRST = 0,
+
+        ELM_GESTURE_N_TAPS, /**< N fingers single taps */
+        ELM_GESTURE_N_DOUBLE_TAPS, /**< N fingers double-single taps */
+        ELM_GESTURE_N_TRIPLE_TAPS, /**< N fingers triple-single taps */
+
+        ELM_GESTURE_MOMENTUM, /**< Reports momentum in the dircetion of move */
+
+        ELM_GESTURE_N_LINES, /**< N fingers line gesture */
+        ELM_GESTURE_N_FLICKS, /**< N fingers flick gesture */
+
+        ELM_GESTURE_ZOOM, /**< Zoom */
+        ELM_GESTURE_ROTATE, /**< Rotate */
+
+        ELM_GESTURE_LAST
+     };
+
+   /**
+    * @typedef Elm_Gesture_Types
+    * Type for Emum of supported gesture types.
+    * @ingroup Elm_Gesture_Layer
+    */
+   typedef enum _Elm_Gesture_Types Elm_Gesture_Types;
+
+   /**
+    * @enum _Elm_Gesture_State
+    * Emum of gesture states.
+    * @ingroup Elm_Gesture_Layer
+    */
+   enum _Elm_Gesture_State
+     {
+        ELM_GESTURE_STATE_UNDEFINED = -1, /**< Gesture not STARTed */
+        ELM_GESTURE_STATE_START,          /**< Gesture STARTed     */
+        ELM_GESTURE_STATE_MOVE,           /**< Gesture is ongoing  */
+        ELM_GESTURE_STATE_END,            /**< Gesture completed   */
+        ELM_GESTURE_STATE_ABORT    /**< Onging gesture was ABORTed */
+     };
+   /**
+    * @typedef Elm_Gesture_State
+    * gesture states.
+    * @ingroup Elm_Gesture_Layer
+    */
+   typedef enum _Elm_Gesture_State Elm_Gesture_State;
+
+   /**
+    * @struct _Elm_Gesture_Taps_Info
+    * Struct holds taps info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+   struct _Elm_Gesture_Taps_Info
+     {
+        Evas_Coord x, y;         /**< Holds center point between fingers */
+        unsigned int n;          /**< Number of fingers tapped           */
+        unsigned int timestamp;  /**< event timestamp       */
+     };
+
+   /**
+    * @typedef Elm_Gesture_Taps_Info
+    * holds taps info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+   typedef struct _Elm_Gesture_Taps_Info Elm_Gesture_Taps_Info;
+
+   /**
+    * @struct _Elm_Gesture_Momentum_Info
+    * Struct holds momentum info for user
+    * x1 and y1 are not necessarily in sync
+    * x1 holds x value of x direction starting point
+    * and same holds for y1.
+    * This is noticeable when doing V-shape movement
+    * @ingroup Elm_Gesture_Layer
+    */
+   struct _Elm_Gesture_Momentum_Info
+     {  /* Report line ends, timestamps, and momentum computed        */
+        Evas_Coord x1; /**< Final-swipe direction starting point on X */
+        Evas_Coord y1; /**< Final-swipe direction starting point on Y */
+        Evas_Coord x2; /**< Final-swipe direction ending point on X   */
+        Evas_Coord y2; /**< Final-swipe direction ending point on Y   */
+
+        unsigned int tx; /**< Timestamp of start of final x-swipe */
+        unsigned int ty; /**< Timestamp of start of final y-swipe */
+
+        Evas_Coord mx; /**< Momentum on X */
+        Evas_Coord my; /**< Momentum on Y */
+     };
+
+   /**
+    * @typedef Elm_Gesture_Momentum_Info
+    * holds momentum info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+    typedef struct _Elm_Gesture_Momentum_Info Elm_Gesture_Momentum_Info;
+
+   /**
+    * @struct _Elm_Gesture_Line_Info
+    * Struct holds line info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+   struct _Elm_Gesture_Line_Info
+     {  /* Report line ends, timestamps, and momentum computed      */
+        Elm_Gesture_Momentum_Info momentum; /**< Line momentum info */
+        unsigned int n;            /**< Number of fingers (lines)   */
+        /* FIXME should be radians, bot degrees */
+        double angle;              /**< Angle (direction) of lines  */
+     };
+
+   /**
+    * @typedef _Elm_Gesture_Line_Info
+    * Holds line info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+    typedef struct  _Elm_Gesture_Line_Info Elm_Gesture_Line_Info;
+
+   /**
+    * @struct _Elm_Gesture_Zoom_Info
+    * Struct holds zoom info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+   struct _Elm_Gesture_Zoom_Info
+     {
+        Evas_Coord x, y;       /**< Holds zoom center point reported to user  */
+        Evas_Coord radius; /**< Holds radius between fingers reported to user */
+        float zoom;            /**< Zoom value: 1.0 means no zoom             */
+        float momentum;        /**< Zoom momentum: zoom growth per second (NOT YET SUPPORTED) */
+     };
+
+   /**
+    * @typedef Elm_Gesture_Zoom_Info
+    * Holds zoom info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+   typedef struct _Elm_Gesture_Zoom_Info Elm_Gesture_Zoom_Info;
+
+   /**
+    * @struct _Elm_Gesture_Rotate_Info
+    * Struct holds rotation info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+   struct _Elm_Gesture_Rotate_Info
+     {
+        Evas_Coord x, y;   /**< Holds zoom center point reported to user      */
+        Evas_Coord radius; /**< Holds radius between fingers reported to user */
+        double base_angle; /**< Holds start-angle */
+        double angle;      /**< Rotation value: 0.0 means no rotation         */
+        double momentum;   /**< Rotation momentum: rotation done per second (NOT YET SUPPORTED) */
+     };
+
+   /**
+    * @typedef Elm_Gesture_Rotate_Info
+    * Holds rotation info for user
+    * @ingroup Elm_Gesture_Layer
+    */
+   typedef struct _Elm_Gesture_Rotate_Info Elm_Gesture_Rotate_Info;
+
+   /**
+    * @typedef Elm_Gesture_Event_Cb
+    * User callback used to stream gesture info from gesture layer
+    * @param data user data
+    * @param event_info gesture report info
+    * Returns a flag field to be applied on the causing event.
+    * You should probably return EVAS_EVENT_FLAG_ON_HOLD if your widget acted
+    * upon the event, in an irreversible way.
+    *
+    * @ingroup Elm_Gesture_Layer
+    */
+   typedef Evas_Event_Flags (*Elm_Gesture_Event_Cb) (void *data, void *event_info);
+
+   /**
+    * Use function to set callbacks to be notified about
+    * change of state of gesture.
+    * When a user registers a callback with this function
+    * this means this gesture has to be tested.
+    *
+    * When ALL callbacks for a gesture are set to NULL
+    * it means user isn't interested in gesture-state
+    * and it will not be tested.
+    *
+    * @param obj Pointer to gesture-layer.
+    * @param idx The gesture you would like to track its state.
+    * @param cb callback function pointer.
+    * @param cb_type what event this callback tracks: START, MOVE, END, ABORT.
+    * @param data user info to be sent to callback (usually, Smart Data)
+    *
+    * @ingroup Elm_Gesture_Layer
+    */
+   EAPI void elm_gesture_layer_cb_set(Evas_Object *obj, Elm_Gesture_Types idx, Elm_Gesture_State cb_type, Elm_Gesture_Event_Cb cb, void *data) EINA_ARG_NONNULL(1);
+
+   /**
+    * Call this function to get repeat-events settings.
+    *
+    * @param obj Pointer to gesture-layer.
+    *
+    * @return repeat events settings.
+    * @see elm_gesture_layer_hold_events_set()
+    * @ingroup Elm_Gesture_Layer
+    */
+   EAPI Eina_Bool elm_gesture_layer_hold_events_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * This function called in order to make gesture-layer repeat events.
+    * Set this of you like to get the raw events only if gestures were not detected.
+    * Clear this if you like gesture layer to fwd events as testing gestures.
+    *
+    * @param obj Pointer to gesture-layer.
+    * @param r Repeat: TRUE/FALSE
+    *
+    * @ingroup Elm_Gesture_Layer
+    */
+   EAPI void elm_gesture_layer_hold_events_set(Evas_Object *obj, Eina_Bool r) EINA_ARG_NONNULL(1);
+
+   /**
+    * This function sets step-value for zoom action.
+    * Set step to any positive value.
+    * Cancel step setting by setting to 0.0
+    *
+    * @param obj Pointer to gesture-layer.
+    * @param s new zoom step value.
+    *
+    * @ingroup Elm_Gesture_Layer
+    */
+   EAPI void elm_gesture_layer_zoom_step_set(Evas_Object *obj, double s) EINA_ARG_NONNULL(1);
+
+   /**
+    * This function sets step-value for rotate action.
+    * Set step to any positive value.
+    * Cancel step setting by setting to 0.0
+    *
+    * @param obj Pointer to gesture-layer.
+    * @param s new roatate step value.
+    *
+    * @ingroup Elm_Gesture_Layer
+    */
+   EAPI void elm_gesture_layer_rotate_step_set(Evas_Object *obj, double s) EINA_ARG_NONNULL(1);
+
+   /**
+    * This function called to attach gesture-layer to an Evas_Object.
+    * @param obj Pointer to gesture-layer.
+    * @param t Pointer to underlying object (AKA Target)
+    *
+    * @return TRUE, FALSE on success, failure.
+    *
+    * @ingroup Elm_Gesture_Layer
+    */
+   EAPI Eina_Bool elm_gesture_layer_attach(Evas_Object *obj, Evas_Object *t) EINA_ARG_NONNULL(1, 2);
+
+   /**
+    * Call this function to construct a new gesture-layer object.
+    * This does not activate the gesture layer. You have to
+    * call elm_gesture_layer_attach in order to 'activate' gesture-layer.
+    *
+    * @param parent the parent object.
+    *
+    * @return Pointer to new gesture-layer object.
+    *
+    * @ingroup Elm_Gesture_Layer
+    */
+   EAPI Evas_Object *elm_gesture_layer_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
    /* thumb */
    typedef enum _Elm_Thumb_Animation_Setting
      {
@@ -3179,8 +4554,8 @@ extern "C" {
    EAPI Eina_Bool          elm_hoversel_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void               elm_hoversel_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
    EAPI Evas_Object       *elm_hoversel_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void               elm_hoversel_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char        *elm_hoversel_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_hoversel_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char        *elm_hoversel_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void               elm_hoversel_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    EAPI Evas_Object       *elm_hoversel_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Evas_Object       *elm_hoversel_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -3423,8 +4798,8 @@ extern "C" {
 
    /* slider */
    EAPI Evas_Object       *elm_slider_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void               elm_slider_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char        *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_slider_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char        *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void               elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    EAPI Evas_Object       *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Evas_Object       *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -3437,7 +4812,8 @@ extern "C" {
    EAPI const char        *elm_slider_unit_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void               elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator) EINA_ARG_NONNULL(1);
    EAPI const char        *elm_slider_indicator_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void               elm_slider_indicator_format_function_set(Evas_Object *obj, const char *(*func)(double val)) EINA_ARG_NONNULL(1);
+  EAPI void                elm_slider_indicator_format_function_set(Evas_Object *obj, const char *(*func)(double val), void (*free_func)(const char *str)) EINA_ARG_NONNULL(1);
+  EAPI void                elm_slider_units_format_function_set(Evas_Object *obj, const char *(*func)(double val), void (*free_func)(const char *str)) EINA_ARG_NONNULL(1);
    EAPI void               elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
    EAPI Eina_Bool          elm_slider_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void               elm_slider_min_max_set(Evas_Object *obj, double min, double max) EINA_ARG_NONNULL(1);
@@ -3502,8 +4878,9 @@ extern "C" {
     * @param left_label The label to be set on the left.
     * @param center_label The label to be set on the center.
     * @param right_label The label to be set on the right.
+    * @deprecated use elm_object_text_set() instead.
     */
-   EAPI void                  elm_actionslider_labels_set(Evas_Object *obj, const char *left_label, const char *center_label, const char *right_label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void                  elm_actionslider_labels_set(Evas_Object *obj, const char *left_label, const char *center_label, const char *right_label) EINA_ARG_NONNULL(1);
    /**
     * Get actionslider labels.
     *
@@ -3511,8 +4888,9 @@ extern "C" {
     * @param left_label A char** to place the left_label of @p obj into.
     * @param center_label A char** to place the center_label of @p obj into.
     * @param right_label A char** to place the right_label of @p obj into.
+    * @deprecated use elm_object_text_set() instead.
     */
-   EAPI void                  elm_actionslider_labels_get(const Evas_Object *obj, const char **left_label, const char **center_label, const char **right_label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void                  elm_actionslider_labels_get(const Evas_Object *obj, const char **left_label, const char **center_label, const char **right_label) EINA_ARG_NONNULL(1);
    /**
     * Get actionslider selected label.
     *
@@ -3571,15 +4949,17 @@ extern "C" {
     *
     * @param obj The actionslider object
     * @param label The label to be set on the indicator.
+    * @deprecated use elm_object_text_set() instead.
     */
-   EAPI void                  elm_actionslider_indicator_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void                  elm_actionslider_indicator_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
    /**
     * Get the label used on the indicator object.
     *
     * @param obj The actionslider object
     * @return The indicator label
+    * @deprecated use elm_object_text_set() instead.
     */
-   EAPI const char           *elm_actionslider_indicator_label_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char           *elm_actionslider_indicator_label_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @}
     */
@@ -3609,7 +4989,7 @@ extern "C" {
              GenlistItemIconGetFunc   icon_get;
              GenlistItemStateGetFunc  state_get;
              GenlistItemDelFunc       del;
-             GenlistItemMovedFunc     moved;
+             GenlistItemMovedFunc     moved; // TODO: do not use this. change this to smart callback.
           } func;
         const char                *mode_item_style;
      };
@@ -3784,22 +5164,22 @@ extern "C" {
 
    /* check */
    EAPI Evas_Object *elm_check_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_check_label_set(Evas_Object *obj, const char *label); EINA_ARG_NONNULL(1)
-   EAPI const char  *elm_check_label_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
-   EAPI void         elm_check_icon_set(Evas_Object *obj, Evas_Object *icon); EINA_ARG_NONNULL(1)
-   EAPI Evas_Object *elm_check_icon_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
-   EAPI Evas_Object *elm_check_icon_unset(Evas_Object *obj); EINA_ARG_NONNULL(1)
-   EAPI void         elm_check_state_set(Evas_Object *obj, Eina_Bool state); EINA_ARG_NONNULL(1)
-   EAPI Eina_Bool    elm_check_state_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
-   EAPI void         elm_check_state_pointer_set(Evas_Object *obj, Eina_Bool *statep); EINA_ARG_NONNULL(1)
+   EINA_DEPRECATED EAPI void         elm_check_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char  *elm_check_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void         elm_check_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_check_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_check_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void         elm_check_state_set(Evas_Object *obj, Eina_Bool state) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool    elm_check_state_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void         elm_check_state_pointer_set(Evas_Object *obj, Eina_Bool *statep) EINA_ARG_NONNULL(1);
    /* smart callbacks called:
     * "changed" - This is called whenever the user changes the state of one of the check object.
     */
 
    /* radio */
    EAPI Evas_Object *elm_radio_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   EAPI void         elm_radio_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_radio_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_radio_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char  *elm_radio_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -3913,8 +5293,8 @@ extern "C" {
    EAPI void         elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state) EINA_ARG_NONNULL(1);
    EAPI void         elm_progressbar_value_set(Evas_Object *obj, double val) EINA_ARG_NONNULL(1);
    EAPI double       elm_progressbar_value_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EAPI void         elm_progressbar_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   EAPI const char  *elm_progressbar_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void         elm_progressbar_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char  *elm_progressbar_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void         elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -4197,7 +5577,7 @@ extern "C" {
    /* Route */
    EAPI Evas_Object *elm_route_add(Evas_Object *parent);
 #ifdef ELM_EMAP
-   EAPI Eina_Bool elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
+   EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
 #endif
    EAPI double elm_route_lon_min_get(Evas_Object *obj);
    EAPI double elm_route_lat_min_get(Evas_Object *obj);
@@ -4475,6 +5855,7 @@ extern "C" {
     * 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.
     */
    EINA_DEPRECATED EAPI Elm_Animator*            elm_animator_add(Evas_Object *parent);
    /**
@@ -4483,6 +5864,7 @@ extern "C" {
     * automatically called when the parent is deleted.
     *
     * @param[in] animator Animator object
+    * @deprecated Use @ref Transit instead.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_del(Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
@@ -4490,6 +5872,7 @@ extern "C" {
     *
     * @param[in] animator Animator object
     * @param[in] duration Duration in second
+    * @deprecated Use @ref Transit instead.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_duration_set(Elm_Animator *animator, double duration) EINA_ARG_NONNULL(1);
    /**
@@ -4502,6 +5885,7 @@ extern "C" {
     * 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.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_operation_callback_set(Elm_Animator *animator, Elm_Animator_Operation_Cb func, void *data) EINA_ARG_NONNULL(1);
    /**
@@ -4512,6 +5896,7 @@ extern "C" {
     * @param[in]  data Callback function user argument
     *
     * @warning @a func will not be executed if elm_animator_stop() is called.
+    * @deprecated Use @ref Transit instead.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_completion_callback_set(Elm_Animator *animator, Elm_Animator_Completion_Cb func, void *data) EINA_ARG_NONNULL(1);
    /**
@@ -4523,6 +5908,7 @@ extern "C" {
     * 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.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_stop(Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
@@ -4530,6 +5916,7 @@ extern "C" {
     *
     * @param[in]  animator Animator object
     * @param[in]  repeat_cnt Repeat count
+    * @deprecated Use @ref Transit instead.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt) EINA_ARG_NONNULL(1);
    /**
@@ -4540,6 +5927,7 @@ extern "C" {
     * 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.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_animate(Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
@@ -4547,6 +5935,7 @@ extern "C" {
     *
     * @param[in] animator Animator object
     * @param[in] cs Curve style. Default is ELM_ANIMATOR_CURVE_LINEAR
+    * @deprecated Use @ref Transit instead.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_curve_style_set(Elm_Animator *animator, Elm_Animator_Curve_Style cs) EINA_ARG_NONNULL(1);
    /**
@@ -4554,8 +5943,9 @@ extern "C" {
     *
     * @param[in] animator Animator object
     * @param[in] cs Curve style. Default is ELM_ANIMATOR_CURVE_LINEAR
+    * @deprecated Use @ref Transit instead.
     */
-   EINA_DEPRECATED EAPI Elm_Animator_Curve_Style elm_animator_curve_style_get(const Elm_Animator *animator); EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Elm_Animator_Curve_Style elm_animator_curve_style_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
     * @brief Sets wether the animation should be automatically reversed.
     *
@@ -4567,12 +5957,14 @@ extern "C" {
     * 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.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse) EINA_ARG_NONNULL(1);
    /**
     * Gets wether the animation will automatically reversed
     *
     * @param[in] animator Animator object
+    * @deprecated Use @ref Transit instead.
     */
    EINA_DEPRECATED EAPI Eina_Bool                elm_animator_auto_reverse_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
@@ -4582,12 +5974,14 @@ extern "C" {
     * or through elm_animator_stop()).
     *
     * @param[in] animator Animator object
+    * @deprecated Use @ref Transit instead.
     */
    EINA_DEPRECATED EAPI Eina_Bool                elm_animator_operating_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
     * Gets how many times the animation will be repeated
     *
     * @param[in] animator Animator object
+    * @deprecated Use @ref Transit instead.
     */
    EINA_DEPRECATED EAPI unsigned int             elm_animator_repeat_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
@@ -4599,6 +5993,7 @@ extern "C" {
     * 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.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_pause(Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
@@ -4616,6 +6011,7 @@ extern "C" {
     * 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.
     */
    EINA_DEPRECATED EAPI void                     elm_animator_resume(Elm_Animator *animator) EINA_ARG_NONNULL(1);
    /**
@@ -4706,12 +6102,81 @@ extern "C" {
     * "selected" - when item is selected (scroller stops)
     */
 
-   /* colorselector */
+   /**
+    * @page tutorial_colorselector Color selector example
+    * @dontinclude colorselector_example_01.c
+    *
+    * 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)
+    *
+    * 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
+    *
+    * Next we tell ask to be notified whenever the color changes:
+    * @until changed
+    *
+    * We follow that we some more run of the mill setup code:
+    * @until ELM_MAIN()
+    *
+    * And now get to the callback that sets the color of the rectangle:
+    * @until }
+    *
+    * This example will look like this:
+    * @image html screenshots/colorselector_example_01.png
+    * @image latex screenshots/colorselector_example_01.eps
+    *
+    * @example colorselector_example_01.c
+    */
+   /**
+    * @defgroup Colorselector Colorselector
+    *
+    * @{
+    *
+    * @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);
-   /* smart callbacks called:
-    * "changed" - when the color value changes
+   /**
+    * @}
     */
 
    /* Contextual Popup */
@@ -4792,7 +6257,7 @@ extern "C" {
     * It's also possible to make a transition chain with @ref
     * elm_transit_chain_transit_add.
     *
-    * @warning We strongly recomend to use elm_transit just when edje can not do
+    * @warning We strongly recommend to use elm_transit just when edje can not do
     * the trick. Edje has more advantage than Elm_Transit, it has more flexibility and
     * animations can be manipulated inside the theme.
     *
@@ -5696,7 +7161,30 @@ extern "C" {
 
    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_video_add(Evas_Object *parent);
+   EAPI void elm_video_file_set(Evas_Object *video, const char *filename);
+   EAPI void elm_video_uri_set(Evas_Object *video, const char *uri);
+   EAPI Evas_Object *elm_video_emotion_get(Evas_Object *video);
+   EAPI void elm_video_play(Evas_Object *video);
+   EAPI void elm_video_pause(Evas_Object *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);
+   EAPI void elm_video_audio_mute_set(Evas_Object *video, Eina_Bool mute);
+   EAPI double elm_video_audio_level_get(Evas_Object *video);
+   EAPI void elm_video_audio_level_set(Evas_Object *video, double volume);
+   EAPI double elm_video_play_position_get(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 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);
+
 #ifdef __cplusplus
 }
 #endif