X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwx%2Fconfig_dialog.cc;h=52c08018f7724c2284d4ad14b9e87a97b18b9e68;hb=95faa6568854b5f861db07e9b8697169aaceec3c;hp=dba83804e557670534786bba8d9593d3078dd6ff;hpb=f98c4cdec82fc2fbdcc4ca19748d09b0ea0556b4;p=dcpomatic.git diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index dba83804e..52c08018f 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -28,7 +28,6 @@ #include #include #include "lib/config.h" -#include "lib/server.h" #include "lib/ratio.h" #include "lib/scaler.h" #include "lib/filter.h" @@ -37,10 +36,10 @@ #include "config_dialog.h" #include "wx_util.h" #include "filter_dialog.h" -#include "server_dialog.h" #include "dir_picker_ctrl.h" #include "dci_metadata_dialog.h" #include "preset_colour_conversion_dialog.h" +#include "server_dialog.h" using std::vector; using std::string; @@ -58,6 +57,8 @@ ConfigDialog::ConfigDialog (wxWindow* parent) make_misc_panel (); _notebook->AddPage (_misc_panel, _("Miscellaneous"), true); + make_defaults_panel (); + _notebook->AddPage (_defaults_panel, _("Defaults"), false); make_servers_panel (); _notebook->AddPage (_servers_panel, _("Encoding servers"), false); make_colour_conversions_panel (); @@ -66,6 +67,8 @@ ConfigDialog::ConfigDialog (wxWindow* parent) _notebook->AddPage (_metadata_panel, _("Metadata"), false); make_tms_panel (); _notebook->AddPage (_tms_panel, _("TMS"), false); + make_kdm_email_panel (); + _notebook->AddPage (_kdm_email_panel, _("KDM email"), false); wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL); overall_sizer->Add (s, 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER); @@ -99,6 +102,7 @@ ConfigDialog::make_misc_panel () _language->Append (wxT ("Italiano")); _language->Append (wxT ("Español")); _language->Append (wxT ("Svenska")); + _language->Append (wxT ("Deutsch")); table->Add (_language); wxStaticText* restart = add_label_to_sizer (table, _misc_panel, _("(restart DCP-o-matic to see language changes)"), false); @@ -112,43 +116,25 @@ ConfigDialog::make_misc_panel () _num_local_encoding_threads = new wxSpinCtrl (_misc_panel); table->Add (_num_local_encoding_threads, 1); - { - add_label_to_sizer (table, _misc_panel, _("Default duration of still images"), true); - wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); - _default_still_length = new wxSpinCtrl (_misc_panel); - s->Add (_default_still_length); - add_label_to_sizer (s, _misc_panel, _("s"), false); - table->Add (s, 1); - } - - add_label_to_sizer (table, _misc_panel, _("Default directory for new films"), true); -#ifdef DCPOMATIC_USE_OWN_DIR_PICKER - _default_directory = new DirPickerCtrl (_misc_panel); -#else - _default_directory = new wxDirPickerCtrl (_misc_panel, wxDD_DIR_MUST_EXIST); -#endif - table->Add (_default_directory, 1, wxEXPAND); - - add_label_to_sizer (table, _misc_panel, _("Default DCI name details"), true); - _default_dci_metadata_button = new wxButton (_misc_panel, wxID_ANY, _("Edit...")); - table->Add (_default_dci_metadata_button); + add_label_to_sizer (table, _misc_panel, _("Outgoing mail server"), true); + _mail_server = new wxTextCtrl (_misc_panel, wxID_ANY); + table->Add (_mail_server, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _misc_panel, _("Default container"), true); - _default_container = new wxChoice (_misc_panel, wxID_ANY); - table->Add (_default_container); + add_label_to_sizer (table, _misc_panel, _("Mail user name"), true); + _mail_user = new wxTextCtrl (_misc_panel, wxID_ANY); + table->Add (_mail_user, 1, wxEXPAND | wxALL); - add_label_to_sizer (table, _misc_panel, _("Default content type"), true); - _default_dcp_content_type = new wxChoice (_misc_panel, wxID_ANY); - table->Add (_default_dcp_content_type); + add_label_to_sizer (table, _misc_panel, _("Mail password"), true); + _mail_password = new wxTextCtrl (_misc_panel, wxID_ANY); + table->Add (_mail_password, 1, wxEXPAND | wxALL); - { - add_label_to_sizer (table, _misc_panel, _("Default JPEG2000 bandwidth"), true); - wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); - _default_j2k_bandwidth = new wxSpinCtrl (_misc_panel); - s->Add (_default_j2k_bandwidth); - add_label_to_sizer (s, _misc_panel, _("MBps"), false); - table->Add (s, 1); - } + wxStaticText* plain = add_label_to_sizer (table, _misc_panel, _("(password will be stored on disk in plaintext)"), false); + plain->SetFont (font); + table->AddSpacer (0); + + add_label_to_sizer (table, _misc_panel, _("From address for KDM emails"), true); + _kdm_from = new wxTextCtrl (_misc_panel, wxID_ANY); + table->Add (_kdm_from, 1, wxEXPAND | wxALL); Config* config = Config::instance (); @@ -162,6 +148,8 @@ ConfigDialog::make_misc_panel () _language->SetSelection (3); } else if (config->language().get_value_or ("") == "sv") { _language->SetSelection (4); + } else if (config->language().get_value_or ("") == "de") { + _language->SetSelection (5); } else { _language->SetSelection (0); } @@ -175,6 +163,76 @@ ConfigDialog::make_misc_panel () _num_local_encoding_threads->SetValue (config->num_local_encoding_threads ()); _num_local_encoding_threads->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&ConfigDialog::num_local_encoding_threads_changed, this)); + _mail_server->SetValue (std_to_wx (config->mail_server ())); + _mail_server->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::mail_server_changed, this)); + _mail_user->SetValue (std_to_wx (config->mail_user ())); + _mail_user->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::mail_user_changed, this)); + _mail_password->SetValue (std_to_wx (config->mail_password ())); + _mail_password->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::mail_password_changed, this)); + _kdm_from->SetValue (std_to_wx (config->kdm_from ())); + _kdm_from->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::kdm_from_changed, this)); +} + +void +ConfigDialog::make_defaults_panel () +{ + _defaults_panel = new wxPanel (_notebook); + wxBoxSizer* s = new wxBoxSizer (wxVERTICAL); + _defaults_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, 8); + + { + add_label_to_sizer (table, _defaults_panel, _("Default duration of still images"), true); + wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); + _default_still_length = new wxSpinCtrl (_defaults_panel); + s->Add (_default_still_length); + add_label_to_sizer (s, _defaults_panel, _("s"), false); + table->Add (s, 1); + } + + add_label_to_sizer (table, _defaults_panel, _("Default directory for new films"), true); +#ifdef DCPOMATIC_USE_OWN_DIR_PICKER + _default_directory = new DirPickerCtrl (_defaults_panel); +#else + _default_directory = new wxDirPickerCtrl (_defaults_panel, wxDD_DIR_MUST_EXIST); +#endif + table->Add (_default_directory, 1, wxEXPAND); + + add_label_to_sizer (table, _defaults_panel, _("Default DCI name details"), true); + _default_dci_metadata_button = new wxButton (_defaults_panel, wxID_ANY, _("Edit...")); + table->Add (_default_dci_metadata_button); + + add_label_to_sizer (table, _defaults_panel, _("Default container"), true); + _default_container = new wxChoice (_defaults_panel, wxID_ANY); + table->Add (_default_container); + + add_label_to_sizer (table, _defaults_panel, _("Default content type"), true); + _default_dcp_content_type = new wxChoice (_defaults_panel, wxID_ANY); + table->Add (_default_dcp_content_type); + + { + add_label_to_sizer (table, _defaults_panel, _("Default JPEG2000 bandwidth"), true); + wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); + _default_j2k_bandwidth = new wxSpinCtrl (_defaults_panel); + s->Add (_default_j2k_bandwidth); + add_label_to_sizer (s, _defaults_panel, _("MBps"), false); + table->Add (s, 1); + } + + { + add_label_to_sizer (table, _defaults_panel, _("Default audio delay"), true); + wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); + _default_audio_delay = new wxSpinCtrl (_defaults_panel); + s->Add (_default_audio_delay); + add_label_to_sizer (s, _defaults_panel, _("ms"), false); + table->Add (s, 1); + } + + Config* config = Config::instance (); + _default_still_length->SetRange (1, 3600); _default_still_length->SetValue (config->default_still_length ()); _default_still_length->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&ConfigDialog::default_still_length_changed, this)); @@ -209,8 +267,12 @@ ConfigDialog::make_misc_panel () _default_dcp_content_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&ConfigDialog::default_dcp_content_type_changed, this)); _default_j2k_bandwidth->SetRange (50, 250); - _default_j2k_bandwidth->SetValue (config->default_j2k_bandwidth() / 1e6); + _default_j2k_bandwidth->SetValue (config->default_j2k_bandwidth() / 1000000); _default_j2k_bandwidth->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&ConfigDialog::default_j2k_bandwidth_changed, this)); + + _default_audio_delay->SetRange (-1000, 1000); + _default_audio_delay->SetValue (config->default_audio_delay ()); + _default_audio_delay->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&ConfigDialog::default_audio_delay_changed, this)); } void @@ -279,32 +341,42 @@ ConfigDialog::make_metadata_panel () _creator->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::creator_changed, this)); } -static std::string -server_column (ServerDescription s, int c) +static string +server_column (string s) { - switch (c) { - case 0: - return s.host_name (); - case 1: - return lexical_cast (s.threads ()); - } - - return ""; + return s; } void ConfigDialog::make_servers_panel () { + _servers_panel = new wxPanel (_notebook); + wxBoxSizer* s = new wxBoxSizer (wxVERTICAL); + _servers_panel->SetSizer (s); + + _use_any_servers = new wxCheckBox (_servers_panel, wxID_ANY, _("Use all servers")); + s->Add (_use_any_servers, 0, wxALL, DCPOMATIC_SIZER_X_GAP); + vector columns; - columns.push_back (wx_to_std (_("IP address"))); - columns.push_back (wx_to_std (_("Threads"))); - _servers_panel = new EditableList ( - _notebook, + columns.push_back (wx_to_std (_("IP address / host name"))); + _servers_list = new EditableList ( + _servers_panel, columns, boost::bind (&Config::servers, Config::instance()), boost::bind (&Config::set_servers, Config::instance(), _1), - boost::bind (&server_column, _1, _2) + boost::bind (&server_column, _1) ); + + s->Add (_servers_list, 1, wxEXPAND | wxALL, DCPOMATIC_SIZER_X_GAP); + + _use_any_servers->SetValue (Config::instance()->use_any_servers ()); + _use_any_servers->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&ConfigDialog::use_any_servers_changed, this)); +} + +void +ConfigDialog::use_any_servers_changed () +{ + Config::instance()->set_use_any_servers (_use_any_servers->GetValue ()); } void @@ -326,6 +398,9 @@ ConfigDialog::language_changed () case 4: Config::instance()->set_language ("sv"); break; + case 5: + Config::instance()->set_language ("de"); + break; } } @@ -430,7 +505,13 @@ ConfigDialog::creator_changed () void ConfigDialog::default_j2k_bandwidth_changed () { - Config::instance()->set_default_j2k_bandwidth (_default_j2k_bandwidth->GetValue() * 1e6); + Config::instance()->set_default_j2k_bandwidth (_default_j2k_bandwidth->GetValue() * 1000000); +} + +void +ConfigDialog::default_audio_delay_changed () +{ + Config::instance()->set_default_audio_delay (_default_audio_delay->GetValue()); } static std::string @@ -449,6 +530,51 @@ ConfigDialog::make_colour_conversions_panel () columns, boost::bind (&Config::colour_conversions, Config::instance()), boost::bind (&Config::set_colour_conversions, Config::instance(), _1), - boost::bind (&colour_conversion_column, _1) + boost::bind (&colour_conversion_column, _1), + 300 ); } + +void +ConfigDialog::mail_server_changed () +{ + Config::instance()->set_mail_server (wx_to_std (_mail_server->GetValue ())); +} + +void +ConfigDialog::mail_user_changed () +{ + Config::instance()->set_mail_user (wx_to_std (_mail_user->GetValue ())); +} + +void +ConfigDialog::mail_password_changed () +{ + Config::instance()->set_mail_password (wx_to_std (_mail_password->GetValue ())); +} + +void +ConfigDialog::kdm_from_changed () +{ + Config::instance()->set_kdm_from (wx_to_std (_kdm_from->GetValue ())); +} + +void +ConfigDialog::make_kdm_email_panel () +{ + _kdm_email_panel = new wxPanel (_notebook); + wxBoxSizer* s = new wxBoxSizer (wxVERTICAL); + _kdm_email_panel->SetSizer (s); + + _kdm_email = new wxTextCtrl (_kdm_email_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); + s->Add (_kdm_email, 1, wxEXPAND | wxALL, 12); + + _kdm_email->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::kdm_email_changed, this)); + _kdm_email->SetValue (wx_to_std (Config::instance()->kdm_email ())); +} + +void +ConfigDialog::kdm_email_changed () +{ + Config::instance()->set_kdm_email (wx_to_std (_kdm_email->GetValue ())); +}