+void
+Page::window_destroyed ()
+{
+ _window_exists = false;
+}
+
+
+GeneralPage::GeneralPage (wxSize panel_size, int border)
+ : Page (panel_size, border)
+{
+
+}
+
+
+wxString
+GeneralPage::GetName () const
+{
+ return _("General");
+}
+
+
+void
+GeneralPage::add_language_controls (wxGridBagSizer* table, int& r)
+{
+ _set_language = new CheckBox (_panel, _("Set language"));
+ table->Add (_set_language, wxGBPosition (r, 0), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
+ _language = new wxChoice (_panel, wxID_ANY);
+ vector<pair<string, string>> languages;
+ languages.push_back (make_pair("Čeština", "cs_CZ"));
+ languages.push_back (make_pair("汉语/漢語", "zh_CN"));
+ languages.push_back (make_pair("Dansk", "da_DK"));
+ languages.push_back (make_pair("Deutsch", "de_DE"));
+ languages.push_back (make_pair("English", "en_GB"));
+ languages.push_back (make_pair("Español", "es_ES"));
+ languages.push_back (make_pair("Français", "fr_FR"));
+ languages.push_back (make_pair("Italiano", "it_IT"));
+ languages.push_back (make_pair("Nederlands", "nl_NL"));
+ languages.push_back (make_pair("Русский", "ru_RU"));
+ languages.push_back (make_pair("Polski", "pl_PL"));
+ languages.push_back (make_pair("Português europeu", "pt_PT"));
+ languages.push_back (make_pair("Português do Brasil", "pt_BR"));
+ languages.push_back (make_pair("Svenska", "sv_SE"));
+ languages.push_back (make_pair("Slovenščina", "sl_SI"));
+ languages.push_back (make_pair("Slovenský jazyk", "sk_SK"));
+ // languages.push_back (make_pair("Türkçe", "tr_TR"));
+ languages.push_back (make_pair("українська мова", "uk_UA"));
+ languages.push_back (make_pair("Magyar nyelv", "hu_HU"));
+ checked_set (_language, languages);
+ table->Add (_language, wxGBPosition (r, 1));
+ ++r;
+
+ auto restart = add_label_to_sizer (
+ table, _panel, _("(restart DCP-o-matic to see language changes)"), false, wxGBPosition (r, 0), wxGBSpan (1, 2)
+ );
+ wxFont font = restart->GetFont();
+ font.SetStyle (wxFONTSTYLE_ITALIC);
+ font.SetPointSize (font.GetPointSize() - 1);
+ restart->SetFont (font);
+ ++r;
+
+ _set_language->bind(&GeneralPage::set_language_changed, this);
+ _language->Bind (wxEVT_CHOICE, bind (&GeneralPage::language_changed, this));
+}
+
+void
+GeneralPage::add_update_controls (wxGridBagSizer* table, int& r)
+{
+ _check_for_updates = new CheckBox (_panel, _("Check for updates on startup"));
+ table->Add (_check_for_updates, wxGBPosition (r, 0), wxGBSpan (1, 2));
+ ++r;
+
+ _check_for_test_updates = new CheckBox (_panel, _("Check for testing updates on startup"));
+ table->Add (_check_for_test_updates, wxGBPosition (r, 0), wxGBSpan (1, 2));
+ ++r;
+
+ _check_for_updates->bind(&GeneralPage::check_for_updates_changed, this);
+ _check_for_test_updates->bind(&GeneralPage::check_for_test_updates_changed, this);
+}
+
+void
+GeneralPage::config_changed ()
+{
+ auto config = Config::instance ();
+
+ checked_set (_set_language, static_cast<bool>(config->language()));
+
+ /* Backwards compatibility of config file */
+
+ map<string, string> compat_map;
+ compat_map["fr"] = "fr_FR";
+ compat_map["it"] = "it_IT";
+ compat_map["es"] = "es_ES";
+ compat_map["sv"] = "sv_SE";
+ compat_map["de"] = "de_DE";
+ compat_map["nl"] = "nl_NL";
+ compat_map["ru"] = "ru_RU";
+ compat_map["pl"] = "pl_PL";
+ compat_map["da"] = "da_DK";
+ compat_map["pt"] = "pt_PT";
+ compat_map["sk"] = "sk_SK";
+ compat_map["cs"] = "cs_CZ";
+ compat_map["uk"] = "uk_UA";
+
+ auto lang = config->language().get_value_or("en_GB");
+ if (compat_map.find(lang) != compat_map.end ()) {
+ lang = compat_map[lang];