sig
  class gobject_ops :
    'Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method disconnect : GtkSignal.id -> unit
      method freeze_notify : unit -> unit
      method get_oid : int
      method get_property : string -> Gobject.data_get
      method get_type : string
      method handler_block : GtkSignal.id -> unit
      method handler_unblock : GtkSignal.id -> unit
      method set_property : string -> 'a0 Gobject.data_set -> unit
      method thaw_notify : unit -> unit
    end
  class ['a] gobject_signals :
    'Gtk.obj ->
    object ('d)
      val after : bool
      val obj : 'Gtk.obj
      method after : 'd
      method private connect :
        'c. ('a, 'c) GtkSignal.t -> callback:'-> GtkSignal.id
      method private notify :
        'b.
          ('a, 'b) Gobject.property -> callback:('-> unit) -> GtkSignal.id
    end
  class type ['a] objvar = object val obj : 'Gtk.obj end
  class gtkobj :
    'Gtk.obj -> object val obj : 'Gtk.obj method get_oid : int end
  class type gtkobj_signals = object ('a) method after : 'end
  class event_signals :
    [> Gtk.widget ] Gtk.obj ->
    object ('a)
      method after : 'a
      method after_any :
        callback:(Gdk.Tags.event_type Gdk.event -> unit) -> GtkSignal.id
      method any :
        callback:(Gdk.Tags.event_type Gdk.event -> bool) -> GtkSignal.id
      method button_press :
        callback:(GdkEvent.Button.t -> bool) -> GtkSignal.id
      method button_release :
        callback:(GdkEvent.Button.t -> bool) -> GtkSignal.id
      method configure :
        callback:(GdkEvent.Configure.t -> bool) -> GtkSignal.id
      method delete :
        callback:([ `DELETE ] Gdk.event -> bool) -> GtkSignal.id
      method destroy :
        callback:([ `DESTROY ] Gdk.event -> bool) -> GtkSignal.id
      method enter_notify :
        callback:(GdkEvent.Crossing.t -> bool) -> GtkSignal.id
      method expose : callback:(GdkEvent.Expose.t -> bool) -> GtkSignal.id
      method focus_in : callback:(GdkEvent.Focus.t -> bool) -> GtkSignal.id
      method focus_out : callback:(GdkEvent.Focus.t -> bool) -> GtkSignal.id
      method key_press : callback:(GdkEvent.Key.t -> bool) -> GtkSignal.id
      method key_release : callback:(GdkEvent.Key.t -> bool) -> GtkSignal.id
      method leave_notify :
        callback:(GdkEvent.Crossing.t -> bool) -> GtkSignal.id
      method map : callback:([ `MAP ] Gdk.event -> bool) -> GtkSignal.id
      method motion_notify :
        callback:(GdkEvent.Motion.t -> bool) -> GtkSignal.id
      method property_notify :
        callback:(GdkEvent.Property.t -> bool) -> GtkSignal.id
      method proximity_in :
        callback:(GdkEvent.Proximity.t -> bool) -> GtkSignal.id
      method proximity_out :
        callback:(GdkEvent.Proximity.t -> bool) -> GtkSignal.id
      method scroll : callback:(GdkEvent.Scroll.t -> bool) -> GtkSignal.id
      method selection_clear :
        callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id
      method selection_notify :
        callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id
      method selection_request :
        callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id
      method unmap : callback:([ `UNMAP ] Gdk.event -> bool) -> GtkSignal.id
      method visibility_notify :
        callback:(GdkEvent.Visibility.t -> bool) -> GtkSignal.id
      method window_state :
        callback:(GdkEvent.WindowState.t -> bool) -> GtkSignal.id
    end
  class event_ops :
    [> Gtk.widget ] Gtk.obj ->
    object
      method add : Gdk.Tags.event_mask list -> unit
      method connect : GObj.event_signals
      method send : GdkEvent.any -> bool
    end
  class style :
    Gtk.style ->
    object ('a)
      val style : Gtk.style
      method as_style : Gtk.style
      method base : Gtk.Tags.state_type -> Gdk.color
      method bg : Gtk.Tags.state_type -> Gdk.color
      method copy : 'a
      method dark : Gtk.Tags.state_type -> Gdk.color
      method fg : Gtk.Tags.state_type -> Gdk.color
      method light : Gtk.Tags.state_type -> Gdk.color
      method mid : Gtk.Tags.state_type -> Gdk.color
      method set_base : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method set_bg : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method set_dark : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method set_fg : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method set_light : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method set_mid : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method set_text : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method text : Gtk.Tags.state_type -> Gdk.color
    end
  class selection_data :
    Gtk.selection_data ->
    object
      val sel : Gtk.selection_data
      method data : string
      method format : int
      method selection : Gdk.atom
      method target : string
      method typ : string
    end
  class selection_context :
    Gtk.selection_data ->
    object
      val sel : Gtk.selection_data
      method return : ?typ:string -> ?format:int -> string -> unit
      method selection : Gdk.atom
      method target : string
    end
  class drag_ops :
    Gtk.widget Gtk.obj ->
    object
      method connect : GObj.drag_signals
      method dest_set :
        ?flags:Gtk.Tags.dest_defaults list ->
        ?actions:Gdk.Tags.drag_action list -> Gtk.target_entry list -> unit
      method dest_unset : unit -> unit
      method get_data :
        target:string -> ?time:int32 -> GObj.drag_context -> unit
      method highlight : unit -> unit
      method source_set :
        ?modi:Gdk.Tags.modifier list ->
        ?actions:Gdk.Tags.drag_action list -> Gtk.target_entry list -> unit
      method source_unset : unit -> unit
      method unhighlight : unit -> unit
    end
  and misc_ops :
    Gtk.widget Gtk.obj ->
    object
      val obj : Gtk.widget Gtk.obj
      method activate : unit -> bool
      method add_accelerator :
        sgn:('a, unit -> unit) GtkSignal.t ->
        group:Gtk.accel_group ->
        ?modi:Gdk.Tags.modifier list ->
        ?flags:Gtk.Tags.accel_flag list -> Gdk.keysym -> unit
      method add_selection_target :
        target:string -> ?info:int -> Gdk.atom -> unit
      method allocation : Gtk.rectangle
      method clear_selection_targets : Gdk.atom -> unit
      method connect : GObj.misc_signals
      method convert_selection :
        target:string -> ?time:int32 -> Gdk.atom -> bool
      method create_pango_context : GPango.context_rw
      method disconnect : GtkSignal.id -> unit
      method draw : Gdk.cairo -> unit
      method freeze_notify : unit -> unit
      method get_oid : int
      method get_property : string -> Gobject.data_get
      method get_type : string
      method grab_default : unit -> unit
      method grab_focus : unit -> unit
      method grab_selection : ?time:int32 -> Gdk.atom -> bool
      method handler_block : GtkSignal.id -> unit
      method handler_unblock : GtkSignal.id -> unit
      method has_tooltip : bool
      method hide : unit -> unit
      method intersect : Gdk.Rectangle.t -> Gdk.Rectangle.t option
      method is_ancestor : GObj.widget -> bool
      method map : unit -> unit
      method modify_base : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method modify_bg : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method modify_fg : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method modify_font : Pango.font_description -> unit
      method modify_font_by_name : string -> unit
      method modify_text : (Gtk.Tags.state_type * GDraw.color) list -> unit
      method name : string
      method pango_context : GPango.context
      method parent : GObj.widget option
      method pointer : int * int
      method realize : unit -> unit
      method remove_accelerator :
        group:Gtk.accel_group ->
        ?modi:Gdk.Tags.modifier list -> Gdk.keysym -> unit
      method render_icon :
        size:Gtk.Tags.icon_size -> GtkStock.id -> GdkPixbuf.pixbuf
      method reparent : GObj.widget -> unit
      method set_app_paintable : bool -> unit
      method set_can_default : bool -> unit
      method set_can_focus : bool -> unit
      method set_double_buffered : bool -> unit
      method set_has_tooltip : bool -> unit
      method set_name : string -> unit
      method set_property : string -> 'Gobject.data_set -> unit
      method set_sensitive : bool -> unit
      method set_size_chars :
        ?desc:Pango.font_description ->
        ?lang:string -> ?width:int -> ?height:int -> unit -> unit
      method set_size_request : ?width:int -> ?height:int -> unit -> unit
      method set_style : GObj.style -> unit
      method set_tooltip_markup : string -> unit
      method set_tooltip_text : string -> unit
      method show : unit -> unit
      method show_all : unit -> unit
      method style : GObj.style
      method thaw_notify : unit -> unit
      method tooltip_markup : string
      method tooltip_text : string
      method toplevel : GObj.widget
      method unmap : unit -> unit
      method unparent : unit -> unit
      method unrealize : unit -> unit
      method visible : bool
      method visual : Gdk.visual
      method visual_depth : int
      method window : Gdk.window
    end
  and widget :
    ([> Gtk.widget ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method coerce : GObj.widget
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method get_oid : int
      method misc : GObj.misc_ops
    end
  and misc_signals :
    Gtk.widget Gtk.obj ->
    object ('a)
      method after : 'a
      method hide : callback:(unit -> unit) -> GtkSignal.id
      method map : callback:(unit -> unit) -> GtkSignal.id
      method parent_set :
        callback:(GObj.widget option -> unit) -> GtkSignal.id
      method query_tooltip :
        callback:(x:int -> y:int -> kbd:bool -> Gtk.tooltip -> bool) ->
        GtkSignal.id
      method realize : callback:(unit -> unit) -> GtkSignal.id
      method selection_get :
        callback:(GObj.selection_context -> info:int -> time:int32 -> unit) ->
        GtkSignal.id
      method selection_received :
        callback:(GObj.selection_data -> time:int32 -> unit) -> GtkSignal.id
      method show : callback:(unit -> unit) -> GtkSignal.id
      method size_allocate : callback:(Gtk.rectangle -> unit) -> GtkSignal.id
      method state_changed :
        callback:(Gtk.Tags.state_type -> unit) -> GtkSignal.id
      method style_set : callback:(unit -> unit) -> GtkSignal.id
      method unmap : callback:(unit -> unit) -> GtkSignal.id
      method unrealize : callback:(unit -> unit) -> GtkSignal.id
    end
  and drag_context :
    Gdk.drag_context ->
    object
      val context : Gdk.drag_context
      method context : Gdk.drag_context
      method finish : success:bool -> del:bool -> time:int32 -> unit
      method set_icon_widget : GObj.widget -> hot_x:int -> hot_y:int -> unit
      method source_widget : GObj.widget
      method status : ?time:int32 -> Gdk.Tags.drag_action option -> unit
      method suggested_action : Gdk.Tags.drag_action
      method targets : string list
    end
  and drag_signals :
    Gtk.widget Gtk.obj ->
    object ('a)
      method after : 'a
      method beginning : callback:(GObj.drag_context -> unit) -> GtkSignal.id
      method data_delete :
        callback:(GObj.drag_context -> unit) -> GtkSignal.id
      method data_get :
        callback:(GObj.drag_context ->
                  GObj.selection_context -> info:int -> time:int32 -> unit) ->
        GtkSignal.id
      method data_received :
        callback:(GObj.drag_context ->
                  x:int ->
                  y:int ->
                  GObj.selection_data -> info:int -> time:int32 -> unit) ->
        GtkSignal.id
      method drop :
        callback:(GObj.drag_context -> x:int -> y:int -> time:int32 -> bool) ->
        GtkSignal.id
      method ending : callback:(GObj.drag_context -> unit) -> GtkSignal.id
      method leave :
        callback:(GObj.drag_context -> time:int32 -> unit) -> GtkSignal.id
      method motion :
        callback:(GObj.drag_context -> x:int -> y:int -> time:int32 -> bool) ->
        GtkSignal.id
    end
  class ['a] widget_impl :
    'Gtk.obj ->
    object
      constraint 'a = [> Gtk.widget ]
      val obj : 'Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method coerce : widget
      method destroy : unit -> unit
      method drag : drag_ops
      method get_oid : int
      method misc : misc_ops
    end
  class type widget_signals =
    object ('a)
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
    end
  class widget_signals_impl :
    ([> Gtk.widget ] as 'a) Gtk.obj ->
    object ('d)
      val after : bool
      val obj : 'Gtk.obj
      method after : 'd
      method private connect :
        'c. ('a, 'c) GtkSignal.t -> callback:'-> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method private notify :
        'b.
          ('a, 'b) Gobject.property -> callback:('-> unit) -> GtkSignal.id
    end
  class widget_full :
    ([> Gtk.widget ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method coerce : widget
      method connect : GObj.widget_signals
      method destroy : unit -> unit
      method drag : drag_ops
      method get_oid : int
      method misc : misc_ops
    end
  val as_widget : GObj.widget -> Gtk.widget Gtk.obj
  val pack_return :
    (#GObj.widget as 'a) ->
    packing:(GObj.widget -> unit) option -> show:bool option -> 'a
  val conv_widget : GObj.widget Gobject.data_conv
  val conv_widget_option : GObj.widget option Gobject.data_conv
end