Move _state_timer into VideoView.
[dcpomatic.git] / src / wx / full_config_dialog.cc
index 9d427054267237a307da9877701e39bfb2d0d3a2..ce199e58aae87b3975e3210c65caba1d66cc097a 100644 (file)
@@ -105,19 +105,17 @@ private:
                ++r;
 
                add_label_to_sizer (table, _panel, _("Configuration file"), true, wxGBPosition (r, 0));
-               _config_file = new FilePickerCtrl (_panel, _("Select configuration file"), "*.xml", true);
+               _config_file = new FilePickerCtrl (_panel, _("Select configuration file"), "*.xml", true, true);
                table->Add (_config_file, wxGBPosition (r, 1));
                ++r;
 
                add_label_to_sizer (table, _panel, _("Cinema and screen database file"), true, wxGBPosition (r, 0));
-               _cinemas_file = new FilePickerCtrl (_panel, _("Select cinema and screen database file"), "*.xml", true);
+               _cinemas_file = new FilePickerCtrl (_panel, _("Select cinema and screen database file"), "*.xml", true, true);
                table->Add (_cinemas_file, wxGBPosition (r, 1));
                Button* export_cinemas = new Button (_panel, _("Export..."));
                table->Add (export_cinemas, wxGBPosition (r, 2));
                ++r;
 
-               add_play_sound_controls (table, r);
-
 #ifdef DCPOMATIC_HAVE_EBUR128_PATCHED_FFMPEG
                _analyse_ebur128 = new CheckBox (_panel, _("Find integrated loudness, true peak and loudness range when analysing audio"));
                table->Add (_analyse_ebur128, wxGBPosition (r, 0), wxGBSpan (1, 2));
@@ -592,8 +590,8 @@ private:
                _use_any_servers = new CheckBox (_panel, _("Search network for servers"));
                _panel->GetSizer()->Add (_use_any_servers, 0, wxALL, _border);
 
