X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=filetree_type.mli;h=e1bd7da4b80135e4db65dd2453a33536e9b0235e;hb=e0047b09f88dcfa6dd9e771caf57a744095321f2;hp=18a5187c85792b7909d904cde9cefdf722324238;hpb=c79fc07ff71926b3bf956ff296336f6f71bb3b1e;p=guestfs-browser.git diff --git a/filetree_type.mli b/filetree_type.mli index 18a5187..e1bd7da 100644 --- a/filetree_type.mli +++ b/filetree_type.mli @@ -16,7 +16,7 @@ * 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. @@ -28,39 +28,57 @@ type t = { view : GTree.view; model : GTree.tree_store; - hash : (int, hdata) Hashtbl.t; + hash : (int, hdata) Hashtbl.t; (* hash from index_col -> hdata *) index_col : int GTree.column; mode_col : string GTree.column; name_col : string GTree.column; - size_col : int64 GTree.column; + size_col : string GTree.column; date_col : string GTree.column; - link_col : string GTree.column; } -and hdata = state_t * content_t +(* The internal data we store attached to each row, telling us about + * the state of the row and what is in it. + *) +and hdata = { + 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. + * All rows are classified as either nodes or leafs (eg. a "node" might + * be a directory, or a top-level operating system, or anything else + * which the user could open and look inside). + *) and state_t = - | IsLeaf - | NodeNotStarted - | NodeLoading - | IsNode + | IsLeaf (* there are no children *) + | NodeNotStarted (* user has not tried to open this *) + | NodeLoading (* user tried to open it, still loading *) + | IsNode (* we've loaded the children of this directory *) +(* The actual content of a row. *) and content_t = - | Loading - | ErrorMessage of string - | Info of string - | Top of Slave.source - | Directory of Slave.direntry - | File of Slave.direntry + | 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 *) + (* top level Windows Registry node *) + | TopWinReg of Slave.source * string * string * string + | Directory of Slave.direntry (* a directory *) + | File of Slave.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 (* Store/retrieve hdata structure in a model row. *) -val find_child_node_by_hdata : t -> Gtk.tree_iter -> hdata -> Gtk.tree_iter - (* [find_child_node_by_hdata t row hdata] searches the direct children - of [row] looking for one which exactly matches [hdata] and returns - that child. If no child found, raises [Not_found]. *) +val find_child_node_by_content : t -> Gtk.tree_iter -> content_t -> Gtk.tree_iter + (* [find_child_node_by_content t row content] searches the direct + children of [row] looking for one which exactly matches + [hdata.content] and returns that child. If no child found, + raises [Not_found]. *) val get_pathname : t -> Gtk.tree_iter -> Slave.source * string (* Get the full path to a row by chasing up through the tree to the