sig
  val cast : 'Gobject.obj -> Gtk.tree_view Gtk.obj
  module P :
    sig
      val enable_search : ([> `treeview ], bool) Gobject.property
      val expander_column :
        ([> `treeview ], Gtk.tree_view_column Gtk.obj option)
        Gobject.property
      val fixed_height_mode : ([> `treeview ], bool) Gobject.property
      val hadjustment :
        ([> `treeview ], Gtk.adjustment Gtk.obj) Gobject.property
      val headers_clickable : ([> `treeview ], bool) Gobject.property
      val headers_visible : ([> `treeview ], bool) Gobject.property
      val model : ([> `treeview ], Gtk.tree_model option) Gobject.property
      val reorderable : ([> `treeview ], bool) Gobject.property
      val rules_hint : ([> `treeview ], bool) Gobject.property
      val search_column : ([> `treeview ], int) Gobject.property
      val vadjustment :
        ([> `treeview ], Gtk.adjustment Gtk.obj) Gobject.property
      val hover_expand : ([> `treeview ], bool) Gobject.property
      val hover_selection : ([> `treeview ], bool) Gobject.property
    end
  module S :
    sig
      val columns_changed : ([> `treeview ], unit -> unit) GtkSignal.t
      val cursor_changed : ([> `treeview ], unit -> unit) GtkSignal.t
      val expand_collapse_cursor_row :
        ([> `treeview ], logical:bool -> expand:bool -> all:bool -> bool)
        GtkSignal.t
      val move_cursor :
        ([> `treeview ], GtkEnums.movement_step -> int -> bool) GtkSignal.t
      val row_activated :
        ([> `treeview ],
         Gtk.tree_path -> Gtk.tree_view_column Gtk.obj -> unit)
        GtkSignal.t
      val row_collapsed :
        ([> `treeview ], Gtk.tree_iter -> Gtk.tree_path -> unit) GtkSignal.t
      val row_expanded :
        ([> `treeview ], Gtk.tree_iter -> Gtk.tree_path -> unit) GtkSignal.t
      val select_all : ([> `treeview ], unit -> bool) GtkSignal.t
      val select_cursor_parent : ([> `treeview ], unit -> bool) GtkSignal.t
      val select_cursor_row :
        ([> `treeview ], start_editing:bool -> bool) GtkSignal.t
      val set_scroll_adjustments :
        ([> `treeview ],
         Gtk.adjustment Gtk.obj option ->
         Gtk.adjustment Gtk.obj option -> unit)
        GtkSignal.t
      val start_interactive_search :
        ([> `treeview ], unit -> bool) GtkSignal.t
      val test_collapse_row :
        ([> `treeview ], Gtk.tree_iter -> Gtk.tree_path -> bool) GtkSignal.t
      val test_expand_row :
        ([> `treeview ], Gtk.tree_iter -> Gtk.tree_path -> bool) GtkSignal.t
      val toggle_cursor_row : ([> `treeview ], unit -> bool) GtkSignal.t
      val unselect_all : ([> `treeview ], unit -> bool) GtkSignal.t
    end
  val create : Gtk.tree_view Gobject.param list -> Gtk.tree_view Gtk.obj
  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 -> '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"
  external scroll_to_cell :
    [> `treeview ] Gtk.obj ->
    Gtk.tree_path ->
    [> `treeviewcolumn ] Gtk.obj -> ?align:float * float -> unit
    = "ml_gtk_tree_view_scroll_to_cell"
  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"
end