From 7a4c9163bec16052219b7aae551266d8369475f5 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 25 Apr 2016 00:48:11 +0100 Subject: [PATCH] Add cancel button to quit-dialog (#847). --- ChangeLog | 3 +++ src/tools/dcpomatic.cc | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d2b7505ed..61746665f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2016-04-25 Carl Hetherington + * Add cancel option to confirmation dialogue when closing + the program (#847). + * Move the reel markers to the top of the timeline (#846). 2016-04-22 c.hetherington diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 6a94c4583..5676e6e57 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -693,13 +693,45 @@ private: return; } + if (_film && _film->dirty ()) { + + wxMessageDialog* dialog = new wxMessageDialog ( + 0, + wxString::Format (_("Save changes to film \"%s\" before closing?"), std_to_wx (_film->name()).data()), + /// TRANSLATORS: this is the heading for a dialog box, which tells the user that the current + /// project (Film) has been changed since it was last saved. + _("Film changed"), + wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxICON_QUESTION + ); + + dialog->SetYesNoCancelLabels ( + _("Save film and close"), _("Close without saving film"), _("Don't close") + ); + + int const r = dialog->ShowModal (); + dialog->Destroy (); + + switch (r) { + case wxID_NO: + /* Don't save and carry on to close */ + break; + case wxID_YES: + /* Save and carry on to close */ + _film->write_metadata (); + break; + case wxID_CANCEL: + /* Veto the event and stop */ + ev.Veto (); + return; + } + } + /* We don't want to hear about any more configuration changes, since they cause the File menu to be altered, which itself will be deleted around now (without, as far as I can see, any way for us to find out). */ _config_changed_connection.disconnect (); - maybe_save_then_delete_film (); ev.Skip (); } -- 2.30.2