(************************************************************ show_string_tree.ml Created : Thu Jun 9 00:21:23 2005 Last modified: Thu Jun 09 01:45:57 2005 Compile: ocamlc -dtypes -I +lablgtk2 -w -s lablgtk.cma gtkInit.cmo show_string_tree.ml -o show_string_tree # 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 ren = CellRendererText.create [] in begin TreeViewColumn.pack_start col ren false; TreeViewColumn.add_attribute col ren "text" 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("tak")])) in GtkBase.Container.add window treeview; GtkBase.Widget.show_all window; GtkMain.Main.main () ;; (* * Local Variables: * namazu-default-dir "/home/tak/.indexes/ocaml" * End: *)