sig
  class type widget =
    object
      method coerce : GObj.widget
      method set_enabled : bool -> unit
      method set_visible : bool -> unit
      method widget : Widget.widget
    end
  class type action =
    object
      method coerce : GObj.widget
      method set_enabled : bool -> unit
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method widget : widget
    end
  class type t = widget
  class type ['a] signal =
    object
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method lock : (unit -> unit) -> 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 type ['a] selector =
    object
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method get : 'a
      method lock : (unit -> unit) -> unit
      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 align = [ `Center | `Left | `Right ]
  type style = [ `Code | `Descr | `Label | `Title ]
  type color =
      [ `BLACK
      | `COLOR of Gdk.color
      | `NAME of string
      | `NORMAL
      | `RGB of int * int * int
      | `WHITE ]
  class label :
    ?style:Widget.style ->
    ?align:Widget.align ->
    ?width:int ->
    ?text:string ->
    unit ->
    object
      method coerce : GObj.widget
      method set_bg : Widget.color -> unit
      method set_enabled : bool -> unit
      method set_fg : Widget.color -> unit
      method set_text : string -> unit
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method widget : widget
    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
      | `None
      | `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 ]
  val default_icon : unit -> GdkPixbuf.pixbuf
  val shared_icon : string -> GdkPixbuf.pixbuf
  val gimage : Widget.icon -> GMisc.image
  class image :
    Widget.icon ->
    object
      method coerce : GObj.widget
      method set_enabled : bool -> unit
      method set_icon : Widget.icon -> unit
      method set_visible : bool -> unit
      method widget : widget
    end
  class button :
    ?align:Widget.align ->
    ?icon:Widget.icon ->
    ?label:string ->
    ?border:bool ->
    ?tooltip:string ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (unit -> unit) -> unit
      method default : unit -> unit
      method fire : unit -> unit
      method lock : (unit -> unit) -> unit
      method on_check : unit -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : unit -> (unit -> unit) -> unit
      method set_border : bool -> unit
      method set_enabled : bool -> unit
      method set_icon : Widget.icon -> unit
      method set_label : string -> unit
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method widget : widget
    end
  class toggle :
    ?align:Widget.align ->
    ?icon:Widget.icon ->
    ?label:string ->
    ?border:bool ->
    ?tooltip:string ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (bool -> unit) -> unit
      method fire : bool -> unit
      method get : bool
      method lock : (unit -> unit) -> unit
      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_border : bool -> unit
      method set_enabled : bool -> unit
      method set_icon : Widget.icon -> unit
      method set_label : string -> unit
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method widget : widget
    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 lock : (unit -> unit) -> unit
      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_label : string -> unit
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method widget : widget
    end
  class switch :
    ?tooltip:string ->
    unit ->
    object
      method coerce : GObj.widget
      method connect : (bool -> unit) -> unit
      method fire : bool -> unit
      method get : bool
      method lock : (unit -> unit) -> unit
      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_tooltip : string -> unit
      method set_visible : bool -> unit
      method widget : widget
    end
  class ['a] group :
    '->
    object
      method add_radio :
        label:string -> ?tooltip:string -> value:'-> unit -> Widget.widget
      method add_toggle :
        ?label:string ->
        ?icon:Widget.icon ->
        ?tooltip:string -> value:'-> unit -> Widget.widget
      method connect : ('-> unit) -> unit
      method fire : '-> unit
      method get : 'a
      method lock : (unit -> unit) -> unit
      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
  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 lock : (unit -> unit) -> unit
      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
      method set_max : int -> unit
      method set_min : int -> unit
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method widget : widget
    end
  class ['a] menu :
    default:'->
    ?options:('a * string) list ->
    ?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 lock : (unit -> unit) -> unit
      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
      method set_options : ('a * string) list -> unit
      method set_render : ('-> string) -> unit
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method widget : widget
    end
  class popup :
    unit ->
    object
      method add_item : label:string -> callback:(unit -> unit) -> unit
      method add_separator : unit
      method clear : unit
      method run : unit -> unit
    end
end