class Elm_Toolbar (Elm_Widget, Elm_Interface_Scrollable,
                   Elm_Interface_Atspi_Widget_Action, Elm_Interface_Atspi_Selection)
{
   eo_prefix: elm_obj_toolbar;
   properties {
      homogeneous {
         set {
            /*@
            @MOBILE_ONLY

            @brief Enable/disable homogeneous mode.

            @if MOBILE @since_tizen 2.3
            @endif

            @remark This will enable the homogeneous mode where items are of the same size.
            @see elm_toolbar_homogeneous_get()

            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get whether the homogeneous mode is enabled.

            @if MOBILE @since_tizen 2.3
            @endif

            @return Assume the items within the toolbar are of the same height
            and width (EINA_TRUE = on, EINA_FALSE = off).

            @see elm_toolbar_homogeneous_set()

            @ingroup Toolbar */
         }
         values {
            bool homogeneous; /*@ Assume the items within the toolbar are of the
            same size (EINA_TRUE = on, EINA_FALSE = off). Default is @c EINA_FALSE. */
         }
      }
      align {
         set {
            /*@
            @MOBILE_ONLY

            @brief Set the alignment of the items.

            @if MOBILE @since_tizen 2.3
            @endif

            @remark Alignment of toolbar items, from <tt> 0.0 </tt> to indicates to align
            left, to <tt> 1.0 </tt>, to align to right. <tt> 0.5 </tt> centralize
            items.

            @remark Centered items by default.

            @see elm_toolbar_align_get()

            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the alignment of the items.

            @if MOBILE @since_tizen 2.3
            @endif

            @return toolbar items alignment, a float between <tt> 0.0 </tt> and
            <tt> 1.0 </tt>.

            @see elm_toolbar_align_set() for details.

            @ingroup Toolbar */
         }
         values {
            double align; /*@ The new alignment, a float between <tt> 0.0 </tt>
            and <tt> 1.0 </tt>. */
         }
      }
      select_mode {
         set {
            /*@
            @MOBILE_ONLY

            @brief Set the toolbar select mode.

            @if MOBILE @since_tizen 2.3
            @endif

            @remark elm_toolbar_select_mode_set() changes item select mode in the toolbar widget.
            - #ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
            callback when first becoming selected. Any further clicks will
            do nothing, unless you set always select mode.
            - #ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
            every click will make the selected callbacks be called.
            - #ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
            entirely and they will neither appear selected nor call selected
            callback functions.

            @see elm_toolbar_select_mode_get()

            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the toolbar select mode.

            @if MOBILE @since_tizen 2.3
            @endif

            @return The select mode
            (If getting mode fails, it returns #ELM_OBJECT_SELECT_MODE_MAX)

            @see elm_toolbar_select_mode_set()

            @ingroup Toolbar */
         }
         values {
            Elm_Object_Select_Mode mode(4); /*@ The select mode */
         }
      }
      icon_size {
         set {
            /*@
            @MOBILE_ONLY

            @brief Set the icon size, in pixels, to be used by toolbar items.

            @if MOBILE @since_tizen 2.3
            @endif

            @remark Default value is @c 32. It reads value from elm config.

            @see elm_toolbar_icon_size_get()

            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the icon size, in pixels, to be used by toolbar items.

            @if MOBILE @since_tizen 2.3
            @endif

            @return The icon size in pixels.

            @see elm_toolbar_icon_size_set() for details.

            @ingroup Toolbar */
         }
         values {
            int icon_size; /*@ The icon size in pixels */
         }
      }
      horizontal {
         set {
            /*@
            @MOBILE_ONLY

            @brief Change a toolbar's orientation
            By default, a toolbar will be horizontal. Use this function to create a vertical toolbar.

            @if MOBILE @since_tizen 2.3
            @endif

            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get a toolbar's orientation

            @if MOBILE @since_tizen 2.3
            @endif

            @return If @c EINA_TRUE, the toolbar is horizontal
            By default, a toolbar will be horizontal. Use this function to determine whether a toolbar is vertical.
            @ingroup Toolbar */
         }
         values {
            bool horizontal; /*@ If @c EINA_TRUE, the toolbar is horizontal */
         }
      }
      icon_order_lookup {
         set {
            /*@
            @MOBILE_ONLY

            @brief Sets icon lookup order, for toolbar items' icons.

            @if MOBILE @since_tizen 2.3
            @endif

            @remark Icons added before calling this function will not be affected.
            The default lookup order is #ELM_ICON_LOOKUP_THEME_FDO.

            @see elm_toolbar_icon_order_lookup_get()

            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the icon lookup order.

            @if MOBILE @since_tizen 2.3
            @endif

            @return The icon lookup order.
            (If getting the icon order loopup fails, it returns #ELM_ICON_LOOKUP_THEME_FDO)

            @see elm_toolbar_icon_order_lookup_set() for details.

            @ingroup Toolbar */
         }
         values {
            Elm_Icon_Lookup_Order order(1); /*@ The icon lookup order. */
         }
      }
      shrink_mode {
         set {
            /*@
            @MOBILE_ONLY

            @brief Set the item displaying mode of a given toolbar widget @p obj.

            @if MOBILE @since_tizen 2.3
            @endif

            @remark The toolbar won't scroll under #ELM_TOOLBAR_SHRINK_NONE mode, but
            it will enforce a minimum size, so that all the items will fit
            inside it. It won't scroll and won't show the items that don't fit
            under #ELM_TOOLBAR_SHRINK_HIDE mode. Finally, it'll scroll under
            #ELM_TOOLBAR_SHRINK_SCROLL mode, and it will create a button to
            aggregate items which didn't fit with the #ELM_TOOLBAR_SHRINK_MENU
            mode.

            @warning This function's behavior will clash with those of
            elm_scroller_policy_set(), so use either one of them, but not both.

            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the shrink mode of toolbar @p obj.

            @if MOBILE @since_tizen 2.3
            @endif

            @return Toolbar's items display behavior.

            @see elm_toolbar_shrink_mode_set() for details.

            @ingroup Toolbar */
         }
         values {
            Elm_Toolbar_Shrink_Mode shrink_mode; /*@ Toolbar's items display behavior */
         }
      }
      menu_parent {
         set {
            /*@
            @MOBILE_ONLY

            @brief Set the parent object of the toolbar items' menus.

            @if MOBILE @since_tizen 2.3
            @endif

            @remark Each item can be set as item menu, with elm_toolbar_item_menu_set().

            @see elm_toolbar_item_menu_set() for details.

            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the parent object of the toolbar items' menus.

            @if MOBILE @since_tizen 2.3
            @endif

            @return The parent of the menu objects.

            @see elm_toolbar_menu_parent_set() for details.

            @ingroup Toolbar */
         }
         values {
            Evas_Object *parent; /*@ The parent of the menu objects. */
         }
      }
      standard_priority {
         set {
            /*@
            @MOBILE_ONLY

            @brief Set the standard priority of visible items in a toolbar
            If the priority of the item is up to standard priority, it is shown in basic panel.

            @if MOBILE @since_tizen 2.3
            @endif

            @remark The other items are located in more menu or panel. The more menu or panel can be shown when the more item is clicked.

            @see elm_toolbar_standard_priority_get()

            @since 1.7
            @ingroup Toolbar */
         }
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the standard_priority of visible items in a toolbar

            @if MOBILE @since_tizen 2.3
            @endif

            @return The standard priority of items in @p obj toolbar

            @see elm_toolbar_standard_priority_set()

            @since 1.7
            @ingroup Toolbar */
         }
         values {
            int priority; /*@ The standard_priority of visible items */
         }
      }
      selected_item {
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the selected item.

            @if MOBILE @since_tizen 2.3
            @endif

            @return The selected toolbar item.

            @remark The selected item can be unselected with function
            elm_toolbar_item_selected_set().

            @remark The selected item always will be highlighted on toolbar.

            @ingroup Toolbar */
            return: Elm_Object_Item *;
         }
      }
      first_item {
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the first item in the given toolbar widget's list of
            items.

            @if MOBILE @since_tizen 2.3
            @endif

            @return The first item or @c NULL, if it has no items (and on
            errors)

            @see elm_toolbar_item_append()
            @see elm_toolbar_last_item_get()

            @ingroup Toolbar */
            return: Elm_Object_Item *;
         }
      }
      more_item {
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the more item which is auto-generated by toolbar.

            @if MOBILE @since_tizen 2.3
            @endif

            @return The toolbar more item.

            @remark Toolbar generates 'more' item when there is no more space to fit items in
            and toolbar is in #ELM_TOOLBAR_SHRINK_MENU or #ELM_TOOLBAR_SHRINK_EXPAND mode.
            The more item can be manipulated by elm_object_item_text_set() and
            elm_object_item_content_set.

            @ingroup Toolbar */
            return: Elm_Object_Item *;
         }
      }
      last_item {
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the last item in the given toolbar widget's list of
            items.

            @if MOBILE @since_tizen 2.3
            @endif

            @return The last item or @c NULL, if it has no items (and on
            errors)

            @see elm_toolbar_item_prepend()
            @see elm_toolbar_first_item_get()

            @ingroup Toolbar */
            return: Elm_Object_Item *;
         }
      }
   }
   methods {
      item_insert_before {
         /*@
         @MOBILE_ONLY

         @brief Insert a new item into the toolbar object before item @p before.

         @if MOBILE @since_tizen 2.3
         @endif

         @return The created item or @c NULL upon failure.

         @remark A new item will be created and added to the toolbar. Its position in
         this toolbar will be just before item @p before.

         @remark Items created with this method can be deleted with
         elm_object_item_del().

         @remark Associated @p data can be properly freed when item is deleted if a
         callback function is set with elm_object_item_del_cb_set().

         @remark If a function is passed as argument, it will be called every time this item
         is selected, i.e., the user clicks over an unselected item.
         If such function isn't needed, just passing
         @c NULL as @p func is enough. The same should be done for @p data.

         @remark Toolbar will load icon image from fdo or current theme.
         This behavior can be set by elm_toolbar_icon_order_lookup_set() function.
         If an absolute path is provided it will load it direct from a file.

         @remark This function does not accept relative icon path.

         @see elm_toolbar_item_icon_set()
         @see elm_object_item_del()

         @ingroup Toolbar */

         return: Elm_Object_Item *;
         params {
            @in Elm_Object_Item *before; /*@ The toolbar item to insert before. */
            @in const(char)* icon; /*@ A string with icon name or the absolute path of an image file. */
            @in const(char)* label; /*@ The label of the item. */
            @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
            @in const(void)* data; /*@ The data to associate with the item for related callbacks. */
         }
      }
      item_insert_after {
         /*@
         @MOBILE_ONLY

         @brief Insert a new item into the toolbar object after item @p after.

         @if MOBILE @since_tizen 2.3
         @endif

         @return The created item or @c NULL upon failure.

         @remark A new item will be created and added to the toolbar. Its position in
         this toolbar will be just after item @p after.

         @remark Items created with this method can be deleted with
         elm_object_item_del().

         @remark Associated @p data can be properly freed when item is deleted if a
         callback function is set with elm_object_item_del_cb_set().

         @remark If a function is passed as argument, it will be called every time this item
         is selected, i.e., the user clicks over an unselected item.
         If such function isn't needed, just passing
         @c NULL as @p func is enough. The same should be done for @p data.

         @remark Toolbar will load icon image from fdo or current theme.
         This behavior can be set by elm_toolbar_icon_order_lookup_set() function.
         If an absolute path is provided it will load it direct from a file.

         @remark This function does not accept relative icon path.

         @see elm_toolbar_item_icon_set()
         @see elm_object_item_del()

         @ingroup Toolbar */

         return: Elm_Object_Item *;
         params {
            @in Elm_Object_Item *after; /*@ The toolbar item to insert after. */
            @in const(char)* icon; /*@ A string with icon name or the absolute path of an image file. */
            @in const(char)* label; /*@ The label of the item. */
            @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
            @in const(void)* data; /*@ The data to associate with the item for related callbacks. */
         }
      }
      item_append {
         /*@
         @MOBILE_ONLY

         @brief Append item to the toolbar.

         @if MOBILE @since_tizen 2.3
         @endif

         @return The created item or @c NULL upon failure.

         @remark A new item will be created and appended to the toolbar, i.e., will
         be set as @b last item.

         @remark Items created with this method can be deleted with
         elm_object_item_del().

         @remark Associated @p data can be properly freed when item is deleted if a
         callback function is set with elm_object_item_del_cb_set().

         @remark If a function is passed as argument, it will be called every time this item
         is selected, i.e., the user clicks over an unselected item.
         If such function isn't needed, just passing
         @c NULL as @p func is enough. The same should be done for @p data.

         @remark Toolbar will load icon image from fdo or current theme.
         This behavior can be set by elm_toolbar_icon_order_lookup_set() function.
         If an absolute path is provided it will load it direct from a file.

         @remark This function does not accept relative icon path.

         @see elm_toolbar_item_icon_set()
         @see elm_object_item_del()

         @ingroup Toolbar */

         return: Elm_Object_Item *;
         params {
            @in const(char)* icon; /*@ A string with icon name or the absolute path of an image file. */
            @in const(char)* label; /*@ The label of the item. */
            @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
            @in const(void)* data; /*@ The data to associate with the item for related callbacks. */
         }
      }
      items_count @const {
         /*@
         @MOBILE_ONLY

         @brief Get the number of items in a toolbar

         @if MOBILE @since_tizen 2.3
         @endif

         @return The number of items in @p obj toolbar
         @ingroup Toolbar */
         return: uint;
      }
      item_prepend {
         /*@
         @MOBILE_ONLY

         @brief Prepend item to the toolbar.

         @if MOBILE @since_tizen 2.3
         @endif

         @return The created item or @c NULL upon failure.

         @remark A new item will be created and prepended to the toolbar, i.e., will
         be set as @b first item.

         @remark Items created with this method can be deleted with
         elm_object_item_del().

         @remark Associated @p data can be properly freed when item is deleted if a
         callback function is set with elm_object_item_del_cb_set().

         @remark If a function is passed as argument, it will be called every time this item
         is selected, i.e., the user clicks over an unselected item.
         If such function isn't needed, just passing
         @c NULL as @p func is enough. The same should be done for @p data.

         @remark Toolbar will load icon image from fdo or current theme.
         This behavior can be set by elm_toolbar_icon_order_lookup_set() function.
         If an absolute path is provided it will load it direct from a file.

         @remark This function does not accept relative icon path.

         @see elm_toolbar_item_icon_set()
         @see elm_object_item_del()

         @ingroup Toolbar */

         return: Elm_Object_Item *;
         params {
            @in const(char)* icon; /*@ A string with icon name or the absolute path of an image file. */
            @in const(char)* label; /*@ The label of the item. */
            @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
            @in const(void)* data; /*@ The data to associate with the item for related callbacks. */
         }
      }
      item_find_by_label @const {
         /*@
         @MOBILE_ONLY

         @brief Returns a pointer to a toolbar item by its label.

         @if MOBILE @since_tizen 2.3
         @endif

         @return The pointer to the toolbar item matching @p label or @c NULL
         on failure.

         @ingroup Toolbar */
         return: Elm_Object_Item *;
         params {
            @in const(char)* label; /*@ The label of the item to find. */
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Evas.Object_Smart.move;
      Evas.Object_Smart.add;
      Evas.Object_Smart.del;
      Evas.Object_Smart.member_add;
      Evas.Object_Smart.resize;
      Elm_Widget.focus_next_manager_is;
      Elm_Widget.access;
      Elm_Widget.focus_next;
      Elm_Widget.theme_apply;
      Elm_Widget.on_focus;
      Elm_Widget.translate;
      Elm_Widget.event;
      Elm_Widget.focus_highlight_geometry_get;
      Elm_Widget.focused_item.get;
      Elm_Widget.orientation.set;
      Elm_Interface_Atspi_Widget_Action.elm_actions.get;
      Elm_Interface_Atspi_Accessible.children.get;
      Elm_Interface_Atspi_Accessible.state_set.get;
      Elm_Interface_Atspi_Selection.selected_children_count.get;
      Elm_Interface_Atspi_Selection.selected_child.get;
      Elm_Interface_Atspi_Selection.selected_child_deselect;
      Elm_Interface_Atspi_Selection.child_select;
      Elm_Interface_Atspi_Selection.child_deselect;
      Elm_Interface_Atspi_Selection.is_child_selected;
      Elm_Interface_Atspi_Selection.all_children_select;
      Elm_Interface_Atspi_Selection.clear;
   }
   events {
      scroll;
      scroll,anim,start;
      scroll,anim,stop;
      scroll,drag,start;
      scroll,drag,stop;
      clicked;
      selected;
      unselected;
      longpressed;
      clicked,double;
      language,changed;
      access,changed;
      focused;
      unfocused;
   }

}
