(************************************************************ gtk2_treeview_with_tag.ml Created : Wed Jun 15 00:09:38 2005 Last modified: Wed Jun 15 00:33:46 2005 Compile: ocamlc -dtypes -I +lablgtk2 -w -s lablgtk.cma gtkInit.cmo gtk2_treeview_with_tag.ml -o gtk2_treeview_with_tag # FTP Directory: sources/ocaml # ************************************************************) (** @author Takashi Masuyama *) open GtkWindow open GtkTree open Gobject open Gobject.Data type t = Node of string * t list | Leaf of string let show_tree tree = let treestore = TreeStore.create [| Type.from_name "gchararray" |] in let treeview = TreeView.make_params ~cont:(fun pl () -> (TreeView.create pl)) ~model:(treestore :> Gtk.tree_model) [ param TreeView.P.headers_visible false ] () in let column = let col = TreeViewColumn.create [ param TreeViewColumn.P.title "name"; param TreeViewColumn.P.visible true] in let renderer = CellRendererText.create [ ] in begin TreeViewColumn.pack_start col renderer false; TreeViewColumn.add_attribute col renderer "markup" 0; col end in let rec f treestore ?parent = function Node(s, lst) -> let iter2 = TreeStore.append ?parent treestore () in TreeStore.set_value treestore ~row:iter2 ~column:0 (to_value string s); List.iter (f treestore ~parent:iter2) lst | Leaf(s) -> let iter2 = TreeStore.append ?parent treestore () in TreeStore.set_value treestore ~row:iter2 ~column:0 (to_value string s); () in begin TreeView.append_column treeview column; f treestore tree; treeview end let _ = let window = Window.create ~kind:`TOPLEVEL [] in let treeview = show_tree (Node("yosui", [Node("mamewo", [Leaf("takashi")]); Leaf("cancel")])) in GtkBase.Container.add window treeview; GtkBase.Widget.show_all window; GtkMain.Main.main () ;; (* * Local Variables: * namazu-default-dir "/home/tak/.indexes/ocaml" * End: *)