From d7e914d0eb328d9b1c580d588db65c6c7ea3116d Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 7 Mar 2023 15:27:54 +0200 Subject: [PATCH] Fix resolution selection menu texts --- Mods/vcmi/config/vcmi/german.json | 2 +- Mods/vcmi/config/vcmi/polish.json | 2 +- Mods/vcmi/config/vcmi/ukrainian.json | 2 +- client/windows/settings/GeneralOptionsTab.cpp | 22 ++++++++++++++----- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Mods/vcmi/config/vcmi/german.json b/Mods/vcmi/config/vcmi/german.json index 4fa051690..357508378 100644 --- a/Mods/vcmi/config/vcmi/german.json +++ b/Mods/vcmi/config/vcmi/german.json @@ -25,7 +25,7 @@ "vcmi.systemOptions.fullscreenButton.hover" : "Vollbild", "vcmi.systemOptions.fullscreenButton.help" : "{Fullscreen}\n\n Wenn ausgewählt wird VCMI im Vollbildmodus laufen, ansonsten im Fenstermodus", - "vcmi.systemOptions.resolutionButton.hover" : "Auflösung", + "vcmi.systemOptions.resolutionButton.hover" : "Auflösung: %wx%h", "vcmi.systemOptions.resolutionButton.help" : "{Select resolution}\n\n Ändert die Spielauflösung. Spielneustart ist erforderlich um neue Auflösung zu übernehmen.", "vcmi.systemOptions.resolutionMenu.hover" : "Wähle Auflösung", "vcmi.systemOptions.resolutionMenu.help" : "Ändere die Spielauflösung.", diff --git a/Mods/vcmi/config/vcmi/polish.json b/Mods/vcmi/config/vcmi/polish.json index 91c526353..2f341fcbd 100644 --- a/Mods/vcmi/config/vcmi/polish.json +++ b/Mods/vcmi/config/vcmi/polish.json @@ -27,7 +27,7 @@ "vcmi.systemOptions.fullscreenButton.hover" : "Pełny ekran", "vcmi.systemOptions.fullscreenButton.help" : "{Fullscreen}\n\n Po wybraniu VCMI uruchomi się w trybie pełnoekranowym, w przeciwnym wypadku uruchomi się w oknie", - "vcmi.systemOptions.resolutionButton.hover" : "Rozdzielczość", + "vcmi.systemOptions.resolutionButton.hover" : "Rozdzielczość: %wx%h", "vcmi.systemOptions.resolutionButton.help" : "{Select resolution}\n\n Zmień rozdzielczość ekranu w grze. Restart gry jest wymagany, by zmiany zostały uwzględnione.", "vcmi.systemOptions.resolutionMenu.hover" : "Wybierz rozdzielczość", "vcmi.systemOptions.resolutionMenu.help" : "Zmień rozdzielczość ekranu w grze.", diff --git a/Mods/vcmi/config/vcmi/ukrainian.json b/Mods/vcmi/config/vcmi/ukrainian.json index 79206b5d0..851762b02 100644 --- a/Mods/vcmi/config/vcmi/ukrainian.json +++ b/Mods/vcmi/config/vcmi/ukrainian.json @@ -42,7 +42,7 @@ "vcmi.systemOptions.fullscreenButton.help" : "{Повноекранний режим}\n\n Якщо обрано, VCMI буде запускатися в режимі на весь екран, інакше — віконний режим", "vcmi.systemOptions.resolutionButton.hover" : "Роздільна здатність: %wx%h", "vcmi.systemOptions.resolutionButton.help" : "{Роздільна здатність}\n\n Зміна розширення екрану в грі. Аби зміни набули чинності необхідно перезавантажити гру.", - "vcmi.systemOptions.resolutionMenu.hover" : "Обрати роздільну здатність екрану", + "vcmi.systemOptions.resolutionMenu.hover" : "Обрати роздільну здатність", "vcmi.systemOptions.resolutionMenu.help" : "Змінити роздільну здатність екрану в грі.", "vcmi.systemOptions.fullscreenFailed" : "{Повноекранний режим}\n\n Не вдалося перейти в повноекранний режим! Поточна роздільна здатність не підтримується дисплеєм!", "vcmi.systemOptions.framerateButton.hover" : "Лічильник кадрів", diff --git a/client/windows/settings/GeneralOptionsTab.cpp b/client/windows/settings/GeneralOptionsTab.cpp index 089bc2f0c..d706d1fa5 100644 --- a/client/windows/settings/GeneralOptionsTab.cpp +++ b/client/windows/settings/GeneralOptionsTab.cpp @@ -37,9 +37,19 @@ static void setBoolSetting(std::string group, std::string field, bool value) entry->Bool() = value; } -static std::string resolutionToString(int w, int h) +static std::string resolutionToEntryString( int w, int h) { - auto string = CGI->generaltexth->translate("vcmi.systemOptions.resolutionButton.hover"); + std::string string = "%wx%h"; + + boost::replace_all(string, "%w", std::to_string(w)); + boost::replace_all(string, "%h", std::to_string(h)); + + return string; +} + +static std::string resolutionToLabelString( int w, int h) +{ + std::string string = CGI->generaltexth->translate("vcmi.systemOptions.resolutionButton.hover"); boost::replace_all(string, "%w", std::to_string(w)); boost::replace_all(string, "%h", std::to_string(h)); @@ -106,7 +116,7 @@ GeneralOptionsTab::GeneralOptionsTab() std::shared_ptr resolutionLabel = widget("resolutionLabel"); const auto & currentResolution = settings["video"]["screenRes"]; - resolutionLabel->setText(resolutionToString(currentResolution["width"].Integer(), currentResolution["height"].Integer())); + resolutionLabel->setText(resolutionToLabelString(currentResolution["width"].Integer(), currentResolution["height"].Integer())); std::shared_ptr spellbookAnimationCheckbox = widget("spellbookAnimationCheckbox"); spellbookAnimationCheckbox->setSelected(settings["video"]["spellbookAnimation"].Bool()); @@ -159,7 +169,7 @@ void GeneralOptionsTab::selectGameResolution() size_t i = 0; for(const auto & it : selectableResolutions) { - auto resolutionStr = resolutionToString(it.x, it.y); + auto resolutionStr = resolutionToEntryString(it.x, it.y); if(widget("resolutionLabel")->getText() == resolutionStr) currentResolutionIndex = i; @@ -189,7 +199,7 @@ void GeneralOptionsTab::setGameResolution(int index) gameRes["width"].Float() = resolution.x; gameRes["height"].Float() = resolution.y; - widget("resolutionLabel")->setText(resolutionToString(resolution.x, resolution.y)); + widget("resolutionLabel")->setText(resolutionToLabelString(resolution.x, resolution.y)); } void GeneralOptionsTab::setFullscreenMode(bool on) @@ -218,7 +228,7 @@ void GeneralOptionsTab::setFullscreenMode(bool on) gameRes["width"].Float() = currentResolution.x; gameRes["height"].Float() = currentResolution.y; - widget("resolutionLabel")->setText(resolutionToString(currentResolution.x, currentResolution.y)); + widget("resolutionLabel")->setText(resolutionToLabelString(currentResolution.x, currentResolution.y)); } }