mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-25 14:35:51 +08:00
add Close menu entry (^W) to plotters
This commit is contained in:
+17
-6
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user