Fix GtkTree.IconView.get_path_at_pos
[lablgtk/lablgtk.git] / src / gTree.mli
1 (**************************************************************************)
2 (*                Lablgtk                                                 *)
3 (*                                                                        *)
4 (*    This program is free software; you can redistribute it              *)
5 (*    and/or modify it under the terms of the GNU Library General         *)
6 (*    Public License as published by the Free Software Foundation         *)
7 (*    version 2, with the exception described in file COPYING which       *)
8 (*    comes with the library.                                             *)
9 (*                                                                        *)
10 (*    This program is distributed in the hope that it will be useful,     *)
11 (*    but WITHOUT ANY WARRANTY; without even the implied warranty of      *)
12 (*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       *)
13 (*    GNU Library General Public License for more details.                *)
14 (*                                                                        *)
15 (*    You should have received a copy of the GNU Library General          *)
16 (*    Public License along with this program; if not, write to the        *)
17 (*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,         *)
18 (*    Boston, MA 02111-1307  USA                                          *)
19 (*                                                                        *)
20 (*                                                                        *)
21 (**************************************************************************)
22
23 (* $Id$ *)
24
25 open Gobject
26 open Gtk
27 open GObj
28 open GContainer
29
30 (** Tree and list widgets
31    @gtkdoc gtk TreeWidget *)
32
33 (** {3 New GtkTreeView/Model framework} *)
34
35 type 'a column = {index: int; conv: 'a data_conv; creator: int}
36
37 class column_list :
38   object
39     method add : 'a data_conv -> 'a column
40     method id : int
41     method types : g_type list
42     method lock : unit -> unit
43   end
44
45 class row_reference : Gtk.row_reference -> model:[> `treemodel ] obj ->
46   object
47     method as_ref : Gtk.row_reference
48     method iter : tree_iter
49     method path : tree_path
50     method valid : bool
51   end
52
53 (** {4 Models} *)
54
55 (** @gtkdoc gtk GtkTreeModel *)
56 class model_signals : [> `treemodel] obj ->
57   object ('a)
58     method after : 'a
59     method row_changed :
60       callback:(tree_path -> tree_iter -> unit) -> GtkSignal.id
61     method row_deleted : callback:(tree_path -> unit) -> GtkSignal.id
62     method row_has_child_toggled :
63       callback:(tree_path -> tree_iter -> unit) -> GtkSignal.id
64     method row_inserted :
65       callback:(tree_path -> tree_iter -> unit) -> GtkSignal.id
66     method rows_reordered :
67       callback:(tree_path -> tree_iter -> unit) -> GtkSignal.id
68   end
69
70 val model_ids : (int,int) Hashtbl.t
71
72 (** @gtkdoc gtk GtkTreeModel *)
73 class model : ([> `treemodel] as 'a) obj ->
74   object
75     val obj : 'a obj
76     val id : int
77     method as_model : Gtk.tree_model
78     method misc : gobject_ops
79     method coerce : model
80     method flags : GtkEnums.tree_model_flags list
81     method n_columns : int
82     method get_column_type : int -> Gobject.g_type
83     method get_iter : tree_path -> tree_iter
84     method get_path : tree_iter -> tree_path
85     method get_row_reference : tree_path -> row_reference
86     method get : row:tree_iter -> column:'b column -> 'b
87     method get_iter_first : tree_iter option
88     method iter_next : tree_iter -> bool
89     method iter_has_child : tree_iter -> bool
90     method iter_n_children : tree_iter option -> int
91     method iter_children : ?nth:int -> tree_iter option -> tree_iter 
92       (** @raise Invalid_argument if arguments do not designate a valid node *)
93     method iter_parent : tree_iter -> tree_iter option
94     method foreach : (tree_path -> tree_iter -> bool) -> unit
95     method row_changed : tree_path -> tree_iter -> unit
96   end
97
98 (** @gtkdoc gtk GtkTreeSortable *)
99 class tree_sortable_signals : ([> `treesortable|`treemodel] as 'a) obj ->
100   object
101     inherit model_signals
102     method sort_column_changed : callback:(unit -> unit) -> GtkSignal.id
103   end
104
105 (** @gtkdoc gtk GtkTreeSortable *)
106 class tree_sortable : ([> `treesortable|`treemodel] as 'a) obj ->
107   object
108     inherit model
109     val obj : 'a obj
110     method connect : tree_sortable_signals
111     method sort_column_changed : unit -> unit
112     method get_sort_column_id : (int * Gtk.Tags.sort_type) option
113     method set_sort_column_id : int -> Gtk.Tags.sort_type -> unit
114     method set_sort_func  : int -> (model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
115     method set_default_sort_func : (model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
116     method has_default_sort_func : bool
117   end
118
119 (** Special value for the [#set_sort_column_id] method of {!GTree.tree_sortable}. *)
120
121 val default_sort_column_id  : int
122 val unsorted_sort_column_id : int
123
124 (** @gtkdoc gtk GtkTreeStore *)
125 class tree_store : Gtk.tree_store ->
126   object
127     inherit tree_sortable
128     val obj : Gtk.tree_store
129     method append : ?parent:tree_iter -> unit -> tree_iter
130     method clear : unit -> unit
131     method insert : ?parent:tree_iter -> int -> tree_iter
132     method insert_after : ?parent:tree_iter -> tree_iter -> tree_iter
133     method insert_before : ?parent:tree_iter -> tree_iter -> tree_iter
134     method is_ancestor : iter:tree_iter -> descendant:tree_iter -> bool
135     method iter_depth : tree_iter -> int
136     method iter_is_valid : tree_iter -> bool (** @since GTK 2.2 *)
137     method move_after : iter:tree_iter -> pos:tree_iter -> bool (** @since GTK 2.2 *)
138     method move_before : iter:tree_iter -> pos:tree_iter -> bool (** @since GTK 2.2 *)
139     method prepend : ?parent:tree_iter -> unit -> tree_iter
140     method remove : tree_iter -> bool
141     method set : row:tree_iter -> column:'a column -> 'a -> unit
142     method swap : tree_iter -> tree_iter -> bool (** @since GTK 2.2 *)
143   end
144
145 (** @gtkdoc gtk GtkTreeStore *)
146 val tree_store : column_list -> tree_store
147
148 (** @gtkdoc gtk GtkListStore *)
149 class list_store : Gtk.list_store ->
150   object
151     inherit tree_sortable
152     val obj : Gtk.list_store
153     method append : unit -> tree_iter
154     method clear : unit -> unit
155     method insert : int -> tree_iter
156     method insert_after : tree_iter -> tree_iter
157     method insert_before : tree_iter -> tree_iter
158     method iter_is_valid : tree_iter -> bool (** @since GTK 2.2 *)
159     method move_after : iter:tree_iter -> pos:tree_iter -> bool (** @since GTK 2.2 *)
160     method move_before : iter:tree_iter -> pos:tree_iter -> bool (** @since GTK 2.2 *)
161     method prepend : unit -> tree_iter
162     method remove : tree_iter -> bool
163     method set : row:tree_iter -> column:'a column -> 'a -> unit
164     method swap : tree_iter -> tree_iter -> bool (** @since GTK 2.2 *)
165   end
166
167 (** @gtkdoc gtk GtkListStore *)
168 val list_store : column_list -> list_store
169
170 (** Convenience function to map a caml list into a {!GTree.list_store} with a single column *)
171 val store_of_list : 'a Gobject.data_conv -> 'a list -> list_store * 'a column
172
173 (** @gtkdoc gtk GtkTreeModelSort *)
174 class model_sort : Gtk.tree_model_sort ->
175   object
176     inherit tree_sortable
177     val obj : Gtk.tree_model_sort
178     method model : model
179     method convert_child_path_to_path : Gtk.tree_path -> Gtk.tree_path
180     method convert_child_iter_to_iter : Gtk.tree_iter -> Gtk.tree_iter
181     method convert_path_to_child_path : Gtk.tree_path -> Gtk.tree_path
182     method convert_iter_to_child_iter : Gtk.tree_iter -> Gtk.tree_iter
183     method reset_default_sort_func : unit -> unit
184     method iter_is_valid : Gtk.tree_iter -> bool (** @since GTK 2.2 *)
185   end
186
187 (** @gtkdoc gtk GtkTreeModelSort *)
188 val model_sort : #model -> model_sort
189     
190 (** @since GTK 2.4
191     @gtkdoc gtk GtkTreeModelFilter *)
192 class model_filter : Gtk.tree_model_filter ->
193   object
194     inherit model
195     val obj : Gtk.tree_model_filter
196     method connect : model_signals
197     method child_model  : model
198     method virtual_root : Gtk.tree_path
199     method set_visible_func : (model -> Gtk.tree_iter -> bool) -> unit
200     method set_visible_column : bool column -> unit
201     method convert_child_path_to_path : Gtk.tree_path -> Gtk.tree_path
202     method convert_child_iter_to_iter : Gtk.tree_iter -> Gtk.tree_iter
203     method convert_path_to_child_path : Gtk.tree_path -> Gtk.tree_path
204     method convert_iter_to_child_iter : Gtk.tree_iter -> Gtk.tree_iter
205     method refilter : unit -> unit
206   end
207
208 (** @since GTK 2.4
209     @gtkdoc gtk GtkTreeModelFilter *)
210 val model_filter : ?virtual_root:Gtk.tree_path -> #model -> model_filter
211
212
213 module Path : sig
214   val create : int list -> Gtk.tree_path
215   val copy : Gtk.tree_path -> Gtk.tree_path
216   val get_indices : Gtk.tree_path -> int array
217   val from_string : string -> Gtk.tree_path
218   val to_string : Gtk.tree_path -> string
219   val get_depth : Gtk.tree_path -> int
220   val is_ancestor : Gtk.tree_path -> Gtk.tree_path -> bool
221
222   (** {5 Mutating functions} *)
223
224   val append_index : Gtk.tree_path -> int -> unit
225   val prepend_index : Gtk.tree_path -> int -> unit
226   val next : Gtk.tree_path -> unit
227   val prev : Gtk.tree_path -> bool
228   val up : Gtk.tree_path -> bool
229   val down : Gtk.tree_path -> unit
230 end
231
232 (** {4 Selection} *)
233
234 (** @gtkdoc gtk GtkTreeSelection *)
235 class selection_signals : tree_selection ->
236   object ('a)
237     method after : 'a
238     method changed : callback:(unit -> unit) -> GtkSignal.id
239   end
240
241 (** The selection object for {!GTree.view}
242    @gtkdoc gtk GtkTreeSelection *)
243 class selection :
244   Gtk.tree_selection ->
245   object
246     val obj : Gtk.tree_selection
247     method connect : selection_signals
248     method misc : gobject_ops
249     method count_selected_rows : int (** @since GTK 2.2 *)
250     method get_mode : Tags.selection_mode
251     method get_selected_rows : tree_path list
252     method iter_is_selected : tree_iter -> bool
253     method path_is_selected : tree_path -> bool
254     method select_all : unit -> unit
255     method select_iter : tree_iter -> unit
256     method select_path : tree_path -> unit
257     method select_range : tree_path -> tree_path -> unit
258     method set_mode : Tags.selection_mode -> unit
259     method set_select_function : (tree_path -> bool -> bool) -> unit
260     method unselect_all : unit -> unit
261     method unselect_iter : tree_iter -> unit
262     method unselect_path : tree_path -> unit
263     method unselect_range : tree_path -> tree_path -> unit (** @since GTK 2.2 *)
264   end
265
266 (** {4 Views} *)
267
268 class type cell_renderer = object
269   method as_renderer : Gtk.cell_renderer obj
270 end
271
272 (** @since GTK 2.4
273     @gtkdoc gtk GtkCellLayout *)
274 class cell_layout : ([> Gtk.cell_layout] as 'a) Gtk.obj ->
275   object
276     method pack :
277       ?expand:bool -> 
278       ?from:Tags.pack_type -> #cell_renderer -> unit
279    (** @param expand default value is [false]
280        @param from default value is [`START] *)
281     method reorder : #cell_renderer -> int -> unit
282     method clear : unit -> unit
283     method add_attribute : #cell_renderer -> string -> 'b column -> unit
284     method clear_attributes : #cell_renderer -> unit
285     method set_cell_data_func   : #cell_renderer -> (model -> Gtk.tree_iter -> unit) -> unit
286     method unset_cell_data_func : #cell_renderer -> unit
287   end
288
289 (** @gtkdoc gtk GtkTreeViewColumn *)
290 class view_column_signals : [> `gtk | `treeviewcolumn] obj ->
291   object
292     inherit GObj.gtkobj_signals
293     method clicked : callback:(unit -> unit) -> GtkSignal.id
294   end
295
296 (** A visible column in a {!GTree.view} widget
297    @gtkdoc gtk GtkTreeViewColumn *)
298 class view_column : tree_view_column obj ->
299   object
300     inherit GObj.gtkobj
301     inherit cell_layout
302     val obj : tree_view_column obj
303     method as_column : Gtk.tree_view_column obj
304     method misc : GObj.gobject_ops
305     method alignment : float
306     method clickable : bool
307     method connect : view_column_signals
308     method fixed_width : int
309     method get_sort_column_id : int
310     method max_width : int
311     method min_width : int
312     method reorderable : bool
313     method resizable : bool
314     method set_alignment : float -> unit
315     method set_clickable : bool -> unit
316     method set_fixed_width : int -> unit
317     method set_max_width : int -> unit
318     method set_min_width : int -> unit
319     method set_reorderable : bool -> unit
320     method set_resizable : bool -> unit
321     method set_sizing : Tags.tree_view_column_sizing -> unit
322     method set_sort_column_id : int -> unit
323     method set_sort_indicator : bool -> unit
324     method set_sort_order : Tags.sort_type -> unit
325     method set_title : string -> unit
326     method set_visible : bool -> unit
327     method set_widget : widget option -> unit
328     method sizing : Tags.tree_view_column_sizing
329     method sort_indicator : bool
330     method sort_order : Tags.sort_type
331     method title : string
332     method visible : bool
333     method widget : widget option
334     method width : int
335   end
336
337 (** @gtkdoc gtk GtkTreeViewColumn *)
338 val view_column :
339   ?title:string ->
340   ?renderer:(#cell_renderer * (string * 'a column) list) ->
341   unit -> view_column
342
343 (** @gtkdoc gtk GtkTreeView *)
344 class view_signals : [> tree_view] obj ->
345   object ('a)
346     inherit GContainer.container_signals
347     method columns_changed : callback:(unit -> unit) -> GtkSignal.id
348     method cursor_changed : callback:(unit -> unit) -> GtkSignal.id
349     method expand_collapse_cursor_row :
350       callback:(logical:bool -> expand:bool -> all:bool -> bool) ->
351       GtkSignal.id
352     method move_cursor :
353       callback:(Tags.movement_step -> int -> bool) -> GtkSignal.id
354     method row_activated :
355       callback:(tree_path -> view_column -> unit) -> GtkSignal.id
356     method row_collapsed :
357       callback:(tree_iter -> tree_path -> unit) -> GtkSignal.id
358     method row_expanded :
359       callback:(tree_iter -> tree_path -> unit) -> GtkSignal.id
360     method select_all : callback:(unit -> bool) -> GtkSignal.id
361     method select_cursor_parent : callback:(unit -> bool) -> GtkSignal.id
362     method select_cursor_row :
363       callback:(start_editing:bool -> bool) -> GtkSignal.id
364     method set_scroll_adjustments :
365       callback:(GData.adjustment option -> GData.adjustment option -> unit) ->
366       GtkSignal.id
367     method start_interactive_search : callback:(unit -> bool) -> GtkSignal.id
368     method test_collapse_row :
369       callback:(tree_iter -> tree_path -> bool) -> GtkSignal.id
370     method test_expand_row :
371       callback:(tree_iter -> tree_path -> bool) -> GtkSignal.id
372     method toggle_cursor_row : callback:(unit -> bool) -> GtkSignal.id
373     method unselect_all : callback:(unit -> bool) -> GtkSignal.id
374     method notify_enable_search : callback:(bool -> unit) -> GtkSignal.id
375     method notify_enable_tree_lines : callback:(bool -> unit) -> GtkSignal.id
376     method notify_enable_grid_lines :
377       callback:(GtkEnums.tree_view_grid_lines -> unit) -> GtkSignal.id
378     method notify_fixed_height_mode : callback:(bool -> unit) -> GtkSignal.id
379     method notify_hadjustment : callback:(GData.adjustment -> unit) -> GtkSignal.id
380     method notify_headers_visible : callback:(bool -> unit) -> GtkSignal.id
381     method notify_hover_expand : callback:(bool -> unit) -> GtkSignal.id
382     method notify_hover_selection : callback:(bool -> unit) -> GtkSignal.id
383     method notify_reorderable : callback:(bool -> unit) -> GtkSignal.id
384     method notify_rules_hint : callback:(bool -> unit) -> GtkSignal.id
385     method notify_search_column : callback:(int -> unit) -> GtkSignal.id
386     method notify_tooltip_column : callback:(int -> unit) -> GtkSignal.id
387     method notify_vadjustment :
388       callback:(GData.adjustment -> unit) -> GtkSignal.id
389   end
390
391 (** A widget for displaying both trees and lists
392    @gtkdoc gtk GtkTreeView *)
393 class view : tree_view obj ->
394   object
395     inherit GContainer.container
396     val obj : tree_view obj
397     method as_tree_view : Gtk.tree_view Gtk.obj
398     method connect : view_signals
399     method append_column : view_column -> int
400     method collapse_all : unit -> unit
401     method collapse_row : tree_path -> unit
402     method enable_search : bool
403     method event : GObj.event_ops
404     method expand_all : unit -> unit
405     method expand_row : ?all:bool -> tree_path -> unit
406     (** @param all default value is [false] *)
407     method expand_to_path : tree_path -> unit (** @since GTK 2.2 *)
408     method expander_column : view_column option
409     method fixed_height_mode : bool
410     method get_column : int -> view_column
411     method get_cursor : unit -> tree_path option * view_column option
412     method get_path_at_pos :
413       x:int -> y:int -> (tree_path * view_column * int * int) option
414     method get_cell_area :
415         ?path:tree_path -> ?col:view_column -> unit -> Gdk.Rectangle.t
416     method get_visible_range : unit -> (tree_path * tree_path) option
417     method hadjustment : GData.adjustment
418     method headers_visible : bool
419     method insert_column : view_column -> int -> int
420     method model : model
421     method move_column : view_column -> after:view_column -> int
422     method remove_column : view_column -> int
423     method reorderable : bool
424     method row_activated : tree_path -> view_column -> unit
425     method row_expanded : tree_path -> bool
426     method rules_hint : bool
427     method scroll_to_cell :
428       ?align:float * float -> tree_path -> view_column -> unit
429     method scroll_to_point : int -> int -> unit
430     method search_column : int
431     method selection : selection
432     method set_cursor :
433       ?cell:#cell_renderer ->
434       ?edit:bool -> tree_path -> view_column -> unit (** @since GTK 2.2 *)
435     (** @param edit default value is [false] *)
436     method set_enable_search : bool -> unit
437     method set_expander_column : view_column option -> unit
438     method set_fixed_height_mode : bool -> unit
439     method set_hadjustment : GData.adjustment -> unit
440     method set_headers_clickable : bool -> unit
441     method set_headers_visible : bool -> unit
442     method set_model : model option -> unit
443     method set_reorderable : bool -> unit
444     method set_rules_hint : bool -> unit
445     method set_search_column : int -> unit
446     method set_tooltip_column : int -> unit
447     method set_vadjustment : GData.adjustment -> unit
448     method tooltip_column : int
449     method vadjustment : GData.adjustment
450
451     method hover_expand : bool (** @since GTK 2.6 *)
452     method set_hover_expand : bool -> unit (** @since GTK 2.6 *)
453     method hover_selection : bool (** @since GTK 2.6 *)
454     method set_hover_selection : bool -> unit (** @since GTK 2.6 *)
455     method set_row_separator_func :
456         (model -> tree_iter -> bool) option -> unit (** @since GTK 2.6 *)
457     method enable_grid_lines : GtkEnums.tree_view_grid_lines
458         (** @since GTK 2.10 *)
459     method enable_tree_lines : bool (** @since GTK 2.10 *)
460     method set_enable_grid_lines : GtkEnums.tree_view_grid_lines -> unit
461         (** @since GTK 2.10 *)
462     method set_enable_tree_lines : bool -> unit
463         (** @since GTK 2.10 *)
464     end
465
466 (** @gtkdoc gtk GtkTreeView *)
467 val view :
468   ?model:#model ->
469   ?hadjustment:GData.adjustment ->
470   ?vadjustment:GData.adjustment ->
471   ?enable_search:bool ->
472   ?fixed_height_mode:bool ->
473   ?headers_clickable:bool ->
474   ?headers_visible:bool ->
475   ?reorderable:bool ->
476   ?rules_hint:bool ->
477   ?search_column:int ->
478   ?tooltip_column:int ->
479   ?border_width:int -> ?width:int -> ?height:int ->
480   ?packing:(widget -> unit) -> ?show:bool -> unit -> view
481 (** @param enable_search default value is [true]
482     @param fixed_height_mode default value is [false]
483     @param headers_clickable default value is [false]
484     @param headers_visible default value is [true]
485     @param reorderable default value is [false]
486     @param rules_hint default value is [false] *)
487
488 (** {4 Cell Renderers} *)
489
490 type cell_properties =
491   [ `CELL_BACKGROUND of string
492   | `CELL_BACKGROUND_GDK of Gdk.color
493   | `CELL_BACKGROUND_SET of bool
494   | `HEIGHT of int
495   | `IS_EXPANDED of bool
496   | `IS_EXPANDER of bool
497   | `MODE of Tags.cell_renderer_mode
498   | `VISIBLE of bool
499   | `WIDTH of int
500   | `XALIGN of float
501   | `XPAD of int
502   | `YALIGN of float
503   | `YPAD of int ]
504 type cell_properties_pixbuf =
505   [ cell_properties
506   | `PIXBUF of GdkPixbuf.pixbuf
507   | `PIXBUF_EXPANDER_CLOSED of GdkPixbuf.pixbuf
508   | `PIXBUF_EXPANDER_OPEN of GdkPixbuf.pixbuf
509   | `STOCK_DETAIL of string
510   | `STOCK_ID of string
511   | `STOCK_SIZE of Tags.icon_size ] 
512 type cell_properties_text =
513   [ cell_properties
514   | `BACKGROUND of string
515   | `BACKGROUND_GDK of Gdk.color
516   | `BACKGROUND_SET of bool
517   | `EDITABLE of bool
518   | `FAMILY of string
519   | `FONT of string
520   | `FONT_DESC of Pango.font_description
521   | `FOREGROUND of string
522   | `FOREGROUND_GDK of Gdk.color
523   | `FOREGROUND_SET of bool
524   | `MARKUP of string
525   | `RISE of int
526   | `SCALE of Pango.Tags.scale
527   | `SINGLE_PARAGRAPH_MODE of bool
528   | `SIZE of int
529   | `SIZE_POINTS of float
530   | `STRETCH of Pango.Tags.stretch
531   | `STRIKETHROUGH of bool
532   | `STYLE of Pango.Tags.style
533   | `TEXT of string
534   | `UNDERLINE of Pango.Tags.underline
535   | `VARIANT of Pango.Tags.variant
536   | `WEIGHT of Pango.Tags.weight ]
537 type cell_properties_toggle =
538   [ cell_properties
539   | `ACTIVATABLE of bool
540   | `ACTIVE of bool
541   | `INCONSISTENT of bool
542   | `RADIO of bool ]
543 type cell_properties_progress =
544   [ cell_properties 
545   | `VALUE of int
546   | `TEXT of string option ]
547 type cell_properties_combo =
548   [ cell_properties_text
549   | `MODEL of model option
550   | `TEXT_COLUMN of string column
551   | `HAS_ENTRY of bool ]
552 type cell_properties_accel = 
553  [ cell_properties_text 
554   | `KEY of Gdk.keysym
555   | `ACCEL_MODE of GtkEnums.cell_renderer_accel_mode
556   | `MODS of GdkEnums.modifier list
557   | `KEYCODE of int ]
558
559 (** @gtkdoc gtk GtkCellRenderer *)
560 class type ['a, 'b] cell_renderer_skel =
561   object
562     inherit GObj.gtkobj
563     val obj : 'a obj
564     method as_renderer : Gtk.cell_renderer obj
565     method get_property : ('a, 'c) property -> 'c
566     method set_properties : 'b list -> unit
567   end
568
569 (** @gtkdoc gtk GtkCellRenderer *)
570 class virtual ['a, 'b] cell_renderer_impl : ([>Gtk.cell_renderer] as 'a) obj ->
571   object
572     inherit ['a,'b] cell_renderer_skel
573     method private virtual param : 'b -> 'a param
574   end
575
576 (** @gtkdoc gtk GtkCellRendererPixbuf *)
577 class cell_renderer_pixbuf : Gtk.cell_renderer_pixbuf obj ->
578   object
579     inherit[Gtk.cell_renderer_pixbuf,cell_properties_pixbuf] cell_renderer_skel
580     method connect : GObj.gtkobj_signals_impl
581   end
582
583 (** @gtkdoc gtk GtkCellRendererText *)
584 class cell_renderer_text_signals : ([>Gtk.cell_renderer_text] as 'a) obj ->
585   object
586     inherit GObj.gtkobj_signals
587     val obj : 'a obj
588     method edited : callback:(Gtk.tree_path -> string -> unit) -> GtkSignal.id
589   end
590
591 (** @gtkdoc gtk GtkCellRendererText *)
592 class cell_renderer_text : Gtk.cell_renderer_text obj ->
593   object
594     inherit [Gtk.cell_renderer_text,cell_properties_text] cell_renderer_skel
595     method connect : cell_renderer_text_signals
596     method set_fixed_height_from_font : int -> unit
597   end
598
599 (** @gtkdoc gtk GtkCellRendererToggle *)
600 class cell_renderer_toggle_signals :  Gtk.cell_renderer_toggle obj ->
601   object
602     inherit GObj.gtkobj_signals
603     method toggled : callback:(Gtk.tree_path -> unit) -> GtkSignal.id
604   end
605
606 (** @gtkdoc gtk GtkCellRendererToggle *)
607 class cell_renderer_toggle : Gtk.cell_renderer_toggle obj ->
608   object
609     inherit[Gtk.cell_renderer_toggle,cell_properties_toggle] cell_renderer_skel
610     method connect : cell_renderer_toggle_signals
611   end
612
613 (** @since GTK 2.6
614     @gtkdoc gtk GtkCellRendererProgress *)
615 class cell_renderer_progress : Gtk.cell_renderer_progress obj ->
616   object
617     inherit[Gtk.cell_renderer_progress,cell_properties_progress] cell_renderer_skel
618     method connect : GObj.gtkobj_signals_impl
619   end
620
621 (** @since GTK 2.6
622     @gtkdoc gtk GtkCellRendererCombo *)
623 class cell_renderer_combo_signals : ([>Gtk.cell_renderer_combo] as 'a) obj ->
624   object
625     inherit cell_renderer_text_signals
626     val obj : 'a obj
627     method changed :
628       callback:(Gtk.tree_path -> Gtk.tree_iter -> unit) -> GtkSignal.id
629   end
630
631 (** @since GTK 2.6
632     @gtkdoc gtk GtkCellRendererCombo *)
633 class cell_renderer_combo : Gtk.cell_renderer_combo obj ->
634   object
635     inherit[Gtk.cell_renderer_combo,cell_properties_combo] cell_renderer_skel
636     method connect : cell_renderer_combo_signals
637     method set_fixed_height_from_font : int -> unit
638   end
639
640 (** @since GTK 2.10
641     @gtkdoc gtk GtkCellRendererText *)
642 class cell_renderer_accel_signals : Gtk.cell_renderer_accel obj ->
643   object
644     inherit GObj.gtkobj_signals
645     method edited : callback:(Gtk.tree_path -> string -> unit) -> GtkSignal.id
646     method accel_edited :
647       callback:(tree_path -> accel_key:int -> accel_mods:int 
648                  -> hardware_keycode:int -> unit) 
649       -> GtkSignal.id
650     method accel_cleared : callback:(tree_path -> unit) -> GtkSignal.id
651
652   end
653
654 (** @since GTK 2.10
655     @gtkdoc gtk GtkCellRendererAccel *)
656 class cell_renderer_accel : Gtk.cell_renderer_accel obj ->
657   object
658     inherit[Gtk.cell_renderer_accel,cell_properties_accel] cell_renderer_skel
659     method connect : cell_renderer_accel_signals
660
661   end
662
663 (** @gtkdoc gtk GtkCellRendererPixbuf *)
664 val cell_renderer_pixbuf : cell_properties_pixbuf list -> cell_renderer_pixbuf
665
666 (** @gtkdoc gtk GtkCellRendererText *)
667 val cell_renderer_text : cell_properties_text list -> cell_renderer_text
668
669 (** @gtkdoc gtk GtkCellRendererToggle *)
670 val cell_renderer_toggle : cell_properties_toggle list -> cell_renderer_toggle
671
672 (** @since GTK 2.6 
673     @gtkdoc gtk GtkCellRendererProgress *)
674 val cell_renderer_progress : cell_properties_progress list -> cell_renderer_progress
675
676 (** @since GTK 2.6 
677     @gtkdoc gtk GtkCellRendererCombo *)
678 val cell_renderer_combo : cell_properties_combo list -> cell_renderer_combo
679
680 (** @since GTK 2.10
681     @gtkdoc gtk GtkCellRendererAccel *)
682 val cell_renderer_accel : cell_properties_accel list -> cell_renderer_accel
683
684 (** {3 GtkIconView} *)
685
686 (** @gtkdoc gtk GtkIconView
687     @since GTK 2.6 *)
688 class icon_view_signals : [> Gtk.icon_view] Gtk.obj ->
689   object
690     inherit GContainer.container_signals
691     method item_activated : callback:(Gtk.tree_path -> unit) -> GtkSignal.id
692     method selection_changed : callback:(unit -> unit) -> GtkSignal.id
693     method notify_column_spacing : callback:(int -> unit) -> GtkSignal.id
694     method notify_columns : callback:(int -> unit) -> GtkSignal.id
695     method notify_item_width : callback:(int -> unit) -> GtkSignal.id
696     method notify_margin : callback:(int -> unit) -> GtkSignal.id
697     method notify_orientation : callback:(GtkEnums.orientation -> unit) -> GtkSignal.id
698     method notify_row_spacing : callback:(int -> unit) -> GtkSignal.id
699     method notify_selection_mode : callback:(GtkEnums.selection_mode -> unit) -> GtkSignal.id
700     method notify_spacing : callback:(int -> unit) -> GtkSignal.id
701   end
702
703 (** A widget which displays a list of icons in a grid
704     @gtkdoc gtk GtkIconView
705     @since GTK 2.6 *)
706 class icon_view :
707   ([> Gtk.icon_view] as 'a) Gtk.obj ->
708   object
709     inherit GContainer.container
710     val obj : 'a Gtk.obj
711     method connect : icon_view_signals
712     method event : GObj.event_ops
713
714     (** Properties *)
715
716     method model : model
717     method set_model : model option -> unit
718     method set_markup_column : string column -> unit
719     method set_pixbuf_column : GdkPixbuf.pixbuf column -> unit
720     method set_text_column : string column -> unit
721     method orientation : GtkEnums.orientation
722     method set_orientation : GtkEnums.orientation -> unit
723     method selection_mode : GtkEnums.selection_mode
724     method set_selection_mode : GtkEnums.selection_mode -> unit
725     method column_spacing : int
726     method set_column_spacing : int -> unit
727     method item_width : int
728     method set_item_width : int -> unit
729     method margin : int
730     method set_margin : int -> unit
731     method columns : int
732     method set_columns : int -> unit
733     method row_spacing : int
734     method set_row_spacing : int -> unit
735     method spacing : int
736     method set_spacing : int -> unit
737
738     method get_path_at_pos : int -> int -> Gtk.tree_path option
739     method selected_foreach : (Gtk.tree_path -> unit) -> unit
740     method get_selected_items : Gtk.tree_path list
741     method path_is_selected : Gtk.tree_path -> bool
742     method select_path : Gtk.tree_path -> unit
743     method unselect_path : Gtk.tree_path -> unit
744     method select_all : unit -> unit
745     method unselect_all : unit -> unit
746
747     method item_activated : Gtk.tree_path -> unit
748   end
749
750 (** A widget which displays a list of icons in a grid
751     @gtkdoc gtk GtkIconView
752     @since GTK 2.6 *)
753 val icon_view :
754   ?model:#model ->
755   ?columns:int ->
756   ?orientation:GtkEnums.orientation ->
757   ?selection_mode:GtkEnums.selection_mode ->
758   ?border_width:int ->
759   ?width:int ->
760   ?height:int ->
761   ?packing:(GObj.widget -> unit) ->
762   ?show:bool ->
763   unit -> icon_view
764
765
766 class type virtual ['obj,'row,'a,'b,'c] custom_tree_model_type = 
767 object
768   inherit model
769   val obj : 'obj
770   method connect : model_signals
771
772   (** Signal emitters *)
773   method custom_row_changed : Gtk.tree_path -> 'row -> unit
774   method custom_row_deleted : Gtk.tree_path -> unit
775   method custom_row_has_child_toggled :
776     Gtk.tree_path -> 'row -> unit
777   method custom_row_inserted : Gtk.tree_path -> 'row -> unit
778   method custom_rows_reordered :
779     Gtk.tree_path -> 'row option -> int array -> unit
780
781   (** Override these to implement a cache of rows *)
782   method custom_unref_node : 'row -> unit
783   method custom_ref_node : 'row -> unit
784
785   method custom_flags : GtkEnums.tree_model_flags list
786
787   (** Functions of the custom model. They must act exactly as described in the documentation 
788       of Gtk orelse Gtk may emit fatal errors. *)
789   method virtual custom_get_iter : Gtk.tree_path -> 'row option
790   method virtual custom_get_path : 'row -> Gtk.tree_path
791   method virtual custom_value : Gobject.g_type -> 'row -> column:int -> Gobject.basic
792
793     (** [custom_value typ row ~column] is the value to set in [row] for column [column].
794         It must must be of the type [typ], i.e. the type declared for column  [column]. *)
795     
796   method virtual custom_iter_children : 'row option -> 'row option
797   method virtual custom_iter_has_child : 'row -> bool
798   method virtual custom_iter_n_children : 'row option -> int
799   method virtual custom_iter_next : 'row -> 'row option
800   method virtual custom_iter_nth_child : 'row option -> int -> 'row option
801   method virtual custom_iter_parent : 'row -> 'row option
802
803   method virtual custom_decode_iter : 'a -> 'b -> 'c -> 'row
804   method virtual custom_encode_iter : 'row -> 'a * 'b * 'c
805
806   (** For internal use only. Do not override these methods. *)
807   method custom_n_columns : int
808   method custom_get_column_type : int -> Gobject.g_type
809   method custom_get_value :
810     'row -> int -> Gobject.g_value -> unit
811
812 end
813
814 (** A base class to inherit from to make a custom tree model. *)
815 class virtual ['row,'a,'b,'c] custom_tree_model : 
816   column_list -> [Gtk.tree_model_custom,'row,'a,'b,'c] custom_tree_model_type
817