+
+ add_label_to_sizer (table, _panel, _("Start player as"), true, wxGBPosition(r, 0));
+ _player_mode = new wxChoice (_panel, wxID_ANY);
+ _player_mode->Append (_("window"));
+ _player_mode->Append (_("full screen"));
+ _player_mode->Append (_("full screen with controls on other monitor"));
+ table->Add (_player_mode, wxGBPosition(r, 1));
+ ++r;
+
+ add_label_to_sizer (table, _panel, _("Dual-screen displays"), true, wxGBPosition(r, 0));
+ _image_display = new wxChoice (_panel, wxID_ANY);
+ _image_display->Append (_("Image on primary, controls on secondary"));
+ _image_display->Append (_("Image on secondary, controls on primary"));
+ table->Add (_image_display, wxGBPosition(r, 1));
+ ++r;
+
+ add_label_to_sizer (table, _panel, _("Video display mode"), true, wxGBPosition(r, 0));
+ _video_display_mode = new wxChoice (_panel, wxID_ANY);
+ _video_display_mode->Append (_("Simple (safer)"));
+ _video_display_mode->Append (_("OpenGL (faster)"));
+ table->Add (_video_display_mode, wxGBPosition(r, 1));
+ ++r;
+
+ wxStaticText* restart = add_label_to_sizer (table, _panel, _("(restart DCP-o-matic to change display mode)"), false, wxGBPosition(r, 0));
+ wxFont font = restart->GetFont();
+ font.SetStyle (wxFONTSTYLE_ITALIC);
+ font.SetPointSize (font.GetPointSize() - 1);
+ restart->SetFont (font);
+ ++r;
+
+ _respect_kdm = new CheckBox (_panel, _("Respect KDM validity periods"));
+ table->Add (_respect_kdm, wxGBPosition(r, 0), wxGBSpan(1, 2));
+ ++r;
+
+ add_label_to_sizer (table, _panel, _("Debug log file"), true, wxGBPosition (r, 0));
+ _debug_log_file = new FilePickerCtrl (_panel, _("Select debug log file"), "*", false, true);
+ table->Add (_debug_log_file, wxGBPosition(r, 1));
+ ++r;
+
+ _player_mode->Bind (wxEVT_CHOICE, bind(&PlayerGeneralPage::player_mode_changed, this));
+ _image_display->Bind (wxEVT_CHOICE, bind(&PlayerGeneralPage::image_display_changed, this));
+ _video_display_mode->Bind (wxEVT_CHOICE, bind(&PlayerGeneralPage::video_display_mode_changed, this));
+ _respect_kdm->bind(&PlayerGeneralPage::respect_kdm_changed, this);
+ _debug_log_file->Bind (wxEVT_FILEPICKER_CHANGED, bind(&PlayerGeneralPage::debug_log_file_changed, this));
+ }
+
+ void config_changed () override
+ {
+ GeneralPage::config_changed ();
+
+ Config* config = Config::instance ();
+
+ switch (config->player_mode()) {
+ case Config::PLAYER_MODE_WINDOW:
+ checked_set (_player_mode, 0);
+ break;
+ case Config::PLAYER_MODE_FULL:
+ checked_set (_player_mode, 1);
+ break;
+ case Config::PLAYER_MODE_DUAL:
+ checked_set (_player_mode, 2);
+ break;
+ }
+
+ switch (config->video_view_type()) {
+ case Config::VIDEO_VIEW_SIMPLE:
+ checked_set (_video_display_mode, 0);
+ break;
+ case Config::VIDEO_VIEW_OPENGL:
+ checked_set (_video_display_mode, 1);
+ break;
+ }
+
+ checked_set (_image_display, config->image_display());
+ checked_set (_respect_kdm, config->respect_kdm_validity_periods());
+ if (config->player_debug_log_file()) {
+ checked_set (_debug_log_file, *config->player_debug_log_file());
+ }
+ }
+
+private:
+ void player_mode_changed ()
+ {
+ switch (_player_mode->GetSelection()) {
+ case 0:
+ Config::instance()->set_player_mode(Config::PLAYER_MODE_WINDOW);
+ break;
+ case 1:
+ Config::instance()->set_player_mode(Config::PLAYER_MODE_FULL);
+ break;
+ case 2:
+ Config::instance()->set_player_mode(Config::PLAYER_MODE_DUAL);
+ break;
+ }