(************************************************************ gtk2_scrollwindow.ml Created : Mon Jun 13 10:58:38 2005 Last modified: Mon Jun 13 11:27:38 2005 Compile: ocamlc -dtypes -I +lablgtk2 -w -s lablgtk.cma xml-light.cma gtkInit.cmo gtk2_scrollwindow.ml -o gtk2_scrollwindow # FTP Directory: sources/ocaml # ************************************************************) (** @author Takashi Masuyama *) open Xml open GtkBin open GtkWindow open GtkTree open Gobject open Gobject.Data open GtkBase let show_xml xml = 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 Element(tag, _, lst) -> let iter2 = TreeStore.append ?parent treestore () in TreeStore.set_value treestore ~row:iter2 ~column:0 (to_value string tag); List.iter (f treestore ~parent:iter2) lst | PCData(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 xml; treeview end ;; let _ = let window = Window.create ~kind:`TOPLEVEL [] in let scrolled_window = ScrolledWindow.create [] in let filename = "slashdot.rdf" in let xml = Xml.parse_file filename in let treeview = show_xml xml in Container.add scrolled_window treeview; Container.add window scrolled_window; Widget.show_all window; GtkMain.Main.main () ;; (* * Local Variables: * namazu-default-dir "/home/tak/.indexes/ocaml" * End: *)