class Elm_Hoversel (Elm_Button, Evas.Selectable_Interface,
                    Elm_Interface_Atspi_Widget_Action)
{
   eo_prefix: elm_obj_hoversel;
   properties {
      horizontal {
         set {
            /*@
            @MOBILE_ONLY

            @brief This sets the hoversel to expand horizontally.

            @if MOBILE @since_tizen 2.4
            @endif

            @note The initial button will display horizontally regardless of this
            setting.

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

            @brief This returns whether the hoversel is set to expand horizontally.

            @if MOBILE @since_tizen 2.4
            @endif

            @return If true, the hover will expand horizontally to the right.

            @see elm_hoversel_horizontal_set()

            @ingroup Hoversel */
         }
         values {
            bool horizontal; /*@ If true, the hover will expand horizontally to the
            right. */
         }
      }
      hover_parent {
         set {
            /*@
            @MOBILE_ONLY
            @brief Set the Hover parent

            @if MOBILE @since_tizen 2.4
            @endif

            @remark Sets the hover parent object, the area that will be darkened when the
            hoversel is clicked. Should probably be the window that the hoversel is
            in. See @ref Hover objects for more information.

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

            @brief Get the Hover parent

            @if MOBILE @since_tizen 2.4
            @endif

            @return The used parent

            @remark Get the hover parent object.

            @see elm_hoversel_hover_parent_set()

            @ingroup Hoversel */
         }
         values {
            Evas_Object *parent; /*@ The parent to use */
         }
      }
      expanded {
         get {
            /*@
            @MOBILE_ONLY

            @brief Returns whether the hoversel is expanded.

            @if MOBILE @since_tizen 2.4
            @endif

            @return This will return @c EINA_TRUE if the hoversel is expanded or
            @c EINA_FALSE if it is not expanded.

            @ingroup Hoversel */
            return: bool;
         }
      }
      items {
         get {
            /*@
            @MOBILE_ONLY

            @brief Get the list of items within the given hoversel.

            @if MOBILE @since_tizen 2.4
            @endif

            @return Returns a list of Elm_Object_Item

            @see elm_hoversel_item_add()

            @ingroup Hoversel */
            return: const(list)*;
         }
      }
      scrollable {
         get {
            /*@
            @internal

            @brief Limit the size of contents and make them scrollable.

            @if MOBILE @since_tizen 2.4
            @endif

            @ingroup Hoversel */
         }
         set {
            /*@
            @internal

            @brief Returns whether the contents of hoversel are scrollable or not.

            @if MOBILE @since_tizen 2.4
            @endif

            @return @c EINA_TRUE scrollable. @c EINA_FALSE otherwise.

            @ingroup Hoversel */
         }
         values {
            bool scrollable;
         }
      }

   }
   methods {
      hover_begin {
         /*@
         @MOBILE_ONLY

         @brief This triggers the hoversel popup from code, the same as if the user
         had clicked the button.

         @if MOBILE @since_tizen 2.4
         @endif

         @ingroup Hoversel */

      }
      clear {
         /*@
         @MOBILE_ONLY

         @brief This will remove all the children items from the hoversel.

         @if MOBILE @since_tizen 2.4
         @endif

         @warning Should @b not be called while the hoversel is active; use
         elm_hoversel_expanded_get() to check first.

         @see elm_object_item_del()

         @ingroup Hoversel */

      }
      hover_end {
         /*@
         @MOBILE_ONLY

         @brief This dismisses the hoversel popup as if the user had clicked
         outside the hover.

         @if MOBILE @since_tizen 2.4
         @endif

         @ingroup Hoversel */

      }
      item_add {
         /*@
         @MOBILE_ONLY

         @brief Add an item to the hoversel button

         @if MOBILE @since_tizen 2.4
         @endif

         @return A handle to the item added.

         @remark This adds an item to the hoversel to show when it is clicked. Note: if you
         need to use an icon from an edje file then use
         elm_hoversel_item_icon_set() right after this function, and set
         icon_file to NULL here.
         For more information on what @p icon_file and @p icon_type are, see the
         @ref Icon "icon documentation".

         @ingroup Hoversel */

         return: Elm_Object_Item *;
         params {
            @in const(char)* label; /*@ The text label to use for the item (NULL if not desired) */
            @in const(char)* icon_file; /*@ An image file path on disk to use for the icon or standard
            icon name (NULL if not desired) */
            @in Elm_Icon_Type icon_type; /*@ The icon type if relevant */
            @in Evas_Smart_Cb func; /*@ Convenience function to call when this item is selected. The last
            parameter @p event_info of @c func is the selected item pointer. */
            @in const(void)* data; /*@ Data to pass to item-related functions */
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Eo.Base.destructor;
      Evas.Object_Smart.hide;
      Evas.Object_Smart.show;
      Evas.Object_Smart.add;
      Evas.Object_Smart.del;
      Elm_Widget.parent.set;
      Elm_Widget.theme_apply;
      Elm_Widget.translate;
      Elm_Widget.event;
      Elm_Button.admits_autorepeat.get;
      Elm_Interface_Atspi_Widget_Action.elm_actions.get;
   }
   events {
      selected;
      dismissed;
      expanded;
      item,focused;
      item,unfocused;
      clicked;
      language,changed;
      access,changed;
   }
}
