X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fcheck_content_change_job.cc;h=1df3bc9cda1f945a15e87c41091214a3a1dc14fa;hb=6ef1fc5f40567650ca9ef2b7644e4fdd97640ae6;hp=bb3674f27b42471fa1518f04abd8508ae7a1db9d;hpb=f30bd5d2355bc02d1b5c7772241e191b60028dd2;p=dcpomatic.git diff --git a/src/lib/check_content_change_job.cc b/src/lib/check_content_change_job.cc index bb3674f27..1df3bc9cd 100644 --- a/src/lib/check_content_change_job.cc +++ b/src/lib/check_content_change_job.cc @@ -33,16 +33,24 @@ using std::list; using std::cout; using boost::shared_ptr; -CheckContentChangeJob::CheckContentChangeJob (shared_ptr film) +/** @param gui true if we are running this job from the GUI, false if it's the CLI */ +CheckContentChangeJob::CheckContentChangeJob (shared_ptr film, shared_ptr following, bool gui) : Job (film) + , _following (following) + , _gui (gui) { } +CheckContentChangeJob::~CheckContentChangeJob () +{ + stop_thread (); +} + string CheckContentChangeJob::name () const { - return _("Check content for changes"); + return _("Checking content for changes"); } string @@ -79,9 +87,32 @@ CheckContentChangeJob::run () } if (!changed.empty()) { - set_message (_("Some files were changed since they were added to the project.\n\nThese files will now be re-examined, so you may need to check their settings.")); + if (_gui) { + string m = _("Some files have been changed since they were added to the project.\n\nThese files will now be re-examined, so you may need to check their settings."); + if (_following) { + /* I'm assuming that _following is a make DCP job */ + m += " "; + m += _("Choose 'Make DCP' again when you have done this."); + } + set_message (m); + } else { + set_progress (1); + set_state (FINISHED_ERROR); + set_error ( + _("Some files have been changed since they were added to the project. Open the project in DCP-o-matic, check the settings, then save it before trying again."), + "" + ); + return; + } + } else if (_following) { + JobManager::instance()->add (_following); } + /* Only set this job as finished once we have added the following job, otherwise I think + it's possible that the tests will sporadically fail if they check for all jobs being + complete in the gap between this one finishing and _following being added. + */ + set_progress (1); set_state (FINISHED_OK); }