diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-05-03 00:51:17 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-05-03 00:51:17 +0200 |
| commit | 14a548dd782a31ead0c1378174b26b692f37a77e (patch) | |
| tree | 44a65c23f49e2e36d483dcbec3d31d0947c4ee27 | |
| parent | 9bdf75cc619740246c2c413d204f26e228e75bb1 (diff) | |
Fix behaviour on disk writer window close.
| -rw-r--r-- | src/tools/dcpomatic_disk.cc | 35 |
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); |
