X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=filetree.ml;h=f6ffa7b973d52a5362ae2c916e9bdb215f909df1;hb=38e0e295c438adea7a8acabd21c2fd02c236cc04;hp=7217c4e87757087d2e833fdb0e3bbc97c0cf188d;hpb=c21ba5da9a0319c172ef7759dc4771f07d3f72e9;p=guestfs-browser.git diff --git a/filetree.ml b/filetree.ml index 7217c4e..f6ffa7b 100644 --- a/filetree.ml +++ b/filetree.ml @@ -78,18 +78,6 @@ let root_key_of_registry_t (_, root_key, _, _) = root_key * (ie. GtkTreeView). *) class tree ?packing () = - let clear_tree = new GUtil.signal () in - let op_checksum_file = new GUtil.signal () in - let op_copy_regvalue = new GUtil.signal () in - let op_disk_usage = new GUtil.signal () in - let op_download_as_reg = new GUtil.signal () in - let op_download_dir_find0 = new GUtil.signal () in - let op_download_dir_tarball = new GUtil.signal () in - let op_download_file = new GUtil.signal () in - let op_file_information = new GUtil.signal () in - let op_inspection_dialog = new GUtil.signal () in - let op_view_file = new GUtil.signal () in - let view = GTree.view ?packing () in (*view#set_rules_hint true;*) (*view#selection#set_mode `MULTIPLE; -- add this later *) @@ -117,6 +105,20 @@ class tree ?packing () = (* Create the model. *) let model = GTree.tree_store cols in + (* Signals. *) + let clear_tree = new GUtil.signal () in + let op_checksum_file = new GUtil.signal () in + let op_copy_regvalue = new GUtil.signal () in + let op_disk_usage = new GUtil.signal () in + let op_download_as_reg = new GUtil.signal () in + let op_download_dir_find0 = new GUtil.signal () in + let op_download_dir_tarball = new GUtil.signal () in + let op_download_file = new GUtil.signal () in + let op_file_information = new GUtil.signal () in + let op_file_properties = new GUtil.signal () in + let op_inspection_dialog = new GUtil.signal () in + let op_view_file = new GUtil.signal () in + object (self) inherit GTree.view view#as_tree_view inherit GUtil.ml_signals [clear_tree#disconnect; @@ -128,9 +130,25 @@ object (self) op_download_dir_tarball#disconnect; op_download_file#disconnect; op_file_information#disconnect; + op_file_properties#disconnect; op_inspection_dialog#disconnect; op_view_file#disconnect] + (* Signals. *) + method clear_tree : callback:(unit -> unit) -> GtkSignal.id = + clear_tree#connect ~after + method op_checksum_file = op_checksum_file#connect ~after + method op_copy_regvalue = op_copy_regvalue#connect ~after + method op_disk_usage = op_disk_usage#connect ~after + method op_download_as_reg = op_download_as_reg#connect ~after + method op_download_dir_find0 = op_download_dir_find0#connect ~after + method op_download_dir_tarball = op_download_dir_tarball#connect ~after + method op_download_file = op_download_file#connect ~after + method op_file_information = op_file_information#connect ~after + method op_file_properties = op_file_properties#connect ~after + method op_inspection_dialog = op_inspection_dialog#connect ~after + method op_view_file = op_view_file#connect ~after + initializer (* Open a context menu when a button is pressed. *) ignore (view#event#connect#button_press ~callback:self#button_press); @@ -528,20 +546,6 @@ object (self) in loop [] - (* Signals. *) - method clear_tree : callback:(unit -> unit) -> GtkSignal.id = - clear_tree#connect ~after - method op_checksum_file = op_checksum_file#connect ~after - method op_copy_regvalue = op_copy_regvalue#connect ~after - method op_disk_usage = op_disk_usage#connect ~after - method op_download_as_reg = op_download_as_reg#connect ~after - method op_download_dir_find0 = op_download_dir_find0#connect ~after - method op_download_dir_tarball = op_download_dir_tarball#connect ~after - method op_download_file = op_download_file#connect ~after - method op_file_information = op_file_information#connect ~after - method op_inspection_dialog = op_inspection_dialog#connect ~after - method op_view_file = op_view_file#connect ~after - (* Handle mouse button press on the selected row. This opens the * pop-up context menu. * http://scentric.net/tutorial/sec-selections-context-menus.html @@ -633,6 +637,10 @@ object (self) let item = factory#add_item "Download ..." in ignore (item#connect#activate ~callback:(fun () -> op_download_file#call path)); + ignore (factory#add_separator ()); + let item = factory#add_item "Properties ..." in + ignore (item#connect#activate + ~callback:(fun () -> op_file_properties#call path)) and add_directory_items path = let item = factory#add_item "Directory information" in @@ -655,6 +663,10 @@ object (self) let item = factory#add_item "Download list of filenames ..." in ignore (item#connect#activate ~callback:(fun () -> op_download_dir_find0#call path)); + ignore (factory#add_separator ()); + let item = factory#add_item "Properties ..." in + ignore (item#connect#activate + ~callback:(fun () -> op_file_properties#call path)) and add_top_os_items os path = let item = factory#add_item "Operating system information ..." in @@ -800,6 +812,13 @@ object (self) | { content=RegKey _ }, _ -> assert false | { content=RegValue _ }, _ -> assert false + method get_direntry row = + let hdata = self#get_hdata row in + match hdata with + | { content=Directory direntry} + | { content=File direntry} -> direntry + | _ -> assert false + (* Search up to the top of the tree from a registry key. * * The path up the tree will always look something like: