diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-08-17 15:36:00 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-08-17 15:36:00 +0100 |
| commit | 96858c88f15ad9deb260da295b2af3847b9b8e15 (patch) | |
| tree | 2f851a4092ba512da03f0dcc2965fc36875fbe6b /src/lib | |
| parent | ec275952569ea47a414991e2ce2b019d8189b3f1 (diff) | |
Check for conflicing refer-to-DCP settings.
This adds a general fix_conflicting_settings() to Film which should
fix the problem and give a message to tell the user why the "fix"
is being carried out. Should help with #929.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/film.cc | 36 | ||||
| -rw-r--r-- | src/lib/film.h | 2 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index 7d183d032..edb911217 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -1451,3 +1451,39 @@ Film::content_summary (DCPTimePeriod period) const { return _playlist->content_summary (period); } + +list<string> +Film::fix_conflicting_settings () +{ + list<string> notes; + + list<boost::filesystem::path> was_referencing; + BOOST_FOREACH (shared_ptr<Content> i, content()) { + shared_ptr<DCPContent> d = dynamic_pointer_cast<DCPContent> (i); + if (d) { + list<string> reasons; + bool was = false; + if (!d->can_reference_video(reasons) && d->reference_video()) { + d->set_reference_video (false); + was = true; + } + if (!d->can_reference_audio(reasons) && d->reference_audio()) { + d->set_reference_audio (false); + was = true; + } + if (!d->can_reference_subtitle(reasons) && d->reference_subtitle()) { + d->set_reference_subtitle (false); + was = true; + } + if (was) { + was_referencing.push_back (d->path(0).parent_path().filename()); + } + } + } + + BOOST_FOREACH (boost::filesystem::path d, was_referencing) { + notes.push_back (String::compose (_("The DCP %1 was being referred to by this film. This not now possible because the reel sizes in the film no longer agree with those in the imported DCP.\n\nSetting the 'Reel type' to 'split by video content' will probably help.\n\nAfter doing that you would need to re-tick the appropriate 'refer to existing DCP' checkboxes."), d.string())); + } + + return notes; +} diff --git a/src/lib/film.h b/src/lib/film.h index d63065f8d..82d1f78c0 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -164,6 +164,8 @@ public: */ std::string content_summary (DCPTimePeriod period) const; + std::list<std::string> fix_conflicting_settings (); + /** Identifiers for the parts of our state; used for signalling changes. */ |
