diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-03-21 00:10:08 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-05-10 23:43:42 +0100 |
| commit | 14b8b29e6660f5a7fb21135fb5f90b4c1ce51a4b (patch) | |
| tree | ed06e1b877a40f57b8d4d43c1db490e6765fba6a /src/wx/metadata_dialog.cc | |
| parent | d17044d0da61d6077a1f20170ba76ab765a44e50 (diff) | |
Basics of metadata dialog - ratings.
Diffstat (limited to 'src/wx/metadata_dialog.cc')
| -rw-r--r-- | src/wx/metadata_dialog.cc | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/src/wx/metadata_dialog.cc b/src/wx/metadata_dialog.cc new file mode 100644 index 000000000..7cfcd5ca0 --- /dev/null +++ b/src/wx/metadata_dialog.cc @@ -0,0 +1,101 @@ +/* + Copyright (C) 2019 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "metadata_dialog.h" +#include "editable_list.h" +#include "rating_dialog.h" +#include "lib/film.h" +#include <dcp/types.h> +#include <wx/gbsizer.h> + +using std::string; +using std::vector; +using boost::weak_ptr; +using boost::shared_ptr; + +static string +column (dcp::Rating r, int c) +{ + if (c == 0) { + return r.agency; + } + + return r.label; +} + +MetadataDialog::MetadataDialog (wxWindow* parent, weak_ptr<Film> film) + : wxDialog (parent, wxID_ANY, _("Metadata")) + , _film (film) +{ + 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); + + { + int flags = wxALIGN_TOP | wxLEFT | wxRIGHT | wxTOP; +#ifdef __WXOSX__ + flags |= wxALIGN_RIGHT; +#endif + wxStaticText* m = create_label (this, _("Ratings"), true); + sizer->Add (m, 0, flags, DCPOMATIC_SIZER_GAP); + } + + vector<EditableListColumn> columns; + columns.push_back (EditableListColumn("Agency", 200, true)); + columns.push_back (EditableListColumn("Label", 50, false)); + _ratings = new EditableList<dcp::Rating, RatingDialog> ( + this, + columns, + bind(&MetadataDialog::ratings, this), + bind(&MetadataDialog::set_ratings, this, _1), + bind(&column, _1, _2), + true, + false + ); + sizer->Add (_ratings, 1, wxEXPAND); + + 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); +} + +vector<dcp::Rating> +MetadataDialog::ratings () const +{ + shared_ptr<Film> film = _film.lock (); + DCPOMATIC_ASSERT (film); + return film->ratings (); +} + +void +MetadataDialog::set_ratings (vector<dcp::Rating> r) +{ + shared_ptr<Film> film = _film.lock (); + DCPOMATIC_ASSERT (film); + film->set_ratings (r); +} |
