sig
  val cast : 'Gobject.obj -> Gtk.button Gtk.obj
  module P :
    sig
      val focus_on_click : ([> `button ], bool) Gobject.property
      val image : ([> `button ], Gtk.widget Gtk.obj) Gobject.property
      val image_position :
        ([> `button ], GtkEnums.position_type) Gobject.property
      val label : ([> `button ], string) Gobject.property
      val use_stock : ([> `button ], bool) Gobject.property
      val use_underline : ([> `button ], bool) Gobject.property
      val relief : ([> `button ], GtkEnums.relief_style) Gobject.property
      val xalign : ([> `button ], float) Gobject.property
      val yalign : ([> `button ], float) Gobject.property
    end
  module S :
    sig
      val activate : ([> `button ], unit -> unit) GtkSignal.t
      val clicked : ([> `button ], unit -> unit) GtkSignal.t
      val enter : ([> `button ], unit -> unit) GtkSignal.t
      val leave : ([> `button ], unit -> unit) GtkSignal.t
      val pressed : ([> `button ], unit -> unit) GtkSignal.t
      val released : ([> `button ], unit -> unit) GtkSignal.t
    end
  val create : Gtk.button Gobject.param list -> Gtk.button Gtk.obj
  val make_params :
    cont:(([> `button ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?label:string ->
    ?use_stock:bool ->
    ?use_underline:bool -> ?relief:GtkEnums.relief_style -> 'b
  val make_params :
    cont:(([> `button ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?label:string ->
    ?use_mnemonic:bool ->
    ?stock:GtkStock.id -> ?relief:GtkEnums.relief_style -> 'b
  external pressed : [> `button ] Gtk.obj -> unit = "ml_gtk_button_pressed"
  external released : [> `button ] Gtk.obj -> unit = "ml_gtk_button_released"
  external clicked : [> `button ] Gtk.obj -> unit = "ml_gtk_button_clicked"
  external enter : [> `button ] Gtk.obj -> unit = "ml_gtk_button_enter"
  external leave : [> `button ] Gtk.obj -> unit = "ml_gtk_button_leave"
end