User interface for language selection.
[dcpomatic.git] / src / wx / config_dialog.cc
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 &)
 {