diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-04-02 22:38:16 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-04-04 20:48:34 +0200 |
| commit | f188fc8d92eaba89aaa63cfd7f5a2fc9836e94b6 (patch) | |
| tree | 576f98fd4295ae0e9dae6e0ae92f019876f02ff3 /src/wx/metadata_dialog.cc | |
| parent | 60520afb4a6bb364c981c2b6976805d4128ac81f (diff) | |
Use release territory from Interop/SMPTE metadata instead of ISDCF metadata dialogue.
Diffstat (limited to 'src/wx/metadata_dialog.cc')
| -rw-r--r-- | src/wx/metadata_dialog.cc | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/wx/metadata_dialog.cc b/src/wx/metadata_dialog.cc index abc95c3c1..376591ca2 100644 --- a/src/wx/metadata_dialog.cc +++ b/src/wx/metadata_dialog.cc @@ -19,6 +19,8 @@ */ +#include "dcpomatic_button.h" +#include "full_language_tag_dialog.h" #include "metadata_dialog.h" #include "wx_util.h" #include "lib/film.h" @@ -69,5 +71,82 @@ MetadataDialog::setup () SetSizer (overall_sizer); overall_sizer->Layout (); overall_sizer->SetSizeHints (this); + + _film_changed_connection = film()->Change.connect(boost::bind(&MetadataDialog::film_changed, this, _1, _2)); + + film_changed (ChangeType::DONE, Film::Property::RELEASE_TERRITORY); +} + + +void +MetadataDialog::film_changed (ChangeType type, Film::Property property) +{ + if (type != ChangeType::DONE) { + return; + } + + if (property == Film::Property::RELEASE_TERRITORY) { + auto rt = film()->release_territory(); + checked_set (_enable_release_territory, static_cast<bool>(rt)); + if (rt) { + _release_territory = *rt; + checked_set (_release_territory_text, std_to_wx(*dcp::LanguageTag::get_subtag_description(*_release_territory))); + } + } +} + + +void +MetadataDialog::setup_standard (wxPanel* panel, wxSizer* sizer) +{ + _enable_release_territory = new wxCheckBox (panel, wxID_ANY, _("Release territory")); + sizer->Add (_enable_release_territory, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_GAP); + { + auto s = new wxBoxSizer (wxHORIZONTAL); + _release_territory_text = new wxStaticText (panel, wxID_ANY, wxT("")); + s->Add (_release_territory_text, 1, wxLEFT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP); + _edit_release_territory = new Button (panel, _("Edit...")); + s->Add (_edit_release_territory, 0, wxLEFT, DCPOMATIC_SIZER_GAP); + sizer->Add (s, 0, wxEXPAND); + } + + _edit_release_territory->Bind (wxEVT_BUTTON, boost::bind(&MetadataDialog::edit_release_territory, this)); + _enable_release_territory->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::enable_release_territory_changed, this)); +} + + +void +MetadataDialog::edit_release_territory () +{ + DCPOMATIC_ASSERT (film()->release_territory()); + auto d = new RegionSubtagDialog(this, *film()->release_territory()); + d->ShowModal (); + auto tag = d->get(); + if (tag) { + _release_territory = *tag; + film()->set_release_territory(*tag); + } + d->Destroy (); +} + + +void +MetadataDialog::setup_sensitivity () +{ + auto const enabled = _enable_release_territory->GetValue(); + _release_territory_text->Enable (enabled); + _edit_release_territory->Enable (enabled); +} + + +void +MetadataDialog::enable_release_territory_changed () +{ + setup_sensitivity (); + if (_enable_release_territory->GetValue()) { + film()->set_release_territory (_release_territory.get_value_or(dcp::LanguageTag::RegionSubtag("US"))); + } else { + film()->set_release_territory (); + } } |
