From e951aed2a8837145fd02ebc595f1d371a5bf8252 Mon Sep 17 00:00:00 2001 From: Brendan Hagan Date: Fri, 18 Nov 2022 21:10:17 -0500 Subject: [PATCH] WelcomeWindow append change language https://github.com/247321453/MagicSetEditor2Ex/commit/4f80e9ff54c817875356a18f8c79dd70ff0a67fd --- data/en.mse-locale/locale | 1 + src/gui/about_window.cpp | 2 +- src/gui/welcome_window.cpp | 41 ++++++++++++++++++++++++++++++++++++++ src/gui/welcome_window.hpp | 2 ++ src/util/window_id.hpp | 4 ++++ 5 files changed, 49 insertions(+), 1 deletion(-) diff --git a/data/en.mse-locale/locale b/data/en.mse-locale/locale index 0632de4b..3a75527e 100644 --- a/data/en.mse-locale/locale +++ b/data/en.mse-locale/locale @@ -667,6 +667,7 @@ button: install group: &Install All upgrade group: &Upgrade All remove group: &Remove All + apply language: Apply language ############################################################## Titles in the GUI title: diff --git a/src/gui/about_window.cpp b/src/gui/about_window.cpp index 10ae7c36..b4626ca8 100644 --- a/src/gui/about_window.cpp +++ b/src/gui/about_window.cpp @@ -33,7 +33,7 @@ void AboutWindow::onPaint(wxPaintEvent& ev) { draw(dc); } -const char* MSE_AUTHORS[] = {"Twan van Laarhoven (twanvl)", "Sean Hunt (coppro)", "Alissa Rao (Lymia)"}; +const char* MSE_AUTHORS[] = {"Twan van Laarhoven (twanvl)", "Sean Hunt (coppro)", "Alissa Rao (Lymia)", "CaiCai (247321453)"}; void AboutWindow::draw(DC& dc) { wxSize ws = GetClientSize(); diff --git a/src/gui/welcome_window.cpp b/src/gui/welcome_window.cpp index 733693ba..62124a76 100644 --- a/src/gui/welcome_window.cpp +++ b/src/gui/welcome_window.cpp @@ -18,12 +18,17 @@ #include #include #include +#include +#include // 2007-02-06: New HoverButton, hopefully this on works on GTK #define USE_HOVERBUTTON // ----------------------------------------------------------------------------- : WelcomeWindow +bool __compare_package_name(const PackagedP& a, const PackagedP& b) { + return a->name() < b->name(); +} WelcomeWindow::WelcomeWindow() : wxFrame(nullptr, wxID_ANY, _TITLE_("magic set editor"), wxDefaultPosition, wxSize(520,380), wxDEFAULT_DIALOG_STYLE | wxTAB_TRAVERSAL | wxCLIP_CHILDREN ) , logo (load_resource_image(_("about"))) @@ -58,6 +63,28 @@ WelcomeWindow::WelcomeWindow() #endif if (open_last) s2->Add(open_last, 0, wxALL, 2); s2->AddStretchSpacer(); + + // + language = new wxComboBox(this, wxID_ANY, _(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY); + // set values + vector locales; + package_manager.findMatching(_("*.mse-locale"), locales); + sort(locales.begin(), locales.end(), __compare_package_name); + int n = 0; + FOR_EACH(package, locales) { + language->Append(package->full_name, package.get()); + if (settings.locale == package->name()) { + language->SetSelection(n); + } + n++; + } + wxSizer* s3 = new wxBoxSizer(wxHORIZONTAL); + s3->AddSpacer(5); + s3->Add(language, 0, wxALL, 1); + auto apply_language = new wxButton(this, ID_APPLY_LANGUAGE, _BUTTON_("apply language")); + s3->AddSpacer(25); + s3->Add(apply_language, 0, wxALL, 1); + s2->Add(s3); s1->Add(s2); SetSizer(s1); } @@ -87,6 +114,19 @@ void WelcomeWindow::draw(DC& dc) { dc.DrawText(version_string, 4, ws.GetHeight()-th-4); } +void WelcomeWindow::onApplyLanguage(wxCommandEvent&) { + // locale + int n = language->GetSelection(); + if (n == wxNOT_FOUND) return; + Packaged* p = (Packaged*)language->GetClientData(n); + settings.locale = p->name(); + the_locale = Locale::byName(settings.locale); + + //close app + (new WelcomeWindow())->Show(); + Close(); +} + void WelcomeWindow::onOpenSet(wxCommandEvent&) { wxFileDialog* dlg = new wxFileDialog(this, _TITLE_("open set"), settings.default_set_dir, wxEmptyString, import_formats(), wxFD_OPEN); if (dlg->ShowModal() == wxID_OK) { @@ -133,6 +173,7 @@ BEGIN_EVENT_TABLE(WelcomeWindow, wxFrame) EVT_BUTTON (ID_FILE_NEW, WelcomeWindow::onNewSet) EVT_BUTTON (ID_FILE_OPEN, WelcomeWindow::onOpenSet) EVT_BUTTON (ID_FILE_RECENT, WelcomeWindow::onOpenLast) + EVT_BUTTON (ID_APPLY_LANGUAGE, WelcomeWindow::onApplyLanguage) EVT_BUTTON (ID_FILE_CHECK_UPDATES, WelcomeWindow::onCheckUpdates) EVT_PAINT ( WelcomeWindow::onPaint) // EVT_IDLE ( WelcomeWindow::onIdle) diff --git a/src/gui/welcome_window.hpp b/src/gui/welcome_window.hpp index ce44e972..27d7b6a1 100644 --- a/src/gui/welcome_window.hpp +++ b/src/gui/welcome_window.hpp @@ -35,6 +35,7 @@ private: #if USE_BETA_LOGO Bitmap logo2; #endif + wxComboBox* language; void onPaint(wxPaintEvent&); void draw(DC& dc); @@ -43,6 +44,7 @@ private: void onNewSet (wxCommandEvent&); void onOpenLast (wxCommandEvent&); void onCheckUpdates(wxCommandEvent&); + void onApplyLanguage(wxCommandEvent&); // void onIdle (wxIdleEvent& ev); /// Close the welcome window, and show the given set diff --git a/src/util/window_id.hpp b/src/util/window_id.hpp index 35b84be8..8fc9ea39 100644 --- a/src/util/window_id.hpp +++ b/src/util/window_id.hpp @@ -81,6 +81,10 @@ enum MenuID { ID_MODE_SYMMETRY, ID_MODE_PAINT, ID_MODE_MAX, + + + + ID_APPLY_LANGUAGE, };