Try to fix crash reported in active_jobs_changed.
[dcpomatic.git] / src / wx / player_config_dialog.cc
index 768459e0a1b4298c5fe6b34c3c404a5d8aab42b3..006318b6bab8bda18aa019c29a89ef5059e24e96 100644 (file)
@@ -125,6 +125,11 @@ private:
                _background_image = new FilePickerCtrl (_panel, _("Select image file"), "*.png;*.jpg;*.jpeg;*.tif;*.tiff", true);
                table->Add (_background_image, wxGBPosition (r, 1));
                ++r;
+
+               add_label_to_sizer (table, _panel, _("KDM server URL"), true, wxGBPosition(r, 0));
+               _kdm_server_url = new wxTextCtrl (_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(400, -1));
+               table->Add (_kdm_server_url, wxGBPosition (r, 1));
+               ++r;
 #endif
 
                _player_mode->Bind (wxEVT_CHOICE, bind(&PlayerGeneralPage::player_mode_changed, this));
@@ -135,6 +140,7 @@ private:
                _kdm_directory->Bind (wxEVT_DIRPICKER_CHANGED, bind(&PlayerGeneralPage::kdm_directory_changed, this));
 #ifdef DCPOMATIC_VARIANT_SWAROOP
                _background_image->Bind (wxEVT_FILEPICKER_CHANGED, bind(&PlayerGeneralPage::background_image_changed, this));
+               _kdm_server_url->Bind (wxEVT_TEXT, bind(&PlayerGeneralPage::kdm_server_url_changed, this));
 #endif
        }
 
@@ -171,6 +177,7 @@ private:
                if (config->player_background_image()) {
                        checked_set (_background_image, *config->player_background_image());
                }
+               checked_set (_kdm_server_url, config->kdm_server_url());
 #endif
        }
 
@@ -220,6 +227,11 @@ private:
        {
                Config::instance()->set_player_background_image(wx_to_std(_background_image->GetPath()));
        }
+
+       void kdm_server_url_changed ()
+       {
+               Config::instance()->set_kdm_server_url(wx_to_std(_kdm_server_url->GetValue()));
+       }
 #endif
 
        wxChoice* _player_mode;
@@ -230,9 +242,84 @@ private:
        wxDirPickerCtrl* _kdm_directory;
 #ifdef DCPOMATIC_VARIANT_SWAROOP
        FilePickerCtrl* _background_image;
+       wxTextCtrl* _kdm_server_url;
 #endif
 };
 
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+class WatermarkPage : public StandardPage
+{
+public:
+       WatermarkPage (wxSize panel_size, int border)
+               : StandardPage (panel_size, border)
+       {}
+
+       wxString GetName () const
+       {
+               return _("Watermark");
+       }
+
+private:
+       void setup ()
+       {
+               wxGridBagSizer* table = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
+               _panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
+
+               int r = 0;
+
+               add_label_to_sizer (table, _panel, _("Theatre name"), true, wxGBPosition(r, 0));
+               _theatre = new wxTextCtrl (_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(300, -1));
+               table->Add (_theatre, wxGBPosition(r, 1), wxGBSpan(1, 2));
+               ++r;
+
+               add_label_to_sizer (table, _panel, _("Period"), true, wxGBPosition(r, 0));
+               _period = new wxSpinCtrl (_panel, wxID_ANY);
+               _period->SetRange (1, 60);
+               table->Add (_period, wxGBPosition(r, 1));
+               add_label_to_sizer (table, _panel, _("minutes"), false, wxGBPosition(r, 2));
+               ++r;
+
+               add_label_to_sizer (table, _panel, _("Duration"), true, wxGBPosition(r, 0));
+               _duration = new wxSpinCtrl (_panel, wxID_ANY);
+               _duration->SetRange (1, 200);
+               table->Add (_duration, wxGBPosition(r, 1));
+               add_label_to_sizer (table, _panel, _("milliseconds"), false, wxGBPosition(r, 2));
+               ++r;
+
+               _theatre->Bind (wxEVT_TEXT, bind(&WatermarkPage::theatre_changed, this));
+               _duration->Bind (wxEVT_SPINCTRL, bind(&WatermarkPage::duration_changed, this));
+               _period->Bind (wxEVT_SPINCTRL, bind(&WatermarkPage::period_changed, this));
+       }
+
+       void config_changed ()
+       {
+               Config* config = Config::instance ();
+               checked_set (_theatre, config->player_watermark_theatre());
+               checked_set (_duration, config->player_watermark_duration());
+               checked_set (_period, config->player_watermark_period());
+       }
+
+       void theatre_changed ()
+       {
+               Config::instance()->set_player_watermark_theatre(wx_to_std(_theatre->GetValue()));
+       }
+
+       void period_changed ()
+       {
+               Config::instance()->set_player_watermark_period(_period->GetValue());
+       }
+
+       void duration_changed ()
+       {
+               Config::instance()->set_player_watermark_duration(_duration->GetValue());
+       }
+
+       wxTextCtrl* _theatre;
+       wxSpinCtrl* _period;
+       wxSpinCtrl* _duration;
+};
+#endif
+
 wxPreferencesEditor*
 create_player_config_dialog ()
 {
@@ -252,5 +339,8 @@ create_player_config_dialog ()
 
        e->AddPage (new PlayerGeneralPage (ps, border));
        e->AddPage (new KeysPage (ps, border));
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+       e->AddPage (new WatermarkPage (ps, border));
+#endif
        return e;
 }