diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-11-29 00:06:29 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-11-29 00:15:02 +0100 |
| commit | 00885f610bb9957c602a3aff92fa79066b2b2ef3 (patch) | |
| tree | 024e5e361a0d3af54d99f791154b7f63066cd254 /src | |
| parent | 716f05c1301bc5cd811df687875cafaf0d37ffd2 (diff) | |
Add default release territory configuration (#2375).
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/config.cc | 12 | ||||
| -rw-r--r-- | src/lib/config.h | 13 | ||||
| -rw-r--r-- | src/lib/film.cc | 1 | ||||
| -rw-r--r-- | src/wx/full_config_dialog.cc | 30 |
4 files changed, 56 insertions, 0 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc index d44abdfbf..4bc4f60f2 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -357,6 +357,7 @@ try _default_j2k_bandwidth = f.optional_number_child<int>("DefaultJ2KBandwidth").get_value_or (200000000); _default_audio_delay = f.optional_number_child<int>("DefaultAudioDelay").get_value_or (0); _default_interop = f.optional_bool_child("DefaultInterop").get_value_or (false); + try { auto al = f.optional_string_child("DefaultAudioLanguage"); if (al) { @@ -364,6 +365,13 @@ try } } catch (std::runtime_error&) {} + try { + auto te = f.optional_string_child("DefaultTerritory"); + if (te) { + _default_territory = dcp::LanguageTag::RegionSubtag(*te); + } + } catch (std::runtime_error&) {} + for (auto const& i: f.node_children("DefaultMetadata")) { _default_metadata[i->string_attribute("key")] = i->content(); } @@ -765,6 +773,10 @@ Config::write_config () const /* [XML] DefaultAudioLanguage Default audio language to use for new films */ root->add_child("DefaultAudioLanguage")->add_child_text(_default_audio_language->to_string()); } + if (_default_territory) { + /* [XML] DefaultTerritory Default territory to use for new films */ + root->add_child("DefaultTerritory")->add_child_text(_default_territory->subtag()); + } for (auto const& i: _default_metadata) { auto c = root->add_child("DefaultMetadata"); c->set_attribute("key", i.first); diff --git a/src/lib/config.h b/src/lib/config.h index c6bf5986b..62a36f084 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -242,6 +242,10 @@ public: return _default_audio_language; } + boost::optional<dcp::LanguageTag::RegionSubtag> default_territory() const { + return _default_territory; + } + std::map<std::string, std::string> default_metadata () const { return _default_metadata; } @@ -774,6 +778,14 @@ public: maybe_set(_default_audio_language, boost::optional<dcp::LanguageTag>()); } + void set_default_territory(dcp::LanguageTag::RegionSubtag tag) { + maybe_set(_default_territory, tag); + } + + void unset_default_territory() { + maybe_set(_default_territory, boost::optional<dcp::LanguageTag::RegionSubtag>()); + } + void set_default_metadata (std::map<std::string, std::string> const& metadata) { maybe_set (_default_metadata, metadata); } @@ -1305,6 +1317,7 @@ private: int _default_audio_delay; bool _default_interop; boost::optional<dcp::LanguageTag> _default_audio_language; + boost::optional<dcp::LanguageTag::RegionSubtag> _default_territory; std::map<std::string, std::string> _default_metadata; /** Default directory to offer to write KDMs to; if it's not set, the home directory will be offered. diff --git a/src/lib/film.cc b/src/lib/film.cc index e021c0aa9..8b1442849 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -174,6 +174,7 @@ Film::Film (optional<boost::filesystem::path> dir) , _user_explicit_container (false) , _user_explicit_resolution (false) , _name_language (dcp::LanguageTag("en-US")) + , _release_territory(Config::instance()->default_territory()) , _version_number (1) , _status (dcp::Status::FINAL) , _audio_language(Config::instance()->default_audio_language()) diff --git a/src/wx/full_config_dialog.cc b/src/wx/full_config_dialog.cc index 899445d42..19fc29171 100644 --- a/src/wx/full_config_dialog.cc +++ b/src/wx/full_config_dialog.cc @@ -40,6 +40,7 @@ #include "nag_dialog.h" #include "name_format_editor.h" #include "password_entry.h" +#include "region_subtag_widget.h" #include "send_test_email_dialog.h" #include "server_dialog.h" #include "static_text.h" @@ -321,6 +322,11 @@ private: _audio_language = new LanguageTagWidget(_panel, _("Default audio language to use for new DCPs"), Config::instance()->default_audio_language(), wxString("cmnr-Hant-")); table->Add(_audio_language->sizer()); + _enable_territory = new CheckBox(_panel, _("Default territory")); + table->Add(_enable_territory, 1, wxEXPAND | wxALIGN_CENTRE_VERTICAL); + _territory = new RegionSubtagWidget(_panel, _("Default territory to use for new DCPs"), Config::instance()->default_territory(), wxString("cmnr-Hant-")); + table->Add(_territory->sizer()); + table->Add (_enable_metadata["facility"] = new CheckBox (_panel, _("Default facility")), 0, wxALIGN_CENTRE_VERTICAL); table->Add (_metadata["facility"] = new wxTextCtrl (_panel, wxID_ANY, wxT("")), 0, wxEXPAND); @@ -400,6 +406,9 @@ private: _enable_audio_language->bind(&DefaultsPage::enable_audio_language_toggled, this); _audio_language->Changed.connect(boost::bind(&DefaultsPage::audio_language_changed, this)); + + _enable_territory->bind(&DefaultsPage::enable_territory_toggled, this); + _territory->Changed.connect(boost::bind(&DefaultsPage::territory_changed, this)); } void config_changed () override @@ -426,6 +435,9 @@ private: auto dal = config->default_audio_language(); checked_set(_enable_audio_language, static_cast<bool>(dal)); checked_set(_audio_language, dal ? dal : boost::none); + auto dt = config->default_territory(); + checked_set(_enable_territory, static_cast<bool>(dt)); + checked_set(_territory, dt ? dt : boost::none); auto metadata = config->default_metadata(); @@ -574,9 +586,25 @@ private: } } + void enable_territory_toggled() + { + setup_sensitivity(); + territory_changed(); + } + + void territory_changed() + { + if (_enable_territory->get()) { + Config::instance()->set_default_territory(_territory->get().get_value_or(dcp::LanguageTag::RegionSubtag("US"))); + } else { + Config::instance()->unset_default_territory(); + } + } + void setup_sensitivity () { _audio_language->enable(_enable_audio_language->get()); + _territory->enable(_enable_territory->get()); for (auto const& i: _enable_metadata) { _metadata[i.first]->Enable(i.second->GetValue()); } @@ -601,6 +629,8 @@ private: wxChoice* _standard; CheckBox* _enable_audio_language; LanguageTagWidget* _audio_language; + CheckBox* _enable_territory; + RegionSubtagWidget* _territory; map<string, CheckBox*> _enable_metadata; map<string, wxTextCtrl*> _metadata; }; |
