2016-08-17 c.hetherington <cth@carlh.net>
+ * Spot and "fix" impossible refer-to-DCP settings (#929).
+
* Label tweak to clarify how JPEG2000 bandwidth control works (#904).
* Scroll audio mapping view labels correctly (#919).
{
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;
+}
*/
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.
*/
/*
- Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#include "content_panel.h"
#include <wx/wx.h>
#include <wx/notebook.h>
+#include <boost/foreach.hpp>
#include <iostream>
using std::cout;
using std::string;
+using std::list;
using boost::shared_ptr;
using boost::optional;
return;
}
+ list<string> notes = _film->fix_conflicting_settings ();
+ BOOST_FOREACH (string i, notes) {
+ message_dialog (this, std_to_wx (i));
+ }
+
_content_panel->film_changed (p);
_dcp_panel->film_changed (p);