* (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 *)
(* 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;
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);
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
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
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
| { 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: