summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-11-29 00:06:29 +0100
committerCarl Hetherington <cth@carlh.net>2022-11-29 00:15:02 +0100
commit00885f610bb9957c602a3aff92fa79066b2b2ef3 (patch)
tree024e5e361a0d3af54d99f791154b7f63066cd254 /src
parent716f05c1301bc5cd811df687875cafaf0d37ffd2 (diff)
Add default release territory configuration (#2375).
Diffstat (limited to 'src')
-rw-r--r--src/lib/config.cc12
-rw-r--r--src/lib/config.h13
-rw-r--r--src/lib/film.cc1
-rw-r--r--src/wx/full_config_dialog.cc30
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;
};