sig
  val cast : 'Gobject.obj -> Gtk.tree_view Gtk.obj
  module P = GtkTreeProps.TreeView.P
  module S = GtkTreeProps.TreeView.S
  val create : Gtk.tree_view Gobject.param list -> Gtk.tree_view Gtk.obj
  external get_visible_range :
    [> `treeview ] Gtk.obj -> (Gtk.tree_path * Gtk.tree_path) option
    = "ml_gtk_tree_view_get_visible_range"
  val make_params :
    cont:(([> `treeview ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?enable_search:bool ->
    ?fixed_height_mode:bool ->
    ?hadjustment:Gtk.adjustment Gtk.obj ->
    ?headers_clickable:bool ->
    ?headers_visible:bool ->
    ?model:Gtk.tree_model ->
    ?reorderable:bool ->
    ?rules_hint:bool ->
    ?search_column:int ->
    ?vadjustment:Gtk.adjustment Gtk.obj -> ?tooltip_column:int -> 'b
  external get_selection : [> `treeview ] Gtk.obj -> Gtk.tree_selection
    = "ml_gtk_tree_view_get_selection"
  external columns_autosize : [> `treeview ] Gtk.obj -> unit
    = "ml_gtk_tree_view_columns_autosize"
  external append_column :
    [> `treeview ] Gtk.obj -> [> `treeviewcolumn ] Gtk.obj -> int
    = "ml_gtk_tree_view_append_column"
  external remove_column :
    [> `treeview ] Gtk.obj -> [> `treeviewcolumn ] Gtk.obj -> int
    = "ml_gtk_tree_view_remove_column"
  external insert_column :
    [> `treeview ] Gtk.obj -> [> `treeviewcolumn ] Gtk.obj -> int -> int
    = "ml_gtk_tree_view_insert_column"
  external get_column :
    [> `treeview ] Gtk.obj -> int -> Gtk.tree_view_column Gtk.obj
    = "ml_gtk_tree_view_get_column"
  external move_column_after :
    [> `treeview ] Gtk.obj ->
    [> `treeviewcolumn ] Gtk.obj -> [> `treeviewcolumn ] Gtk.obj -> int
    = "ml_gtk_tree_view_move_column_after"
  external scroll_to_point : [> `treeview ] Gtk.obj -> int -> int -> unit
    = "ml_gtk_tree_view_scroll_to_point"
  val scroll_to_cell :
    [> `treeview ] Gtk.obj ->
    ?align:float * float ->
    Gtk.tree_path -> [> `treeviewcolumn ] Gtk.obj -> unit
  external row_activated :
    [> `treeview ] Gtk.obj ->
    Gtk.tree_path -> [> `treeviewcolumn ] Gtk.obj -> unit
    = "ml_gtk_tree_view_row_activated"
  external expand_all : [> `treeview ] Gtk.obj -> unit
    = "ml_gtk_tree_view_expand_all"
  external collapse_all : [> `treeview ] Gtk.obj -> unit
    = "ml_gtk_tree_view_collapse_all"
  external expand_row :
    [> `treeview ] Gtk.obj -> Gtk.tree_path -> all:bool -> unit
    = "ml_gtk_tree_view_expand_row"
  external expand_to_path : [> `treeview ] Gtk.obj -> Gtk.tree_path -> unit
    = "ml_gtk_tree_view_expand_to_path"
  external collapse_row : [> `treeview ] Gtk.obj -> Gtk.tree_path -> unit
    = "ml_gtk_tree_view_collapse_row"
  external row_expanded : [> `treeview ] Gtk.obj -> Gtk.tree_path -> bool
    = "ml_gtk_tree_view_row_expanded"
  external set_cursor :
    [> `treeview ] Gtk.obj ->
    Gtk.tree_path -> [> `treeviewcolumn ] Gtk.obj -> edit:bool -> unit
    = "ml_gtk_tree_view_set_cursor"
  external set_cursor_on_cell :
    [> `treeview ] Gtk.obj ->
    Gtk.tree_path ->
    [> `treeviewcolumn ] Gtk.obj ->
    [> `cellrenderer ] Gtk.obj -> edit:bool -> unit
    = "ml_gtk_tree_view_set_cursor_on_cell"
  external get_cursor :
    [> `treeview ] Gtk.obj ->
    Gtk.tree_path option * Gtk.tree_view_column Gtk.obj option
    = "ml_gtk_tree_view_get_cursor"
  external get_path_at_pos :
    [> `treeview ] Gtk.obj ->
    x:int ->
    y:int ->
    (Gtk.tree_path * Gtk.tree_view_column Gtk.obj * int * int) option
    = "ml_gtk_tree_view_get_path_at_pos"
  external get_cell_area :
    [> `treeview ] Gtk.obj ->
    ?path:Gtk.tree_path ->
    ?col:Gtk.tree_view_column Gtk.obj -> unit -> Gdk.Rectangle.t
    = "ml_gtk_tree_view_get_cell_area"
  external set_row_separator_func :
    [> `treeview ] Gtk.obj ->
    (Gtk.tree_model -> Gtk.tree_iter -> bool) option -> unit
    = "ml_gtk_tree_view_set_row_separator_func"
  module Tooltip :
    sig
      external set_cell :
        [> `treeview ] Gtk.obj ->
        Gtk.tooltip ->
        ?path:Gtk.tree_path ->
        ?col:Gtk.tree_view_column Gtk.obj ->
        ?cell:[> `cellrenderer ] Gtk.obj -> unit -> unit
        = "ml_gtk_tree_view_set_tooltip_cell_bc"
        "ml_gtk_tree_view_set_tooltip_cell"
      external set_row :
        [> `treeview ] Gtk.obj -> Gtk.tooltip -> Gtk.tree_path -> unit
        = "ml_gtk_tree_view_set_tooltip_row"
      external get_context :
        [> `treeview ] Gtk.obj ->
        x:int ->
        y:int ->
        kbd:bool ->
        int * int * (Gtk.tree_model * Gtk.tree_path * Gtk.tree_iter) option
        = "ml_gtk_tree_view_get_tooltip_context"
      external get_column : [> `treeview ] Gtk.obj -> int
        = "ml_gtk_tree_view_get_tooltip_column"
      external set_column : [> `treeview ] Gtk.obj -> int -> unit
        = "ml_gtk_tree_view_set_tooltip_column"
    end
  module Dnd :
    sig
      external get_dest_row_at_pos :
        [> `treeview ] Gtk.obj ->
        x:int ->
        y:int -> (Gtk.tree_path * GtkEnums.tree_view_drop_position) option
        = "ml_gtk_tree_view_get_dest_row_at_pos"
      external enable_model_drag_dest :
        [> `treeview ] Gtk.obj ->
        targets:Gtk.target_entry array ->
        actions:Gdk.Tags.drag_action list -> unit
        = "ml_gtk_tree_view_enable_model_drag_dest"
      external unset_rows_drag_dest : [> `treeview ] Gtk.obj -> unit
        = "ml_gtk_tree_view_unset_rows_drag_dest"
      external enable_model_drag_source :
        [> `treeview ] Gtk.obj ->
        ?modi:Gdk.Tags.modifier list ->
        targets:Gtk.target_entry array ->
        actions:Gdk.Tags.drag_action list -> unit
        = "ml_gtk_tree_view_enable_model_drag_source"
      external unset_rows_drag_source : [> `treeview ] Gtk.obj -> unit
        = "ml_gtk_tree_view_unset_rows_drag_source"
    end
end