Browse Source

Add app::appendLanguageMenu().

tags/v2.6.1
Andrew Belt 5 months ago
parent
commit
9b3d8c2136
2 changed files with 22 additions and 19 deletions
  1. +2
    -0
      include/app/MenuBar.hpp
  2. +20
    -19
      src/app/MenuBar.cpp

+ 2
- 0
include/app/MenuBar.hpp View File

@@ -1,6 +1,7 @@
#pragma once #pragma once
#include <app/common.hpp> #include <app/common.hpp>
#include <widget/Widget.hpp> #include <widget/Widget.hpp>
#include <ui/Menu.hpp>




namespace rack { namespace rack {
@@ -8,6 +9,7 @@ namespace app {




PRIVATE widget::Widget* createMenuBar(); PRIVATE widget::Widget* createMenuBar();
PRIVATE void appendLanguageMenu(ui::Menu* menu);




} // namespace app } // namespace app


+ 20
- 19
src/app/MenuBar.cpp View File

@@ -985,25 +985,8 @@ struct HelpButton : MenuButton {
menu->cornerFlags = BND_CORNER_TOP; menu->cornerFlags = BND_CORNER_TOP;
menu->box.pos = getAbsoluteOffset(math::Vec(0, box.size.y)); menu->box.pos = getAbsoluteOffset(math::Vec(0, box.size.y));


// Language
std::vector<std::string> languages = string::getLanguages();
std::vector<std::string> languageLabels;
for (const std::string& language : languages) {
languageLabels.push_back(string::translate("language", language));
}
menu->addChild(createIndexSubmenuItem("🌐 " + string::translate("MenuBar.help.language"), languageLabels, [=]() {
auto it = std::find(languages.begin(), languages.end(), settings::language);
return it - languages.begin();
}, [=](size_t i) {
std::string language = get(languages, i, "en");
if (settings::language == language)
return;
settings::language = language;
// Request restart
std::string msg = string::f(string::translate("MenuBar.help.language.restart"), string::translate("language"));
if (osdialog_message(OSDIALOG_INFO, OSDIALOG_OK_CANCEL, msg.c_str())) {
APP->window->close();
}
menu->addChild(createSubmenuItem("🌐 " + string::translate("MenuBar.help.language"), "", [=](ui::Menu* menu) {
appendLanguageMenu(menu);
})); }));


menu->addChild(createMenuItem(string::translate("MenuBar.help.tips"), "", [=]() { menu->addChild(createMenuItem(string::translate("MenuBar.help.tips"), "", [=]() {
@@ -1175,5 +1158,23 @@ widget::Widget* createMenuBar() {
} }




void appendLanguageMenu(ui::Menu* menu) {
for (const std::string& language : string::getLanguages()) {
menu->addChild(createCheckMenuItem(string::translate("language", language), "", [=]() {
return settings::language == language;
}, [=]() {
if (settings::language == language)
return;
settings::language = language;
// Request restart
std::string msg = string::f(string::translate("MenuBar.help.language.restart"), string::translate("language"));
if (osdialog_message(OSDIALOG_INFO, OSDIALOG_OK_CANCEL, msg.c_str())) {
APP->window->close();
}
}));
}
}


} // namespace app } // namespace app
} // namespace rack } // namespace rack

Loading…
Cancel
Save