-               vector<string> columns;
-               columns.push_back (wx_to_std (_("IP address / host name")));
+               vector<EditableListColumn> columns;
+               columns.push_back (EditableListColumn(wx_to_std(_("IP address / host name"))));
                _servers_list = new EditableList<string, ServerDialog> (
                        _panel,
                        columns,
@@ -902,8 +900,8 @@ private:
                _from = new wxTextCtrl (_panel, wxID_ANY);
                table->Add (_from, 1, wxEXPAND | wxALL);
 
-               vector<string> columns;
-               columns.push_back (wx_to_std (_("Address")));
+               vector<EditableListColumn> columns;
+               columns.push_back (EditableListColumn(wx_to_std(_("Address"))));
                add_label_to_sizer (table, _panel, _("CC addresses"), true);
                _cc = new EditableList<string, EmailDialog> (
                        _panel,
@@ -983,145 +981,6 @@ private:
        wxButton* _reset_email;
 };
 
-class AccountsPage : public StandardPage
-{
-public:
-       AccountsPage (wxSize panel_size, int border)
-               : StandardPage (panel_size, border)
-       {}
-
-       wxString GetName () const
-       {
-               return _("Accounts");
-       }
-
-#ifdef DCPOMATIC_OSX
-       wxBitmap GetLargeIcon () const
-       {
-               return wxBitmap ("accounts", wxBITMAP_TYPE_PNG_RESOURCE);
-       }
-#endif
-
-       void setup ()
-       {
-               wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
-               table->AddGrowableCol (1, 1);
-               _panel->GetSizer()->Add (table, 1, wxEXPAND | wxALL, _border);
-
-               add_label_to_sizer (table, _panel, _("certificates.barco.com user name"), true);
-               _barco_username = new wxTextCtrl (_panel, wxID_ANY);
-               table->Add (_barco_username, 1, wxEXPAND | wxALL);
-
-               add_label_to_sizer (table, _panel, _("certificates.barco.com password"), true);
-               _barco_password = new PasswordEntry (_panel);
-               table->Add (_barco_password->get_panel(), 1, wxEXPAND | wxALL);
-
-               add_label_to_sizer (table, _panel, _("certificates.christiedigital.com user name"), true);
-               _christie_username = new wxTextCtrl (_panel, wxID_ANY);
-               table->Add (_christie_username, 1, wxEXPAND | wxALL);
-
-               add_label_to_sizer (table, _panel, _("certificates.christiedigital.com password"), true);
-               _christie_password = new PasswordEntry (_panel);
-               table->Add (_christie_password->get_panel(), 1, wxEXPAND | wxALL);
-
-               add_label_to_sizer (table, _panel, _("GDC user name"), true);
-               _gdc_username = new wxTextCtrl (_panel, wxID_ANY);
-               table->Add (_gdc_username, 1, wxEXPAND | wxALL);
-
-               add_label_to_sizer (table, _panel, _("GDC password"), true);
-               _gdc_password = new PasswordEntry (_panel);
-               table->Add (_gdc_password->get_panel(), 1, wxEXPAND | wxALL);
-
-               _barco_username->Bind (wxEVT_TEXT, boost::bind(&AccountsPage::barco_username_changed, this));
-               _barco_password->Changed.connect (boost::bind(&AccountsPage::barco_password_changed, this));
-               _christie_username->Bind (wxEVT_TEXT, boost::bind(&AccountsPage::christie_username_changed, this));
-               _christie_password->Changed.connect (boost::bind(&AccountsPage::christie_password_changed, this));
-               _gdc_username->Bind (wxEVT_TEXT, boost::bind(&AccountsPage::gdc_username_changed, this));
-               _gdc_password->Changed.connect (boost::bind(&AccountsPage::gdc_password_changed, this));
-       }
-
-       void config_changed ()
-       {
-               Config* config = Config::instance ();
-
-               checked_set (_barco_username, config->barco_username().get_value_or(""));
-               checked_set (_barco_password, config->barco_password().get_value_or(""));
-               checked_set (_christie_username, config->christie_username().get_value_or(""));
-               checked_set (_christie_password, config->christie_password().get_value_or(""));
-               checked_set (_gdc_username, config->gdc_username().get_value_or(""));
-               checked_set (_gdc_password, config->gdc_password().get_value_or(""));
-       }
-
-       void barco_username_changed ()
-       {
-               wxString const s = _barco_username->GetValue();
-               if (!s.IsEmpty()) {
-                       Config::instance()->set_barco_username (wx_to_std(s));
-               } else {
-                       Config::instance()->unset_barco_username ();
-               }
-       }
-
-       void barco_password_changed ()
-       {
-               string const s = _barco_password->get();
-               if (!s.empty()) {
-                       Config::instance()->set_barco_password(s);
-               } else {
-                       Config::instance()->unset_barco_password();
-               }
-       }
-
-       void christie_username_changed ()
-       {
-               wxString const s = _christie_username->GetValue();
-               if (!s.IsEmpty()) {
-                       Config::instance()->set_christie_username (wx_to_std(s));
-               } else {
-                       Config::instance()->unset_christie_username ();
-               }
-       }
-
-       void christie_password_changed ()
-       {
-               string const s = _christie_password->get();
-               if (!s.empty()) {
-                       Config::instance()->set_christie_password(s);
-               } else {
-                       Config::instance()->unset_christie_password();
-               }
-       }
-
-       void gdc_username_changed ()
-       {
-               wxString const s = _gdc_username->GetValue();
-               if (!s.IsEmpty()) {
-                       Config::instance()->set_gdc_username (wx_to_std(s));
-               } else {
-                       Config::instance()->unset_gdc_username ();
-               }
-       }
-
-       void gdc_password_changed ()
-       {
-               string const s = _gdc_password->get();
-               if (!s.empty()) {
-                       Config::instance()->set_gdc_password(s);
-               } else {
-                       Config::instance()->unset_gdc_password();
-               }
-       }
-
-private:
-       wxTextCtrl* _barco_username;
-       PasswordEntry* _barco_password;
-       wxTextCtrl* _christie_username;
-       PasswordEntry* _christie_password;
-       wxTextCtrl* _gdc_username;
-       PasswordEntry* _gdc_password;
-};
-
-
 class NotificationsPage : public StandardPage
 {
 public:
@@ -1173,8 +1032,8 @@ private:
                _to = new wxTextCtrl (_panel, wxID_ANY);
                table->Add (_to, 1, wxEXPAND | wxALL);
 
-               vector<string> columns;
-               columns.push_back (wx_to_std (_("Address")));
+               vector<EditableListColumn> columns;
+               columns.push_back (EditableListColumn(wx_to_std(_("Address"))));
                add_label_to_sizer (table, _panel, _("CC addresses"), true);
                _cc = new EditableList<string, EmailDialog> (
                        _panel,
@@ -1368,6 +1227,7 @@ public:
                , _maximum_j2k_bandwidth (0)
                , _allow_any_dcp_frame_rate (0)
                , _allow_any_container (0)
+               , _show_experimental_audio_processors (0)
                , _only_servers_encode (0)
                , _log_general (0)
                , _log_warning (0)
@@ -1405,6 +1265,17 @@ private:
                        table->Add (s, 1);
                }
 
+               add_label_to_sizer (table, _panel, _("Video display mode"), true);
+               _video_display_mode = new wxChoice (_panel, wxID_ANY);
+               table->Add (_video_display_mode);
+
+               wxStaticText* restart = add_label_to_sizer (table, _panel, _("(restart DCP-o-matic to change display mode)"), false);
+               wxFont font = restart->GetFont();
+               font.SetStyle (wxFONTSTYLE_ITALIC);
+               font.SetPointSize (font.GetPointSize() - 1);
+               restart->SetFont (font);
+               table->AddSpacer (0);
+
                _allow_any_dcp_frame_rate = new CheckBox (_panel, _("Allow any DCP frame rate"));
                table->Add (_allow_any_dcp_frame_rate, 1, wxEXPAND | wxALL);
                table->AddSpacer (0);
@@ -1413,13 +1284,14 @@ private:
                table->Add (_allow_any_container, 1, wxEXPAND | wxALL);
                table->AddSpacer (0);
 
-               wxStaticText* restart = add_label_to_sizer (table, _panel, _("(restart DCP-o-matic to see all ratios)"), false);
-               wxFont font = restart->GetFont();
-               font.SetStyle (wxFONTSTYLE_ITALIC);
-               font.SetPointSize (font.GetPointSize() - 1);
+               restart = add_label_to_sizer (table, _panel, _("(restart DCP-o-matic to see all ratios)"), false);
                restart->SetFont (font);
                table->AddSpacer (0);
 
+               _show_experimental_audio_processors = new CheckBox (_panel, _("Show experimental audio processors"));
+               table->Add (_show_experimental_audio_processors, 1, wxEXPAND | wxALL);
+               table->AddSpacer (0);
+
                _only_servers_encode = new CheckBox (_panel, _("Only servers encode"));
                table->Add (_only_servers_encode, 1, wxEXPAND | wxALL);
                table->AddSpacer (0);
@@ -1491,8 +1363,12 @@ private:
 
                _maximum_j2k_bandwidth->SetRange (1, 1000);
                _maximum_j2k_bandwidth->Bind (wxEVT_SPINCTRL, boost::bind (&AdvancedPage::maximum_j2k_bandwidth_changed, this));
+               _video_display_mode->Append (_("Simple (safer)"));
+               _video_display_mode->Append (_("OpenGL (faster)"));
+               _video_display_mode->Bind (wxEVT_CHOICE, boost::bind(&AdvancedPage::video_display_mode_changed, this));
                _allow_any_dcp_frame_rate->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::allow_any_dcp_frame_rate_changed, this));
                _allow_any_container->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::allow_any_container_changed, this));
