class Elm.Button (Elm.Layout, Evas.Clickable_Interface,
                  Elm_Interface_Atspi_Widget_Action)
{
   eo_prefix: elm_obj_button;
   methods {
      @property autorepeat_initial_timeout {
         set {
            [[Set the initial timeout before the autorepeat event is generated

              Sets the timeout, in seconds, since the button is pressed until the
              first $repeated signal is emitted. If $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 also @.autorepeat.set,
              @.autorepeat_gap_timeout.set.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[Get the initial timeout before the autorepeat event is generated

              See also @.autorepeat_initial_timeout.set.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            t: double; [[Timeout in seconds]]
         }
      }
      @property autorepeat_gap_timeout {
         set {
            [[Set the interval between each generated autorepeat event

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

              See also @.autorepeat_initial_timeout.set.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[Get the interval between each generated autorepeat event

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            t: double; [[Interval in seconds]]
         }
      }
      @property autorepeat {
         set {
            [[Turn on/off the autorepeat event generated when the button is kept pressed

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

              When on, keeping a button pressed will continuously emit a $repeated
              signal until the button is released. The time it takes until it starts
              emitting the signal is given by
              @.autorepeat_initial_timeout.set, and the time between each
              new emission by @.autorepeat_gap_timeout.set.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[Get whether the autorepeat feature is enabled
              ($true if autorepeat is on, $false otherwise)

              See also @.autorepeat.set.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            on: bool; [[A bool to turn on/off the event]]
         }
      }
      @property admits_autorepeat {
         get {
            [[Get whether the button supports autorepeat.]]
            legacy: null;
         }
         values {
            ret: bool;
         }
      }
   }
   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_Widget_Action.elm_actions.get;
   }
}
