sig
  class editable_signals :
    [> Gtk.editable ] Gtk.obj ->
    object ('a)
      method after : 'a
      method changed : callback:(unit -> unit) -> GtkSignal.id
      method delete_text :
        callback:(start:int -> stop:int -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method insert_text :
        callback:(string -> pos:int Stdlib.ref -> unit) -> GtkSignal.id
    end
  class editable :
    ([> Gtk.editable ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method coerce : GObj.widget
      method copy_clipboard : unit -> unit
      method cut_clipboard : unit -> unit
      method delete_selection : unit -> unit
      method delete_text : start:int -> stop:int -> unit
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method editable : bool
      method get_chars : start:int -> stop:int -> string
      method get_oid : int
      method insert_text : string -> pos:int -> int
      method misc : GObj.misc_ops
      method paste_clipboard : unit -> unit
      method position : int
      method select_region : start:int -> stop:int -> unit
      method selection : (int * int) option
      method set_editable : bool -> unit
      method set_position : int -> unit
    end
  class entry_completion_signals :
    [> `entrycompletion ] Gtk.obj ->
    object ('a)
      method action_activated : callback:(int -> unit) -> GtkSignal.id
      method after : 'a
      method match_selected :
        callback:(GTree.model_filter -> Gtk.tree_iter -> bool) ->
        GtkSignal.id
    end
  class entry_completion :
    ([> `celllayout | `entrycompletion ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method add_attribute :
        #GTree.cell_renderer -> string -> 'GTree.column -> unit
      method as_entry_completion : Gtk.entry_completion
      method clear : unit -> unit
      method clear_attributes : #GTree.cell_renderer -> unit
      method complete : unit -> unit
      method connect : GEdit.entry_completion_signals
      method delete_action : int -> unit
      method get_entry : GObj.widget option
      method insert_action_markup : int -> string -> unit
      method insert_action_text : int -> string -> unit
      method minimum_key_length : int
      method misc : GObj.gobject_ops
      method model : GTree.model
      method pack :
        ?expand:bool ->
        ?from:Gtk.Tags.pack_type -> #GTree.cell_renderer -> unit
      method reorder : #GTree.cell_renderer -> int -> unit
      method set_cell_data_func :
        #GTree.cell_renderer ->
        (GTree.model -> Gtk.tree_iter -> unit) -> unit
      method set_match_func : (string -> Gtk.tree_iter -> bool) -> unit
      method set_minimum_key_length : int -> unit
      method set_model : GTree.model -> unit
      method set_text_column : string GTree.column -> unit
      method unset_cell_data_func : #GTree.cell_renderer -> unit
    end
  class entry_signals :
    [> Gtk.entry ] Gtk.obj ->
    object ('a)
      method activate : callback:(unit -> unit) -> GtkSignal.id
      method after : 'a
      method backspace : callback:(unit -> unit) -> GtkSignal.id
      method changed : callback:(unit -> unit) -> GtkSignal.id
      method copy_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method cut_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method delete_from_cursor :
        callback:(Gtk.Tags.delete_type -> int -> unit) -> GtkSignal.id
      method delete_text :
        callback:(start:int -> stop:int -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method icon_press :
        callback:(Gtk.Tags.entry_icon_position -> GdkEvent.Button.t -> unit) ->
        GtkSignal.id
      method icon_released :
        callback:(Gtk.Tags.entry_icon_position -> GdkEvent.Button.t -> unit) ->
        GtkSignal.id
      method insert_at_cursor : callback:(string -> unit) -> GtkSignal.id
      method insert_text :
        callback:(string -> pos:int ref -> unit) -> GtkSignal.id
      method move_cursor :
        callback:(Gtk.Tags.movement_step -> int -> extend:bool -> unit) ->
        GtkSignal.id
      method notify_activates_default :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_has_frame : callback:(bool -> unit) -> GtkSignal.id
      method notify_invisible_char : callback:(int -> unit) -> GtkSignal.id
      method notify_max_length : callback:(int -> unit) -> GtkSignal.id
      method notify_overwrite_mode : callback:(bool -> unit) -> GtkSignal.id
      method notify_placeholder_text :
        callback:(string -> unit) -> GtkSignal.id
      method notify_primary_icon_activatable :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_primary_icon_sensitive :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_scroll_offset : callback:(int -> unit) -> GtkSignal.id
      method notify_secondary_icon_activatable :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_secondary_icon_sensitive :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_text : callback:(string -> unit) -> GtkSignal.id
      method notify_text_length : callback:(int -> unit) -> GtkSignal.id
      method notify_visibility : callback:(bool -> unit) -> GtkSignal.id
      method notify_width_chars : callback:(int -> unit) -> GtkSignal.id
      method notify_xalign : callback:(float -> unit) -> GtkSignal.id
      method paste_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method populate_popup : callback:(GMenu.menu -> unit) -> GtkSignal.id
      method toggle_overwrite : callback:(unit -> unit) -> GtkSignal.id
    end
  class entry :
    ([> Gtk.entry ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method activates_default : bool
      method as_entry : Gtk.entry Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method coerce : GObj.widget
      method connect : GEdit.entry_signals
      method copy_clipboard : unit -> unit
      method cut_clipboard : unit -> unit
      method delete_selection : unit -> unit
      method delete_text : start:int -> stop:int -> unit
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method editable : bool
      method event : GObj.event_ops
      method get_chars : start:int -> stop:int -> string
      method get_completion : GEdit.entry_completion option
      method get_oid : int
      method has_frame : bool
      method insert_text : string -> pos:int -> int
      method invisible_char : int
      method max_length : int
      method misc : GObj.misc_ops
      method overwrite_mode : bool
      method paste_clipboard : unit -> unit
      method placeholder_text : string
      method position : int
      method primary_icon_activatable : bool
      method primary_icon_sensitive : bool
      method scroll_offset : int
      method secondary_icon_activatable : bool
      method secondary_icon_sensitive : bool
      method select_region : start:int -> stop:int -> unit
      method selection : (int * int) option
      method set_activates_default : bool -> unit
      method set_completion : GEdit.entry_completion -> unit
      method set_editable : bool -> unit
      method set_has_frame : bool -> unit
      method set_invisible_char : int -> unit
      method set_max_length : int -> unit
      method set_overwrite_mode : bool -> unit
      method set_placeholder_text : string -> unit
      method set_position : int -> unit
      method set_primary_icon_activatable : bool -> unit
      method set_primary_icon_name : string -> unit
      method set_primary_icon_pixbuf : GdkPixbuf.pixbuf -> unit
      method set_primary_icon_sensitive : bool -> unit
      method set_primary_icon_stock : GtkStock.id -> unit
      method set_primary_icon_tooltip_markup : string -> unit
      method set_primary_icon_tooltip_text : string -> unit
      method set_secondary_icon_activatable : bool -> unit
      method set_secondary_icon_name : string -> unit
      method set_secondary_icon_pixbuf : GdkPixbuf.pixbuf -> unit
      method set_secondary_icon_sensitive : bool -> unit
      method set_secondary_icon_stock : GtkStock.id -> unit
      method set_secondary_icon_tooltip_markup : string -> unit
      method set_secondary_icon_tooltip_text : string -> unit
      method set_text : string -> unit
      method set_visibility : bool -> unit
      method set_width_chars : int -> unit
      method set_xalign : float -> unit
      method text : string
      method text_length : int
      method visibility : bool
      method width_chars : int
      method xalign : float
    end
  val entry :
    ?text:string ->
    ?visibility:bool ->
    ?max_length:int ->
    ?activates_default:bool ->
    ?editable:bool ->
    ?has_frame:bool ->
    ?width_chars:int ->
    ?xalign:float ->
    ?placeholder_text:string ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> GEdit.entry
  val entry_completion :
    ?model:#GTree.model ->
    ?minimum_key_length:int ->
    ?entry:GEdit.entry -> unit -> GEdit.entry_completion
  class spin_button_signals :
    [> Gtk.spin_button ] Gtk.obj ->
    object ('a)
      method activate : callback:(unit -> unit) -> GtkSignal.id
      method after : 'a
      method backspace : callback:(unit -> unit) -> GtkSignal.id
      method change_value :
        callback:(Gtk.Tags.scroll_type -> unit) -> GtkSignal.id
      method changed : callback:(unit -> unit) -> GtkSignal.id
      method copy_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method cut_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method delete_from_cursor :
        callback:(Gtk.Tags.delete_type -> int -> unit) -> GtkSignal.id
      method delete_text :
        callback:(start:int -> stop:int -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method icon_press :
        callback:(Gtk.Tags.entry_icon_position -> GdkEvent.Button.t -> unit) ->
        GtkSignal.id
      method icon_released :
        callback:(Gtk.Tags.entry_icon_position -> GdkEvent.Button.t -> unit) ->
        GtkSignal.id
      method input : callback:(unit -> int) -> GtkSignal.id
      method insert_at_cursor : callback:(string -> unit) -> GtkSignal.id
      method insert_text :
        callback:(string -> pos:int ref -> unit) -> GtkSignal.id
      method move_cursor :
        callback:(Gtk.Tags.movement_step -> int -> extend:bool -> unit) ->
        GtkSignal.id
      method notify_activates_default :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_adjustment :
        callback:(GData.adjustment -> unit) -> GtkSignal.id
      method notify_digits : callback:(int -> unit) -> GtkSignal.id
      method notify_has_frame : callback:(bool -> unit) -> GtkSignal.id
      method notify_invisible_char : callback:(int -> unit) -> GtkSignal.id
      method notify_max_length : callback:(int -> unit) -> GtkSignal.id
      method notify_numeric : callback:(bool -> unit) -> GtkSignal.id
      method notify_overwrite_mode : callback:(bool -> unit) -> GtkSignal.id
      method notify_placeholder_text :
        callback:(string -> unit) -> GtkSignal.id
      method notify_primary_icon_activatable :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_primary_icon_sensitive :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_rate : callback:(float -> unit) -> GtkSignal.id
      method notify_scroll_offset : callback:(int -> unit) -> GtkSignal.id
      method notify_secondary_icon_activatable :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_secondary_icon_sensitive :
        callback:(bool -> unit) -> GtkSignal.id
      method notify_snap_to_ticks : callback:(bool -> unit) -> GtkSignal.id
      method notify_text : callback:(string -> unit) -> GtkSignal.id
      method notify_text_length : callback:(int -> unit) -> GtkSignal.id
      method notify_update_policy :
        callback:(Gtk.Tags.spin_button_update_policy -> unit) -> GtkSignal.id
      method notify_value : callback:(float -> unit) -> GtkSignal.id
      method notify_visibility : callback:(bool -> unit) -> GtkSignal.id
      method notify_width_chars : callback:(int -> unit) -> GtkSignal.id
      method notify_wrap : callback:(bool -> unit) -> GtkSignal.id
      method notify_xalign : callback:(float -> unit) -> GtkSignal.id
      method output : callback:(unit -> bool) -> GtkSignal.id
      method paste_clipboard : callback:(unit -> unit) -> GtkSignal.id
      method populate_popup : callback:(GMenu.menu -> unit) -> GtkSignal.id
      method toggle_overwrite : callback:(unit -> unit) -> GtkSignal.id
      method value_changed : callback:(unit -> unit) -> GtkSignal.id
      method wrapped : callback:(unit -> unit) -> GtkSignal.id
    end
  class spin_button :
    Gtk.spin_button Gtk.obj ->
    object
      val obj : Gtk.spin_button Gtk.obj
      method adjustment : GData.adjustment
      method as_widget : Gtk.widget Gtk.obj
      method coerce : GObj.widget
      method connect : GEdit.spin_button_signals
      method destroy : unit -> unit
      method digits : int
      method drag : GObj.drag_ops
      method event : GObj.event_ops
      method get_oid : int
      method misc : GObj.misc_ops
      method numeric : bool
      method rate : float
      method set_adjustment : GData.adjustment -> unit
      method set_digits : int -> unit
      method set_numeric : bool -> unit
      method set_rate : float -> unit
      method set_snap_to_ticks : bool -> unit
      method set_update_policy : [ `ALWAYS | `IF_VALID ] -> unit
      method set_value : float -> unit
      method set_wrap : bool -> unit
      method snap_to_ticks : bool
      method spin : Gtk.Tags.spin_type -> unit
      method update : unit
      method update_policy : [ `ALWAYS | `IF_VALID ]
      method value : float
      method value_as_int : int
      method wrap : bool
    end
  val spin_button :
    ?adjustment:GData.adjustment ->
    ?rate:float ->
    ?digits:int ->
    ?numeric:bool ->
    ?snap_to_ticks:bool ->
    ?update_policy:[ `ALWAYS | `IF_VALID ] ->
    ?value:float ->
    ?wrap:bool ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> GEdit.spin_button
  class combo_box_signals :
    [> Gtk.combo_box ] Gtk.obj ->
    object ('a)
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method changed : callback:(unit -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method notify_active : callback:(int -> unit) -> GtkSignal.id
      method notify_add_tearoffs : callback:(bool -> unit) -> GtkSignal.id
      method notify_border_width : callback:(int -> unit) -> GtkSignal.id
      method notify_entry_text_column :
        callback:(int -> unit) -> GtkSignal.id
      method notify_focus_on_click : callback:(bool -> unit) -> GtkSignal.id
      method notify_has_entry : callback:(bool -> unit) -> GtkSignal.id
      method notify_has_frame : callback:(bool -> unit) -> GtkSignal.id
      method notify_resize_mode :
        callback:(GtkEnums.resize_mode -> unit) -> GtkSignal.id
      method notify_wrap_width : callback:(int -> unit) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
    end
  class combo_box :
    ([> Gtk.combo_box ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method active : int
      method active_iter : Gtk.tree_iter option
      method add : GObj.widget -> unit
      method add_attribute :
        #GTree.cell_renderer -> string -> 'GTree.column -> unit
      method add_tearoffs : bool
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method child : GObj.widget
      method children : GObj.widget list
      method clear : unit -> unit
      method clear_attributes : #GTree.cell_renderer -> unit
      method coerce : GObj.widget
      method connect : GEdit.combo_box_signals
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method entry_text_column : int
      method event : GObj.event_ops
      method focus : GContainer.focus
      method focus_on_click : bool
      method get_oid : int
      method has_entry : bool
      method has_frame : bool
      method misc : GObj.misc_ops
      method model : GTree.model
      method pack :
        ?expand:bool ->
        ?from:Gtk.Tags.pack_type -> #GTree.cell_renderer -> unit
      method remove : GObj.widget -> unit
      method reorder : #GTree.cell_renderer -> int -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method set_active : int -> unit
      method set_active_iter : Gtk.tree_iter option -> unit
      method set_add_tearoffs : bool -> unit
      method set_border_width : int -> unit
      method set_cell_data_func :
        #GTree.cell_renderer ->
        (GTree.model -> Gtk.tree_iter -> unit) -> unit
      method set_column_span_column : int GTree.column -> unit
      method set_entry_text_column : int -> unit
      method set_focus_on_click : bool -> unit
      method set_has_entry : bool -> unit
      method set_has_frame : bool -> unit
      method set_model : GTree.model -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_row_separator_func :
        (GTree.model -> Gtk.tree_iter -> bool) option -> unit
      method set_row_span_column : int GTree.column -> unit
      method set_wrap_width : int -> unit
      method unset_cell_data_func : #GTree.cell_renderer -> unit
      method wrap_width : int
    end
  val combo_box :
    ?model:#GTree.model ->
    ?active:int ->
    ?add_tearoffs:bool ->
    ?focus_on_click:bool ->
    ?entry_text_column:int ->
    ?has_entry:bool ->
    ?has_frame:bool ->
    ?wrap_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> GEdit.combo_box
  class combo_box_entry :
    ([> Gtk.combo_box ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method active : int
      method active_iter : Gtk.tree_iter option
      method add : GObj.widget -> unit
      method add_attribute :
        #GTree.cell_renderer -> string -> 'GTree.column -> unit
      method add_tearoffs : bool
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method child : GObj.widget
      method children : GObj.widget list
      method clear : unit -> unit
      method clear_attributes : #GTree.cell_renderer -> unit
      method coerce : GObj.widget
      method connect : combo_box_signals
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method entry : GEdit.entry
      method entry_text_column : int
      method event : GObj.event_ops
      method focus : GContainer.focus
      method focus_on_click : bool
      method get_oid : int
      method has_entry : bool
      method has_frame : bool
      method misc : GObj.misc_ops
      method model : GTree.model
      method pack :
        ?expand:bool ->
        ?from:Gtk.Tags.pack_type -> #GTree.cell_renderer -> unit
      method remove : GObj.widget -> unit
      method reorder : #GTree.cell_renderer -> int -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method set_active : int -> unit
      method set_active_iter : Gtk.tree_iter option -> unit
      method set_add_tearoffs : bool -> unit
      method set_border_width : int -> unit
      method set_cell_data_func :
        #GTree.cell_renderer ->
        (GTree.model -> Gtk.tree_iter -> unit) -> unit
      method set_column_span_column : int GTree.column -> unit
      method set_entry_text_column : int -> unit
      method set_focus_on_click : bool -> unit
      method set_has_entry : bool -> unit
      method set_has_frame : bool -> unit
      method set_model : GTree.model -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_row_separator_func :
        (GTree.model -> Gtk.tree_iter -> bool) option -> unit
      method set_row_span_column : int GTree.column -> unit
      method set_wrap_width : int -> unit
      method unset_cell_data_func : #GTree.cell_renderer -> unit
      method wrap_width : int
    end
  val combo_box_entry :
    ?model:#GTree.model ->
    ?text_column:string GTree.column ->
    ?active:int ->
    ?add_tearoffs:bool ->
    ?focus_on_click:bool ->
    ?has_frame:bool ->
    ?wrap_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) ->
    ?show:bool -> unit -> GEdit.combo_box_entry
  type 'a text_combo = 'a * (GTree.list_store * string GTree.column)
    constraint 'a = #GEdit.combo_box
  val text_combo_add : #GEdit.combo_box GEdit.text_combo -> string -> unit
  val text_combo_get_active :
    #GEdit.combo_box GEdit.text_combo -> string option
  val combo_box_text :
    ?strings:string list ->
    ?use_markup:bool ->
    ?active:int ->
    ?add_tearoffs:bool ->
    ?focus_on_click:bool ->
    ?entry_text_column:int ->
    ?has_entry:bool ->
    ?has_frame:bool ->
    ?wrap_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) ->
    ?show:bool -> unit -> GEdit.combo_box GEdit.text_combo
  val combo_box_entry_text :
    ?strings:string list ->
    ?active:int ->
    ?add_tearoffs:bool ->
    ?focus_on_click:bool ->
    ?has_frame:bool ->
    ?wrap_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) ->
    ?show:bool -> unit -> GEdit.combo_box_entry GEdit.text_combo
end