add Close menu entry (^W) to plotters

This commit is contained in:
Pascal Brisset
2009-11-01 19:24:33 +00:00
parent f646d52d4c
commit a45f7abdf7
2 changed files with 38 additions and 13 deletions
+17 -6
View File
@@ -629,7 +629,7 @@ let load_log = fun ?export ?factor (plot:plot) (menubar:GMenu.menu_shell GMenu.f
msgs in
(* Store data for other windows *)
logs_menus := (ac, menu_name, (msgs, raw_msgs), protocol) :: !logs_menus;
logs_menus := !logs_menus @ [(ac, menu_name, (msgs, raw_msgs), protocol)];
add_ac_submenu ?export protocol ?factor plot menubar curves_fact ac menu_name msgs raw_msgs;
)
@@ -672,13 +672,26 @@ let screenshot = fun frame ->
| _ -> dialog#destroy ()
end
(** Table of current windows, to be able to quit when the last one is closed
FIXME: should be shared with plotter.ml *)
let windows = Hashtbl.create 3
(*****************************************************************************)
let rec plot_window = fun ?export init ->
let plotter = GWindow.window ~allow_shrink:true ~title:"Log Plotter" () in
(* Register the window *)
let oid = plotter#get_oid in
Hashtbl.add windows oid ();
plotter#set_icon (Some (GdkPixbuf.from_file Env.icon_file));
let vbox = GPack.vbox ~packing:plotter#add () in
let quit = fun () -> GMain.Main.quit (); exit 0 in
let close = fun () ->
plotter#destroy ();
Hashtbl.remove windows oid;
if Hashtbl.length windows = 0 then
quit () in
let tooltips = GData.tooltips () in
@@ -695,18 +708,16 @@ let rec plot_window = fun ?export init ->
let open_log_item = file_menu_fact#add_item "Open Log" ~key:GdkKeysyms._O in
ignore (file_menu_fact#add_item "New" ~key:GdkKeysyms._N ~callback:(fun () -> plot_window []));
(*
let close = fun () -> plotter#destroy () in
ignore (file_menu_fact#add_item "Close" ~key:GdkKeysyms._W ~callback:close); *)
let delayed_screenshot = fun () ->
ignore (GMain.Idle.add (fun () -> screenshot plot#drawing_area; false)) in
ignore (file_menu_fact#add_item "Save screenshot" ~key:GdkKeysyms._S ~callback:delayed_screenshot);
ignore (file_menu_fact#add_separator ());
ignore (file_menu_fact#add_item "Close" ~key:GdkKeysyms._W ~callback:close);
ignore (file_menu_fact#add_item "Quit" ~key:GdkKeysyms._Q ~callback:quit);
let curves_menu = factory#add_submenu "Curves" in
let curves_menu_fact = new GMenu.factory curves_menu in
ignore (plotter#connect#destroy ~callback:(fun () -> plot#destroy (); quit ()));
ignore (plotter#connect#destroy ~callback:close);
(* Auto Scale *)
let auto_scale = GButton.check_button ~label:"Auto Scale" ~active:true ~packing:h#pack () in
+21 -7
View File
@@ -329,13 +329,27 @@ let base_and_index =
else
(field_descr, 0)
(** Table of current windows, to be able to quit when the last one is closed *)
let windows = Hashtbl.create 3
let rec plot_window = fun window ->
let plotter = GWindow.window ~type_hint:`DIALOG ~allow_shrink:true ~title:window.title () in
let plotter = GWindow.window ~deletable:true ~type_hint:`DIALOG ~allow_shrink:true ~title:window.title () in
(* Register the window *)
let oid = plotter#get_oid in
Hashtbl.add windows oid ();
ignore (plotter#parse_geometry window.geometry);
plotter#set_icon (Some (GdkPixbuf.from_file Env.icon_file));
let vbox = GPack.vbox ~packing:plotter#add () in
let quit = fun () -> GMain.Main.quit (); exit 0 in
let close = fun () ->
plotter#destroy ();
Hashtbl.remove windows oid;
if Hashtbl.length windows = 0 then
quit () in
let tooltips = GData.tooltips () in
let menubar = GMenu.menu_bar ~packing:vbox#pack () in
@@ -345,13 +359,13 @@ let rec plot_window = fun window ->
let file_menu_fact = new GMenu.factory file_menu ~accel_group in
ignore (file_menu_fact#add_item "New" ~key:GdkKeysyms._N ~callback:(fun () -> plot_window {window with curves=[]}));
(*
let close = fun () -> plotter#destroy () in
ignore (file_menu_fact#add_item "Close" ~key:GdkKeysyms._W ~callback:close); *)
let reset_item = file_menu_fact#add_item "Reset" ~key:GdkKeysyms._L in
let suspend_item = file_menu_fact#add_item "Suspend" ~key:GdkKeysyms._S in
let stop_item = file_menu_fact#add_item "Stop" ~key:GdkKeysyms._C in
let start_item = file_menu_fact#add_item "Restart" ~key:GdkKeysyms._X in
ignore (file_menu_fact#add_separator ());
ignore (file_menu_fact#add_item "Close" ~key:GdkKeysyms._W ~callback:close);
ignore (file_menu_fact#add_item "Quit" ~key:GdkKeysyms._Q ~callback:quit);
let curves_menu = factory#add_submenu "Curves" in
let curves_menu_fact = new GMenu.factory curves_menu in
@@ -366,7 +380,7 @@ let rec plot_window = fun window ->
let width = 900 and height = 200 in
let plot = new plot ~size: !size ~width ~height ~packing:(vbox#pack ~expand:true) () in
tooltips#set_tip plot#drawing_area#coerce ~text:"Drop a messages field here to draw it";
ignore (plotter#connect#destroy ~callback:(fun () -> plot#destroy (); quit ()));
ignore (plotter#connect#destroy ~callback:close);
(* Auto Scale *)
let auto_scale = GButton.check_button ~label:"Auto Scale" ~active:true ~packing:h#pack () in
@@ -444,14 +458,14 @@ let rec plot_window = fun window ->
ignore (discrete_item#connect#toggled ~callback);
(* Average *)
let average_value = GMisc.label ~height:10 ~text:"N/A" () in
let average_value = GMisc.label ~text:"N/A" () in
let _avg_item = submenu_fact#add_image_item ~image:average_value#coerce ~label:"Average" () in
let update_avg_item = fun () ->
average_value#set_text (sprintf "%.6f" curve.average#value) in
ignore (curve.average#connect#value_changed update_avg_item);
(* Standard deviation *)
let stdev_value = GMisc.label~height:10 ~text:"N/A" () in
let stdev_value = GMisc.label ~text:"N/A" () in
let _item = submenu_fact#add_image_item ~image:stdev_value#coerce ~label:"Stdev" () in
let update_stdev_value = fun () ->
stdev_value#set_text (sprintf "%.6f" curve.stdev#value) in