summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-05-03 00:51:17 +0200
committerCarl Hetherington <cth@carlh.net>2020-05-03 00:51:17 +0200
commit14a548dd782a31ead0c1378174b26b692f37a77e (patch)
tree44a65c23f49e2e36d483dcbec3d31d0947c4ee27
parent9bdf75cc619740246c2c413d204f26e228e75bb1 (diff)
Fix behaviour on disk writer window close.
-rw-r--r--src/tools/dcpomatic_disk.cc35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/tools/dcpomatic_disk.cc b/src/tools/dcpomatic_disk.cc
index b2678ce42..b23f09d85 100644
--- a/src/tools/dcpomatic_disk.cc
+++ b/src/tools/dcpomatic_disk.cc
@@ -118,7 +118,8 @@ public:
drive_refresh ();
- Bind (wxEVT_SIZE, boost::bind (&DOMFrame::sized, this, _1));
+ Bind (wxEVT_SIZE, boost::bind(&DOMFrame::sized, this, _1));
+ Bind (wxEVT_CLOSE_WINDOW, boost::bind(&DOMFrame::close, this, _1));
JobManager::instance()->ActiveJobsChanged.connect(boost::bind(&DOMFrame::setup_sensitivity, this));
@@ -151,6 +152,37 @@ private:
ev.Skip ();
}
+
+ bool should_close ()
+ {
+ if (!JobManager::instance()->work_to_do()) {
+ return true;
+ }
+
+ wxMessageDialog* d = new wxMessageDialog (
+ 0,
+ _("There are unfinished jobs; are you sure you want to quit?"),
+ _("Unfinished jobs"),
+ wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION
+ );
+
+ bool const r = d->ShowModal() == wxID_YES;
+ d->Destroy ();
+ return r;
+ }
+
+
+ void close (wxCloseEvent& ev)
+ {
+ if (!should_close()) {
+ ev.Veto ();
+ return;
+ }
+
+ ev.Skip ();
+ }
+
+
void open ()
{
wxDirDialog* d = new wxDirDialog (this, _("Choose a DCP folder"), wxT(""), wxDD_DIR_MUST_EXIST);
@@ -312,6 +344,7 @@ public:
if (!warning->confirmed()) {
return false;
}
+ warning->Destroy ();
_frame = new DOMFrame (_("DCP-o-matic Disk Writer"));
SetTopWindow (_frame);