class Elm_Button (Elm_Layout, Evas.Clickable_Interface,
                  Elm_Interface_Atspi_Widget_Action)
{
   eo_prefix: elm_obj_button;
   properties {
      autorepeat_initial_timeout {
         set {
            /*@
            @brief Set the initial timeout before the autorepeat event is generated

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark 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 event will be fired the moment the button is
            pressed.

            @see elm_button_autorepeat_set()
            @see elm_button_autorepeat_gap_timeout_set()

            @ingroup Button */
         }
         get {
            /*@
            @brief Get the initial timeout before the autorepeat event is generated

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return Timeout in seconds

            @see elm_button_autorepeat_initial_timeout_set()

            @ingroup Button */
         }
         values {
            double t; /*@ Timeout in seconds */
         }
      }
      autorepeat_gap_timeout {
         set {
            /*@
            @brief Set the interval between each generated autorepeat event

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark After the first @c repeated event is fired, all subsequent ones will
            follow after a delay of @p t seconds for each.

            @see elm_button_autorepeat_initial_timeout_set()

            @ingroup Button */
         }
         get {
            /*@
            @brief Get the interval between each generated autorepeat event

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return Interval in seconds

            @ingroup Button */
         }
         values {
            double t; /*@ Interval in seconds */
         }
      }
      autorepeat {
         set {
            /*@
            @brief Turn on/off the autorepeat event generated when the button is kept pressed

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark When off, no autorepeat is performed and buttons emit a normal @c clicked
            signal when they are clicked.

            @remark 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().

            @ingroup Button */
         }
         get {
            /*@
            @brief Get whether the autorepeat feature is enabled

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return @c EINA_TRUE if autorepeat is on, @c EINA_FALSE otherwise

            @see elm_button_autorepeat_set()

            @ingroup Button */
         }
         values {
            bool on; /*@ A bool to turn on/off the event */
         }
      }
      admits_autorepeat {
         get {
            /*@ Get whether the button supports autorepeat. */
            legacy: null;
         }
         values {
            bool ret;
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Evas.Object_Smart.add;
      Elm_Widget.activate;
      Elm_Widget.focus_next_manager_is;
      Elm_Widget.focus_direction_manager_is;
      Elm_Widget.theme_apply;
      Elm_Widget.sub_object_del;
      Elm_Widget.event;
      Elm_Container.content_set;
      Elm_Layout.text_aliases.get;
      Elm_Layout.content_aliases.get;
      Elm_Layout.sizing_eval;
      Elm_Interface_Atspi_Accessible.state_set.get;
      Elm_Interface_Atspi_Widget_Action.elm_actions.get;
   }
}
