diff --git a/data/locale/de-DE.ini b/data/locale/de-DE.ini index c9b3a6ba..34625319 100644 --- a/data/locale/de-DE.ini +++ b/data/locale/de-DE.ini @@ -80,7 +80,6 @@ AdvSceneSwitcher.macroTab.runInParallel="Parallel zu anderen Makros ausführen" AdvSceneSwitcher.macroTab.onChange="Nur bei Änderung ausführen" AdvSceneSwitcher.macroTab.defaultname="Makro %1" AdvSceneSwitcher.macroTab.defaultGroupName="Gruppe %1" -AdvSceneSwitcher.macroTab.exists="Makro-Name existiert bereits" AdvSceneSwitcher.macroTab.removeGroupPopup.text="Sicher, dass \"%1\" und alle zugehörigen Elemente gelöscht werden?" AdvSceneSwitcher.macroTab.copy="Kopie des aktuellen Makros erstellen" AdvSceneSwitcher.macroTab.group="Ausgewählte Elemente gruppieren" diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 7e652e69..e6808427 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -101,6 +101,7 @@ AdvSceneSwitcher.macroTab.edit.logic="Logic type:" AdvSceneSwitcher.macroTab.edit.condition="Condition type:" AdvSceneSwitcher.macroTab.edit.action="Action type:" AdvSceneSwitcher.macroTab.add="Add new macro" +AdvSceneSwitcher.macroTab.addGroup="Add new macro group" AdvSceneSwitcher.macroTab.name="Name:" AdvSceneSwitcher.macroTab.run="Run macro" AdvSceneSwitcher.macroTab.run.tooltip="Run all macro actions regardless of condition.\nIf else actions are available, hold Shift and click the button to execute them instead." @@ -110,7 +111,8 @@ AdvSceneSwitcher.macroTab.runInParallel="Run macro in parallel to other macros" AdvSceneSwitcher.macroTab.onChange="Perform actions only on condition change" AdvSceneSwitcher.macroTab.defaultname="Macro %1" AdvSceneSwitcher.macroTab.defaultGroupName="Group %1" -AdvSceneSwitcher.macroTab.exists="Macro name exists already" +AdvSceneSwitcher.macroTab.macroNameExists="The name \"%1\" is already used by a macro." +AdvSceneSwitcher.macroTab.groupNameExists="The name \"%1\" is already used by a macro group." AdvSceneSwitcher.macroTab.removeSingleMacroPopup.text="Are you sure you want to remove \"%1\"?" AdvSceneSwitcher.macroTab.removeMultipleMacrosPopup.text="Are you sure you want to remove %1 macros/groups?" AdvSceneSwitcher.macroTab.removeGroupPopup.text="Are you sure you want to remove \"%1\" group and all its elements?" @@ -125,7 +127,7 @@ AdvSceneSwitcher.macroTab.export.info="Paste the string below into the import di AdvSceneSwitcher.macroTab.import="Import" AdvSceneSwitcher.macroTab.import.info="Paste the export string into the below text box to import macros:" AdvSceneSwitcher.macroTab.import.invalid="Invalid import data provided!" -AdvSceneSwitcher.macroTab.import.nameConflict="Cannot continue importing macro \"%1\" as a macro with the same name already exists!\nDo you want to continue with the import of \"%2\" and choose a new name? (Will be skipped otherwise)" +AdvSceneSwitcher.macroTab.import.nameConflict="Cannot continue with import of \"%1\" as the name is already in use!\nDo want to choose a new name for the imported \"%2\"? (It will be skipped otherwise)" AdvSceneSwitcher.macroTab.expandAll="Expand all" AdvSceneSwitcher.macroTab.collapseAll="Collapse all" AdvSceneSwitcher.macroTab.maximize="Maximize" diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index a71f8496..ecdb9bf5 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -75,7 +75,6 @@ AdvSceneSwitcher.macroTab.run="Ejecutar macro" AdvSceneSwitcher.macroTab.runInParallel="Ejecutar macro en paralelo a otras macros" AdvSceneSwitcher.macroTab.onChange="Realizar acciones solo en el cambio de condición" AdvSceneSwitcher.macroTab.defaultname="Macro %1" -AdvSceneSwitcher.macroTab.exists="El nombre de la macro ya existe" AdvSceneSwitcher.macroTab.copy="Crear copia" AdvSceneSwitcher.macroTab.expandAll="Expandir todo" AdvSceneSwitcher.macroTab.collapseAll="Contraer todo" diff --git a/data/locale/fr-FR.ini b/data/locale/fr-FR.ini index 005b3090..49cf656e 100644 --- a/data/locale/fr-FR.ini +++ b/data/locale/fr-FR.ini @@ -82,7 +82,6 @@ AdvSceneSwitcher.macroTab.runInParallel="Exécuter la macro en parallèle avec d AdvSceneSwitcher.macroTab.onChange="Exécuter des actions uniquement en cas de changement de condition" AdvSceneSwitcher.macroTab.defaultname="Macro %1" AdvSceneSwitcher.macroTab.defaultGroupName="Groupe %1" -AdvSceneSwitcher.macroTab.exists="Le nom de la macro existe déjà" AdvSceneSwitcher.macroTab.removeSingleMacroPopup.text="Êtes-vous sûr de vouloir supprimer \"%1\" ?" AdvSceneSwitcher.macroTab.removeMultipleMacrosPopup.text="Êtes-vous sûr de vouloir supprimer %1 macros ?" AdvSceneSwitcher.macroTab.removeGroupPopup.text="Êtes-vous sûr de vouloir supprimer \"%1\" et tous ses éléments ?" diff --git a/data/locale/ru-RU.ini b/data/locale/ru-RU.ini index 645ea4a0..c7d2c109 100644 --- a/data/locale/ru-RU.ini +++ b/data/locale/ru-RU.ini @@ -69,7 +69,6 @@ AdvSceneSwitcher.macroTab.edit.action="Тип действия:" AdvSceneSwitcher.macroTab.add="Добавить новый макрос" AdvSceneSwitcher.macroTab.name="Имя:" AdvSceneSwitcher.macroTab.defaultname="Макрос %1" -AdvSceneSwitcher.macroTab.exists="Имя макроса уже существует" AdvSceneSwitcher.macroTab.copy="Создать копию" ; Macro Logic AdvSceneSwitcher.logic.none="Игнорировать вход" diff --git a/data/locale/tr-TR.ini b/data/locale/tr-TR.ini index 50cf4cb1..af14d4c6 100644 --- a/data/locale/tr-TR.ini +++ b/data/locale/tr-TR.ini @@ -75,7 +75,6 @@ AdvSceneSwitcher.macroTab.run="Makro Çalıştırma" AdvSceneSwitcher.macroTab.runInParallel="Makroyu diğer makrolara paralel olarak çalıştırın" AdvSceneSwitcher.macroTab.onChange="Eylemleri yalnızca koşul değişikliğinde gerçekleştirin" AdvSceneSwitcher.macroTab.defaultname="Makro %1" -AdvSceneSwitcher.macroTab.exists="Macro adı zaten mevcut" AdvSceneSwitcher.macroTab.copy="Kopya oluştur" AdvSceneSwitcher.macroTab.expandAll="Hepsini Genişlet" AdvSceneSwitcher.macroTab.collapseAll="Hepsini Küçült" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 85fb9d7d..8ca35706 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -81,7 +81,6 @@ AdvSceneSwitcher.macroTab.runInParallel="与其他宏同时运行宏" AdvSceneSwitcher.macroTab.onChange="仅在条件更改时执行操作" AdvSceneSwitcher.macroTab.defaultname="宏 %1" AdvSceneSwitcher.macroTab.defaultGroupName="组 %1" -AdvSceneSwitcher.macroTab.exists="宏名称已存在" AdvSceneSwitcher.macroTab.removeSingleMacroPopup.text="你确定你要删除 \"%1\"?" AdvSceneSwitcher.macroTab.removeMultipleMacrosPopup.text="您确定要删除 %1 宏吗?" AdvSceneSwitcher.macroTab.removeGroupPopup.text="您确定要删除 \"%1\"及其所有元素吗?" diff --git a/lib/macro/macro-tab.cpp b/lib/macro/macro-tab.cpp index d7e18e55..a3b50fee 100644 --- a/lib/macro/macro-tab.cpp +++ b/lib/macro/macro-tab.cpp @@ -30,6 +30,25 @@ static bool macroNameExists(const std::string &name) return !!GetMacroByName(name.c_str()); } +static bool newMacroNameIsValid(const std::string &name) +{ + if (!macroNameExists(name)) { + return true; + } + + auto macro = GetMacroByName(name.c_str()); + if (!macro) { + return false; + } + + QString fmt = obs_module_text( + macro->IsGroup() ? "AdvSceneSwitcher.macroTab.groupNameExists" + : "AdvSceneSwitcher.macroTab.macroNameExists"); + + DisplayMessage(fmt.arg(QString::fromStdString(name))); + return false; +} + bool AdvSceneSwitcher::AddNewMacro(std::shared_ptr &res, std::string &name, std::string format) { @@ -61,9 +80,7 @@ bool AdvSceneSwitcher::AddNewMacro(std::shared_ptr &res, return false; } - if (macroNameExists(name)) { - DisplayMessage( - obs_module_text("AdvSceneSwitcher.macroTab.exists")); + if (!newMacroNameIsValid(name)) { return false; } @@ -173,15 +190,6 @@ void AdvSceneSwitcher::on_macroDown_clicked() ui->macros->Down(macro); } -static bool newMacroNameValid(const std::string &name) -{ - if (!macroNameExists(name)) { - return true; - } - DisplayMessage(obs_module_text("AdvSceneSwitcher.macroTab.exists")); - return false; -} - void AdvSceneSwitcher::RenameSelectedMacro() { auto macro = GetSelectedMacro(); @@ -198,7 +206,7 @@ void AdvSceneSwitcher::RenameSelectedMacro() return; } - if (name.empty() || name == oldName || !newMacroNameValid(name)) { + if (name.empty() || name == oldName || !newMacroNameIsValid(name)) { return; } @@ -363,7 +371,10 @@ bool AdvSceneSwitcher::ResolveMacroImportNameConflict( std::string newName; bool accepted = AdvSSNameDialog::AskForName( - this, obs_module_text("AdvSceneSwitcher.macroTab.add"), + this, + obs_module_text(macro->IsGroup() + ? "AdvSceneSwitcher.macroTab.addGroup" + : "AdvSceneSwitcher.macroTab.add"), obs_module_text("AdvSceneSwitcher.macroTab.name"), newName, placeHolderText); @@ -375,9 +386,7 @@ bool AdvSceneSwitcher::ResolveMacroImportNameConflict( return false; } - if (macroNameExists(newName)) { - DisplayMessage( - obs_module_text("AdvSceneSwitcher.macroTab.exists")); + if (!newMacroNameIsValid(newName)) { return ResolveMacroImportNameConflict(macro); } @@ -466,7 +475,7 @@ void AdvSceneSwitcher::on_macroName_editingFinished() QString oldName = QString::fromStdString(macro->Name()); if (newName.isEmpty() || newName == oldName || - !newMacroNameValid(newName.toStdString())) { + !newMacroNameIsValid(newName.toStdString())) { ui->macroName->setText(oldName); return; }