From: Carl Hetherington Date: Sun, 24 Mar 2013 23:24:27 +0000 (+0000) Subject: User interface for language selection. X-Git-Tag: v2.0.48~1337^2~534 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=17097564ffb940478b2d5519302bc3bb9162a965 User interface for language selection. --- diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc index 991b4daf8..66f366a24 100644 --- a/src/tools/dvdomatic.cc +++ b/src/tools/dvdomatic.cc @@ -471,7 +471,9 @@ setup_i18n () } } - dvdomatic_setup_i18n (wx_to_std (locale->GetCanonicalName ())); + if (locale) { + dvdomatic_setup_i18n (wx_to_std (locale->GetCanonicalName ())); + } } class App : public wxApp diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index b28c350ea..ea1a7319e 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -46,6 +46,23 @@ ConfigDialog::ConfigDialog (wxWindow* parent) wxFlexGridSizer* table = new wxFlexGridSizer (3, 6, 6); table->AddGrowableCol (1, 1); + add_label_to_sizer (table, this, _("User interface language")); + _language = new wxChoice (this, wxID_ANY); + _language->Append (wxT ("English")); + _language->Append (wxT ("Français")); + _language->Append (wxT ("Italiano")); + _language->Append (wxT ("Español")); + table->Add (_language, 1, wxEXPAND); + table->AddSpacer (0); + + table->AddSpacer (0); + wxStaticText* restart = add_label_to_sizer (table, this, _("(restart DVD-o-matic to see language changes)")); + wxFont font = restart->GetFont(); + font.SetStyle (wxFONTSTYLE_ITALIC); + font.SetPointSize (font.GetPointSize() - 1); + restart->SetFont (font); + table->AddSpacer (0); + add_label_to_sizer (table, this, _("TMS IP address")); _tms_ip = new wxTextCtrl (this, wxID_ANY); table->Add (_tms_ip, 1, wxEXPAND); @@ -132,6 +149,17 @@ ConfigDialog::ConfigDialog (wxWindow* parent) Config* config = Config::instance (); + if (config->language().get_value_or ("") == "fr") { + _language->SetSelection (1); + } else if (config->language().get_value_or ("") == "it") { + _language->SetSelection (2); + } else if (config->language().get_value_or ("") == "es") { + _language->SetSelection (3); + } else { + _language->SetSelection (0); + } + + _language->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (ConfigDialog::language_changed), 0, this); _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_path->SetValue (std_to_wx (config->tms_path ())); @@ -184,6 +212,25 @@ ConfigDialog::ConfigDialog (wxWindow* parent) overall_sizer->SetSizeHints (this); } +void +ConfigDialog::language_changed (wxCommandEvent &) +{ + switch (_language->GetSelection ()) { + case 0: + Config::instance()->set_language (""); + break; + case 1: + Config::instance()->set_language ("fr"); + break; + case 2: + Config::instance()->set_language ("it"); + break; + case 3: + Config::instance()->set_language ("es"); + break; + } +} + void ConfigDialog::tms_ip_changed (wxCommandEvent &) { diff --git a/src/wx/config_dialog.h b/src/wx/config_dialog.h index 948bf0571..8a3c81ec9 100644 --- a/src/wx/config_dialog.h +++ b/src/wx/config_dialog.h @@ -39,6 +39,7 @@ public: ConfigDialog (wxWindow *); private: + void language_changed (wxCommandEvent &); void tms_ip_changed (wxCommandEvent &); void tms_path_changed (wxCommandEvent &); void tms_user_changed (wxCommandEvent &); @@ -55,7 +56,8 @@ private: void server_selection_changed (wxListEvent &); void add_server_to_control (ServerDescription *); - + + wxChoice* _language; wxTextCtrl* _tms_ip; wxTextCtrl* _tms_path; wxTextCtrl* _tms_user;