sig
  class type widget =
    object method coerce : GObj.widget method set_enabled : bool -> unit end
  class ['a] signal :
    object
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method on_check : '-> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : '-> (unit -> unit) -> unit
      method set_enabled : bool -> unit
    end
  class ['a] selector :
    '->
    object
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method get : 'a
      method on_check : '-> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : '-> (unit -> unit) -> unit
      method send : ('-> unit) -> unit -> unit
      method set : '-> unit
      method set_enabled : bool -> unit
    end
  type icon =
      [ `ABOUT
      | `ADD
      | `APPLY
      | `BOLD
      | `CANCEL
      | `CAPS_LOCK_WARNING
      | `CDROM
      | `CLEAR
      | `CLOSE
      | `COLOR_PICKER
      | `CONNECT
      | `CONVERT
      | `COPY
      | `CUT
      | `DELETE
      | `DIALOG_AUTHENTICATION
      | `DIALOG_ERROR
      | `DIALOG_INFO
      | `DIALOG_QUESTION
      | `DIALOG_WARNING
      | `DIRECTORY
      | `DISCONNECT
      | `DND
      | `DND_MULTIPLE
      | `EDIT
      | `EXECUTE
      | `FILE
      | `FIND
      | `FIND_AND_REPLACE
      | `FLOPPY
      | `FULLSCREEN
      | `GOTO_BOTTOM
      | `GOTO_FIRST
      | `GOTO_LAST
      | `GOTO_TOP
      | `GO_BACK
      | `GO_DOWN
      | `GO_FORWARD
      | `GO_UP
      | `HARDDISK
      | `HELP
      | `HOME
      | `INDENT
      | `INDEX
      | `INFO
      | `ITALIC
      | `JUMP_TO
      | `JUSTIFY_CENTER
      | `JUSTIFY_FILL
      | `JUSTIFY_LEFT
      | `JUSTIFY_RIGHT
      | `LEAVE_FULLSCREEN
      | `MEDIA_FORWARD
      | `MEDIA_NEXT
      | `MEDIA_PAUSE
      | `MEDIA_PLAY
      | `MEDIA_PREVIOUS
      | `MEDIA_RECORD
      | `MEDIA_REWIND
      | `MEDIA_STOP
      | `MISSING_IMAGE
      | `NETWORK
      | `NEW
      | `NO
      | `OK
      | `OPEN
      | `ORIENTATION_LANDSCAPE
      | `ORIENTATION_PORTRAIT
      | `ORIENTATION_REVERSE_LANDSCAPE
      | `ORIENTATION_REVERSE_PORTRAIT
      | `PAGE_SETUP
      | `PASTE
      | `PREFERENCES
      | `PRINT
      | `PRINT_ERROR
      | `PRINT_PAUSED
      | `PRINT_PREVIEW
      | `PRINT_REPORT
      | `PRINT_WARNING
      | `PROPERTIES
      | `QUIT
      | `REDO
      | `REFRESH
      | `REMOVE
      | `REVERT_TO_SAVED
      | `SAVE
      | `SAVE_AS
      | `SELECT_ALL
      | `SELECT_COLOR
      | `SELECT_FONT
      | `SORT_ASCENDING
      | `SORT_DESCENDING
      | `SPELL_CHECK
      | `STOCK of string
      | `STOP
      | `STRIKETHROUGH
      | `Share of string
      | `UNDELETE
      | `UNDERLINE
      | `UNDO
      | `UNINDENT
      | `YES
      | `ZOOM_100
      | `ZOOM_FIT
      | `ZOOM_IN
      | `ZOOM_OUT ]
  type align = [ `Center | `Left | `Right ]
  type style = [ `Descr | `Label | `Title ]
  class label :
    ?style:Toolbox.style ->
    ?text:string ->
    ?align:Toolbox.align ->
    unit ->
    object method coerce : GObj.widget method set_text : string -> unit end
  class button :
    ?label:string ->
    ?icon:Toolbox.icon ->
    ?tooltip:string ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (unit -> unit) -> unit
      method default : unit -> unit
      method fire : unit -> unit
      method on_check : unit -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : unit -> (unit -> unit) -> unit
      method set_enabled : bool -> unit
      method set_icon : Toolbox.icon option -> unit
      method set_label : string -> unit
      method set_relief : bool -> unit
    end
  class toggle :
    ?label:string ->
    ?icon:Toolbox.icon ->
    ?tooltip:string ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (bool -> unit) -> unit
      method fire : bool -> unit
      method get : bool
      method on_check : bool -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : bool -> (unit -> unit) -> unit
      method send : (bool -> unit) -> unit -> unit
      method set : bool -> unit
      method set_enabled : bool -> unit
      method set_icon : Toolbox.icon option -> unit
      method set_label : string -> unit
      method set_relief : bool -> unit
    end
  class checkbox :
    label:string ->
    ?tooltip:string ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (bool -> unit) -> unit
      method fire : bool -> unit
      method get : bool
      method on_check : bool -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : bool -> (unit -> unit) -> unit
      method send : (bool -> unit) -> unit -> unit
      method set : bool -> unit
      method set_enabled : bool -> unit
    end
  class switchbox :
    ?tooltip:string ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (bool -> unit) -> unit
      method fire : bool -> unit
      method get : bool
      method on_check : bool -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : bool -> (unit -> unit) -> unit
      method send : (bool -> unit) -> unit -> unit
      method set : bool -> unit
      method set_enabled : bool -> unit
    end
  class spinner :
    ?min:int ->
    ?max:int ->
    ?step:int ->
    value:int ->
    ?tooltip:string ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (int -> unit) -> unit
      method fire : int -> unit
      method get : int
      method on_check : int -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : int -> (unit -> unit) -> unit
      method send : (int -> unit) -> unit -> unit
      method set : int -> unit
      method set_enabled : bool -> unit
    end
  class ['a] menulist :
    default:'->
    render:('-> string) ->
    ?items:'a list ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method get : 'a
      method get_items : 'a list
      method on_check : '-> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : '-> (unit -> unit) -> unit
      method send : ('-> unit) -> unit -> unit
      method set : '-> unit
      method set_enabled : bool -> unit
      method set_items : 'a list -> unit
    end
  class ['a] switch :
    '->
    object
      method add_radio :
        label:string -> ?tooltip:string -> value:'-> unit -> Toolbox.widget
      method add_toggle :
        ?label:string ->
        ?icon:Toolbox.icon ->
        ?tooltip:string -> value:'-> unit -> Toolbox.widget
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method get : 'a
      method on_check : '-> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : '-> (unit -> unit) -> unit
      method send : ('-> unit) -> unit -> unit
      method set : '-> unit
      method set_enabled : bool -> unit
    end
  type filekind = [ `DIR | `FILE ]
  class filechooser_dialog :
    ?kind:Toolbox.filekind ->
    ?title:string ->
    ?select:string ->
    ?parent:GWindow.window ->
    unit ->
    object
      method connect : (string -> unit) -> unit
      method filter : descr:string -> patterns:string list -> unit
      method fire : string -> unit
      method on_check : string -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : string -> (unit -> unit) -> unit
      method select : ?dir:string -> ?file:string -> unit -> unit
      method set_enabled : bool -> unit
    end
  class filechooser_button :
    ?kind:Toolbox.filekind ->
    ?title:string ->
    ?select:string ->
    ?tooltip:string ->
    ?parent:GWindow.window ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (string -> unit) -> unit
      method display : (string -> string) -> unit
      method filter : descr:string -> patterns:string list -> unit
      method fire : string -> unit
      method get : string
      method on_check : string -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : string -> (unit -> unit) -> unit
      method select : ?dir:string -> ?file:string -> unit -> unit
      method send : (string -> unit) -> unit -> unit
      method set : string -> unit
      method set_enabled : bool -> unit
      method tooltip : (string -> string) -> unit
    end
  class popup :
    unit ->
    object
      method add_item : label:string -> callback:(unit -> unit) -> unit
      method add_separator : unit
      method clear : unit
      method popup : unit -> unit
    end
  type field = [ `Compact | `Editor | `Field ]
  class rack : Toolbox.widget list -> widget
  class form :
    unit ->
    object
      method add_field :
        ?label:string -> ?field:Toolbox.field -> GObj.widget -> unit
      method add_label : string -> unit
      method add_label_widget : GObj.widget -> unit
      method add_newline : unit
      method add_row : ?field:Toolbox.field -> GObj.widget -> unit
      method add_section : string -> unit
      method coerce : GObj.widget
      method set_enabled : bool -> unit
    end
  class ['a] listbox :
    render:('-> string) ->
    ?width:int ->
    ?height:int ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : ('a list -> unit) -> unit
      method fire : 'a list -> unit
      method get : 'a list
      method insert : int -> '-> unit
      method on_check : 'a list -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_insert_request : (int -> unit) -> unit
      method on_value : 'a list -> (unit -> unit) -> unit
      method send : ('a list -> unit) -> unit -> unit
      method set : 'a list -> unit
      method set_enabled : bool -> unit
    end
  class ['a] notebook :
    ?tabs:Gtk.Tags.position ->
    default:'->
    unit ->
    object
      method add : ?label:string -> '-> GObj.widget -> unit
      method coerce : GObj.widget
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method get : 'a
      method on_check : '-> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_focus : '-> (bool -> unit) -> unit
      method on_value : '-> (unit -> unit) -> unit
      method send : ('-> unit) -> unit -> unit
      method set : '-> unit
      method set_enabled : bool -> unit
    end
  class type entry =
    object
      method delete : unit -> unit
      method update : unit -> unit
      method widget : GObj.widget
    end
  class ['a] warray :
    ?dir:Gtk.Tags.orientation ->
    unit ->
    object
      method append : '-> unit
      method coerce : GObj.widget
      method create : ('-> Toolbox.entry) -> unit
      method get : 'a list
      method insert : ?after:'-> '-> unit
      method mem : '-> bool
      method remove : '-> unit
      method set : 'a list -> unit
      method set_enabled : bool -> unit
      method update : unit -> unit
    end
  type 'a action =
      [ `ACTION of unit -> unit
      | `ALT of 'a
      | `APPLY
      | `CANCEL
      | `DEFAULT of 'a
      | `SELECT of 'a ]
  class ['a] dialog :
    title:string ->
    window:GWindow.window ->
    ?resize:bool ->
    unit ->
    object
      constraint 'a = [> `APPLY | `CANCEL ]
      method add_block : GObj.widget -> unit
      method add_row : GObj.widget -> unit
      method button :
        action:'Toolbox.action ->
        ?label:string ->
        ?icon:Toolbox.icon -> ?tooltip:string -> unit -> unit
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method on_check : '-> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : '-> (unit -> unit) -> unit
      method run : unit -> unit
      method select : '-> unit
      method set_enabled : bool -> unit
    end
  class text :
    ?autoscroll:bool ->
    unit ->
    object
      method clear : unit
      method coerce : GObj.widget
      method fmt : Format.formatter
      method focus : mark:string -> unit
      method get_view : GText.view
      method highlight : mark:string -> GText.tag_property list -> unit
      method lines : int
      method on_link : (GdkEvent.Button.t -> string -> unit) -> unit
      method printf :
        ?scroll:bool -> ('a, Format.formatter, unit) Pervasives.format -> 'a
      method scroll : ?line:int -> unit -> unit
      method set_autoscroll : bool -> unit
      method set_enabled : bool -> unit
      method set_font : string -> unit
    end
end