User interface for language selection.
authorCarl Hetherington <cth@carlh.net>
Sun, 24 Mar 2013 23:24:27 +0000 (23:24 +0000)
committerCarl Hetherington <cth@carlh.net>
Sun, 24 Mar 2013 23:24:27 +0000 (23:24 +0000)
src/tools/dvdomatic.cc
src/wx/config_dialog.cc
src/wx/config_dialog.h

index 991b4daf8085455716bf5b42b94373eca0847d49..66f366a24148d7ea1ee1f07966ed73b04b172389 100644 (file)
@@ -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
index b28c350ea25a802518f92e2fba38d231d436f8fa..ea1a7319e8a440a514c0e150d5eef43482598209 100644 (file)
@@ -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 &)
 {
index 948bf0571e2f95e347dd3440a6303a9ebc878f87..8a3c81ec99ec8359c703882d7e4b210082849780 100644 (file)
@@ -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;