sig
  type demon
  val demon : unit -> Gtk_form.demon
  val register : Gtk_form.demon -> (unit -> unit) -> unit
  val refresh : Gtk_form.demon -> unit -> unit
  type 'a field =
      ?tooltip:string ->
      packing:(GObj.widget -> unit) ->
      (unit -> 'a) -> ('-> unit) -> Gtk_form.demon -> unit
  val check : ?label:string -> bool Gtk_form.field
  val menu : (string * 'a) list -> ?width:int -> 'Gtk_form.field
  val spinner : ?lower:int -> ?upper:int -> ?width:int -> int Gtk_form.field
  val label : text:string -> packing:(GObj.widget -> unit) -> unit -> unit
  val button :
    label:string ->
    ?tooltip:string ->
    callback:(unit -> unit) -> packing:(GObj.widget -> unit) -> unit -> unit
  class form :
    packing:(GObj.widget -> unit) ->
    object
      method item : GObj.widget -> unit
      method label : string -> unit
      method row : GObj.widget -> unit
    end
end