diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-01-31 23:50:57 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-01-31 23:50:57 +0000 |
| commit | 4b3554db5556f8745ff36c5ca80423aaa41ae506 (patch) | |
| tree | 36386608a7da560213f92b84b47d349ec3a60704 | |
| parent | 0a83994b5308cadc36e08d944bc65c2aef84449e (diff) | |
Disable DCP panel stuff which cannot be altered when a DCP is being referenced.
| -rw-r--r-- | ChangeLog | 3 | ||||
| -rw-r--r-- | src/lib/film.cc | 28 | ||||
| -rw-r--r-- | src/lib/film.h | 5 | ||||
| -rw-r--r-- | src/wx/dcp_panel.cc | 52 | ||||
| -rw-r--r-- | src/wx/dcp_panel.h | 2 |
5 files changed, 66 insertions, 24 deletions
@@ -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; |
