diff --git a/data/locale/de-DE.ini b/data/locale/de-DE.ini index 7349ed3d..9751fcee 100644 --- a/data/locale/de-DE.ini +++ b/data/locale/de-DE.ini @@ -752,9 +752,9 @@ AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="Starte/Stoppe den Erweite AdvSceneSwitcher.hotkey.macro.pause="Pausiere Makro %1" AdvSceneSwitcher.hotkey.macro.unpause="Makro %1 nicht mehr pausieren" AdvSceneSwitcher.hotkey.macro.togglePause="Pause von Makro %1 togglen" -AdvSceneSwitcher.hotkey.upMacroSegmentHotkey="Makro-Segmentauswahl nach oben verschieben" -AdvSceneSwitcher.hotkey.downMacroSegmentHotkey="Makro-Segmentauswahl nach unten verschieben" -AdvSceneSwitcher.hotkey.removeMacroSegmentHotkey="Ausgewähltes Makro-Segment entfernen" +AdvSceneSwitcher.hotkey.macro.segment.up="Makro-Segmentauswahl nach oben verschieben" +AdvSceneSwitcher.hotkey.macro.segment.down="Makro-Segmentauswahl nach unten verschieben" +AdvSceneSwitcher.hotkey.macro.segment.remove="Ausgewähltes Makro-Segment entfernen" AdvSceneSwitcher.askBackup="Neue Version des Erweiterten Automatischen Szenenwechslers wurde erkannt.\nSoll ein Backup der alten Einstellungen angelegt werden?" AdvSceneSwitcher.askForMacro="Makro auswählen {{macroSelection}}" diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 1c4a6ba4..e54aa0c8 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -1237,9 +1237,10 @@ AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="Toggle Start/Stop for the AdvSceneSwitcher.hotkey.macro.pause="Pause macro %1" AdvSceneSwitcher.hotkey.macro.unpause="Unpause macro %1" AdvSceneSwitcher.hotkey.macro.togglePause="Toggle pause of macro %1" -AdvSceneSwitcher.hotkey.upMacroSegmentHotkey="Move macro segment selection up" -AdvSceneSwitcher.hotkey.downMacroSegmentHotkey="Move macro segment selection down" -AdvSceneSwitcher.hotkey.removeMacroSegmentHotkey="Remove selected macro segment" +AdvSceneSwitcher.hotkey.macro.new="Add new macro" +AdvSceneSwitcher.hotkey.macro.segment.up="Move macro segment selection up" +AdvSceneSwitcher.hotkey.macro.segment.down="Move macro segment selection down" +AdvSceneSwitcher.hotkey.macro.segment.remove="Remove selected macro segment" AdvSceneSwitcher.askBackup="Detected a new version of the Advanced Scene Switcher.\nShould a backup of the old settings be created?" AdvSceneSwitcher.askForMacro="Select macro{{macroSelection}}" diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index a2b0790f..929b33b7 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -640,9 +640,9 @@ AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="Alternar inicio / detenci AdvSceneSwitcher.hotkey.macro.pause="Pausar macro %1" AdvSceneSwitcher.hotkey.macro.unpause="Despausar macro %1" AdvSceneSwitcher.hotkey.macro.togglePause="Alternar pausa de macro %1" -AdvSceneSwitcher.hotkey.upMacroSegmentHotkey="Mover selección de segmento de macro hacia arriba" -AdvSceneSwitcher.hotkey.downMacroSegmentHotkey="Mover selección de segmento de macro hacia abajo" -AdvSceneSwitcher.hotkey.removeMacroSegmentHotkey="Eliminar segmento de macro seleccionado" +AdvSceneSwitcher.hotkey.macro.segment.up="Mover selección de segmento de macro hacia arriba" +AdvSceneSwitcher.hotkey.macro.segment.down="Mover selección de segmento de macro hacia abajo" +AdvSceneSwitcher.hotkey.macro.segment.remove="Eliminar segmento de macro seleccionado" AdvSceneSwitcher.askBackup="Se detectó una nueva versión de Advanced Scene Switcher.\n¿Crear una copia de seguridad de la configuración anterior?" AdvSceneSwitcher.askForMacro="Select macro {{macroSelection}}" diff --git a/data/locale/fr-FR.ini b/data/locale/fr-FR.ini index d764b8df..b8cfd337 100644 --- a/data/locale/fr-FR.ini +++ b/data/locale/fr-FR.ini @@ -920,9 +920,9 @@ AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="Basculer le démarrage/ar AdvSceneSwitcher.hotkey.macro.pause="Mettre en pause la macro %1" AdvSceneSwitcher.hotkey.macro.unpause="Reprendre la macro %1" AdvSceneSwitcher.hotkey.macro.togglePause="Basculer la pause de la macro %1" -AdvSceneSwitcher.hotkey.upMacroSegmentHotkey="Déplacer la sélection du segment de macro vers le haut" -AdvSceneSwitcher.hotkey.downMacroSegmentHotkey="Déplacer la sélection du segment de macro vers le bas" -AdvSceneSwitcher.hotkey.removeMacroSegmentHotkey="Supprimer le segment de macro sélectionné" +AdvSceneSwitcher.hotkey.macro.segment.up="Déplacer la sélection du segment de macro vers le haut" +AdvSceneSwitcher.hotkey.macro.segment.down="Déplacer la sélection du segment de macro vers le bas" +AdvSceneSwitcher.hotkey.macro.segment.remove="Supprimer le segment de macro sélectionné" AdvSceneSwitcher.askBackup="Une nouvelle version du commutateur de scènes avancé a été détectée.\nSouhaitez-vous créer une sauvegarde des anciens paramètres ?" AdvSceneSwitcher.askForMacro="Sélectionnez la macro{{macroSelection}}" diff --git a/data/locale/ja-JP.ini b/data/locale/ja-JP.ini index b2764db7..975c8271 100644 --- a/data/locale/ja-JP.ini +++ b/data/locale/ja-JP.ini @@ -1130,9 +1130,9 @@ AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="高機能シーンスイ AdvSceneSwitcher.hotkey.macro.pause="マクロ %1 を一時停止します" AdvSceneSwitcher.hotkey.macro.unpause="マクロ %1 の一時停止を解除します" AdvSceneSwitcher.hotkey.macro.togglePause="マクロ %1 の一時停止を切り替えます" -AdvSceneSwitcher.hotkey.upMacroSegmentHotkey="マクロセグメント選択を上に移動" -AdvSceneSwitcher.hotkey.downMacroSegmentHotkey="マクロセグメント選択を下に移動" -AdvSceneSwitcher.hotkey.removeMacroSegmentHotkey="選択したマクロセグメントを削除" +AdvSceneSwitcher.hotkey.macro.segment.up="マクロセグメント選択を上に移動" +AdvSceneSwitcher.hotkey.macro.segment.down="マクロセグメント選択を下に移動" +AdvSceneSwitcher.hotkey.macro.segment.remove="選択したマクロセグメントを削除" AdvSceneSwitcher.askBackup="高機能シーンスイッチャーの新しいバージョンが検出されました。\n古い設定のバックアップを作成する必要がありますか?" AdvSceneSwitcher.askForMacro="マクロ選択{{macroSelection}}" diff --git a/data/locale/pt-BR.ini b/data/locale/pt-BR.ini index c9773d7d..a532ecbd 100644 --- a/data/locale/pt-BR.ini +++ b/data/locale/pt-BR.ini @@ -1111,9 +1111,9 @@ AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="Alternar Iniciar/Parar pa AdvSceneSwitcher.hotkey.macro.pause="Pausar macro %1" AdvSceneSwitcher.hotkey.macro.unpause="Retomar macro %1" AdvSceneSwitcher.hotkey.macro.togglePause="Alternar pausa da macro %1" -AdvSceneSwitcher.hotkey.upMacroSegmentHotkey="Mover seleção de segmento de macro para cima" -AdvSceneSwitcher.hotkey.downMacroSegmentHotkey="Mover seleção de segmento de macro para baixo" -AdvSceneSwitcher.hotkey.removeMacroSegmentHotkey="Remover segmento de macro selecionado" +AdvSceneSwitcher.hotkey.macro.segment.up="Mover seleção de segmento de macro para cima" +AdvSceneSwitcher.hotkey.macro.segment.down="Mover seleção de segmento de macro para baixo" +AdvSceneSwitcher.hotkey.macro.segment.remove="Remover segmento de macro selecionado" AdvSceneSwitcher.askBackup="Detectada uma nova versão do Advanced Scene Switcher.\nDeve ser criado um backup das configurações antigas?" AdvSceneSwitcher.askForMacro="Selecionar macro{{macroSelection}}" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 4feeca03..50bc7340 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -1189,9 +1189,9 @@ AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="切换(启动/停止)高 AdvSceneSwitcher.hotkey.macro.pause="停用宏 %1" AdvSceneSwitcher.hotkey.macro.unpause="启用宏 %1" AdvSceneSwitcher.hotkey.macro.togglePause="切换(停用/启用)宏 %1" -AdvSceneSwitcher.hotkey.upMacroSegmentHotkey="上移选择宏" -AdvSceneSwitcher.hotkey.downMacroSegmentHotkey="下移选择宏" -AdvSceneSwitcher.hotkey.removeMacroSegmentHotkey="删除选定的宏" +AdvSceneSwitcher.hotkey.macro.segment.up="上移选择宏" +AdvSceneSwitcher.hotkey.macro.segment.down="下移选择宏" +AdvSceneSwitcher.hotkey.macro.segment.remove="删除选定的宏" AdvSceneSwitcher.askBackup="检测到新版本的高级场景切换器。\n是否要创建旧版本的设置备份?" AdvSceneSwitcher.askForMacro="选择宏 {{macroSelection}}" diff --git a/lib/macro/macro-tab.cpp b/lib/macro/macro-tab.cpp index 34ef26c7..94b0c6ea 100644 --- a/lib/macro/macro-tab.cpp +++ b/lib/macro/macro-tab.cpp @@ -100,6 +100,13 @@ bool AdvSceneSwitcher::AddNewMacro(std::shared_ptr &res, void AdvSceneSwitcher::on_macroAdd_clicked() { + // Hotkey to add new macro will also use this function. + // Since we don't want the hotkey to have an effect if the macro tab is + // not focused we need to check this here. + if (!MacroTabIsInFocus()) { + return; + } + std::string name; std::shared_ptr newMacro; if (!AddNewMacro(newMacro, name)) { diff --git a/lib/switcher-data.cpp b/lib/switcher-data.cpp index 0f20a437..c19fdf15 100644 --- a/lib/switcher-data.cpp +++ b/lib/switcher-data.cpp @@ -255,6 +255,16 @@ static void removeMacroSegmentHotkeyFunc(void *, obs_hotkey_id, obs_hotkey_t *, } } +static void addNewMacroHotkeyFunc(void *, obs_hotkey_id, obs_hotkey_t *, + bool pressed) +{ + if (pressed && SettingsWindowIsOpened()) { + QMetaObject::invokeMethod(GetSettingsWindow(), + "on_macroAdd_clicked", + Qt::QueuedConnection); + } +} + static void registerHotkeys() { switcher->startHotkey = obs_hotkey_register_frontend( @@ -270,19 +280,21 @@ static void registerHotkeys() obs_module_text( "AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey"), startStopToggleHotkeyFunc, NULL); + switcher->newMacroHotkey = obs_hotkey_register_frontend( + "newMacroSwitcherHotkey", + obs_module_text("AdvSceneSwitcher.hotkey.macro.new"), + addNewMacroHotkeyFunc, NULL); switcher->upMacroSegment = obs_hotkey_register_frontend( "upMacroSegmentSwitcherHotkey", - obs_module_text("AdvSceneSwitcher.hotkey.upMacroSegmentHotkey"), + obs_module_text("AdvSceneSwitcher.hotkey.macro.segment.up"), upMacroSegmentHotkeyFunc, NULL); switcher->downMacroSegment = obs_hotkey_register_frontend( "downMacroSegmentSwitcherHotkey", - obs_module_text( - "AdvSceneSwitcher.hotkey.downMacroSegmentHotkey"), + obs_module_text("AdvSceneSwitcher.hotkey.macro.segment.down"), downMacroSegmentHotkeyFunc, NULL); switcher->removeMacroSegment = obs_hotkey_register_frontend( "removeMacroSegmentSwitcherHotkey", - obs_module_text( - "AdvSceneSwitcher.hotkey.removeMacroSegmentHotkey"), + obs_module_text("AdvSceneSwitcher.hotkey.macro.segment.remove"), removeMacroSegmentHotkeyFunc, NULL); switcher->hotkeysRegistered = true; @@ -300,6 +312,7 @@ void SwitcherData::SaveHotkeys(obs_data_t *obj) saveHotkey(obj, startHotkey, "startHotkey"); saveHotkey(obj, stopHotkey, "stopHotkey"); saveHotkey(obj, toggleHotkey, "toggleHotkey"); + saveHotkey(obj, newMacroHotkey, "newMacroHotkey"); saveHotkey(obj, upMacroSegment, "upMacroSegmentHotkey"); saveHotkey(obj, downMacroSegment, "downMacroSegmentHotkey"); saveHotkey(obj, removeMacroSegment, "removeMacroSegmentHotkey"); @@ -320,6 +333,7 @@ void SwitcherData::LoadHotkeys(obs_data_t *obj) loadHotkey(obj, startHotkey, "startHotkey"); loadHotkey(obj, stopHotkey, "stopHotkey"); loadHotkey(obj, toggleHotkey, "toggleHotkey"); + loadHotkey(obj, newMacroHotkey, "newMacroHotkey"); loadHotkey(obj, upMacroSegment, "upMacroSegmentHotkey"); loadHotkey(obj, downMacroSegment, "downMacroSegmentHotkey"); loadHotkey(obj, removeMacroSegment, "removeMacroSegmentHotkey"); diff --git a/lib/switcher-data.hpp b/lib/switcher-data.hpp index d70aca9d..528e2034 100644 --- a/lib/switcher-data.hpp +++ b/lib/switcher-data.hpp @@ -149,6 +149,7 @@ public: obs_hotkey_id startHotkey = OBS_INVALID_HOTKEY_ID; obs_hotkey_id stopHotkey = OBS_INVALID_HOTKEY_ID; obs_hotkey_id toggleHotkey = OBS_INVALID_HOTKEY_ID; + obs_hotkey_id newMacroHotkey = OBS_INVALID_HOTKEY_ID; obs_hotkey_id upMacroSegment = OBS_INVALID_HOTKEY_ID; obs_hotkey_id downMacroSegment = OBS_INVALID_HOTKEY_ID; obs_hotkey_id removeMacroSegment = OBS_INVALID_HOTKEY_ID;