Supporters update.
[dcpomatic.git] / src / wx / extra_kdm_email_dialog.cc
1 /*
2     Copyright (C) 2022 Carl Hetherington <cth@carlh.net>
3
4     This file is part of DCP-o-matic.
5
6     DCP-o-matic is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     DCP-o-matic is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
18
19 */
20
21
22 #include "editable_list.h"
23 #include "extra_kdm_email_dialog.h"
24 #include "wx_util.h"
25 #include <wx/gbsizer.h>
26 #include <vector>
27
28
29 using std::string;
30 using std::vector;
31 #if BOOST_VERSION >= 106100
32 using namespace boost::placeholders;
33 #endif
34
35
36 ExtraKDMEmailDialog::ExtraKDMEmailDialog (wxWindow* parent, vector<string> emails)
37         : wxDialog (parent, wxID_ANY, _("Extra addresses for KDM delivery"))
38         , _emails(emails)
39 {
40         auto overall_sizer = new wxBoxSizer (wxVERTICAL);
41         SetSizer (overall_sizer);
42
43         auto sizer = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
44         int r = 0;
45
46         vector<EditableListColumn> columns;
47         columns.push_back (EditableListColumn(_("Address"), 500, true));
48         _email_list = new EditableList<string, EmailDialog> (
49                 this, columns, bind(&ExtraKDMEmailDialog::get, this), bind(&ExtraKDMEmailDialog::set, this, _1), [](string s, int) {
50                         return s;
51                 }, EditableListTitle::INVISIBLE, EditableListButton::NEW | EditableListButton::EDIT | EditableListButton::REMOVE
52                 );
53
54         sizer->Add (_email_list, wxGBPosition(r, 0), wxGBSpan(1, 2), wxEXPAND);
55         ++r;
56
57         overall_sizer->Add (sizer, 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER);
58
59         auto buttons = CreateSeparatedButtonSizer (wxOK | wxCANCEL);
60         if (buttons) {
61                 overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder());
62         }
63
64         overall_sizer->Layout ();
65         overall_sizer->SetSizeHints (this);
66 }
67
68
69 vector<string>
70 ExtraKDMEmailDialog::get () const
71 {
72         return _emails;
73 }
74
75
76 void
77 ExtraKDMEmailDialog::set(vector<string> emails)
78 {
79         _emails = emails;
80 }
81