sig
  type 'a column = {
    index : int;
    conv : 'Gobject.data_conv;
    creator : int;
  }
  class column_list :
    object
      method add : 'Gobject.data_conv -> 'GTree.column
      method id : int
      method lock : unit -> unit
      method types : Gobject.g_type list
    end
  class row_reference :
    Gtk.row_reference ->
    model:[> `treemodel ] Gtk.obj ->
    object
      method as_ref : Gtk.row_reference
      method iter : Gtk.tree_iter
      method path : Gtk.tree_path
      method valid : bool
    end
  class model_signals :
    [> `treemodel ] Gtk.obj ->
    object ('a)
      method after : 'a
      method row_changed :
        callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
      method row_deleted : callback:(Gtk.tree_path -> unit) -> GtkSignal.id
      method row_has_child_toggled :
        callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
      method row_inserted :
        callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
      method rows_reordered :
        callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
    end
  val model_ids : (int, int) Hashtbl.t
  class model :
    ([> `treemodel ] as 'a) Gtk.obj ->
    object
      val id : int
      val obj : 'Gtk.obj
      method as_model : Gtk.tree_model
      method coerce : GTree.model
      method flags : GtkEnums.tree_model_flags list
      method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
      method get : row:Gtk.tree_iter -> column:'GTree.column -> 'b
      method get_column_type : int -> Gobject.g_type
      method get_iter : Gtk.tree_path -> Gtk.tree_iter
      method get_iter_first : Gtk.tree_iter option
      method get_path : Gtk.tree_iter -> Gtk.tree_path
      method get_row_reference : Gtk.tree_path -> GTree.row_reference
      method iter_children :
        ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
      method iter_has_child : Gtk.tree_iter -> bool
      method iter_n_children : Gtk.tree_iter option -> int
      method iter_next : Gtk.tree_iter -> bool
      method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
      method misc : GObj.gobject_ops
      method n_columns : int
      method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
    end
  class tree_sortable_signals :
    [> `treemodel | `treesortable ] Gtk.obj ->
    object ('a)
      method after : 'a
      method row_changed :
        callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
      method row_deleted : callback:(Gtk.tree_path -> unit) -> GtkSignal.id
      method row_has_child_toggled :
        callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
      method row_inserted :
        callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
      method rows_reordered :
        callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
      method sort_column_changed : callback:(unit -> unit) -> GtkSignal.id
    end
  class tree_sortable :
    ([> `treemodel | `treesortable ] as 'a) Gtk.obj ->
    object
      val id : int
      val obj : 'Gtk.obj
      method as_model : Gtk.tree_model
      method coerce : model
      method connect : GTree.tree_sortable_signals
      method flags : GtkEnums.tree_model_flags list
      method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
      method get : row:Gtk.tree_iter -> column:'b column -> 'b
      method get_column_type : int -> Gobject.g_type
      method get_iter : Gtk.tree_path -> Gtk.tree_iter
      method get_iter_first : Gtk.tree_iter option
      method get_path : Gtk.tree_iter -> Gtk.tree_path
      method get_row_reference : Gtk.tree_path -> row_reference
      method get_sort_column_id : (int * Gtk.Tags.sort_type) option
      method has_default_sort_func : bool
      method iter_children :
        ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
      method iter_has_child : Gtk.tree_iter -> bool
      method iter_n_children : Gtk.tree_iter option -> int
      method iter_next : Gtk.tree_iter -> bool
      method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
      method misc : GObj.gobject_ops
      method n_columns : int
      method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
      method set_default_sort_func :
        (GTree.model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
      method set_sort_column_id : int -> Gtk.Tags.sort_type -> unit
      method set_sort_func :
        int -> (GTree.model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
      method sort_column_changed : unit -> unit
    end
  val default_sort_column_id : int
  val unsorted_sort_column_id : int
  class tree_store :
    Gtk.tree_store ->
    object
      val id : int
      val obj : Gtk.tree_store
      method append : ?parent:Gtk.tree_iter -> unit -> Gtk.tree_iter
      method as_model : Gtk.tree_model
      method clear : unit -> unit
      method coerce : model
      method connect : tree_sortable_signals
      method flags : GtkEnums.tree_model_flags list
      method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
      method get : row:Gtk.tree_iter -> column:'a column -> 'a
      method get_column_type : int -> Gobject.g_type
      method get_iter : Gtk.tree_path -> Gtk.tree_iter
      method get_iter_first : Gtk.tree_iter option
      method get_path : Gtk.tree_iter -> Gtk.tree_path
      method get_row_reference : Gtk.tree_path -> row_reference
      method get_sort_column_id : (int * Gtk.Tags.sort_type) option
      method has_default_sort_func : bool
      method insert : ?parent:Gtk.tree_iter -> int -> Gtk.tree_iter
      method insert_after :
        ?parent:Gtk.tree_iter -> Gtk.tree_iter -> Gtk.tree_iter
      method insert_before :
        ?parent:Gtk.tree_iter -> Gtk.tree_iter -> Gtk.tree_iter
      method is_ancestor :
        iter:Gtk.tree_iter -> descendant:Gtk.tree_iter -> bool
      method iter_children :
        ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
      method iter_depth : Gtk.tree_iter -> int
      method iter_has_child : Gtk.tree_iter -> bool
      method iter_is_valid : Gtk.tree_iter -> bool
      method iter_n_children : Gtk.tree_iter option -> int
      method iter_next : Gtk.tree_iter -> bool
      method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
      method misc : GObj.gobject_ops
      method move_after : iter:Gtk.tree_iter -> pos:Gtk.tree_iter -> bool
      method move_before : iter:Gtk.tree_iter -> pos:Gtk.tree_iter -> bool
      method n_columns : int
      method prepend : ?parent:Gtk.tree_iter -> unit -> Gtk.tree_iter
      method remove : Gtk.tree_iter -> bool
      method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
      method set : row:Gtk.tree_iter -> column:'GTree.column -> '-> unit
      method set_default_sort_func :
        (model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
      method set_sort_column_id : int -> Gtk.Tags.sort_type -> unit
      method set_sort_func :
        int -> (model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
      method sort_column_changed : unit -> unit
      method swap : Gtk.tree_iter -> Gtk.tree_iter -> bool
    end
  val tree_store : GTree.column_list -> GTree.tree_store
  class list_store :
    Gtk.list_store ->
    object
      val id : int
      val obj : Gtk.list_store
      method append : unit -> Gtk.tree_iter
      method as_model : Gtk.tree_model
      method clear : unit -> unit
      method coerce : model
      method connect : tree_sortable_signals
      method flags : GtkEnums.tree_model_flags list
      method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
      method get : row:Gtk.tree_iter -> column:'a column -> 'a
      method get_column_type : int -> Gobject.g_type
      method get_iter : Gtk.tree_path -> Gtk.tree_iter
      method get_iter_first : Gtk.tree_iter option
      method get_path : Gtk.tree_iter -> Gtk.tree_path
      method get_row_reference : Gtk.tree_path -> row_reference
      method get_sort_column_id : (int * Gtk.Tags.sort_type) option
      method has_default_sort_func : bool
      method insert : int -> Gtk.tree_iter
      method insert_after : Gtk.tree_iter -> Gtk.tree_iter
      method insert_before : Gtk.tree_iter -> Gtk.tree_iter
      method iter_children :
        ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
      method iter_has_child : Gtk.tree_iter -> bool
      method iter_is_valid : Gtk.tree_iter -> bool
      method iter_n_children : Gtk.tree_iter option -> int
      method iter_next : Gtk.tree_iter -> bool
      method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
      method misc : GObj.gobject_ops
      method move_after : iter:Gtk.tree_iter -> pos:Gtk.tree_iter -> bool
      method move_before : iter:Gtk.tree_iter -> pos:Gtk.tree_iter -> bool
      method n_columns : int
      method prepend : unit -> Gtk.tree_iter
      method remove : Gtk.tree_iter -> bool
      method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
      method set : row:Gtk.tree_iter -> column:'GTree.column -> '-> unit
      method set_default_sort_func :
        (model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
      method set_sort_column_id : int -> Gtk.Tags.sort_type -> unit
      method set_sort_func :
        int -> (model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
      method sort_column_changed : unit -> unit
      method swap : Gtk.tree_iter -> Gtk.tree_iter -> bool
    end
  val list_store : GTree.column_list -> GTree.list_store
  val store_of_list :
    'Gobject.data_conv -> 'a list -> GTree.list_store * 'GTree.column
  class model_sort :
    Gtk.tree_model_sort ->
    object
      val id : int
      val obj : Gtk.tree_model_sort
      method as_model : Gtk.tree_model
      method coerce : model
      method connect : tree_sortable_signals
      method convert_child_iter_to_iter : Gtk.tree_iter -> Gtk.tree_iter
      method convert_child_path_to_path : Gtk.tree_path -> Gtk.tree_path
      method convert_iter_to_child_iter : Gtk.tree_iter -> Gtk.tree_iter
      method convert_path_to_child_path : Gtk.tree_path -> Gtk.tree_path
      method flags : GtkEnums.tree_model_flags list
      method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
      method get : row:Gtk.tree_iter -> column:'a column -> 'a
      method get_column_type : int -> Gobject.g_type
      method get_iter : Gtk.tree_path -> Gtk.tree_iter
      method get_iter_first : Gtk.tree_iter option
      method get_path : Gtk.tree_iter -> Gtk.tree_path
      method get_row_reference : Gtk.tree_path -> row_reference
      method get_sort_column_id : (int * Gtk.Tags.sort_type) option
      method has_default_sort_func : bool
      method iter_children :
        ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
      method iter_has_child : Gtk.tree_iter -> bool
      method iter_is_valid : Gtk.tree_iter -> bool
      method iter_n_children : Gtk.tree_iter option -> int
      method iter_next : Gtk.tree_iter -> bool
      method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
      method misc : GObj.gobject_ops
      method model : GTree.model
      method n_columns : int
      method reset_default_sort_func : unit -> unit
      method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
      method set_default_sort_func :
        (model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
      method set_sort_column_id : int -> Gtk.Tags.sort_type -> unit
      method set_sort_func :
        int -> (model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
      method sort_column_changed : unit -> unit
    end
  val model_sort : #GTree.model -> GTree.model_sort
  class model_filter :
    Gtk.tree_model_filter ->
    object
      val id : int
      val obj : Gtk.tree_model_filter
      method as_model : Gtk.tree_model
      method child_model : GTree.model
      method coerce : model
      method connect : GTree.model_signals
      method convert_child_iter_to_iter : Gtk.tree_iter -> Gtk.tree_iter
      method convert_child_path_to_path : Gtk.tree_path -> Gtk.tree_path
      method convert_iter_to_child_iter : Gtk.tree_iter -> Gtk.tree_iter
      method convert_path_to_child_path : Gtk.tree_path -> Gtk.tree_path
      method flags : GtkEnums.tree_model_flags list
      method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
      method get : row:Gtk.tree_iter -> column:'a column -> 'a
      method get_column_type : int -> Gobject.g_type
      method get_iter : Gtk.tree_path -> Gtk.tree_iter
      method get_iter_first : Gtk.tree_iter option
      method get_path : Gtk.tree_iter -> Gtk.tree_path
      method get_row_reference : Gtk.tree_path -> row_reference
      method iter_children :
        ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
      method iter_has_child : Gtk.tree_iter -> bool
      method iter_n_children : Gtk.tree_iter option -> int
      method iter_next : Gtk.tree_iter -> bool
      method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
      method misc : GObj.gobject_ops
      method n_columns : int
      method refilter : unit -> unit
      method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
      method set_visible_column : bool GTree.column -> unit
      method set_visible_func :
        (GTree.model -> Gtk.tree_iter -> bool) -> unit
      method virtual_root : Gtk.tree_path
    end
  val model_filter :
    ?virtual_root:Gtk.tree_path -> #GTree.model -> GTree.model_filter
  module Path :
    sig
      val create : int list -> Gtk.tree_path
      val copy : Gtk.tree_path -> Gtk.tree_path
      val get_indices : Gtk.tree_path -> int array
      val from_string : string -> Gtk.tree_path
      val to_string : Gtk.tree_path -> string
      val get_depth : Gtk.tree_path -> int
      val is_ancestor : Gtk.tree_path -> Gtk.tree_path -> bool
      val append_index : Gtk.tree_path -> int -> unit
      val prepend_index : Gtk.tree_path -> int -> unit
      val next : Gtk.tree_path -> unit
      val prev : Gtk.tree_path -> bool
      val up : Gtk.tree_path -> bool
      val down : Gtk.tree_path -> unit
    end
  class selection_signals :
    Gtk.tree_selection ->
    object ('a)
      method after : 'a
      method changed : callback:(unit -> unit) -> GtkSignal.id
    end
  class selection :
    Gtk.tree_selection ->
    object
      val obj : Gtk.tree_selection
      method connect : GTree.selection_signals
      method count_selected_rows : int
      method get_mode : Gtk.Tags.selection_mode
      method get_selected_rows : Gtk.tree_path list
      method iter_is_selected : Gtk.tree_iter -> bool
      method misc : GObj.gobject_ops
      method path_is_selected : Gtk.tree_path -> bool
      method select_all : unit -> unit
      method select_iter : Gtk.tree_iter -> unit
      method select_path : Gtk.tree_path -> unit
      method select_range : Gtk.tree_path -> Gtk.tree_path -> unit
      method set_mode : Gtk.Tags.selection_mode -> unit
      method set_select_function : (Gtk.tree_path -> bool -> bool) -> unit
      method unselect_all : unit -> unit
      method unselect_iter : Gtk.tree_iter -> unit
      method unselect_path : Gtk.tree_path -> unit
      method unselect_range : Gtk.tree_path -> Gtk.tree_path -> unit
    end
  class type cell_renderer =
    object method as_renderer : Gtk.cell_renderer Gtk.obj end
  class cell_layout :
    [> Gtk.cell_layout ] Gtk.obj ->
    object
      method add_attribute :
        #GTree.cell_renderer -> string -> 'GTree.column -> unit
      method clear : unit -> unit
      method clear_attributes : #GTree.cell_renderer -> unit
      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 unset_cell_data_func : #GTree.cell_renderer -> unit
    end
  class view_column_signals :
    [> `gtk | `treeviewcolumn ] Gtk.obj ->
    object ('a)
      method after : 'a
      method clicked : callback:(unit -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
    end
  class view_column :
    Gtk.tree_view_column Gtk.obj ->
    object
      val obj : Gtk.tree_view_column Gtk.obj
      method add_attribute : #cell_renderer -> string -> 'a column -> unit
      method alignment : float
      method as_column : Gtk.tree_view_column Gtk.obj
      method clear : unit -> unit
      method clear_attributes : #cell_renderer -> unit
      method clickable : bool
      method connect : GTree.view_column_signals
      method destroy : unit -> unit
      method fixed_width : int
      method get_oid : int
      method get_sort_column_id : int
      method max_width : int
      method min_width : int
      method misc : GObj.gobject_ops
      method pack :
        ?expand:bool -> ?from:Gtk.Tags.pack_type -> #cell_renderer -> unit
      method reorder : #cell_renderer -> int -> unit
      method reorderable : bool
      method resizable : bool
      method set_alignment : float -> unit
      method set_cell_data_func :
        #cell_renderer -> (model -> Gtk.tree_iter -> unit) -> unit
      method set_clickable : bool -> unit
      method set_fixed_width : int -> unit
      method set_max_width : int -> unit
      method set_min_width : int -> unit
      method set_reorderable : bool -> unit
      method set_resizable : bool -> unit
      method set_sizing : Gtk.Tags.tree_view_column_sizing -> unit
      method set_sort_column_id : int -> unit
      method set_sort_indicator : bool -> unit
      method set_sort_order : Gtk.Tags.sort_type -> unit
      method set_title : string -> unit
      method set_visible : bool -> unit
      method set_widget : GObj.widget option -> unit
      method sizing : Gtk.Tags.tree_view_column_sizing
      method sort_indicator : bool
      method sort_order : Gtk.Tags.sort_type
      method title : string
      method unset_cell_data_func : #cell_renderer -> unit
      method visible : bool
      method widget : GObj.widget option
      method width : int
    end
  val view_column :
    ?title:string ->
    ?renderer:#GTree.cell_renderer * (string * 'GTree.column) list ->
    unit -> GTree.view_column
  class view_signals :
    [> Gtk.tree_view ] Gtk.obj ->
    object ('a)
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method columns_changed : callback:(unit -> unit) -> GtkSignal.id
      method cursor_changed : callback:(unit -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method expand_collapse_cursor_row :
        callback:(logical:bool -> expand:bool -> all:bool -> bool) ->
        GtkSignal.id
      method move_cursor :
        callback:(Gtk.Tags.movement_step -> int -> bool) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
      method row_activated :
        callback:(Gtk.tree_path -> GTree.view_column -> unit) -> GtkSignal.id
      method row_collapsed :
        callback:(Gtk.tree_iter -> Gtk.tree_path -> unit) -> GtkSignal.id
      method row_expanded :
        callback:(Gtk.tree_iter -> Gtk.tree_path -> unit) -> GtkSignal.id
      method select_all : callback:(unit -> bool) -> GtkSignal.id
      method select_cursor_parent : callback:(unit -> bool) -> GtkSignal.id
      method select_cursor_row :
        callback:(start_editing:bool -> bool) -> GtkSignal.id
      method set_scroll_adjustments :
        callback:(GData.adjustment option -> GData.adjustment option -> unit) ->
        GtkSignal.id
      method start_interactive_search :
        callback:(unit -> bool) -> GtkSignal.id
      method test_collapse_row :
        callback:(Gtk.tree_iter -> Gtk.tree_path -> bool) -> GtkSignal.id
      method test_expand_row :
        callback:(Gtk.tree_iter -> Gtk.tree_path -> bool) -> GtkSignal.id
      method toggle_cursor_row : callback:(unit -> bool) -> GtkSignal.id
      method unselect_all : callback:(unit -> bool) -> GtkSignal.id
    end
  class view :
    Gtk.tree_view Gtk.obj ->
    object
      val obj : Gtk.tree_view Gtk.obj
      method add : GObj.widget -> unit
      method all_children : GObj.widget list
      method append_column : GTree.view_column -> int
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method children : GObj.widget list
      method coerce : GObj.widget
      method collapse_all : unit -> unit
      method collapse_row : Gtk.tree_path -> unit
      method connect : GTree.view_signals
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method enable_search : bool
      method event : GObj.event_ops
      method expand_all : unit -> unit
      method expand_row : ?all:bool -> Gtk.tree_path -> unit
      method expand_to_path : Gtk.tree_path -> unit
      method expander_column : GTree.view_column option
      method fixed_height_mode : bool
      method focus : GContainer.focus
      method get_cell_area :
        ?path:Gtk.tree_path ->
        ?col:GTree.view_column -> unit -> Gdk.Rectangle.t
      method get_column : int -> GTree.view_column
      method get_cursor :
        unit -> Gtk.tree_path option * GTree.view_column option
      method get_oid : int
      method get_path_at_pos :
        x:int ->
        y:int -> (Gtk.tree_path * GTree.view_column * int * int) option
      method hadjustment : GData.adjustment
      method headers_visible : bool
      method hover_expand : bool
      method hover_selection : bool
      method insert_column : GTree.view_column -> int -> int
      method misc : GObj.misc_ops
      method model : GTree.model
      method move_column :
        GTree.view_column -> after:GTree.view_column -> int
      method remove : GObj.widget -> unit
      method remove_column : GTree.view_column -> int
      method reorderable : bool
      method resize_mode : Gtk.Tags.resize_mode
      method row_activated : Gtk.tree_path -> GTree.view_column -> unit
      method row_expanded : Gtk.tree_path -> bool
      method rules_hint : bool
      method scroll_to_cell :
        ?align:float * float -> Gtk.tree_path -> GTree.view_column -> unit
      method scroll_to_point : int -> int -> unit
      method search_column : int
      method selection : GTree.selection
      method set_border_width : int -> unit
      method set_cursor :
        ?cell:#GTree.cell_renderer ->
        ?edit:bool -> Gtk.tree_path -> GTree.view_column -> unit
      method set_enable_search : bool -> unit
      method set_expander_column : GTree.view_column option -> unit
      method set_fixed_height_mode : bool -> unit
      method set_hadjustment : GData.adjustment -> unit
      method set_headers_clickable : bool -> unit
      method set_headers_visible : bool -> unit
      method set_hover_expand : bool -> unit
      method set_hover_selection : bool -> unit
      method set_model : GTree.model option -> unit
      method set_reorderable : bool -> 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_rules_hint : bool -> unit
      method set_search_column : int -> unit
      method set_vadjustment : GData.adjustment -> unit
      method vadjustment : GData.adjustment
    end
  val view :
    ?model:#GTree.model ->
    ?hadjustment:GData.adjustment ->
    ?vadjustment:GData.adjustment ->
    ?enable_search:bool ->
    ?fixed_height_mode:bool ->
    ?headers_clickable:bool ->
    ?headers_visible:bool ->
    ?reorderable:bool ->
    ?rules_hint:bool ->
    ?search_column:int ->
    ?border_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> GTree.view
  type cell_properties =
      [ `CELL_BACKGROUND of string
      | `CELL_BACKGROUND_GDK of Gdk.color
      | `CELL_BACKGROUND_SET of bool
      | `HEIGHT of int
      | `IS_EXPANDED of bool
      | `IS_EXPANDER of bool
      | `MODE of Gtk.Tags.cell_renderer_mode
      | `VISIBLE of bool
      | `WIDTH of int
      | `XALIGN of float
      | `XPAD of int
      | `YALIGN of float
      | `YPAD of int ]
  type cell_properties_pixbuf =
      [ `CELL_BACKGROUND of string
      | `CELL_BACKGROUND_GDK of Gdk.color
      | `CELL_BACKGROUND_SET of bool
      | `HEIGHT of int
      | `IS_EXPANDED of bool
      | `IS_EXPANDER of bool
      | `MODE of Gtk.Tags.cell_renderer_mode
      | `PIXBUF of GdkPixbuf.pixbuf
      | `PIXBUF_EXPANDER_CLOSED of GdkPixbuf.pixbuf
      | `PIXBUF_EXPANDER_OPEN of GdkPixbuf.pixbuf
      | `STOCK_DETAIL of string
      | `STOCK_ID of string
      | `STOCK_SIZE of Gtk.Tags.icon_size
      | `VISIBLE of bool
      | `WIDTH of int
      | `XALIGN of float
      | `XPAD of int
      | `YALIGN of float
      | `YPAD of int ]
  type cell_properties_text =
      [ `BACKGROUND of string
      | `BACKGROUND_GDK of Gdk.color
      | `BACKGROUND_SET of bool
      | `CELL_BACKGROUND of string
      | `CELL_BACKGROUND_GDK of Gdk.color
      | `CELL_BACKGROUND_SET of bool
      | `EDITABLE of bool
      | `FAMILY of string
      | `FONT of string
      | `FONT_DESC of Pango.font_description
      | `FOREGROUND of string
      | `FOREGROUND_GDK of Gdk.color
      | `FOREGROUND_SET of bool
      | `HEIGHT of int
      | `IS_EXPANDED of bool
      | `IS_EXPANDER of bool
      | `MARKUP of string
      | `MODE of Gtk.Tags.cell_renderer_mode
      | `RISE of int
      | `SCALE of Pango.Tags.scale
      | `SINGLE_PARAGRAPH_MODE of bool
      | `SIZE of int
      | `SIZE_POINTS of float
      | `STRETCH of Pango.Tags.stretch
      | `STRIKETHROUGH of bool
      | `STYLE of Pango.Tags.style
      | `TEXT of string
      | `UNDERLINE of Pango.Tags.underline
      | `VARIANT of Pango.Tags.variant
      | `VISIBLE of bool
      | `WEIGHT of Pango.Tags.weight
      | `WIDTH of int
      | `XALIGN of float
      | `XPAD of int
      | `YALIGN of float
      | `YPAD of int ]
  type cell_properties_toggle =
      [ `ACTIVATABLE of bool
      | `ACTIVE of bool
      | `CELL_BACKGROUND of string
      | `CELL_BACKGROUND_GDK of Gdk.color
      | `CELL_BACKGROUND_SET of bool
      | `HEIGHT of int
      | `INCONSISTENT of bool
      | `IS_EXPANDED of bool
      | `IS_EXPANDER of bool
      | `MODE of Gtk.Tags.cell_renderer_mode
      | `RADIO of bool
      | `VISIBLE of bool
      | `WIDTH of int
      | `XALIGN of float
      | `XPAD of int
      | `YALIGN of float
      | `YPAD of int ]
  type cell_properties_progress =
      [ `CELL_BACKGROUND of string
      | `CELL_BACKGROUND_GDK of Gdk.color
      | `CELL_BACKGROUND_SET of bool
      | `HEIGHT of int
      | `IS_EXPANDED of bool
      | `IS_EXPANDER of bool
      | `MODE of Gtk.Tags.cell_renderer_mode
      | `TEXT of string option
      | `VALUE of int
      | `VISIBLE of bool
      | `WIDTH of int
      | `XALIGN of float
      | `XPAD of int
      | `YALIGN of float
      | `YPAD of int ]
  type cell_properties_combo =
      [ `BACKGROUND of string
      | `BACKGROUND_GDK of Gdk.color
      | `BACKGROUND_SET of bool
      | `CELL_BACKGROUND of string
      | `CELL_BACKGROUND_GDK of Gdk.color
      | `CELL_BACKGROUND_SET of bool
      | `EDITABLE of bool
      | `FAMILY of string
      | `FONT of string
      | `FONT_DESC of Pango.font_description
      | `FOREGROUND of string
      | `FOREGROUND_GDK of Gdk.color
      | `FOREGROUND_SET of bool
      | `HAS_ENTRY of bool
      | `HEIGHT of int
      | `IS_EXPANDED of bool
      | `IS_EXPANDER of bool
      | `MARKUP of string
      | `MODE of Gtk.Tags.cell_renderer_mode
      | `MODEL of GTree.model option
      | `RISE of int
      | `SCALE of Pango.Tags.scale
      | `SINGLE_PARAGRAPH_MODE of bool
      | `SIZE of int
      | `SIZE_POINTS of float
      | `STRETCH of Pango.Tags.stretch
      | `STRIKETHROUGH of bool
      | `STYLE of Pango.Tags.style
      | `TEXT of string
      | `TEXT_COLUMN of string GTree.column
      | `UNDERLINE of Pango.Tags.underline
      | `VARIANT of Pango.Tags.variant
      | `VISIBLE of bool
      | `WEIGHT of Pango.Tags.weight
      | `WIDTH of int
      | `XALIGN of float
      | `XPAD of int
      | `YALIGN of float
      | `YPAD of int ]
  type cell_properties_accel =
      [ `ACCEL_MODE of GtkEnums.cell_renderer_accel_mode
      | `BACKGROUND of string
      | `BACKGROUND_GDK of Gdk.color
      | `BACKGROUND_SET of bool
      | `CELL_BACKGROUND of string
      | `CELL_BACKGROUND_GDK of Gdk.color
      | `CELL_BACKGROUND_SET of bool
      | `EDITABLE of bool
      | `FAMILY of string
      | `FONT of string
      | `FONT_DESC of Pango.font_description
      | `FOREGROUND of string
      | `FOREGROUND_GDK of Gdk.color
      | `FOREGROUND_SET of bool
      | `HEIGHT of int
      | `IS_EXPANDED of bool
      | `IS_EXPANDER of bool
      | `KEY of Gdk.keysym
      | `KEYCODE of int
      | `MARKUP of string
      | `MODE of Gtk.Tags.cell_renderer_mode
      | `MODS of GdkEnums.modifier list
      | `RISE of int
      | `SCALE of Pango.Tags.scale
      | `SINGLE_PARAGRAPH_MODE of bool
      | `SIZE of int
      | `SIZE_POINTS of float
      | `STRETCH of Pango.Tags.stretch
      | `STRIKETHROUGH of bool
      | `STYLE of Pango.Tags.style
      | `TEXT of string
      | `UNDERLINE of Pango.Tags.underline
      | `VARIANT of Pango.Tags.variant
      | `VISIBLE of bool
      | `WEIGHT of Pango.Tags.weight
      | `WIDTH of int
      | `XALIGN of float
      | `XPAD of int
      | `YALIGN of float
      | `YPAD of int ]
  class type ['a, 'b] cell_renderer_skel =
    object
      val obj : 'Gtk.obj
      method as_renderer : Gtk.cell_renderer Gtk.obj
      method destroy : unit -> unit
      method get_oid : int
      method get_property : ('a, 'c) Gobject.property -> 'c
      method set_properties : 'b list -> unit
    end
  class virtual ['a, 'b] cell_renderer_impl :
    'Gtk.obj ->
    object
      constraint 'a = [> Gtk.cell_renderer ]
      val obj : 'Gtk.obj
      method as_renderer : Gtk.cell_renderer Gtk.obj
      method destroy : unit -> unit
      method get_oid : int
      method get_property : ('a, 'c) Gobject.property -> 'c
      method private virtual param : '-> 'Gobject.param
      method set_properties : 'b list -> unit
    end
  class cell_renderer_pixbuf :
    Gtk.cell_renderer_pixbuf Gtk.obj ->
    object
      val obj : Gtk.cell_renderer_pixbuf Gtk.obj
      method as_renderer : Gtk.cell_renderer Gtk.obj
      method connect : GObj.gtkobj_signals_impl
      method destroy : unit -> unit
      method get_oid : int
      method get_property :
        (Gtk.cell_renderer_pixbuf, 'a) Gobject.property -> 'a
      method set_properties : cell_properties_pixbuf list -> unit
    end
  class cell_renderer_text_signals :
    Gtk.cell_renderer_text Gtk.obj ->
    object ('a)
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method edited :
        callback:(Gtk.tree_path -> string -> unit) -> GtkSignal.id
    end
  class cell_renderer_text :
    Gtk.cell_renderer_text Gtk.obj ->
    object
      val obj : Gtk.cell_renderer_text Gtk.obj
      method as_renderer : Gtk.cell_renderer Gtk.obj
      method connect : GTree.cell_renderer_text_signals
      method destroy : unit -> unit
      method get_oid : int
      method get_property :
        (Gtk.cell_renderer_text, 'a) Gobject.property -> 'a
      method set_fixed_height_from_font : int -> unit
      method set_properties : cell_properties_text list -> unit
    end
  class cell_renderer_toggle_signals :
    Gtk.cell_renderer_toggle Gtk.obj ->
    object ('a)
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method toggled : callback:(Gtk.tree_path -> unit) -> GtkSignal.id
    end
  class cell_renderer_toggle :
    Gtk.cell_renderer_toggle Gtk.obj ->
    object
      val obj : Gtk.cell_renderer_toggle Gtk.obj
      method as_renderer : Gtk.cell_renderer Gtk.obj
      method connect : GTree.cell_renderer_toggle_signals
      method destroy : unit -> unit
      method get_oid : int
      method get_property :
        (Gtk.cell_renderer_toggle, 'a) Gobject.property -> 'a
      method set_properties : cell_properties_toggle list -> unit
    end
  class cell_renderer_progress :
    Gtk.cell_renderer_progress Gtk.obj ->
    object
      val obj : Gtk.cell_renderer_progress Gtk.obj
      method as_renderer : Gtk.cell_renderer Gtk.obj
      method connect : GObj.gtkobj_signals_impl
      method destroy : unit -> unit
      method get_oid : int
      method get_property :
        (Gtk.cell_renderer_progress, 'a) Gobject.property -> 'a
      method set_properties : cell_properties_progress list -> unit
    end
  class cell_renderer_combo :
    Gtk.cell_renderer_combo Gtk.obj ->
    object
      val obj : Gtk.cell_renderer_combo Gtk.obj
      method as_renderer : Gtk.cell_renderer Gtk.obj
      method connect : GTree.cell_renderer_text_signals
      method destroy : unit -> unit
      method get_oid : int
      method get_property :
        (Gtk.cell_renderer_combo, 'a) Gobject.property -> 'a
      method set_fixed_height_from_font : int -> unit
      method set_properties : cell_properties_combo list -> unit
    end
  class cell_renderer_accel_signals :
    Gtk.cell_renderer_accel Gtk.obj ->
    object ('a)
      method accel_cleared : callback:(Gtk.tree_path -> unit) -> GtkSignal.id
      method accel_edited :
        callback:(Gtk.tree_path ->
                  accel_key:int ->
                  accel_mods:int -> hardware_keycode:int -> unit) ->
        GtkSignal.id
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method edited :
        callback:(Gtk.tree_path -> string -> unit) -> GtkSignal.id
    end
  class cell_renderer_accel :
    Gtk.cell_renderer_accel Gtk.obj ->
    object
      val obj : Gtk.cell_renderer_accel Gtk.obj
      method as_renderer : Gtk.cell_renderer Gtk.obj
      method connect : GTree.cell_renderer_accel_signals
      method destroy : unit -> unit
      method get_oid : int
      method get_property :
        (Gtk.cell_renderer_accel, 'a) Gobject.property -> 'a
      method set_properties : cell_properties_accel list -> unit
    end
  val cell_renderer_pixbuf :
    GTree.cell_properties_pixbuf list -> GTree.cell_renderer_pixbuf
  val cell_renderer_text :
    GTree.cell_properties_text list -> GTree.cell_renderer_text
  val cell_renderer_toggle :
    GTree.cell_properties_toggle list -> GTree.cell_renderer_toggle
  val cell_renderer_progress :
    GTree.cell_properties_progress list -> GTree.cell_renderer_progress
  val cell_renderer_combo :
    GTree.cell_properties_combo list -> GTree.cell_renderer_combo
  val cell_renderer_accel :
    GTree.cell_properties_accel list -> GTree.cell_renderer_accel
  class icon_view_signals :
    [> Gtk.icon_view ] Gtk.obj ->
    object ('a)
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method item_activated :
        callback:(Gtk.tree_path -> unit) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
      method selection_changed : callback:(unit -> unit) -> GtkSignal.id
    end
  class icon_view :
    ([> Gtk.icon_view ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method add : GObj.widget -> unit
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method children : GObj.widget list
      method coerce : GObj.widget
      method column_spacing : int
      method columns : int
      method connect : GTree.icon_view_signals
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method event : GObj.event_ops
      method focus : GContainer.focus
      method get_oid : int
      method get_path_at_pos : int -> int -> Gtk.tree_path
      method get_selected_items : Gtk.tree_path list
      method item_activated : Gtk.tree_path -> unit
      method item_width : int
      method margin : int
      method misc : GObj.misc_ops
      method model : GTree.model
      method orientation : GtkEnums.orientation
      method path_is_selected : Gtk.tree_path -> bool
      method remove : GObj.widget -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method row_spacing : int
      method select_all : unit -> unit
      method select_path : Gtk.tree_path -> unit
      method selected_foreach : (Gtk.tree_path -> unit) -> unit
      method selection_mode : GtkEnums.selection_mode
      method set_border_width : int -> unit
      method set_column_spacing : int -> unit
      method set_columns : int -> unit
      method set_item_width : int -> unit
      method set_margin : int -> unit
      method set_markup_column : string GTree.column -> unit
      method set_model : GTree.model option -> unit
      method set_orientation : GtkEnums.orientation -> unit
      method set_pixbuf_column : GdkPixbuf.pixbuf GTree.column -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_row_spacing : int -> unit
      method set_selection_mode : GtkEnums.selection_mode -> unit
      method set_spacing : int -> unit
      method set_text_column : string GTree.column -> unit
      method spacing : int
      method unselect_all : unit -> unit
      method unselect_path : Gtk.tree_path -> unit
    end
  val icon_view :
    ?model:#GTree.model ->
    ?columns:int ->
    ?orientation:GtkEnums.orientation ->
    ?selection_mode:GtkEnums.selection_mode ->
    ?border_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> GTree.icon_view
  class type virtual ['a, 'b, 'c, 'd, 'e] custom_tree_model_type =
    object
      val id : int
      val obj : 'a
      method as_model : Gtk.tree_model
      method coerce : model
      method connect : GTree.model_signals
      method virtual custom_decode_iter : '-> '-> '-> 'b
      method virtual custom_encode_iter : '-> 'c * 'd * 'e
      method custom_flags : GtkEnums.tree_model_flags list
      method custom_get_column_type : int -> Gobject.g_type
      method virtual custom_get_iter : Gtk.tree_path -> 'b option
      method virtual custom_get_path : '-> Gtk.tree_path
      method custom_get_value : '-> int -> Gobject.g_value -> unit
      method virtual custom_iter_children : 'b option -> 'b option
      method virtual custom_iter_has_child : '-> bool
      method virtual custom_iter_n_children : 'b option -> int
      method virtual custom_iter_next : '-> 'b option
      method virtual custom_iter_nth_child : 'b option -> int -> 'b option
      method virtual custom_iter_parent : '-> 'b option
      method custom_n_columns : int
      method custom_ref_node : '-> unit
      method custom_row_changed : Gtk.tree_path -> '-> unit
      method custom_row_deleted : Gtk.tree_path -> unit
      method custom_row_has_child_toggled : Gtk.tree_path -> '-> unit
      method custom_row_inserted : Gtk.tree_path -> '-> unit
      method custom_rows_reordered :
        Gtk.tree_path -> 'b option -> int array -> unit
      method custom_unref_node : '-> unit
      method virtual custom_value :
        Gobject.g_type -> '-> column:int -> Gobject.basic
      method flags : GtkEnums.tree_model_flags list
      method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
      method get : row:Gtk.tree_iter -> column:'f column -> 'f
      method get_column_type : int -> Gobject.g_type
      method get_iter : Gtk.tree_path -> Gtk.tree_iter
      method get_iter_first : Gtk.tree_iter option
      method get_path : Gtk.tree_iter -> Gtk.tree_path
      method get_row_reference : Gtk.tree_path -> row_reference
      method iter_children :
        ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
      method iter_has_child : Gtk.tree_iter -> bool
      method iter_n_children : Gtk.tree_iter option -> int
      method iter_next : Gtk.tree_iter -> bool
      method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
      method misc : GObj.gobject_ops
      method n_columns : int
      method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
    end
  class virtual ['a, 'b, 'c, 'd] custom_tree_model :
    GTree.column_list ->
    [Gtk.tree_model_custom, 'a, 'b, 'c, 'd] custom_tree_model_type
end