+               _show_experimental_audio_processors->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::show_experimental_audio_processors_changed, this));
                _only_servers_encode->Bind (wxEVT_CHECKBOX, boost::bind (&AdvancedPage::only_servers_encode_changed, this));
                _frames_in_memory_multiplier->Bind (wxEVT_SPINCTRL, boost::bind(&AdvancedPage::frames_in_memory_multiplier_changed, this));
                _dcp_metadata_filename_format->Changed.connect (boost::bind (&AdvancedPage::dcp_metadata_filename_format_changed, this));
@@ -1514,8 +1390,17 @@ private:
                Config* config = Config::instance ();
 
                checked_set (_maximum_j2k_bandwidth, config->maximum_j2k_bandwidth() / 1000000);
+               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 (_allow_any_dcp_frame_rate, config->allow_any_dcp_frame_rate ());
                checked_set (_allow_any_container, config->allow_any_container ());
+               checked_set (_show_experimental_audio_processors, config->show_experimental_audio_processors ());
                checked_set (_only_servers_encode, config->only_servers_encode ());
                checked_set (_log_general, config->log_types() & LogEntry::TYPE_GENERAL);
                checked_set (_log_warning, config->log_types() & LogEntry::TYPE_WARNING);
@@ -1535,6 +1420,15 @@ private:
                Config::instance()->set_maximum_j2k_bandwidth (_maximum_j2k_bandwidth->GetValue() * 1000000);
        }
 
