Version 0.1.7.
[guestfs-browser.git] / filetree_type.mli
index 590b635..b5c642a 100644 (file)
@@ -16,7 +16,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *)
 
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *)
 
-(** This is the base class for the file tree.
+(** This is the base module for the file tree.
 
     The types and functions in this file should be considered
     private to the file tree implementation.
 
     The types and functions in this file should be considered
     private to the file tree implementation.
@@ -43,6 +43,7 @@ and hdata = {
   mutable state : state_t;
   content : content_t;
   mutable visited : bool;
   mutable state : state_t;
   content : content_t;
   mutable visited : bool;
+  mutable hiveh : Hivex.t option;
 }
 
 (* The type of the hidden column used to implement on-demand loading.
 }
 
 (* The type of the hidden column used to implement on-demand loading.
@@ -61,9 +62,13 @@ and content_t =
   | Loading                          (* special "loading ..." node *)
   | ErrorMessage of string           (* error message node *)
   | Info of string                   (* information node (eg. disk usage) *)
   | Loading                          (* special "loading ..." node *)
   | ErrorMessage of string           (* error message node *)
   | Info of string                   (* information node (eg. disk usage) *)
-  | Top of Slave.source              (* top level OS or volume node *)
-  | Directory of Slave.direntry      (* a directory *)
-  | File of Slave.direntry           (* a file inc. special files *)
+  | Top of Slave_types.source        (* top level OS or volume node *)
+                                     (* top level Windows Registry node *)
+  | TopWinReg of Slave_types.source * string * string * string
+  | Directory of Slave_types.direntry(* a directory *)
+  | File of Slave_types.direntry     (* a file inc. special files *)
+  | RegKey of Hivex.node             (* a registry key (like a dir) *)
+  | RegValue of Hivex.value          (* a registry value (like a file) *)
 
 val store_hdata : t -> Gtk.tree_iter -> hdata -> unit
 val get_hdata : t -> Gtk.tree_iter -> hdata
 
 val store_hdata : t -> Gtk.tree_iter -> hdata -> unit
 val get_hdata : t -> Gtk.tree_iter -> hdata
@@ -75,13 +80,18 @@ val find_child_node_by_content : t -> Gtk.tree_iter -> content_t -> Gtk.tree_ite
      [hdata.content] and returns that child.  If no child found,
      raises [Not_found]. *)
 
      [hdata.content] and returns that child.  If no child found,
      raises [Not_found]. *)
 
-val get_pathname : t -> Gtk.tree_iter -> Slave.source * string
+val get_pathname : t -> Gtk.tree_iter -> Slave_types.source * string
   (* Get the full path to a row by chasing up through the tree to the
      top.  This also returns the source (eg. operating system or single
      volume). *)
 
   (* Get the full path to a row by chasing up through the tree to the
      top.  This also returns the source (eg. operating system or single
      volume). *)
 
-val markup_of_name : ?visited:bool -> Slave.direntry -> string
-  (* Create markup for filenames. *)
+val get_registry_path : t -> Gtk.tree_iter -> (Slave_types.source * string * string * string) * string list
+  (* Get the path to the top from a registry key.  This returns the
+     pair [(TopWinReg_data, path)] where [TopWinReg_data] is the data
+     inside a {!TopWinReg} node, and [path] is the path (list of node
+     names) up to the top.  You normally need to call {!List.rev} on
+     [path]. *)
 
 
-val set_visited : t -> Gtk.tree_iter -> unit
-  (* Set a file as visited. *)
+val cache_registry_file : ?fail:exn Slave.callback -> t -> Gtk.tree_path -> Slave_types.source -> string -> string -> unit Slave.callback -> unit
+  (* This is called whenever we need the registry cache file and we
+     can't be sure that it has already been downloaded. *)