summaryrefslogtreecommitdiff
path: root/src/wx/player_config_dialog.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-10-09 19:19:45 +0100
committerCarl Hetherington <cth@carlh.net>2018-10-09 20:11:33 +0100
commit2eab969654eca2ef4b222790c8b730a6eb709565 (patch)
treebe8b463ce2c56692275e550fd419b7bce707d414 /src/wx/player_config_dialog.cc
parentbc5b4d4dc178dad75eacb02fd2d4e98c7d3801ec (diff)
swaroop: required monitors checks.
Diffstat (limited to 'src/wx/player_config_dialog.cc')
-rw-r--r--src/wx/player_config_dialog.cc83
1 files changed, 79 insertions, 4 deletions
diff --git a/src/wx/player_config_dialog.cc b/src/wx/player_config_dialog.cc
index c588c9065..29b30f8a7 100644
--- a/src/wx/player_config_dialog.cc
+++ b/src/wx/player_config_dialog.cc
@@ -34,7 +34,7 @@
#include "email_dialog.h"
#include "name_format_editor.h"
#include "nag_dialog.h"
-#include "config_dialog.h"
+#include "monitor_dialog.h"
#include "lib/config.h"
#include "lib/ratio.h"
#include "lib/filter.h"
@@ -318,6 +318,80 @@ private:
wxSpinCtrl* _period;
wxSpinCtrl* _duration;
};
+
+class DevicesPage : public StandardPage
+{
+public:
+ DevicesPage (wxSize panel_size, int border)
+ : StandardPage (panel_size, border)
+ {}
+
+ wxString GetName () const
+ {
+ return _("Devices");
+ }
+
+private:
+ void setup ()
+ {
+ vector<string> columns;
+ columns.push_back(wx_to_std(_("Manufacturer ID")));
+ columns.push_back(wx_to_std(_("Product code")));
+ columns.push_back(wx_to_std(_("Serial")));
+ columns.push_back(wx_to_std(_("Manufacture week")));
+ columns.push_back(wx_to_std(_("Manufacture year")));
+ _monitor_list = new EditableList<Monitor, MonitorDialog> (
+ _panel,
+ columns,
+ boost::bind (&Config::required_monitors, Config::instance()),
+ boost::bind (&Config::set_required_monitors, Config::instance(), _1),
+ boost::bind (&DevicesPage::monitor_column, this, _1, _2),
+ true,
+ true,
+ 100
+ );
+ _panel->GetSizer()->Add(_monitor_list, 1, wxEXPAND | wxALL, _border);
+
+ wxButton* get = new wxButton(_panel, wxID_ANY, _("Read current devices"));
+ _panel->GetSizer()->Add(get, 0, wxEXPAND | wxALL, DCPOMATIC_SIZER_GAP);
+ get->Bind(wxEVT_BUTTON, bind(&DevicesPage::get_clicked, this));
+ }
+
+ void get_clicked ()
+ {
+ Config::instance()->set_required_monitors(get_monitors());
+ _monitor_list->refresh ();
+ }
+
+ string monitor_column (Monitor m, int c)
+ {
+ switch (c) {
+ case 0:
+ return m.manufacturer_id;
+ case 1:
+ return locale_convert<string>(m.manufacturer_product_code);
+ case 2:
+ return locale_convert<string>(m.serial_number);
+ case 3:
+ return locale_convert<string>(m.week_of_manufacture);
+ case 4:
+ return locale_convert<string>(m.year_of_manufacture);
+ default:
+ DCPOMATIC_ASSERT(false);
+ }
+
+ return "";
+ }
+
+ void config_changed ()
+ {
+ _monitor_list->refresh ();
+ }
+
+private:
+ EditableList<Monitor, MonitorDialog>* _monitor_list;
+};
+
#endif
wxPreferencesEditor*
@@ -337,10 +411,11 @@ create_player_config_dialog ()
int const border = 8;
#endif
- e->AddPage (new PlayerGeneralPage (ps, border));
- e->AddPage (new KeysPage (ps, border));
+ e->AddPage (new PlayerGeneralPage(ps, border));
+ e->AddPage (new KeysPage(ps, border));
#ifdef DCPOMATIC_VARIANT_SWAROOP
- e->AddPage (new WatermarkPage (ps, border));
+ e->AddPage (new WatermarkPage(ps, border));
+ e->AddPage (new DevicesPage(ps, border));
#endif
return e;
}