X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fconfig_dialog.cc;h=b447e0eee9a57328f76541993b44c498ef785060;hb=0da7c88a1afb221f97e2e96c159b1a984e4e2f71;hp=a0aedaf47db04cebced346945cf152266672e2b9;hpb=1f8b45c7fd49714628009f5ed2161fbaa2b4d729;p=dcpomatic.git diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index a0aedaf47..b447e0eee 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -35,12 +35,13 @@ #include "lib/filter.h" #include "lib/dcp_content_type.h" #include "lib/colour_conversion.h" +#include "lib/log.h" #include "config_dialog.h" #include "wx_util.h" #include "editable_list.h" #include "filter_dialog.h" #include "dir_picker_ctrl.h" -#include "dci_metadata_dialog.h" +#include "isdcf_metadata_dialog.h" #include "preset_colour_conversion_dialog.h" #include "server_dialog.h" @@ -86,12 +87,13 @@ public: _set_language = new wxCheckBox (panel, wxID_ANY, _("Set language")); table->Add (_set_language, 1); _language = new wxChoice (panel, wxID_ANY); + _language->Append (wxT ("Deutsch")); _language->Append (wxT ("English")); + _language->Append (wxT ("Español")); _language->Append (wxT ("Français")); _language->Append (wxT ("Italiano")); - _language->Append (wxT ("Español")); + _language->Append (wxT ("Nederlands")); _language->Append (wxT ("Svenska")); - _language->Append (wxT ("Deutsch")); table->Add (_language); wxStaticText* restart = add_label_to_sizer (table, panel, _("(restart DCP-o-matic to see language changes)"), false); @@ -104,7 +106,7 @@ public: add_label_to_sizer (table, panel, _("Threads to use for encoding on this host"), true); _num_local_encoding_threads = new wxSpinCtrl (panel); table->Add (_num_local_encoding_threads, 1); - + add_label_to_sizer (table, panel, _("Outgoing mail server"), true); _mail_server = new wxTextCtrl (panel, wxID_ANY); table->Add (_mail_server, 1, wxEXPAND | wxALL); @@ -138,17 +140,19 @@ public: _set_language->SetValue (config->language ()); if (config->language().get_value_or ("") == "fr") { - _language->SetSelection (1); + _language->SetSelection (3); } else if (config->language().get_value_or ("") == "it") { - _language->SetSelection (2); + _language->SetSelection (4); } else if (config->language().get_value_or ("") == "es") { - _language->SetSelection (3); + _language->SetSelection (2); } else if (config->language().get_value_or ("") == "sv") { - _language->SetSelection (4); + _language->SetSelection (6); } else if (config->language().get_value_or ("") == "de") { + _language->SetSelection (0); + } else if (config->language().get_value_or ("") == "nl") { _language->SetSelection (5); } else { - _language->SetSelection (0); + _language->SetSelection (1); } setup_language_sensitivity (); @@ -159,7 +163,7 @@ public: _num_local_encoding_threads->SetRange (1, 128); _num_local_encoding_threads->SetValue (config->num_local_encoding_threads ()); _num_local_encoding_threads->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&GeneralPage::num_local_encoding_threads_changed, this)); - + _mail_server->SetValue (std_to_wx (config->mail_server ())); _mail_server->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&GeneralPage::mail_server_changed, this)); _mail_user->SetValue (std_to_wx (config->mail_user ())); @@ -196,22 +200,25 @@ private: { switch (_language->GetSelection ()) { case 0: - Config::instance()->set_language ("en"); + Config::instance()->set_language ("de"); break; case 1: - Config::instance()->set_language ("fr"); + Config::instance()->set_language ("en"); break; case 2: - Config::instance()->set_language ("it"); + Config::instance()->set_language ("es"); break; case 3: - Config::instance()->set_language ("es"); + Config::instance()->set_language ("fr"); break; case 4: - Config::instance()->set_language ("sv"); + Config::instance()->set_language ("it"); break; case 5: - Config::instance()->set_language ("de"); + Config::instance()->set_language ("nl"); + break; + case 6: + Config::instance()->set_language ("sv"); break; } } @@ -250,7 +257,7 @@ private: { Config::instance()->set_num_local_encoding_threads (_num_local_encoding_threads->GetValue ()); } - + wxCheckBox* _set_language; wxChoice* _language; wxSpinCtrl* _num_local_encoding_threads; @@ -308,9 +315,9 @@ public: #endif table->Add (_directory, 1, wxEXPAND); - add_label_to_sizer (table, panel, _("Default DCI name details"), true); - _dci_metadata_button = new wxButton (panel, wxID_ANY, _("Edit...")); - table->Add (_dci_metadata_button); + add_label_to_sizer (table, panel, _("Default ISDCF name details"), true); + _isdcf_metadata_button = new wxButton (panel, wxID_ANY, _("Edit...")); + table->Add (_isdcf_metadata_button); add_label_to_sizer (table, panel, _("Default container"), true); _container = new wxChoice (panel, wxID_ANY); @@ -355,7 +362,7 @@ public: _directory->SetPath (std_to_wx (config->default_directory_or (wx_to_std (wxStandardPaths::Get().GetDocumentsDir())).string ())); _directory->Bind (wxEVT_COMMAND_DIRPICKER_CHANGED, boost::bind (&DefaultsPage::directory_changed, this)); - _dci_metadata_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DefaultsPage::edit_dci_metadata_clicked, this, parent)); + _isdcf_metadata_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DefaultsPage::edit_isdcf_metadata_clicked, this, parent)); vector ratio = Ratio::all (); int n = 0; @@ -413,11 +420,11 @@ private: Config::instance()->set_default_directory (wx_to_std (_directory->GetPath ())); } - void edit_dci_metadata_clicked (wxWindow* parent) + void edit_isdcf_metadata_clicked (wxWindow* parent) { - DCIMetadataDialog* d = new DCIMetadataDialog (parent, Config::instance()->default_dci_metadata ()); + ISDCFMetadataDialog* d = new ISDCFMetadataDialog (parent, Config::instance()->default_isdcf_metadata ()); d->ShowModal (); - Config::instance()->set_default_dci_metadata (d->dci_metadata ()); + Config::instance()->set_default_isdcf_metadata (d->isdcf_metadata ()); d->Destroy (); } @@ -454,7 +461,7 @@ private: wxSpinCtrl* _j2k_bandwidth; wxSpinCtrl* _audio_delay; - wxButton* _dci_metadata_button; + wxButton* _isdcf_metadata_button; wxSpinCtrl* _still_length; #ifdef DCPOMATIC_USE_OWN_DIR_PICKER DirPickerCtrl* _directory; @@ -710,6 +717,104 @@ private: wxTextCtrl* _kdm_email; }; +class AdvancedPage : public wxStockPreferencesPage, public Page +{ +public: + + AdvancedPage (wxSize panel_size, int border) + : wxStockPreferencesPage (Kind_Advanced) + , Page (panel_size, border) + {} + + wxWindow* CreateWindow (wxWindow* parent) + { + wxPanel* panel = new wxPanel (parent); + + wxBoxSizer* s = new wxBoxSizer (wxVERTICAL); + panel->SetSizer (s); + + wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); + table->AddGrowableCol (1, 1); + s->Add (table, 1, wxALL | wxEXPAND, _border); + + add_label_to_sizer (table, panel, _("Maximum JPEG2000 bandwidth"), true); + _maximum_j2k_bandwidth = new wxSpinCtrl (panel); + table->Add (_maximum_j2k_bandwidth, 1); + + _allow_any_dcp_frame_rate = new wxCheckBox (panel, wxID_ANY, _("Allow any DCP frame rate")); + table->Add (_allow_any_dcp_frame_rate, 1, wxEXPAND | wxALL); + table->AddSpacer (0); + + add_label_to_sizer (table, panel, _("Log"), true); + _log_general = new wxCheckBox (panel, wxID_ANY, _("General")); + table->Add (_log_general, 1, wxEXPAND | wxALL); + _log_warning = new wxCheckBox (panel, wxID_ANY, _("Warnings")); + table->AddSpacer (0); + table->Add (_log_warning, 1, wxEXPAND | wxALL); + _log_error = new wxCheckBox (panel, wxID_ANY, _("Errors")); + table->AddSpacer (0); + table->Add (_log_error, 1, wxEXPAND | wxALL); + _log_timing = new wxCheckBox (panel, wxID_ANY, _("Timing")); + table->AddSpacer (0); + table->Add (_log_timing, 1, wxEXPAND | wxALL); + + Config* config = Config::instance (); + + _maximum_j2k_bandwidth->SetRange (1, 500); + _maximum_j2k_bandwidth->SetValue (config->maximum_j2k_bandwidth() / 1000000); + _maximum_j2k_bandwidth->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&AdvancedPage::maximum_j2k_bandwidth_changed, this)); + _allow_any_dcp_frame_rate->SetValue (config->allow_any_dcp_frame_rate ()); + _allow_any_dcp_frame_rate->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::allow_any_dcp_frame_rate_changed, this)); + _log_general->SetValue (config->log_types() & Log::TYPE_GENERAL); + _log_general->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); + _log_warning->SetValue (config->log_types() & Log::TYPE_WARNING); + _log_warning->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); + _log_error->SetValue (config->log_types() & Log::TYPE_ERROR); + _log_error->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); + _log_timing->SetValue (config->log_types() & Log::TYPE_TIMING); + _log_timing->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&AdvancedPage::log_changed, this)); + + return panel; + } + +private: + + void maximum_j2k_bandwidth_changed () + { + Config::instance()->set_maximum_j2k_bandwidth (_maximum_j2k_bandwidth->GetValue() * 1000000); + } + + void allow_any_dcp_frame_rate_changed () + { + Config::instance()->set_allow_any_dcp_frame_rate (_allow_any_dcp_frame_rate->GetValue ()); + } + + void log_changed () + { + int types = 0; + if (_log_general->GetValue ()) { + types |= Log::TYPE_GENERAL; + } + if (_log_warning->GetValue ()) { + types |= Log::TYPE_WARNING; + } + if (_log_error->GetValue ()) { + types |= Log::TYPE_ERROR; + } + if (_log_timing->GetValue ()) { + types |= Log::TYPE_TIMING; + } + Config::instance()->set_log_types (types); + } + + wxSpinCtrl* _maximum_j2k_bandwidth; + wxCheckBox* _allow_any_dcp_frame_rate; + wxCheckBox* _log_general; + wxCheckBox* _log_warning; + wxCheckBox* _log_error; + wxCheckBox* _log_timing; +}; + wxPreferencesEditor* create_config_dialog () { @@ -723,7 +828,10 @@ create_config_dialog () wxSize ps = wxSize (480, -1); int const border = 16; #else - wxSize ps = wxDefaultSize; + /* We seem to need to specify height here, otherwise the general panel + is too short (at least on Linux). + */ + wxSize ps = wxSize (-1, 400); int const border = 8; #endif @@ -733,5 +841,6 @@ create_config_dialog () e->AddPage (new ColourConversionsPage (ps, border)); e->AddPage (new TMSPage (ps, border)); e->AddPage (new KDMEmailPage (ps, border)); + e->AddPage (new AdvancedPage (ps, border)); return e; }