X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Finterop_metadata_dialog.cc;h=61aa2349867426cdb6ba334d53af71bbd7b84e5a;hb=92933c13e9233149e4e80244d92da81b70072214;hp=5555bf50e9bb145f5d8c83733a6283379c480093;hpb=e519feaca11005d330e7b8403b948d4ad9cc3ae8;p=dcpomatic.git diff --git a/src/wx/interop_metadata_dialog.cc b/src/wx/interop_metadata_dialog.cc index 5555bf50e..61aa23498 100644 --- a/src/wx/interop_metadata_dialog.cc +++ b/src/wx/interop_metadata_dialog.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2020 Carl Hetherington + Copyright (C) 2020-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,59 +18,42 @@ */ -#include "interop_metadata_dialog.h" + #include "editable_list.h" +#include "interop_metadata_dialog.h" #include "language_tag_widget.h" #include "rating_dialog.h" #include "lib/film.h" #include #include + using std::string; using std::vector; -using boost::weak_ptr; -using boost::shared_ptr; +using std::weak_ptr; +using std::shared_ptr; #if BOOST_VERSION >= 106100 using namespace boost::placeholders; #endif -static string -column (dcp::Rating r, int c) +InteropMetadataDialog::InteropMetadataDialog (wxWindow* parent, weak_ptr film) + : MetadataDialog (parent, film) { - if (c == 0) { - return r.agency; - } - return r.label; } -InteropMetadataDialog::InteropMetadataDialog (wxWindow* parent, weak_ptr film) - : wxDialog (parent, wxID_ANY, _("Metadata")) - , _film (film) +void +InteropMetadataDialog::setup_standard (wxPanel* panel, wxSizer* sizer) { - wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL); - SetSizer (overall_sizer); - - wxFlexGridSizer* sizer = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); - sizer->AddGrowableCol (1, 1); - - shared_ptr f = _film.lock(); - DCPOMATIC_ASSERT (f); - - _enable_subtitle_language = new wxCheckBox (this, wxID_ANY, _("Subtitle language")); - sizer->Add (_enable_subtitle_language, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_GAP); - vector langs = f->subtitle_languages (); - _enable_subtitle_language->SetValue (!langs.empty()); - _subtitle_language = new LanguageTagWidget (this, wxT(""), langs.empty() ? dcp::LanguageTag("en-US") : langs.front()); - sizer->Add (_subtitle_language->sizer(), 1, wxEXPAND); + MetadataDialog::setup_standard (panel, sizer); { int flags = wxALIGN_TOP | wxLEFT | wxRIGHT | wxTOP; #ifdef __WXOSX__ flags |= wxALIGN_RIGHT; #endif - wxStaticText* m = create_label (this, _("Ratings"), true); + auto m = create_label (panel, _("Ratings"), true); sizer->Add (m, 0, flags, DCPOMATIC_SIZER_GAP); } @@ -78,90 +61,49 @@ InteropMetadataDialog::InteropMetadataDialog (wxWindow* parent, weak_ptr f columns.push_back (EditableListColumn(_("Agency"), 200, true)); columns.push_back (EditableListColumn(_("Label"), 50, true)); _ratings = new EditableList ( - this, + panel, columns, boost::bind(&InteropMetadataDialog::ratings, this), boost::bind(&InteropMetadataDialog::set_ratings, this, _1), - boost::bind(&column, _1, _2), + [](dcp::Rating r, int c) { + if (c == 0) { + return r.agency; + } + return r.label; + }, true, false ); sizer->Add (_ratings, 1, wxEXPAND); - add_label_to_sizer (sizer, this, _("Content version"), true); - _content_version = new wxTextCtrl (this, wxID_ANY); + add_label_to_sizer (sizer, panel, _("Content version"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL); + _content_version = new wxTextCtrl (panel, wxID_ANY); sizer->Add (_content_version, 1, wxEXPAND); - vector cv = f->content_versions(); + auto cv = film()->content_versions(); _content_version->SetValue (std_to_wx(cv.empty() ? "" : cv[0])); - overall_sizer->Add (sizer, 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER); - - wxSizer* buttons = CreateSeparatedButtonSizer (wxCLOSE); - if (buttons) { - overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder()); - } - - overall_sizer->Layout (); - overall_sizer->SetSizeHints (this); - - _enable_subtitle_language->Bind (wxEVT_CHECKBOX, boost::bind(&InteropMetadataDialog::setup_sensitivity, this)); - _subtitle_language->Changed.connect (boost::bind(&InteropMetadataDialog::subtitle_language_changed, this, _1)); - _content_version->Bind (wxEVT_TEXT, boost::bind(&InteropMetadataDialog::content_version_changed, this)); _content_version->SetFocus (); - - setup_sensitivity (); -} - - -void -InteropMetadataDialog::setup_sensitivity () -{ - bool const enabled = _enable_subtitle_language->GetValue(); - _subtitle_language->enable (enabled); - - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); - if (enabled) { - film->set_subtitle_language (_subtitle_language->get()); - } else { - film->unset_subtitle_language (); - } -} - - -void -InteropMetadataDialog::subtitle_language_changed (dcp::LanguageTag language) -{ - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); - film->set_subtitle_language (language); } vector InteropMetadataDialog::ratings () const { - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); - return film->ratings (); + return film()->ratings (); } + void InteropMetadataDialog::set_ratings (vector r) { - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); - film->set_ratings (r); + film()->set_ratings (r); } + void InteropMetadataDialog::content_version_changed () { - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); - vector cv; - cv.push_back (wx_to_std(_content_version->GetValue())); - film->set_content_versions (cv); + film()->set_content_versions ({ wx_to_std(_content_version->GetValue()) }); }