From 4c3ce017f7d8112e252cbb5d27dc4c6eb57c323f Mon Sep 17 00:00:00 2001 From: Felix Ruess Date: Fri, 1 Apr 2016 15:48:20 +0200 Subject: [PATCH] [pprzcenter] check if backup actually differs and always delete backup conf/conf.xml~ if it doesn't differ (e.g. it was created when you changed something, but then you reversed that change again) --- sw/supervision/paparazzicenter.ml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sw/supervision/paparazzicenter.ml b/sw/supervision/paparazzicenter.ml index 633e03ab98..a45474a710 100644 --- a/sw/supervision/paparazzicenter.ml +++ b/sw/supervision/paparazzicenter.ml @@ -122,13 +122,19 @@ let write_preferences = fun (gui:Gtk_pc.window) file (ac_combo:Gtk_tools.combo) Printf.fprintf f "%s\n" (ExtXml.to_string_fmt xml); close_out f +let backup_file_differs = fun () -> + if Sys.file_exists Utils.backup_xml_file then + ExtXml.parse_file Utils.backup_xml_file <> ExtXml.parse_file Utils.conf_xml_file + else + false + let quit_callback = fun gui ac_combo session_combo target_combo _ -> CP.close_programs gui; write_preferences gui Env.gconf_file ac_combo session_combo target_combo; exit 0 let quit_button_callback = fun gui ac_combo session_combo target_combo ?(confirm_quit = true) () -> - if Sys.file_exists Utils.backup_xml_file then begin + if backup_file_differs () then begin let rec question_box = fun () -> match GToolbox.question_box ~title:"Quit" ~buttons:["Save changes"; "Discard changes"; "View changes"; "Cancel"] ~default:1 "Configuration changes have not been saved" with | 2 -> @@ -142,13 +148,16 @@ let quit_button_callback = fun gui ac_combo session_combo target_combo ?(confirm quit_callback gui ac_combo session_combo target_combo () | _ -> () in question_box () - end else + end else begin + if Sys.file_exists Utils.backup_xml_file then + Sys.remove Utils.backup_xml_file; if confirm_quit then match GToolbox.question_box ~title:"Quit" ~buttons:["Cancel"; "Quit"] ~default:2 "Quit ?" with 2 -> quit_callback gui ac_combo session_combo target_combo () | _ -> () else quit_callback gui ac_combo session_combo target_combo () + end let quit_window_callback = fun gui ac_combo session_combo target_combo _ -> quit_button_callback gui ac_combo session_combo target_combo ~confirm_quit:false ();