X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fmetadata_dialog.cc;h=b7156adc3fb98b4bcdd1bf3edbfd3e068468b3be;hb=ed0b5670e65647a9f0555ed66f81125678d193a7;hp=899118902cf84deb3ac48116c037e597e6394eb6;hpb=6d716e405a0781c3d6cdc37d3718a8858faf3dd9;p=dcpomatic.git diff --git a/src/wx/metadata_dialog.cc b/src/wx/metadata_dialog.cc index 899118902..b7156adc3 100644 --- a/src/wx/metadata_dialog.cc +++ b/src/wx/metadata_dialog.cc @@ -19,27 +19,37 @@ */ +#include "check_box.h" #include "dcpomatic_button.h" +#include "dcpomatic_choice.h" +#include "editable_list.h" #include "full_language_tag_dialog.h" #include "language_tag_widget.h" #include "metadata_dialog.h" +#include "rating_dialog.h" #include "wx_util.h" #include "lib/film.h" -#include -#include +#include +LIBDCP_DISABLE_WARNINGS #include #include #include +LIBDCP_ENABLE_WARNINGS +#include +#include using std::weak_ptr; +using std::vector; MetadataDialog::MetadataDialog (wxWindow* parent, weak_ptr weak_film) : wxDialog (parent, wxID_ANY, _("Metadata")) , WeakFilm (weak_film) { - + for (auto system: dcp::rating_systems()) { + _rating_system_agency_to_name[system.agency] = system.name; + } } @@ -76,18 +86,18 @@ MetadataDialog::setup () _sign_language_video_language->Changed.connect (boost::bind(&MetadataDialog::sign_language_video_language_changed, this)); _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)); - _enable_facility->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::enable_facility_changed, this)); + _enable_release_territory->bind(&MetadataDialog::enable_release_territory_changed, this); + _enable_facility->bind(&MetadataDialog::enable_facility_changed, this); _facility->Bind (wxEVT_TEXT, boost::bind(&MetadataDialog::facility_changed, this)); - _enable_studio->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::enable_studio_changed, this)); + _enable_studio->bind(&MetadataDialog::enable_studio_changed, this); _studio->Bind (wxEVT_TEXT, boost::bind(&MetadataDialog::studio_changed, this)); - _enable_chain->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::enable_chain_changed, this)); + _enable_chain->bind(&MetadataDialog::enable_chain_changed, this); _chain->Bind (wxEVT_TEXT, boost::bind(&MetadataDialog::chain_changed, this)); - _temp_version->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::temp_version_changed, this)); - _pre_release->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::pre_release_changed, this)); - _red_band->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::red_band_changed, this)); - _two_d_version_of_three_d->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::two_d_version_of_three_d_changed, this)); - _enable_luminance->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::enable_luminance_changed, this)); + _temp_version->bind(&MetadataDialog::temp_version_changed, this); + _pre_release->bind(&MetadataDialog::pre_release_changed, this); + _red_band->bind(&MetadataDialog::red_band_changed, this); + _two_d_version_of_three_d->bind(&MetadataDialog::two_d_version_of_three_d_changed, this); + _enable_luminance->bind(&MetadataDialog::enable_luminance_changed, this); _luminance_value->Bind (wxEVT_SPINCTRLDOUBLE, boost::bind(&MetadataDialog::luminance_changed, this)); _luminance_unit->Bind (wxEVT_CHOICE, boost::bind(&MetadataDialog::luminance_changed, this)); @@ -170,7 +180,7 @@ MetadataDialog::film_changed (ChangeType type, Film::Property property) void MetadataDialog::setup_standard (wxPanel* panel, wxSizer* sizer) { - _enable_release_territory = new wxCheckBox (panel, wxID_ANY, _("Release territory")); + _enable_release_territory = new CheckBox(panel, _("Release territory")); sizer->Add (_enable_release_territory, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_GAP); { auto s = new wxBoxSizer (wxHORIZONTAL); @@ -180,6 +190,29 @@ MetadataDialog::setup_standard (wxPanel* panel, wxSizer* sizer) s->Add (_edit_release_territory, 0, wxLEFT, DCPOMATIC_SIZER_GAP); sizer->Add (s, 0, wxEXPAND); } + + vector columns; + columns.push_back(EditableListColumn("Agency", 200, true)); + columns.push_back(EditableListColumn("Label", 400, true)); + _ratings = new EditableList ( + panel, + columns, + boost::bind(&MetadataDialog::ratings, this), + boost::bind(&MetadataDialog::set_ratings, this, _1), + [this](dcp::Rating r, int c) { + if (c == 0) { + auto iter = _rating_system_agency_to_name.find(r.agency); + if (iter != _rating_system_agency_to_name.end()) { + return iter->second; + } + return r.agency; + } + return r.label; + }, + EditableListTitle::VISIBLE, + EditableListButton::NEW | EditableListButton::EDIT | EditableListButton::REMOVE + ); + _ratings->SetMinSize(wxSize(600, -1)); } @@ -232,53 +265,53 @@ MetadataDialog::setup_advanced (wxPanel* panel, wxSizer* sizer) _sign_language_video_language = new LanguageTagWidget (panel, _("Language used for any sign language video track"), {}, {}); sizer->Add (_sign_language_video_language->sizer(), 1, wxEXPAND); - _enable_facility = new wxCheckBox (panel, wxID_ANY, _("Facility")); + _enable_facility = new CheckBox(panel, _("Facility")); sizer->Add (_enable_facility, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL); _facility = new wxTextCtrl (panel, wxID_ANY); sizer->Add (_facility, 1, wxEXPAND); - _enable_studio = new wxCheckBox (panel, wxID_ANY, _("Studio")); + _enable_studio = new CheckBox(panel, _("Studio")); sizer->Add (_enable_studio, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL); _studio = new wxTextCtrl (panel, wxID_ANY); sizer->Add (_studio, 1, wxEXPAND); - _enable_chain = new wxCheckBox (panel, wxID_ANY, _("Chain")); + _enable_chain = new CheckBox(panel, _("Chain")); sizer->Add (_enable_chain, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL); _chain = new wxTextCtrl (panel, wxID_ANY); sizer->Add (_chain, 1, wxEXPAND); - _temp_version = new wxCheckBox (panel, wxID_ANY, _("Temporary version")); + _temp_version = new CheckBox(panel, _("Temporary version")); sizer->Add (_temp_version, 0, wxALIGN_CENTER_VERTICAL); sizer->AddSpacer (0); - _pre_release = new wxCheckBox (panel, wxID_ANY, _("Pre-release")); + _pre_release = new CheckBox(panel, _("Pre-release")); sizer->Add (_pre_release, 0, wxALIGN_CENTER_VERTICAL); sizer->AddSpacer (0); - _red_band = new wxCheckBox (panel, wxID_ANY, _("Red band")); + _red_band = new CheckBox(panel, _("Red band")); sizer->Add (_red_band, 0, wxALIGN_CENTER_VERTICAL); sizer->AddSpacer (0); - _two_d_version_of_three_d = new wxCheckBox (panel, wxID_ANY, _("2D version of 3D DCP")); + _two_d_version_of_three_d = new CheckBox(panel, _("2D version of 3D DCP")); sizer->Add (_two_d_version_of_three_d, 0, wxALIGN_CENTER_VERTICAL); sizer->AddSpacer (0); - _enable_luminance = new wxCheckBox (panel, wxID_ANY, _("Luminance")); + _enable_luminance = new CheckBox(panel, _("Luminance")); sizer->Add (_enable_luminance, 0, wxALIGN_CENTER_VERTICAL); { auto s = new wxBoxSizer (wxHORIZONTAL); _luminance_value = new wxSpinCtrlDouble (panel, wxID_ANY); + _luminance_value->SetRange (0.1, 32.0); _luminance_value->SetDigits (1); _luminance_value->SetIncrement (0.1); s->Add (_luminance_value, 0); - _luminance_unit = new wxChoice (panel, wxID_ANY); + _luminance_unit = new Choice(panel); s->Add (_luminance_unit, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP); sizer->Add (s, 1, wxEXPAND); } - _luminance_unit->Append (wxString::FromUTF8(_("candela per m²"))); - _luminance_unit->Append (_("foot lambert")); - + _luminance_unit->add(_("candela per m²")); + _luminance_unit->add(_("foot lambert")); } @@ -383,7 +416,8 @@ void MetadataDialog::luminance_changed () { dcp::Luminance::Unit unit; - switch (_luminance_unit->GetSelection()) { + DCPOMATIC_ASSERT(_luminance_unit->get()); + switch (*_luminance_unit->get()) { case 0: unit = dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE; break; @@ -404,3 +438,17 @@ MetadataDialog::sign_language_video_language_changed () film()->set_sign_language_video_language(_sign_language_video_language->get()); } + +vector +MetadataDialog::ratings() const +{ + return film()->ratings(); +} + + +void +MetadataDialog::set_ratings(vector r) +{ + film()->set_ratings(r); +} +