diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-03-23 00:50:11 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-03-31 22:48:53 +0200 |
| commit | e0a70cd5cfb11fc2de167f3146acdd437a6faa82 (patch) | |
| tree | 022ceef78d7daa12bccf519ebab0db5e23a3feb6 /src/wx/smpte_metadata_dialog.cc | |
| parent | 8640da877450479a85c73b2a921897d83b478c84 (diff) | |
Put subtitle language back into content from the film (#1930).
This also adds the main/additional language flag.
Of all the considerations about how to specify subtitle language,
the most important seems to be that the language specification happens
for the content where the language is; i.e. in the content text tab.
Diffstat (limited to 'src/wx/smpte_metadata_dialog.cc')
| -rw-r--r-- | src/wx/smpte_metadata_dialog.cc | 101 |
1 files changed, 1 insertions, 100 deletions
diff --git a/src/wx/smpte_metadata_dialog.cc b/src/wx/smpte_metadata_dialog.cc index 36cf48489..470e9317e 100644 --- a/src/wx/smpte_metadata_dialog.cc +++ b/src/wx/smpte_metadata_dialog.cc @@ -91,38 +91,6 @@ SMPTEMetadataDialog::main_panel (wxWindow* parent) ); sizer->Add (_audio_language->sizer(), 0, wxEXPAND); - _enable_main_subtitle_language = new wxCheckBox (panel, wxID_ANY, _("Main subtitle language")); - sizer->Add (_enable_main_subtitle_language, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_GAP); - auto subtitle_languages = film()->subtitle_languages(); - _main_subtitle_language = new LanguageTagWidget( - panel, - _("The main language that is displayed in the film's subtitles"), - subtitle_languages.empty() ? dcp::LanguageTag("en-US") : subtitle_languages.front() - ); - sizer->Add (_main_subtitle_language->sizer(), 0, wxEXPAND); - - { - int flags = wxALIGN_TOP | wxRIGHT | wxTOP; -#ifdef __WXOSX__ - flags |= wxALIGN_RIGHT; -#endif - auto m = create_label (panel, _("Additional subtitle languages"), true); - sizer->Add (m, 0, flags, DCPOMATIC_SIZER_GAP); - } - - vector<EditableListColumn> columns; - columns.push_back (EditableListColumn("Language", 250, true)); - _additional_subtitle_languages = new EditableList<dcp::LanguageTag, LanguageTagDialog> ( - panel, - columns, - boost::bind(&SMPTEMetadataDialog::additional_subtitle_languages, this), - boost::bind(&SMPTEMetadataDialog::set_additional_subtitle_languages, this, _1), - boost::bind(&additional_subtitle_language_column, _1, _2), - true, - false - ); - sizer->Add (_additional_subtitle_languages, 1, wxEXPAND); - { int flags = wxALIGN_TOP | wxRIGHT | wxTOP; #ifdef __WXOSX__ @@ -132,7 +100,7 @@ SMPTEMetadataDialog::main_panel (wxWindow* parent) sizer->Add (m, 0, flags, DCPOMATIC_SIZER_GAP); } - columns.clear (); + vector<EditableListColumn> columns; columns.push_back (EditableListColumn("Agency", 200, true)); columns.push_back (EditableListColumn("Label", 50, true)); _ratings = new EditableList<dcp::Rating, RatingDialog> ( @@ -267,9 +235,7 @@ SMPTEMetadataDialog::SMPTEMetadataDialog (wxWindow* parent, weak_ptr<Film> weak_ _name_language->Changed.connect (boost::bind(&SMPTEMetadataDialog::name_language_changed, this, _1)); _audio_language->Changed.connect (boost::bind(&SMPTEMetadataDialog::audio_language_changed, this, _1)); - _enable_main_subtitle_language->Bind (wxEVT_CHECKBOX, boost::bind(&SMPTEMetadataDialog::enable_main_subtitle_changed, this)); _edit_release_territory->Bind (wxEVT_BUTTON, boost::bind(&SMPTEMetadataDialog::edit_release_territory, this)); - _main_subtitle_language->Changed.connect (boost::bind(&SMPTEMetadataDialog::main_subtitle_language_changed, this, _1)); _version_number->Bind (wxEVT_SPINCTRL, boost::bind(&SMPTEMetadataDialog::version_number_changed, this)); _status->Bind (wxEVT_CHOICE, boost::bind(&SMPTEMetadataDialog::status_changed, this)); _enable_chain->Bind (wxEVT_CHECKBOX, boost::bind(&SMPTEMetadataDialog::enable_chain_changed, this)); @@ -362,14 +328,6 @@ SMPTEMetadataDialog::film_changed (ChangeType type, Film::Property property) checked_set (_luminance_value, 4.5); checked_set (_luminance_unit, 1); } - } else if (property == Film::Property::SUBTITLE_LANGUAGES) { - auto languages = film()->subtitle_languages(); - checked_set (_enable_main_subtitle_language, !languages.empty()); - if (!languages.empty()) { - _main_subtitle_language->set (languages.front()); - } else { - _main_subtitle_language->set (dcp::LanguageTag("en-US")); - } } } @@ -496,20 +454,6 @@ SMPTEMetadataDialog::luminance_changed () void -SMPTEMetadataDialog::enable_main_subtitle_changed () -{ - setup_sensitivity (); - if (_enable_main_subtitle_language->GetValue()) { - film()->set_subtitle_language (_main_subtitle_language->get()); - } else { - set_additional_subtitle_languages (vector<dcp::LanguageTag>()); - _additional_subtitle_languages->refresh (); - film()->unset_subtitle_language (); - } -} - - -void SMPTEMetadataDialog::setup_sensitivity () { { @@ -521,49 +465,6 @@ SMPTEMetadataDialog::setup_sensitivity () _chain->Enable (_enable_chain->GetValue()); _distributor->Enable (_enable_distributor->GetValue()); _facility->Enable (_enable_facility->GetValue()); - - { - auto const enabled = _enable_main_subtitle_language->GetValue(); - _main_subtitle_language->enable (enabled); - _additional_subtitle_languages->Enable (enabled); - } -} - - -void -SMPTEMetadataDialog::main_subtitle_language_changed (dcp::LanguageTag tag) -{ - auto existing = film()->subtitle_languages(); - if (existing.empty()) { - existing.push_back (tag); - } else { - existing[0] = tag; - } - - film()->set_subtitle_languages (existing); -} - - -vector<dcp::LanguageTag> -SMPTEMetadataDialog::additional_subtitle_languages () -{ - auto all = film()->subtitle_languages(); - if (all.empty()) { - return all; - } - - return vector<dcp::LanguageTag>(all.begin() + 1, all.end()); -} - - -void -SMPTEMetadataDialog::set_additional_subtitle_languages (vector<dcp::LanguageTag> languages) -{ - auto all = film()->subtitle_languages(); - DCPOMATIC_ASSERT (!all.empty()); - all.resize (1); - copy (languages.begin(), languages.end(), back_inserter(all)); - film()->set_subtitle_languages (all); } |