+       void video_display_mode_changed ()
+       {
+               if (_video_display_mode->GetSelection() == 0) {
+                       Config::instance()->set_video_view_type (Config::VIDEO_VIEW_SIMPLE);
+               } else {
+                       Config::instance()->set_video_view_type (Config::VIDEO_VIEW_OPENGL);
+               }
+       }
+
        void frames_in_memory_multiplier_changed ()
        {
                Config::instance()->set_frames_in_memory_multiplier (_frames_in_memory_multiplier->GetValue());
@@ -1550,6 +1444,11 @@ private:
                Config::instance()->set_allow_any_container (_allow_any_container->GetValue ());
        }
 
+       void show_experimental_audio_processors_changed ()
+       {
+               Config::instance()->set_show_experimental_audio_processors (_show_experimental_audio_processors->GetValue ());
+       }
+
        void only_servers_encode_changed ()
        {
                Config::instance()->set_only_servers_encode (_only_servers_encode->GetValue ());
@@ -1600,9 +1499,11 @@ private:
 #endif
 
        wxSpinCtrl* _maximum_j2k_bandwidth;
+       wxChoice* _video_display_mode;
        wxSpinCtrl* _frames_in_memory_multiplier;
        wxCheckBox* _allow_any_dcp_frame_rate;
        wxCheckBox* _allow_any_container;
+       wxCheckBox* _show_experimental_audio_processors;
        wxCheckBox* _only_servers_encode;
        NameFormatEditor* _dcp_metadata_filename_format;
        NameFormatEditor* _dcp_asset_filename_format;
@@ -1636,13 +1537,13 @@ create_full_config_dialog ()
 #endif
 
        e->AddPage (new FullGeneralPage (ps, border));
+       e->AddPage (new SoundPage (ps, border));
        e->AddPage (new DefaultsPage (ps, border));
        e->AddPage (new EncodingServersPage (ps, border));
        e->AddPage (new KeysPage (ps, border));
        e->AddPage (new TMSPage (ps, border));
        e->AddPage (new EmailPage (ps, border));
        e->AddPage (new KDMEmailPage (ps, border));
-       e->AddPage (new AccountsPage (ps, border));
        e->AddPage (new NotificationsPage (ps, border));
        e->AddPage (new CoverSheetPage (ps, border));
        e->AddPage (new AdvancedPage (ps, border));