summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-01-31 23:50:57 +0000
committerCarl Hetherington <cth@carlh.net>2018-01-31 23:50:57 +0000
commit4b3554db5556f8745ff36c5ca80423aaa41ae506 (patch)
tree36386608a7da560213f92b84b47d349ec3a60704
parent0a83994b5308cadc36e08d944bc65c2aef84449e (diff)
Disable DCP panel stuff which cannot be altered when a DCP is being referenced.
-rw-r--r--ChangeLog3
-rw-r--r--src/lib/film.cc28
-rw-r--r--src/lib/film.h5
-rw-r--r--src/wx/dcp_panel.cc52
-rw-r--r--src/wx/dcp_panel.h2
5 files changed, 66 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index a3839801d..ed61c317d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2018-01-31 Carl Hetherington <cth@carlh.net>
+ * Disable things that cannot be altered when video/audio are being
+ referenced from another DCP (#1173).
+
* Version 2.11.46 released.
2018-01-30 Carl Hetherington <cth@carlh.net>
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 361daa8b6..68ebddba2 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2017 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -1590,3 +1590,29 @@ Film::copy_from (shared_ptr<const Film> film)
{
read_metadata (film->file (metadata_file));
}
+
+bool
+Film::references_dcp_video () const
+{
+ BOOST_FOREACH (shared_ptr<Content> i, _playlist->content()) {
+ shared_ptr<DCPContent> d = dynamic_pointer_cast<DCPContent>(i);
+ if (d && d->reference_video()) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+bool
+Film::references_dcp_audio () const
+{
+ BOOST_FOREACH (shared_ptr<Content> i, _playlist->content()) {
+ shared_ptr<DCPContent> d = dynamic_pointer_cast<DCPContent>(i);
+ if (d && d->reference_audio()) {
+ return true;
+ }
+ }
+
+ return false;
+}
diff --git a/src/lib/film.h b/src/lib/film.h
index 0aa3dab3f..bce2c3b54 100644
--- a/src/lib/film.h
+++ b/src/lib/film.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -167,6 +167,9 @@ public:
std::list<std::string> fix_conflicting_settings ();
+ bool references_dcp_video () const;
+ bool references_dcp_audio () const;
+
/** Identifiers for the parts of our state;
used for signalling changes.
*/
diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc
index 527c275a4..e5d46e579 100644
--- a/src/wx/dcp_panel.cc
+++ b/src/wx/dcp_panel.cc
@@ -437,6 +437,7 @@ DCPPanel::film_content_changed (int property)
property == DCPContentProperty::REFERENCE_AUDIO ||
property == DCPContentProperty::REFERENCE_SUBTITLE) {
setup_dcp_name ();
+ setup_sensitivity ();
}
}
@@ -530,34 +531,41 @@ DCPPanel::set_film (shared_ptr<Film> film)
void
DCPPanel::set_general_sensitivity (bool s)
{
- _name->Enable (s);
- _use_isdcf_name->Enable (s);
- _edit_isdcf_button->Enable (s);
- _dcp_content_type->Enable (s);
- _copy_isdcf_name_button->Enable (s);
+ _generally_sensitive = s;
+ setup_sensitivity ();
+}
+
+void
+DCPPanel::setup_sensitivity ()
+{
+ _name->Enable (_generally_sensitive);
+ _use_isdcf_name->Enable (_generally_sensitive);
+ _edit_isdcf_button->Enable (_generally_sensitive);
+ _dcp_content_type->Enable (_generally_sensitive);
+ _copy_isdcf_name_button->Enable (_generally_sensitive);
- bool si = s;
+ bool si = _generally_sensitive;
if (_film && _film->encrypted ()) {
si = false;
}
_signed->Enable (si);
- _encrypted->Enable (s);
- _key->Enable (s && _film && _film->encrypted ());
- _edit_key->Enable (s && _film && _film->encrypted ());
- _reel_type->Enable (s);
- _reel_length->Enable (s && _film && _film->reel_type() == REELTYPE_BY_LENGTH);
- _upload_after_make_dcp->Enable (s);
- _frame_rate_choice->Enable (s);
- _frame_rate_spin->Enable (s);
- _audio_channels->Enable (s);
- _audio_processor->Enable (s);
- _j2k_bandwidth->Enable (s);
- _container->Enable (s);
- _best_frame_rate->Enable (s && _film && _film->best_video_frame_rate () != _film->video_frame_rate ());
- _resolution->Enable (s);
- _three_d->Enable (s);
- _standard->Enable (s);
+ _encrypted->Enable (_generally_sensitive);
+ _key->Enable (_generally_sensitive && _film && _film->encrypted ());
+ _edit_key->Enable (_generally_sensitive && _film && _film->encrypted ());
+ _reel_type->Enable (_generally_sensitive && _film && !_film->references_dcp_video() && !_film->references_dcp_audio());
+ _reel_length->Enable (_generally_sensitive && _film && _film->reel_type() == REELTYPE_BY_LENGTH);
+ _upload_after_make_dcp->Enable (_generally_sensitive);
+ _frame_rate_choice->Enable (_generally_sensitive && _film && !_film->references_dcp_video());
+ _frame_rate_spin->Enable (_generally_sensitive && _film && !_film->references_dcp_video());
+ _audio_channels->Enable (_generally_sensitive && _film && !_film->references_dcp_audio());
+ _audio_processor->Enable (_generally_sensitive && _film && !_film->references_dcp_audio());
+ _j2k_bandwidth->Enable (_generally_sensitive && _film && !_film->references_dcp_video());
+ _container->Enable (_generally_sensitive && _film && !_film->references_dcp_video());
+ _best_frame_rate->Enable (_generally_sensitive && _film && _film->best_video_frame_rate () != _film->video_frame_rate ());
+ _resolution->Enable (_generally_sensitive && _film && !_film->references_dcp_video());
+ _three_d->Enable (_generally_sensitive && _film && !_film->references_dcp_video());
+ _standard->Enable (_generally_sensitive && _film && !_film->references_dcp_video() && !_film->references_dcp_audio());
}
void
diff --git a/src/wx/dcp_panel.h b/src/wx/dcp_panel.h
index f2e0455c9..b8a67b2f5 100644
--- a/src/wx/dcp_panel.h
+++ b/src/wx/dcp_panel.h
@@ -88,6 +88,8 @@ private:
void config_changed ();
+ void setup_sensitivity ();
+
wxPanel* _panel;
wxNotebook* _notebook;
wxBoxSizer* _sizer;