Add cancel button to quit-dialog (#847).
authorCarl Hetherington <cth@carlh.net>
Sun, 24 Apr 2016 23:48:11 +0000 (00:48 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 24 Apr 2016 23:48:11 +0000 (00:48 +0100)
ChangeLog
src/tools/dcpomatic.cc

index d2b7505ed8978854b63cd073015fd8d28d59cb9c..61746665f54418cdf5837316b4813572de9ccec1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2016-04-25  Carl Hetherington  <cth@carlh.net>
 
+       * 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  <cth@carlh.net>
index 6a94c4583dd5d5927b75e8de6ed403abebfa93c2..5676e6e573620aed1e2a3fff2c2ef045e720bde8 100644 (file)
@@ -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 ();
        }