sig
  type field = [ `Compact | `Field | `Panel ]
  class form :
    unit ->
    object
      method add_field :
        ?label:string -> ?field:Wpane.field -> GObj.widget -> unit
      method add_label : string -> unit
      method add_label_widget : GObj.widget -> unit
      method add_newline : unit
      method add_row :
        ?field:Wpane.field ->
        ?xpadding:int -> ?ypadding:int -> GObj.widget -> unit
      method add_section : string -> unit
      method coerce : GObj.widget
      method set_enabled : bool -> unit
      method set_visible : bool -> unit
      method widget : Widget.widget
    end
  class ['a] notebook :
    ?tabs:Gtk.Tags.position ->
    default:'a ->
    unit ->
    object
      method add : ?label:string -> 'a -> GObj.widget -> unit
      method coerce : GObj.widget
      method connect : ('a -> unit) -> unit
      method fire : 'a -> unit
      method get : 'a
      method lock : (unit -> unit) -> unit
      method on_check : 'a -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_focus : 'a -> (bool -> unit) -> unit
      method on_value : 'a -> (unit -> unit) -> unit
      method send : ('a -> unit) -> unit -> unit
      method set : 'a -> unit
      method set_enabled : bool -> unit
      method set_visible : bool -> unit
      method widget : Widget.widget
    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 ->
    ?entry:('a -> Wpane.entry) ->
    unit ->
    object
      method append : 'a -> unit
      method coerce : GObj.widget
      method get : 'a list
      method insert : ?after:'a -> 'a -> unit
      method mem : 'a -> bool
      method remove : 'a -> unit
      method set : 'a list -> unit
      method set_enabled : bool -> unit
      method set_entry : ('a -> Wpane.entry) -> unit
      method set_visible : bool -> unit
      method update : unit -> unit
      method widget : Widget.widget
    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:'a Wpane.action ->
        ?label:string -> ?icon:Widget.icon -> ?tooltip:string -> unit -> unit
      method connect : ('a -> unit) -> unit
      method fire : 'a -> unit
      method lock : (unit -> unit) -> unit
      method on_check : 'a -> (bool -> unit) -> unit
      method on_event : (unit -> unit) -> unit
      method on_value : 'a -> (unit -> unit) -> unit
      method run : unit -> unit
      method select : 'a -> unit
      method set_enabled : bool -> unit
    end
end