X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fconfig_dialog.cc;h=d636b3b3d131f022f53523264f96f90f58d9fd10;hb=85c65bd422742813992686c17a5e1b718cc3c449;hp=618baca2c9c4f6c71ae2377c236eedb790e4885b;hpb=040d5792b67e3ac1f3d023acc905b36748ddb85f;p=dcpomatic.git diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 618baca2c..d636b3b3d 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -26,21 +26,27 @@ #include #include #include +#include #include "lib/config.h" -#include "lib/server.h" #include "lib/ratio.h" #include "lib/scaler.h" #include "lib/filter.h" #include "lib/dcp_content_type.h" +#include "lib/colour_conversion.h" #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 namespace std; +using std::vector; +using std::string; +using std::list; using boost::bind; +using boost::shared_ptr; +using boost::lexical_cast; ConfigDialog::ConfigDialog (wxWindow* parent) : wxDialog (parent, wxID_ANY, _("DCP-o-matic Preferences"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) @@ -51,15 +57,21 @@ 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 (); + _notebook->AddPage (_colour_conversions_panel, _("Colour conversions"), false); make_metadata_panel (); _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, 6); + overall_sizer->Add (s, 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER); wxSizer* buttons = CreateSeparatedButtonSizer (wxOK); if (buttons) { @@ -78,20 +90,20 @@ ConfigDialog::make_misc_panel () wxBoxSizer* s = new wxBoxSizer (wxVERTICAL); _misc_panel->SetSizer (s); - wxFlexGridSizer* table = new wxFlexGridSizer (3, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); + wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); table->AddGrowableCol (1, 1); s->Add (table, 1, wxALL | wxEXPAND, 8); _set_language = new wxCheckBox (_misc_panel, wxID_ANY, _("Set language")); - table->Add (_set_language, 1, wxEXPAND); + table->Add (_set_language, 1); _language = new wxChoice (_misc_panel, wxID_ANY); _language->Append (wxT ("English")); _language->Append (wxT ("Français")); _language->Append (wxT ("Italiano")); _language->Append (wxT ("Español")); _language->Append (wxT ("Svenska")); - table->Add (_language, 1, wxEXPAND); - table->AddSpacer (0); + _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); wxFont font = restart->GetFont(); @@ -99,46 +111,38 @@ ConfigDialog::make_misc_panel () font.SetPointSize (font.GetPointSize() - 1); restart->SetFont (font); table->AddSpacer (0); - table->AddSpacer (0); add_label_to_sizer (table, _misc_panel, _("Threads to use for encoding on this host"), true); _num_local_encoding_threads = new wxSpinCtrl (_misc_panel); table->Add (_num_local_encoding_threads, 1); - table->AddSpacer (0); - add_label_to_sizer (table, _misc_panel, _("Default duration of still images"), true); - _default_still_length = new wxSpinCtrl (_misc_panel); - table->Add (_default_still_length, 1, wxEXPAND); - add_label_to_sizer (table, _misc_panel, _("s"), false); + 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 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); - table->AddSpacer (0); + 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 DCI name details"), true); - _default_dci_metadata_button = new wxButton (_misc_panel, wxID_ANY, _("Edit...")); - table->Add (_default_dci_metadata_button); - table->AddSpacer (1); + 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 container"), true); - _default_container = new wxChoice (_misc_panel, wxID_ANY); - table->Add (_default_container); - table->AddSpacer (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); - 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); - table->AddSpacer (1); + _check_for_updates = new wxCheckBox (_misc_panel, wxID_ANY, _("Check for updates on startup")); + table->Add (_check_for_updates, 1, wxEXPAND | wxALL); + table->AddSpacer (0); - add_label_to_sizer (table, _misc_panel, _("Default JPEG2000 bandwidth"), true); - _default_j2k_bandwidth = new wxSpinCtrl (_misc_panel); - table->Add (_default_j2k_bandwidth, 1); - add_label_to_sizer (table, _misc_panel, _("MBps"), false); + _check_for_test_updates = new wxCheckBox (_misc_panel, wxID_ANY, _("Check for testing updates as well as stable ones")); + table->Add (_check_for_test_updates, 1, wxEXPAND | wxALL); + table->AddSpacer (0); Config* config = Config::instance (); @@ -152,27 +156,103 @@ 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); } setup_language_sensitivity (); - _set_language->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (ConfigDialog::set_language_changed), 0, this); - _language->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (ConfigDialog::language_changed), 0, this); + _set_language->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&ConfigDialog::set_language_changed, this)); + _language->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&ConfigDialog::language_changed, this)); _num_local_encoding_threads->SetRange (1, 128); _num_local_encoding_threads->SetValue (config->num_local_encoding_threads ()); - _num_local_encoding_threads->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (ConfigDialog::num_local_encoding_threads_changed), 0, this); + _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)); + _check_for_updates->SetValue (config->check_for_updates ()); + _check_for_updates->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&ConfigDialog::check_for_updates_changed, this)); + _check_for_test_updates->SetValue (config->check_for_test_updates ()); + _check_for_test_updates->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&ConfigDialog::check_for_test_updates_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, _("Mbit/s"), 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->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (ConfigDialog::default_still_length_changed), 0, this); + _default_still_length->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&ConfigDialog::default_still_length_changed, this)); - _default_directory->SetPath (std_to_wx (config->default_directory_or (wx_to_std (wxStandardPaths::Get().GetDocumentsDir())))); - _default_directory->Connect (wxID_ANY, wxEVT_COMMAND_DIRPICKER_CHANGED, wxCommandEventHandler (ConfigDialog::default_directory_changed), 0, this); + _default_directory->SetPath (std_to_wx (config->default_directory_or (wx_to_std (wxStandardPaths::Get().GetDocumentsDir())).string ())); + _default_directory->Bind (wxEVT_COMMAND_DIRPICKER_CHANGED, boost::bind (&ConfigDialog::default_directory_changed, this)); - _default_dci_metadata_button->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::edit_default_dci_metadata_clicked), 0, this); + _default_dci_metadata_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ConfigDialog::edit_default_dci_metadata_clicked, this)); vector ratio = Ratio::all (); int n = 0; @@ -184,7 +264,7 @@ ConfigDialog::make_misc_panel () ++n; } - _default_container->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (ConfigDialog::default_container_changed), 0, this); + _default_container->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&ConfigDialog::default_container_changed, this)); vector const ct = DCPContentType::all (); n = 0; @@ -196,11 +276,15 @@ ConfigDialog::make_misc_panel () ++n; } - _default_dcp_content_type->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (ConfigDialog::default_dcp_content_type_changed), 0, this); + _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->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (ConfigDialog::default_j2k_bandwidth_changed), 0, this); + _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 @@ -233,13 +317,13 @@ ConfigDialog::make_tms_panel () Config* config = Config::instance (); _tms_ip->SetValue (std_to_wx (config->tms_ip ())); - _tms_ip->Connect (wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (ConfigDialog::tms_ip_changed), 0, this); + _tms_ip->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::tms_ip_changed, this)); _tms_path->SetValue (std_to_wx (config->tms_path ())); - _tms_path->Connect (wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (ConfigDialog::tms_path_changed), 0, this); + _tms_path->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::tms_path_changed, this)); _tms_user->SetValue (std_to_wx (config->tms_user ())); - _tms_user->Connect (wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (ConfigDialog::tms_user_changed), 0, this); + _tms_user->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::tms_user_changed, this)); _tms_password->SetValue (std_to_wx (config->tms_password ())); - _tms_password->Connect (wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (ConfigDialog::tms_password_changed), 0, this); + _tms_password->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::tms_password_changed, this)); } void @@ -264,9 +348,15 @@ ConfigDialog::make_metadata_panel () Config* config = Config::instance (); _issuer->SetValue (std_to_wx (config->dcp_metadata().issuer)); - _issuer->Connect (wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (ConfigDialog::issuer_changed), 0, this); + _issuer->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::issuer_changed, this)); _creator->SetValue (std_to_wx (config->dcp_metadata().creator)); - _creator->Connect (wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (ConfigDialog::creator_changed), 0, this); + _creator->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::creator_changed, this)); +} + +static string +server_column (string s) +{ + return s; } void @@ -276,52 +366,33 @@ ConfigDialog::make_servers_panel () wxBoxSizer* s = new wxBoxSizer (wxVERTICAL); _servers_panel->SetSizer (s); - wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); - table->AddGrowableCol (0, 1); - s->Add (table, 1, wxALL | wxEXPAND, 8); - - Config* config = Config::instance (); - - _servers = new wxListCtrl (_servers_panel, wxID_ANY, wxDefaultPosition, wxSize (220, 100), wxLC_REPORT | wxLC_SINGLE_SEL); - wxListItem ip; - ip.SetId (0); - ip.SetText (_("IP address")); - ip.SetWidth (120); - _servers->InsertColumn (0, ip); - ip.SetId (1); - ip.SetText (_("Threads")); - ip.SetWidth (80); - _servers->InsertColumn (1, ip); - table->Add (_servers, 1, wxEXPAND | wxALL); - - { - wxSizer* s = new wxBoxSizer (wxVERTICAL); - _add_server = new wxButton (_servers_panel, wxID_ANY, _("Add")); - s->Add (_add_server, 0, wxTOP | wxBOTTOM, 2); - _edit_server = new wxButton (_servers_panel, wxID_ANY, _("Edit")); - s->Add (_edit_server, 0, wxTOP | wxBOTTOM, 2); - _remove_server = new wxButton (_servers_panel, wxID_ANY, _("Remove")); - s->Add (_remove_server, 0, wxTOP | wxBOTTOM, 2); - table->Add (s, 0); - } - - vector servers = config->servers (); - for (vector::iterator i = servers.begin(); i != servers.end(); ++i) { - add_server_to_control (*i); - } + _use_any_servers = new wxCheckBox (_servers_panel, wxID_ANY, _("Use all servers")); + s->Add (_use_any_servers, 0, wxALL, DCPOMATIC_SIZER_X_GAP); - _add_server->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::add_server_clicked), 0, this); - _edit_server->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::edit_server_clicked), 0, this); - _remove_server->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::remove_server_clicked), 0, this); + vector columns; + 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) + ); + + 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)); +} - _servers->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler (ConfigDialog::server_selection_changed), 0, this); - _servers->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler (ConfigDialog::server_selection_changed), 0, this); - wxListEvent ev; - server_selection_changed (ev); +void +ConfigDialog::use_any_servers_changed () +{ + Config::instance()->set_use_any_servers (_use_any_servers->GetValue ()); } void -ConfigDialog::language_changed (wxCommandEvent &) +ConfigDialog::language_changed () { switch (_language->GetSelection ()) { case 0: @@ -339,179 +410,195 @@ ConfigDialog::language_changed (wxCommandEvent &) case 4: Config::instance()->set_language ("sv"); break; + case 5: + Config::instance()->set_language ("de"); + break; } } void -ConfigDialog::tms_ip_changed (wxCommandEvent &) +ConfigDialog::tms_ip_changed () { Config::instance()->set_tms_ip (wx_to_std (_tms_ip->GetValue ())); } void -ConfigDialog::tms_path_changed (wxCommandEvent &) +ConfigDialog::tms_path_changed () { Config::instance()->set_tms_path (wx_to_std (_tms_path->GetValue ())); } void -ConfigDialog::tms_user_changed (wxCommandEvent &) +ConfigDialog::tms_user_changed () { Config::instance()->set_tms_user (wx_to_std (_tms_user->GetValue ())); } void -ConfigDialog::tms_password_changed (wxCommandEvent &) +ConfigDialog::tms_password_changed () { Config::instance()->set_tms_password (wx_to_std (_tms_password->GetValue ())); } void -ConfigDialog::num_local_encoding_threads_changed (wxCommandEvent &) +ConfigDialog::num_local_encoding_threads_changed () { Config::instance()->set_num_local_encoding_threads (_num_local_encoding_threads->GetValue ()); } void -ConfigDialog::default_directory_changed (wxCommandEvent &) +ConfigDialog::default_directory_changed () { Config::instance()->set_default_directory (wx_to_std (_default_directory->GetPath ())); } void -ConfigDialog::add_server_to_control (ServerDescription* s) +ConfigDialog::edit_default_dci_metadata_clicked () { - wxListItem item; - int const n = _servers->GetItemCount (); - item.SetId (n); - _servers->InsertItem (item); - _servers->SetItem (n, 0, std_to_wx (s->host_name ())); - _servers->SetItem (n, 1, std_to_wx (boost::lexical_cast (s->threads ()))); + DCIMetadataDialog* d = new DCIMetadataDialog (this, Config::instance()->default_dci_metadata ()); + d->ShowModal (); + Config::instance()->set_default_dci_metadata (d->dci_metadata ()); + d->Destroy (); } void -ConfigDialog::add_server_clicked (wxCommandEvent &) +ConfigDialog::set_language_changed () { - ServerDialog* d = new ServerDialog (this, 0); - d->ShowModal (); - ServerDescription* s = d->server (); - d->Destroy (); - - add_server_to_control (s); - vector o = Config::instance()->servers (); - o.push_back (s); - Config::instance()->set_servers (o); + setup_language_sensitivity (); + if (_set_language->GetValue ()) { + language_changed (); + } else { + Config::instance()->unset_language (); + } } void -ConfigDialog::edit_server_clicked (wxCommandEvent &) +ConfigDialog::setup_language_sensitivity () { - int i = _servers->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); - if (i == -1) { - return; - } + _language->Enable (_set_language->GetValue ()); +} - wxListItem item; - item.SetId (i); - item.SetColumn (0); - _servers->GetItem (item); +void +ConfigDialog::default_still_length_changed () +{ + Config::instance()->set_default_still_length (_default_still_length->GetValue ()); +} - vector servers = Config::instance()->servers (); - assert (i >= 0 && i < int (servers.size ())); +void +ConfigDialog::default_container_changed () +{ + vector ratio = Ratio::all (); + Config::instance()->set_default_container (ratio[_default_container->GetSelection()]); +} - ServerDialog* d = new ServerDialog (this, servers[i]); - d->ShowModal (); - d->Destroy (); +void +ConfigDialog::default_dcp_content_type_changed () +{ + vector ct = DCPContentType::all (); + Config::instance()->set_default_dcp_content_type (ct[_default_dcp_content_type->GetSelection()]); +} - _servers->SetItem (i, 0, std_to_wx (servers[i]->host_name ())); - _servers->SetItem (i, 1, std_to_wx (boost::lexical_cast (servers[i]->threads ()))); +void +ConfigDialog::issuer_changed () +{ + dcp::XMLMetadata m = Config::instance()->dcp_metadata (); + m.issuer = wx_to_std (_issuer->GetValue ()); + Config::instance()->set_dcp_metadata (m); } void -ConfigDialog::remove_server_clicked (wxCommandEvent &) +ConfigDialog::creator_changed () { - int i = _servers->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); - if (i >= 0) { - _servers->DeleteItem (i); - } + dcp::XMLMetadata m = Config::instance()->dcp_metadata (); + m.creator = wx_to_std (_creator->GetValue ()); + Config::instance()->set_dcp_metadata (m); +} - vector o = Config::instance()->servers (); - o.erase (o.begin() + i); - Config::instance()->set_servers (o); +void +ConfigDialog::default_j2k_bandwidth_changed () +{ + Config::instance()->set_default_j2k_bandwidth (_default_j2k_bandwidth->GetValue() * 1000000); } void -ConfigDialog::server_selection_changed (wxListEvent &) +ConfigDialog::default_audio_delay_changed () { - int const i = _servers->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); - _edit_server->Enable (i >= 0); - _remove_server->Enable (i >= 0); + Config::instance()->set_default_audio_delay (_default_audio_delay->GetValue()); +} + +static std::string +colour_conversion_column (PresetColourConversion c) +{ + return c.name; } void -ConfigDialog::edit_default_dci_metadata_clicked (wxCommandEvent &) +ConfigDialog::make_colour_conversions_panel () { - DCIMetadataDialog* d = new DCIMetadataDialog (this, Config::instance()->default_dci_metadata ()); - d->ShowModal (); - Config::instance()->set_default_dci_metadata (d->dci_metadata ()); - d->Destroy (); + vector columns; + columns.push_back (wx_to_std (_("Name"))); + _colour_conversions_panel = new EditableList ( + _notebook, + columns, + boost::bind (&Config::colour_conversions, Config::instance()), + boost::bind (&Config::set_colour_conversions, Config::instance(), _1), + boost::bind (&colour_conversion_column, _1), + 300 + ); } void -ConfigDialog::set_language_changed (wxCommandEvent& ev) +ConfigDialog::mail_server_changed () { - setup_language_sensitivity (); - if (_set_language->GetValue ()) { - language_changed (ev); - } else { - Config::instance()->unset_language (); - } + Config::instance()->set_mail_server (wx_to_std (_mail_server->GetValue ())); } void -ConfigDialog::setup_language_sensitivity () +ConfigDialog::mail_user_changed () { - _language->Enable (_set_language->GetValue ()); + Config::instance()->set_mail_user (wx_to_std (_mail_user->GetValue ())); } void -ConfigDialog::default_still_length_changed (wxCommandEvent &) +ConfigDialog::mail_password_changed () { - Config::instance()->set_default_still_length (_default_still_length->GetValue ()); + Config::instance()->set_mail_password (wx_to_std (_mail_password->GetValue ())); } void -ConfigDialog::default_container_changed (wxCommandEvent &) +ConfigDialog::kdm_from_changed () { - vector ratio = Ratio::all (); - Config::instance()->set_default_container (ratio[_default_container->GetSelection()]); + Config::instance()->set_kdm_from (wx_to_std (_kdm_from->GetValue ())); } void -ConfigDialog::default_dcp_content_type_changed (wxCommandEvent &) +ConfigDialog::make_kdm_email_panel () { - vector ct = DCPContentType::all (); - Config::instance()->set_default_dcp_content_type (ct[_default_dcp_content_type->GetSelection()]); + _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::issuer_changed (wxCommandEvent &) +ConfigDialog::kdm_email_changed () { - libdcp::XMLMetadata m = Config::instance()->dcp_metadata (); - m.issuer = wx_to_std (_issuer->GetValue ()); - Config::instance()->set_dcp_metadata (m); + Config::instance()->set_kdm_email (wx_to_std (_kdm_email->GetValue ())); } void -ConfigDialog::creator_changed (wxCommandEvent &) +ConfigDialog::check_for_updates_changed () { - libdcp::XMLMetadata m = Config::instance()->dcp_metadata (); - m.creator = wx_to_std (_creator->GetValue ()); - Config::instance()->set_dcp_metadata (m); + Config::instance()->set_check_for_updates (_check_for_updates->GetValue ()); } void -ConfigDialog::default_j2k_bandwidth_changed (wxCommandEvent &) +ConfigDialog::check_for_test_updates_changed () { - Config::instance()->set_default_j2k_bandwidth (_default_j2k_bandwidth->GetValue() * 1e6); + Config::instance()->set_check_for_test_updates (_check_for_test_updates->GetValue ()); }