From: Carl Hetherington Date: Thu, 31 Jan 2019 17:04:18 +0000 (+0000) Subject: Check consistency of refer-to-DCP settings after adding content (#1456). X-Git-Tag: v2.13.112~21^2 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=9fa17d52810490359f899cc0cbdb4c25ac74bc92 Check consistency of refer-to-DCP settings after adding content (#1456). --- diff --git a/src/lib/film.cc b/src/lib/film.cc index f4745d099..e7861a032 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -1220,6 +1220,31 @@ Film::playlist_change (ChangeType type) { signal_change (type, CONTENT); signal_change (type, NAME); + + if (type == CHANGE_TYPE_DONE) { + /* Check that this change hasn't made our settings inconsistent */ + bool change_made = false; + BOOST_FOREACH (shared_ptr i, content()) { + shared_ptr d = dynamic_pointer_cast(i); + if (!d) { + continue; + } + + string why_not; + if (d->reference_video() && !d->can_reference_video(shared_from_this(), why_not)) { + d->set_reference_video(false); + change_made = true; + } + if (d->reference_audio() && !d->can_reference_audio(shared_from_this(), why_not)) { + d->set_reference_audio(false); + change_made = true; + } + } + + if (change_made) { + Message (_("DCP-o-matic had to change your settings for referring to DCPs as OV. Please review those settings to make sure they are what you want.")); + } + } } void diff --git a/src/lib/film.h b/src/lib/film.h index 7fdd4d269..b77ce7a76 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -334,6 +334,9 @@ public: /** Emitted when some property of our content has changed */ mutable boost::signals2::signal, int, bool)> ContentChange; + /** Emitted when we have something important to tell the user */ + boost::signals2::signal Message; + /** Current version number of the state file */ static int const current_state_version; diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 2e8a595ad..db3d22052 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -457,6 +457,7 @@ public: } if (_film) { _film->Change.connect (boost::bind (&DOMFrame::film_change, this, _1)); + _film->Message.connect (boost::bind(&DOMFrame::film_message, this, _1)); } } @@ -466,6 +467,11 @@ public: private: + void film_message (string m) + { + message_dialog (this, std_to_wx(m)); + } + void film_change (ChangeType type) { if (type == CHANGE_TYPE_DONE) {