sig
  external init : unit -> unit = "ml_glade_init"
  type glade_xml = [ `data | `glade_xml ]
  val create :
    ?file:string ->
    ?data:string ->
    ?root:string -> ?domain:string -> unit -> Glade.glade_xml Gtk.obj
  val signal_autoconnect :
    [> `glade_xml ] Gtk.obj ->
    f:(handler:string ->
       signal:string ->
       after:bool -> ?target:unit Gtk.obj -> unit Gtk.obj -> unit) ->
    unit
  external get_widget :
    [> `glade_xml ] Gtk.obj -> name:string -> Gtk.widget Gtk.obj
    = "ml_glade_xml_get_widget"
  external get_widget_name : [> `widget ] Gtk.obj -> string
    = "ml_glade_get_widget_name"
  external get_widget_tree : [> `widget ] Gtk.obj -> Glade.glade_xml Gtk.obj
    = "ml_glade_get_widget_tree"
  val get_widget_msg :
    name:string ->
    ?info:string -> [> `glade_xml ] Gtk.obj -> Gtk.widget Gtk.obj
  type handler =
      [ `Custom of Gobject.Closure.argv -> Gobject.data_get list -> unit
      | `Object of string * (unit Gtk.obj -> unit)
      | `Simple of unit -> unit ]
  val gtk_bool : bool -> Gobject.Closure.argv -> '-> unit
  val add_handler : name:string -> Glade.handler -> unit
  val bind_handlers :
    ?extra:(string * Glade.handler) list ->
    ?warn:bool -> [> `glade_xml ] Gtk.obj -> unit
  val bind_handler :
    name:string ->
    handler:Glade.handler -> ?warn:bool -> [> `glade_xml ] Gtk.obj -> unit
  val print_bindings :
    Pervasives.out_channel -> [> `glade_xml ] Gtk.obj -> unit
  val trace_handlers :
    Pervasives.out_channel -> [> `glade_xml ] Gtk.obj -> unit
  class xml :
    ?trace:Pervasives.out_channel ->
    ?autoconnect:bool ->
    Glade.glade_xml Gtk.obj ->
    object
      val xml : Glade.glade_xml Gtk.obj
      method bind : name:string -> callback:(unit -> unit) -> unit
      method xml : Glade.glade_xml Gtk.obj
    end
end