diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-08-28 22:48:28 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-08-28 22:56:42 +0200 |
| commit | 0bbbe85d4a206900b19bc7849a45f63cd8858e89 (patch) | |
| tree | fb56856cf5104a2887b719af23fdc1979fe32006 | |
| parent | 5c86ef0c95903d64cefe93940534c3672cdce68d (diff) | |
Use the same code for both Interop and SMPTE ratings controls.
| -rw-r--r-- | src/wx/interop_metadata_dialog.cc | 32 | ||||
| -rw-r--r-- | src/wx/interop_metadata_dialog.h | 6 | ||||
| -rw-r--r-- | src/wx/metadata_dialog.cc | 35 | ||||
| -rw-r--r-- | src/wx/metadata_dialog.h | 6 | ||||
| -rw-r--r-- | src/wx/smpte_metadata_dialog.cc | 37 | ||||
| -rw-r--r-- | src/wx/smpte_metadata_dialog.h | 4 |
6 files changed, 41 insertions, 79 deletions
diff --git a/src/wx/interop_metadata_dialog.cc b/src/wx/interop_metadata_dialog.cc index c0be1be28..0258f9ca5 100644 --- a/src/wx/interop_metadata_dialog.cc +++ b/src/wx/interop_metadata_dialog.cc @@ -19,7 +19,6 @@ */ -#include "editable_list.h" #include "interop_metadata_dialog.h" #include "language_tag_widget.h" #include "rating_dialog.h" @@ -60,23 +59,6 @@ InteropMetadataDialog::setup_standard (wxPanel* panel, wxSizer* sizer) sizer->Add (m, 0, flags, DCPOMATIC_SIZER_GAP); } - vector<EditableListColumn> columns; - columns.push_back (EditableListColumn(_("Agency"), 200, true)); - columns.push_back (EditableListColumn(_("Label"), 50, true)); - _ratings = new EditableList<dcp::Rating, RatingDialog> ( - panel, - columns, - boost::bind(&InteropMetadataDialog::ratings, this), - boost::bind(&InteropMetadataDialog::set_ratings, this, _1), - [](dcp::Rating r, int c) { - if (c == 0) { - return r.agency; - } - return r.label; - }, - true, - EditableListButton::NEW | EditableListButton::EDIT | EditableListButton::REMOVE - ); sizer->Add (_ratings, 1, wxEXPAND); add_label_to_sizer (sizer, panel, _("Content version"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL); @@ -91,20 +73,6 @@ InteropMetadataDialog::setup_standard (wxPanel* panel, wxSizer* sizer) } -vector<dcp::Rating> -InteropMetadataDialog::ratings () const -{ - return film()->ratings (); -} - - -void -InteropMetadataDialog::set_ratings (vector<dcp::Rating> r) -{ - film()->set_ratings (r); -} - - void InteropMetadataDialog::content_version_changed () { diff --git a/src/wx/interop_metadata_dialog.h b/src/wx/interop_metadata_dialog.h index 1d7a5a6eb..a2423d9bd 100644 --- a/src/wx/interop_metadata_dialog.h +++ b/src/wx/interop_metadata_dialog.h @@ -19,7 +19,6 @@ */ -#include "editable_list.h" #include "metadata_dialog.h" #include <dcp/language_tag.h> #include <dcp/types.h> @@ -32,7 +31,6 @@ LIBDCP_ENABLE_WARNINGS class Film; class LanguageTagWidget; -class RatingDialog; class InteropMetadataDialog : public MetadataDialog @@ -43,11 +41,7 @@ public: private: void setup_standard (wxPanel* panel, wxSizer* sizer) override; - void set_ratings (std::vector<dcp::Rating> r); void content_version_changed (); - std::vector<dcp::Rating> ratings () const; - - EditableList<dcp::Rating, RatingDialog>* _ratings; wxTextCtrl* _content_version; }; diff --git a/src/wx/metadata_dialog.cc b/src/wx/metadata_dialog.cc index 69dee0c46..f4d334096 100644 --- a/src/wx/metadata_dialog.cc +++ b/src/wx/metadata_dialog.cc @@ -20,9 +20,11 @@ #include "dcpomatic_button.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 <dcp/warnings.h> @@ -36,6 +38,7 @@ LIBDCP_ENABLE_WARNINGS using std::weak_ptr; +using std::vector; MetadataDialog::MetadataDialog (wxWindow* parent, weak_ptr<Film> weak_film) @@ -183,6 +186,24 @@ MetadataDialog::setup_standard (wxPanel* panel, wxSizer* sizer) s->Add (_edit_release_territory, 0, wxLEFT, DCPOMATIC_SIZER_GAP); sizer->Add (s, 0, wxEXPAND); } + + vector<EditableListColumn> columns; + columns.push_back (EditableListColumn("Agency", 200, true)); + columns.push_back (EditableListColumn("Label", 50, true)); + _ratings = new EditableList<dcp::Rating, RatingDialog> ( + panel, + columns, + boost::bind(&MetadataDialog::ratings, this), + boost::bind(&MetadataDialog::set_ratings, this, _1), + [](dcp::Rating r, int c) { + if (c == 0) { + return r.agency; + } + return r.label; + }, + true, + EditableListButton::NEW | EditableListButton::EDIT | EditableListButton::REMOVE + ); } @@ -408,3 +429,17 @@ MetadataDialog::sign_language_video_language_changed () film()->set_sign_language_video_language(_sign_language_video_language->get()); } + +vector<dcp::Rating> +MetadataDialog::ratings() const +{ + return film()->ratings(); +} + + +void +MetadataDialog::set_ratings(vector<dcp::Rating> r) +{ + film()->set_ratings(r); +} + diff --git a/src/wx/metadata_dialog.h b/src/wx/metadata_dialog.h index 8a0ff9f44..591ef3db4 100644 --- a/src/wx/metadata_dialog.h +++ b/src/wx/metadata_dialog.h @@ -23,6 +23,7 @@ #define DCPOMATIC_METADATA_DIALOG_H +#include "editable_list.h" #include "lib/change_signaller.h" #include "lib/film.h" #include "lib/weak_film.h" @@ -33,6 +34,7 @@ LIBDCP_ENABLE_WARNINGS class Button; +class RatingDialog; class wxSpinCtrlDouble; class LanguageTagWidget; @@ -50,6 +52,8 @@ protected: virtual void film_changed (ChangeType type, Film::Property property); virtual void setup_sensitivity (); + EditableList<dcp::Rating, RatingDialog>* _ratings; + private: void sign_language_video_language_changed (); void edit_release_territory (); @@ -66,6 +70,8 @@ private: void enable_chain_changed (); void enable_luminance_changed (); void luminance_changed (); + std::vector<dcp::Rating> ratings () const; + void set_ratings (std::vector<dcp::Rating> r); wxCheckBox* _enable_release_territory; /** The current release territory displayed in the UI; since we can't easily convert diff --git a/src/wx/smpte_metadata_dialog.cc b/src/wx/smpte_metadata_dialog.cc index 3838c8a6c..a31b9ad76 100644 --- a/src/wx/smpte_metadata_dialog.cc +++ b/src/wx/smpte_metadata_dialog.cc @@ -45,17 +45,6 @@ using namespace boost::placeholders; static string -ratings_column (dcp::Rating r, int c) -{ - if (c == 0) { - return r.agency; - } - - return r.label; -} - - -static string content_versions_column (string v, int) { return v; @@ -84,18 +73,6 @@ SMPTEMetadataDialog::setup_standard (wxPanel* panel, wxSizer* sizer) sizer->Add (m, 0, flags, DCPOMATIC_SIZER_GAP); } - vector<EditableListColumn> columns; - columns.push_back (EditableListColumn("Agency", 200, true)); - columns.push_back (EditableListColumn("Label", 50, true)); - _ratings = new EditableList<dcp::Rating, RatingDialog> ( - panel, - columns, - boost::bind(&SMPTEMetadataDialog::ratings, this), - boost::bind(&SMPTEMetadataDialog::set_ratings, this, _1), - boost::bind(&ratings_column, _1, _2), - true, - EditableListButton::NEW | EditableListButton::EDIT | EditableListButton::REMOVE - ); sizer->Add (_ratings, 1, wxEXPAND); } @@ -208,20 +185,6 @@ SMPTEMetadataDialog::film_changed (ChangeType type, Film::Property property) } -vector<dcp::Rating> -SMPTEMetadataDialog::ratings () const -{ - return film()->ratings (); -} - - -void -SMPTEMetadataDialog::set_ratings (vector<dcp::Rating> r) -{ - film()->set_ratings (r); -} - - vector<string> SMPTEMetadataDialog::content_versions () const { diff --git a/src/wx/smpte_metadata_dialog.h b/src/wx/smpte_metadata_dialog.h index c684ef532..8193e172c 100644 --- a/src/wx/smpte_metadata_dialog.h +++ b/src/wx/smpte_metadata_dialog.h @@ -37,7 +37,6 @@ class ContentVersionDialog; class Film; class LanguageTagDialog; class LanguageTagWidget; -class RatingDialog; class SMPTEMetadataDialog : public MetadataDialog @@ -53,8 +52,6 @@ private: void film_changed (ChangeType type, Film::Property property) override; void setup_sensitivity () override; - std::vector<dcp::Rating> ratings () const; - void set_ratings (std::vector<dcp::Rating> r); std::vector<std::string> content_versions () const; void set_content_versions (std::vector<std::string> v); void name_language_changed (dcp::LanguageTag tag); @@ -68,6 +65,5 @@ private: wxChoice* _status; wxCheckBox* _enable_distributor; wxTextCtrl* _distributor; - EditableList<dcp::Rating, RatingDialog>* _ratings; EditableList<std::string, ContentVersionDialog>* _content_versions; }; |
