summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-01-31 17:04:18 +0000
committerCarl Hetherington <cth@carlh.net>2019-01-31 17:04:18 +0000
commit9fa17d52810490359f899cc0cbdb4c25ac74bc92 (patch)
tree6e23785f15a9438d884af3a174bdb966e69f7a8c /src
parent2eeb503962f31665a19bee24e2e46840f7086f33 (diff)
Check consistency of refer-to-DCP settings after adding content (#1456).
Diffstat (limited to 'src')
-rw-r--r--src/lib/film.cc25
-rw-r--r--src/lib/film.h3
-rw-r--r--src/tools/dcpomatic.cc6
3 files changed, 34 insertions, 0 deletions
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<Content> i, content()) {
+ shared_ptr<DCPContent> d = dynamic_pointer_cast<DCPContent>(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<void (ChangeType, boost::weak_ptr<Content>, int, bool)> ContentChange;
+ /** Emitted when we have something important to tell the user */
+ boost::signals2::signal<void (std::string)> 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) {