sig
  type field = [ `Compact | `Editor | `Field ]
  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 -> GObj.widget -> unit
      method add_section : string -> unit
      method coerce : GObj.widget
      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 lock : (unit -> unit) -> unit
      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 ->
    ?entry:('-> Wpane.entry) ->
    unit ->
    object
      method append : '-> unit
      method coerce : GObj.widget
      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 set_entry : ('-> Wpane.entry) -> 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:'Wpane.action ->
        ?label:string -> ?icon:Widget.icon -> ?tooltip:string -> unit -> unit
      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 run : unit -> unit
      method select : '-> unit
      method set_enabled : bool -> unit
    end
end