From 2247152aa8f861455a50c6005b7f82049a8ae892 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Fri, 30 Aug 2024 23:09:33 +0200 Subject: [PATCH] Remove legacy tab "Scene Triggers" --- CMakeLists.txt | 2 - data/locale/de-DE.ini | 24 -- data/locale/en-US.ini | 24 -- data/locale/es-ES.ini | 24 -- data/locale/fr-FR.ini | 24 -- data/locale/ja-JP.ini | 24 -- data/locale/pt-BR.ini | 23 -- data/locale/ru-RU.ini | 22 -- data/locale/tr-TR.ini | 24 -- data/locale/zh-CN.ini | 24 -- forms/advanced-scene-switcher.ui | 168 --------- lib/advanced-scene-switcher.cpp | 2 - lib/advanced-scene-switcher.hpp | 9 - lib/general.cpp | 6 +- lib/legacy/scene-trigger.cpp | 581 ------------------------------- lib/legacy/scene-trigger.hpp | 88 ----- lib/switcher-data.hpp | 5 - lib/utils/priority-helper.cpp | 1 - lib/utils/tab-helpers.cpp | 2 +- 19 files changed, 2 insertions(+), 1075 deletions(-) delete mode 100644 lib/legacy/scene-trigger.cpp delete mode 100644 lib/legacy/scene-trigger.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 14d92766..18349b90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,8 +52,6 @@ target_sources( ${LIB_NAME} PRIVATE lib/legacy/scene-group.cpp lib/legacy/scene-group.hpp - lib/legacy/scene-trigger.cpp - lib/legacy/scene-trigger.hpp lib/legacy/switch-audio.cpp lib/legacy/switch-audio.hpp lib/legacy/switch-executable.cpp diff --git a/data/locale/de-DE.ini b/data/locale/de-DE.ini index 922c3c45..b26d7dfa 100644 --- a/data/locale/de-DE.ini +++ b/data/locale/de-DE.ini @@ -748,30 +748,6 @@ AdvSceneSwitcher.sceneGroupTab.exists="Szenengruppen- oder Szenenname existiert AdvSceneSwitcher.sceneGroupTab.help="Szenengruppen können, genau wie reguläre Szenen, als Ziel eines Szenenwechsler Eintrags ausgewählt werden.\n\nSzenengruppen bestehen aus einer Liste von Szenen.\nDie aktive Szene der Szenengruppe schreitet abhängig von den konfigurierten Einstellungen durch die Liste der zugewiesenen Szenen fort.\n\nMögliche Einstellungen zum Fortschreiten der aktiven Szene sind:\nAnzahl der Szenenwechsel.\nZeit seit dem letzten Szenenwechsel in der Szenengruppe.\nOder zufällig.\n\nSo kann zum Beispiel eine Szenengruppe welche die folgenden Szenen enthält ...\nSzene 1\nSzene 2\nSzene 3 \n... beim erstem Mal zu \"Szene 1\" wechseln.\nBeim zweiten Mal zu \"Szene 2\".\nDie restlichem Male wechselt die Szenengruppe zu \"Szene 3\".\n\nKlicke auf das markierte Plus Symbol, um eine neuen Szenengruppe hinzuzufügen." AdvSceneSwitcher.sceneGroupTab.scenes.help="Wähle die Szenengruppe, die du bearbeiten möchtest, auf der linken Seite aus.\n\nWähle oben eine Szene aus, die du zur Szenengruppe hinzufügen möchtest, und klicke das Plus Symbol.\n\nDie gleiche Szene kann mehrfach in derselben Szenengruppe auftauchen." -; Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="Szenen Trigger" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--Trigger auswählen--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="aktiv ist" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="nicht aktiv ist" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="verlassen wird" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--Aktion auswählen--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="Aufnahme starten" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="Aufnahme pausieren" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="Aufnahme fortsetzen" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="Aufnahme stoppen" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="Streamen stoppen" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="Streamen starten" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="Replay Buffer starten" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="Replay Buffer stoppen" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="Audio Quelle stumm schalten" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="Audio Quelle aktiv schalten" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="Szenenwechsler starten" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="Szenenwechsler stoppen" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="Virtuelle Kamera starten" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="Virtuelle Kamera stoppen" -AdvSceneSwitcher.sceneTriggerTab.entry="Wenn {{scenes}} {{triggers}} {{actions}} {{audioSources}} nach {{duration}} " -AdvSceneSwitcher.sceneTriggerTab.help="Dieser Tab ermöglicht es automatisiert Handlungen, wie etwa das Stoppen von einer Aufnahme oder des Streamens, bei einem Szenenwechsel auszuführen." - ; Hotkey AdvSceneSwitcher.hotkey.startSwitcherHotkey="Starte den Erweiterten Szenenwechsler" AdvSceneSwitcher.hotkey.stopSwitcherHotkey="Stoppe den Erweiterten Szenenwechsler" diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 844799da..ec30cb0f 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -2207,27 +2207,3 @@ AdvSceneSwitcher.sceneGroupTab.defaultname="Scene Group %1" AdvSceneSwitcher.sceneGroupTab.exists="Scene Group or Scene name exists already" AdvSceneSwitcher.sceneGroupTab.help="Scene Groups can be selected as a target just like a regular scene.\n\nAs the name suggests a scene group is a collection of multiple scenes.\nThe scene group will advance through the list of its assigned scenes depending on the configured settings, which can be found on the right side.\n\nYou can configure the scene group to advance to the next scene in the list:\nAfter a number of times the scene group is selected as a target.\nAfter a certain amount of time has passed.\nOr randomly.\n\nFor example, a scene group containing the scenes ...\nScene 1\nScene 2\nScene 3 \n... will activate \"Scene 1\" the first time it is selected as a target.\nThe second time it will activate \"Scene 2\".\nThe remaining times \"Scene 3\" will be activated.\n\nClick the highlighted plus symbol below to add a new scene group." AdvSceneSwitcher.sceneGroupTab.scenes.help="Select the scene group you want to modify on the left.\n\nSelect a scene to add to this scene group by selecting the scene above and clicking the plus symbol below.\n\nA scene can be added multiple times to the same scene group." - -# Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="Scene Triggers" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--select trigger--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="is active" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="is not active" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="switched away from" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--select action--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="start recording" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="pause recording" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="unpause recording" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="stop recording" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="stop streaming" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="start streaming" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="start replay buffer" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="stop replay buffer" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="mute source" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="unmute source" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="start the scene switcher" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="stop the scene switcher" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="start virtual camera" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="stop virtual camera" -AdvSceneSwitcher.sceneTriggerTab.entry="When{{scenes}}{{triggers}}{{actions}}{{audioSources}}after{{duration}}" -AdvSceneSwitcher.sceneTriggerTab.help="This tab allows you to trigger actions on scene changes, like stopping recording or streaming." diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index a313835d..62aebf0e 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -636,30 +636,6 @@ AdvSceneSwitcher.sceneGroupTab.exists="El grupo de escenas o el nombre de la esc AdvSceneSwitcher.sceneGroupTab.help="Los grupos de escenas se pueden seleccionar como un objetivo al igual que una escena normal.\n\nComo sugiere el nombre, un grupo de escenas es una colección de varias escenas.\nEl grupo de escenas avanzará a través de la lista de sus escenas asignadas según los ajustes configurados, que se puede encontrar en el lado derecho.\n\nPuedes configurar el grupo de escenas para avanzar a la siguiente escena en la lista:\nDespués de varias veces, el grupo de escenas se selecciona como objetivo.\nDespués de que un cierto período de tiempo haya pasado.\nO al azar.\n\nPor ejemplo, un grupo de escenas que contiene las escenas ... \nEscena 1 \nEscena 2 \nEscena 3 \n ... activará la \"Escena 1 \" la primera vez que se seleccione como objetivo. \nLa segunda vez se activará \"Escena 2 \". \nLas veces restantes \"Escena 3 \" se activarán. \n\nHaz clic en el símbolo más resaltado a continuación para agregar un nuevo grupo de escenas." AdvSceneSwitcher.sceneGroupTab.scenes.help="Selecciona el grupo de escenas que deseas modificar a la izquierda. \n\nSelecciona una escena para agregar a este grupo de escenas seleccionando la escena de arriba y haciendo clic en el símbolo más a continuación. \n\nSe puede agregar una escena varias veces al mismo grupo de escenas." -; Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="Activadores de escena" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--selecciona el activador--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="esté activo" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="no esté activo" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="cambie a otra escena" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--Selecciona la acción--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="empezar a grabar" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="pausar la grabación" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="reanudar grabación" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="detener grabación" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="detener transmisión" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="iniciar transmisión" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="iniciar búfer de repetición" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="detener búfer de repetición" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="silenciar fuente" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="dejar de silenciar fuente" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="iniciar el selector de escenas" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="detener el selector de escenas" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="Iniciar Camara Virtual" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="Detener Camara Virtual" -AdvSceneSwitcher.sceneTriggerTab.entry="Cuando {{scenes}} {{triggers}} {{actions}} {{audioSources}} después de {{duration}}" -AdvSceneSwitcher.sceneTriggerTab.help="Esta pestaña te permite activar acciones sobre cambios de escena, como detener la grabación o la transmisión." - ; Hotkey AdvSceneSwitcher.hotkey.startSwitcherHotkey="Iniciar Advanced Scene Switcher" AdvSceneSwitcher.hotkey.stopSwitcherHotkey="Detener Advanced Scene Switcher" diff --git a/data/locale/fr-FR.ini b/data/locale/fr-FR.ini index a2e12fb1..1b8504a5 100644 --- a/data/locale/fr-FR.ini +++ b/data/locale/fr-FR.ini @@ -917,30 +917,6 @@ AdvSceneSwitcher.sceneGroupTab.exists="Le nom du Groupe de Scènes ou de la Scè AdvSceneSwitcher.sceneGroupTab.help="Les Groupes de Scènes peuvent être sélectionnés comme une cible, tout comme une scène régulière.\n\nComme son nom l'indique, un Groupe de Scènes est une collection de plusieurs scènes.\nLe Groupe de Scènes avancera dans la liste de ses scènes attribuées en fonction des paramètres configurés, que vous pouvez trouver à droite.\n\nVous pouvez configurer le Groupe de Scènes pour passer à la scène suivante dans la liste :\nAprès un certain nombre de fois où le Groupe de Scènes est sélectionné comme cible.\nAprès qu'un certain laps de temps se soit écoulé.\nOu au hasard.\n\nPar exemple, un Groupe de Scènes contenant les scènes...\nScène 1\nScène 2\nScène 3\n... activera "Scène 1" la première fois qu'il est sélectionné comme cible.\nLa deuxième fois, il activera "Scène 2".\nLes fois suivantes, "Scène 3" sera activée.\n\nCliquez sur le symbole plus en surbrillance ci-dessous pour ajouter un nouveau Groupe de Scènes." AdvSceneSwitcher.sceneGroupTab.scenes.help="Sélectionnez le groupe de scènes que vous souhaitez modifier à gauche.\n\nSélectionnez une scène à ajouter à ce groupe de scènes en sélectionnant la scène ci-dessus et en cliquant sur le symbole plus ci-dessous.\n\nUne scène peut être ajoutée plusieurs fois au même groupe de scènes." -; Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="Déclencheurs de Scène" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--sélectionnez un déclencheur--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="est active" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="n'est pas active" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="passé à autre chose" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--sélectionnez une action--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="démarrer l'enregistrement" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="mettre en pause l'enregistrement" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="reprendre l'enregistrement" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="arrêter l'enregistrement" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="arrêter la diffusion" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="démarrer la diffusion" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="démarrer le tampon de répétition" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="arrêter le tampon de répétition" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="mettre la source en sourdine" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="annuler la mise en sourdine de la source" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="démarrer le commutateur de scènes avancé" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="arrêter le commutateur de scènes avancé" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="démarrer la caméra virtuelle" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="arrêter la caméra virtuelle" -AdvSceneSwitcher.sceneTriggerTab.entry="Lorsque{{scenes}}{{triggers}}{{actions}}{{audioSources}}après{{duration}}" -AdvSceneSwitcher.sceneTriggerTab.help="Cet onglet vous permet de déclencher des actions lors des changements de scènes, comme l'arrêt de l'enregistrement ou de la diffusion." - ; Hotkey AdvSceneSwitcher.hotkey.startSwitcherHotkey="Démarrer le commutateur de scènes avancé" AdvSceneSwitcher.hotkey.stopSwitcherHotkey="Arrêter le commutateur de scènes avancé" diff --git a/data/locale/ja-JP.ini b/data/locale/ja-JP.ini index 58b4f6cb..f35528e1 100644 --- a/data/locale/ja-JP.ini +++ b/data/locale/ja-JP.ini @@ -2155,27 +2155,3 @@ AdvSceneSwitcher.sceneGroupTab.defaultname="シーングループ %1" AdvSceneSwitcher.sceneGroupTab.exists="シーングループまたはシーン名が既に存在します" AdvSceneSwitcher.sceneGroupTab.help="シーン グループは、通常のシーンと同様に対象として選択できます。\n\nシーン グループは、名前が示すように、複数のシーンの集合です。\nシーン グループは、割り当てられたシーンのリストを順に進みます。構成された設定に応じて、右側に表示されます。\n\nリスト内の次のシーンに進むようにシーン グループを構成できます:\nシーン グループが何度も選択された後\n一定時間経過後。\nまたはランダム。\n\nたとえば、シーンを含むシーングループ...\nシーン1\nシーン2 \nシーン 3 \n... 初めてターゲットとして選択されると、「シーン 1」がアクティブになります。\n2 回目には、「シーン 2」がアクティブになります。\n残りの回「シーン 3」が有効になります。\n\n下の強調表示されたプラス記号をクリックして、新しいシーン グループを追加します。" AdvSceneSwitcher.sceneGroupTab.scenes.help="左側で変更したいシーングループを選択します。\n\n上のシーンを選択し、下のプラス記号をクリックして、このシーングループに追加するシーンを選択します。\n\nシーンは次のとおりです。同じシーングループに複数回追加しました。" - -# Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="シーントリガー" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--トリガーを選択--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="アクティブです" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="活動していません" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="から切り替えた" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--アクションを選択--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="録画開始" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="録画一時停止" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="録画の一時停止を解除" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="録画停止" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="配信停止" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="配信開始" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="リプレイバッファ開始" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="リプレイバッファ停止" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="ソースをミュート" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="ソースのミュートを解除" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="シーンスイッチャーを起動します" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="シーンスイッチャーを停止する" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="仮想カメラ起動" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="仮想カメラ停止" -; AdvSceneSwitcher.sceneTriggerTab.entry="When{{scenes}}{{triggers}}{{actions}}{{audioSources}}after{{duration}}" -AdvSceneSwitcher.sceneTriggerTab.help="このタブでは、録画や配信の停止など、シーンの変更時にアクションをトリガーできます。" diff --git a/data/locale/pt-BR.ini b/data/locale/pt-BR.ini index 4b1480e5..6249fb2c 100644 --- a/data/locale/pt-BR.ini +++ b/data/locale/pt-BR.ini @@ -2085,26 +2085,3 @@ AdvSceneSwitcher.sceneGroupTab.exists="Grupo de Cenas ou Nome de Cena já existe AdvSceneSwitcher.sceneGroupTab.help="Os Grupos de Cenas podem ser selecionados como um alvo, assim como uma cena normal.\n\nComo o nome sugere, um grupo de cenas é uma coleção de várias cenas.\nO grupo de cenas avançará pela lista de suas cenas atribuídas dependendo das configurações configuradas, que podem ser encontradas no lado direito.\n\nVocê pode configurar o grupo de cenas para avançar para a próxima cena na lista:\nApós um número de vezes em que o grupo de cenas é selecionado como alvo.\nApós um certo período de tempo ter passado.\nOu aleatoriamente.\n\nPor exemplo, um grupo de cenas contendo as cenas ...\nCena 1\nCena 2\nCena 3\n... ativará \"Cena 1\" na primeira vez que for selecionado como alvo.\nNa segunda vez, ativará \"Cena 2\".\nAs vezes restantes, \"Cena 3\" será ativada.\n\nClique no símbolo de mais destacado abaixo para adicionar um novo grupo de cenas." AdvSceneSwitcher.sceneGroupTab.scenes.help="Selecione o grupo de cenas que você deseja modificar à esquerda.\n\nSelecione uma cena para adicionar a este grupo de cenas selecionando a cena acima e clicando no símbolo de mais abaixo.\n\nUma cena pode ser adicionada várias vezes ao mesmo grupo de cenas." -; Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="Gatilhos de Cena" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--selecione gatilho--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="está ativa" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="não está ativa" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="foi trocada" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--selecione ação--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="iniciar gravação" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="pausar gravação" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="retomar gravação" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="parar gravação" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="parar transmissão" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="iniciar transmissão" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="iniciar buffer de replay" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="parar buffer de replay" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="silenciar fonte" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="desilenciar fonte" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="iniciar o switcher de cena" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="parar o switcher de cena" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="iniciar câmera virtual" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="parar câmera virtual" -AdvSceneSwitcher.sceneTriggerTab.entry="Quando{{scenes}}{{triggers}}{{actions}}{{audioSources}}após{{duration}}" -AdvSceneSwitcher.sceneTriggerTab.help="Esta aba permite que você acione ações nas mudanças de cena, como parar a gravação ou a transmissão." diff --git a/data/locale/ru-RU.ini b/data/locale/ru-RU.ini index 352934ae..32f376a4 100644 --- a/data/locale/ru-RU.ini +++ b/data/locale/ru-RU.ini @@ -327,28 +327,6 @@ AdvSceneSwitcher.sceneGroupTab.exists="Группа сцен или назван AdvSceneSwitcher.sceneGroupTab.help="Группы сцен могут быть выбраны в качестве цели так же, как и обычные сцены.\n\nКак следует из названия, группа сцен представляет собой набор из нескольких сцен.\nГруппа сцен будет продвигаться по списку назначенных ей сцен в зависимости от настроенных параметров, которые можно найти справа.\n\nВы можете настроить группу сцен на переход к следующей сцене в списке:\nПосле определенного количества раз, когда группа сцен выбрана в качестве цели.\nПо истечении определенного времени.\nИли случайным образом.\n\nНапример, группа сцен, содержащая сцены ...\nScene 1\nScene 2\nScene 3 \n... активирует \"Scene 1\" в первый раз, когда он выбран в качестве цели.\nВо второй раз он активируется \"Scene 2\".\nОставшееся время \"Scene 3\" будет активирован.\n\nНажмите на выделенный символ плюса ниже, чтобы добавить новую группу сцен." AdvSceneSwitcher.sceneGroupTab.scenes.help="Выберите группу сцен, которую вы хотите изменить слева.\n\nВыберите сцену для добавления в эту группу сцен, выбрав сцену выше и нажав на символ плюса ниже.\n\nСцена может быть добавлена несколько раз в одну и ту же группу сцен." -; Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="Триггеры сцены" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--выбрать триггер--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="активен" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="не активен" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="переключился с" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--выбрать действие--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="начать запись" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="приостановить запись" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="отменить паузу записи" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="остановить запись" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="остановить потоковое вещание" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="начать потоковое вещание" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="запустить буфер воспроизведения" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="остановить буфер воспроизведения" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="отключить источник" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="включить источник" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="запустить переключатель сцены" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="остановить переключатель сцены" -AdvSceneSwitcher.sceneTriggerTab.entry="Когда {{scenes}} {{triggers}} {{actions}} {{audioSources}} после {{duration}}" -AdvSceneSwitcher.sceneTriggerTab.help="Эта вкладка позволяет запускать действия при изменении сцены, например, остановку записи или потоковой передачи." - ; Hotkey AdvSceneSwitcher.hotkey.startSwitcherHotkey="Запустить Advanced Scene Switcher" AdvSceneSwitcher.hotkey.stopSwitcherHotkey="становить Advanced Scene Switcher" diff --git a/data/locale/tr-TR.ini b/data/locale/tr-TR.ini index f089e212..48c85583 100644 --- a/data/locale/tr-TR.ini +++ b/data/locale/tr-TR.ini @@ -547,30 +547,6 @@ AdvSceneSwitcher.sceneGroupTab.exists="Sahne Grubu veya Sahne adı zaten var" AdvSceneSwitcher.sceneGroupTab.help="Sahne Grupları, normal bir sahne gibi bir hedef olarak seçilebilir.\n\nAdından da anlaşılacağı gibi, bir sahne grubu birden fazla sahneden oluşan bir koleksiyondur.\nSahne grubu, yapılandırılmış ayarlara bağlı olarak kendisine atanan sahneler listesinde ilerleyecektir. sağ tarafta bulunabilir.\n\nSahne grubunu listedeki bir sonraki sahneye geçecek şekilde yapılandırabilirsiniz:\nSahne grubu birkaç kez hedef olarak seçildikten sonra.\nBelirli bir süre sonra geçti.\nVeya rastgele.\n\nÖrneğin, sahneleri içeren bir sahne grubu ...\nSahne 1\nSahne 2\nSahne 3 \n... ilk seçildiğinde \"Sahne 1\"i etkinleştirecek bir hedef olarak.\nİkinci kez \"Sahne 2\"yi etkinleştirecek.\nKalan zamanlar \"Scene 3\" etkinleştirilecek.\n\nYeni bir sahne grubu eklemek için aşağıdaki vurgulanan artı sembolüne tıklayın." AdvSceneSwitcher.sceneGroupTab.scenes.help="Soldan değiştirmek istediğiniz sahne grubunu seçin.\n\nYukarıdaki sahneyi seçip aşağıdaki artı simgesini tıklayarak bu sahne grubuna eklemek için bir sahne seçin.\n\nAynı sahneye birden fazla sahne eklenebilir grup." -; Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="Sahne Tetikleyicileri" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--tetikleyiciyi seçin--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="aktif" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="aktif değil" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="uzaklaştı" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--eylemi seç--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="Kayda başla" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="Kaydı duraklat" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="kaydı duraklatma" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="Kaydetmeyi bırak" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="Akışı durdur" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="Akışı başlat" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="Yeniden oynatma arabelleğini başlat" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="Tekrar arabelleğini durdur" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="Kaynağı sessize al" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="Kaynağı sesi aç" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="Sahne değiştiriciyi başlat" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="Sahne değiştiriciyi durdur" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="Sanal kamerayı başlat" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="Sanal kamerayı durdur" -AdvSceneSwitcher.sceneTriggerTab.entry="Şundan {{scenes}} {{triggers}} {{actions}} {{audioSources}} sonra {{duration}}" -AdvSceneSwitcher.sceneTriggerTab.help="Bu sekme, kaydı veya akışı durdurma gibi sahne değişikliklerinde eylemleri tetiklemenize olanak tanır." - ; Hotkey AdvSceneSwitcher.hotkey.startSwitcherHotkey="Advanced Scene Switcher'ı başlatın" AdvSceneSwitcher.hotkey.stopSwitcherHotkey="Gelişmiş Sahne Değiştiriciyi Durdurun" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index c973757e..a9a47650 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -838,30 +838,6 @@ AdvSceneSwitcher.sceneGroupTab.exists="场景组或场景名称已存在" AdvSceneSwitcher.sceneGroupTab.help="可以选择场景组作为目标,就像选择常规场景一样。\n\n名称表明场景组是多个场景的集合。\n场景组将根据配置的设置在其指定场景的列表中前进,可以在右侧找到。\n\n您可以将场景组配置为前进到列表中的下一个场景:\n在多次选择场景组作为目标后。\n在经过一定时间后。\n也可以是随机的。\n\n例如,包含场景的场景组…\n场景1\n场景2\n场景3\n。。。将在第一次选择“场景1”作为目标时激活它。\n第二次将激活“场景2”\n剩余时间将激活“场景3”。\n\n单击下面突出显示的加号以添加新的场景组." AdvSceneSwitcher.sceneGroupTab.scenes.help="在左侧选择要修改的场景组。\n\n通过选择上面的场景并单击下面的加号,选择要添加到此场景组的场景。\n\n可以多次将场景添加到同一场景组." -; Scene Trigger Tab -AdvSceneSwitcher.sceneTriggerTab.title="场景触发器" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none="--选择触发器--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive="已激活" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive="未激活" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave="离开" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none="--选择动作--" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording="开始录制" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording="暂停录制" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording="取消暂停录制" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording="停止录制" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming="停止推流" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming="开始推流" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer="启动重播缓冲区" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer="停止重放缓冲区" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="静音源" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="取消静音源" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="启动场景切换程序" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="停止场景切换" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="启动虚拟摄像机" -AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="停止虚拟摄像机" -AdvSceneSwitcher.sceneTriggerTab.entry="当 {{scenes}} {{triggers}} {{actions}} {{audioSources}} 在 {{duration}} 后" -AdvSceneSwitcher.sceneTriggerTab.help="此选项卡允许您在场景更改时触发操作,如停止录制或流式处理." - ; Hotkey AdvSceneSwitcher.hotkey.startSwitcherHotkey="启动高级场景切换器" AdvSceneSwitcher.hotkey.stopSwitcherHotkey="停止高级场景切换器" diff --git a/forms/advanced-scene-switcher.ui b/forms/advanced-scene-switcher.ui index 462a849e..d6ed4865 100644 --- a/forms/advanced-scene-switcher.ui +++ b/forms/advanced-scene-switcher.ui @@ -4186,169 +4186,6 @@ - - - AdvSceneSwitcher.sceneTriggerTab.title - - - - - - - - - 0 - 0 - - - - false - - - - - - - AdvSceneSwitcher.sceneTriggerTab.help - - - Qt::AlignCenter - - - true - - - - - - - - - - - - 22 - 22 - - - - true - - - addIconSmall - - - - - - - - 22 - 22 - - - - true - - - removeIconSmall - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 5 - 20 - - - - - - - - Qt::Vertical - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 5 - 20 - - - - - - - - - 22 - 22 - - - - - - - true - - - upArrowIconSmall - - - - - - - - 22 - 22 - - - - - - - true - - - downArrowIconSmall - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - @@ -4530,11 +4367,6 @@ videoUp videoDown getScreenshot - sceneTriggers - triggerAdd - triggerRemove - triggerUp - triggerDown diff --git a/lib/advanced-scene-switcher.cpp b/lib/advanced-scene-switcher.cpp index 2f96592e..3b8ccc38 100644 --- a/lib/advanced-scene-switcher.cpp +++ b/lib/advanced-scene-switcher.cpp @@ -127,7 +127,6 @@ void AdvSceneSwitcher::LoadUI() SetupAudioTab(); SetupVideoTab(); SetupSceneGroupTab(); - SetupTriggerTab(); SetupMacroTab(); SetupOtherTabs(ui->tabWidget); @@ -552,7 +551,6 @@ static void handleSceneChange() GetWeakSourceName(switcher->previousScene).c_str()); } - switcher->checkTriggers(); switcher->checkDefaultSceneTransitions(); } diff --git a/lib/advanced-scene-switcher.hpp b/lib/advanced-scene-switcher.hpp index 311dc8ea..f17fede2 100644 --- a/lib/advanced-scene-switcher.hpp +++ b/lib/advanced-scene-switcher.hpp @@ -380,15 +380,6 @@ signals: void SceneGroupRemoved(const QString &name); void SceneGroupRenamed(const QString &oldName, const QString newName); - // Trigger tab -public: - void SetupTriggerTab(); -public slots: - void on_triggerAdd_clicked(); - void on_triggerRemove_clicked(); - void on_triggerUp_clicked(); - void on_triggerDown_clicked(); - /* --- End of legacy tab section --- */ }; diff --git a/lib/general.cpp b/lib/general.cpp index d3a29163..cc79c84d 100644 --- a/lib/general.cpp +++ b/lib/general.cpp @@ -233,9 +233,7 @@ static bool isLegacyTab(const QString &name) "AdvSceneSwitcher.sceneSequenceTab.title") || name == obs_module_text("AdvSceneSwitcher.audioTab.title") || name == obs_module_text("AdvSceneSwitcher.videoTab.title") || - name == obs_module_text("AdvSceneSwitcher.pauseTab.title") || - name == obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.title"); + name == obs_module_text("AdvSceneSwitcher.pauseTab.title"); } void AdvSceneSwitcher::on_hideLegacyTabs_stateChanged(int state) @@ -455,7 +453,6 @@ void SwitcherData::LoadSettings(obs_data_t *obj) loadTimeSwitches(obj); loadAudioSwitches(obj); loadVideoSwitches(obj); - loadSceneTriggers(obj); LoadGeneralSettings(obj); LoadHotkeys(obj); LoadUISettings(obj); @@ -490,7 +487,6 @@ void SwitcherData::SaveSettings(obs_data_t *obj) saveTimeSwitches(obj); saveAudioSwitches(obj); saveVideoSwitches(obj); - saveSceneTriggers(obj); SaveGeneralSettings(obj); SaveHotkeys(obj); SaveUISettings(obj); diff --git a/lib/legacy/scene-trigger.cpp b/lib/legacy/scene-trigger.cpp deleted file mode 100644 index 738699e9..00000000 --- a/lib/legacy/scene-trigger.cpp +++ /dev/null @@ -1,581 +0,0 @@ -#include "advanced-scene-switcher.hpp" -#include "layout-helpers.hpp" -#include "selection-helpers.hpp" -#include "source-helpers.hpp" -#include "switcher-data.hpp" -#include "ui-helpers.hpp" -#include "utility.hpp" - -#include -#include - -namespace advss { - -bool SceneTrigger::pause = false; -static QObject *addPulse = nullptr; - -void AdvSceneSwitcher::on_triggerAdd_clicked() -{ - std::lock_guard lock(switcher->m); - switcher->sceneTriggers.emplace_back(); - - listAddClicked(ui->sceneTriggers, - new SceneTriggerWidget(this, - &switcher->sceneTriggers.back()), - &addPulse); - - ui->triggerHelp->setVisible(false); -} - -void AdvSceneSwitcher::on_triggerRemove_clicked() -{ - QListWidgetItem *item = ui->sceneTriggers->currentItem(); - if (!item) { - return; - } - - { - std::lock_guard lock(switcher->m); - int idx = ui->sceneTriggers->currentRow(); - auto &switches = switcher->sceneTriggers; - switches.erase(switches.begin() + idx); - } - - delete item; -} - -void AdvSceneSwitcher::on_triggerUp_clicked() -{ - int index = ui->sceneTriggers->currentRow(); - if (!listMoveUp(ui->sceneTriggers)) { - return; - } - - SceneTriggerWidget *s1 = - (SceneTriggerWidget *)ui->sceneTriggers->itemWidget( - ui->sceneTriggers->item(index)); - SceneTriggerWidget *s2 = - (SceneTriggerWidget *)ui->sceneTriggers->itemWidget( - ui->sceneTriggers->item(index - 1)); - SceneTriggerWidget::swapSwitchData(s1, s2); - - std::lock_guard lock(switcher->m); - - std::swap(switcher->sceneTriggers[index], - switcher->sceneTriggers[index - 1]); -} - -void AdvSceneSwitcher::on_triggerDown_clicked() -{ - int index = ui->sceneTriggers->currentRow(); - - if (!listMoveDown(ui->sceneTriggers)) { - return; - } - - SceneTriggerWidget *s1 = - (SceneTriggerWidget *)ui->sceneTriggers->itemWidget( - ui->sceneTriggers->item(index)); - SceneTriggerWidget *s2 = - (SceneTriggerWidget *)ui->sceneTriggers->itemWidget( - ui->sceneTriggers->item(index + 1)); - SceneTriggerWidget::swapSwitchData(s1, s2); - - std::lock_guard lock(switcher->m); - - std::swap(switcher->sceneTriggers[index], - switcher->sceneTriggers[index + 1]); -} - -void SceneTrigger::logMatch() -{ - std::string sceneName = ""; - std::string statusName = ""; - std::string actionName = ""; - - switch (triggerType) { - case sceneTriggerType::NONE: - statusName = "NONE"; - break; - case sceneTriggerType::SCENE_ACTIVE: - statusName = "SCENE ACTIVE"; - break; - case sceneTriggerType::SCENE_INACTIVE: - statusName = "SCENE INACTIVE"; - break; - case sceneTriggerType::SCENE_LEAVE: - statusName = "SCENE LEAVE"; - break; - default: - break; - } - - switch (triggerAction) { - case sceneTriggerAction::NONE: - actionName = "NONE"; - break; - case sceneTriggerAction::START_RECORDING: - actionName = "START RECORDING"; - break; - case sceneTriggerAction::PAUSE_RECORDING: - actionName = "PAUSE RECORDING"; - break; - case sceneTriggerAction::UNPAUSE_RECORDING: - actionName = "UNPAUSE RECORDING"; - break; - case sceneTriggerAction::STOP_RECORDING: - actionName = "STOP RECORDING"; - break; - case sceneTriggerAction::START_STREAMING: - actionName = "START STREAMING"; - break; - case sceneTriggerAction::STOP_STREAMING: - actionName = "STOP STREAMING"; - break; - case sceneTriggerAction::START_REPLAY_BUFFER: - actionName = "START REPLAY BUFFER"; - break; - case sceneTriggerAction::STOP_REPLAY_BUFFER: - actionName = "STOP REPLAY BUFFER"; - break; - case sceneTriggerAction::MUTE_SOURCE: - actionName = "MUTE (" + GetWeakSourceName(audioSource) + ")"; - break; - case sceneTriggerAction::UNMUTE_SOURCE: - actionName = "UNMUTE (" + GetWeakSourceName(audioSource) + ")"; - break; - case sceneTriggerAction::START_SWITCHER: - actionName = "START SCENE SWITCHER"; - break; - case sceneTriggerAction::STOP_SWITCHER: - actionName = "STOP SCENE SWITCHER"; - break; - case sceneTriggerAction::START_VCAM: - actionName = "START VIRTUAL CAMERA"; - break; - case sceneTriggerAction::STOP_VCAM: - actionName = "STOP VIRTUAL CAMERA"; - break; - default: - actionName = "UNKNOWN"; - break; - } - - blog(LOG_INFO, - "scene '%s' in status '%s' triggering action '%s' after %f seconds", - GetWeakSourceName(scene).c_str(), statusName.c_str(), - actionName.c_str(), duration.Seconds()); -} - -void frontEndActionThread(sceneTriggerAction action, double delay) -{ - long long mil = delay * 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(mil)); - - switch (action) { - case sceneTriggerAction::NONE: - break; - case sceneTriggerAction::START_RECORDING: - obs_frontend_recording_start(); - break; - case sceneTriggerAction::PAUSE_RECORDING: - obs_frontend_recording_pause(true); - break; - case sceneTriggerAction::UNPAUSE_RECORDING: - obs_frontend_recording_pause(false); - break; - case sceneTriggerAction::STOP_RECORDING: - obs_frontend_recording_stop(); - break; - case sceneTriggerAction::START_STREAMING: - obs_frontend_streaming_start(); - break; - case sceneTriggerAction::STOP_STREAMING: - obs_frontend_streaming_stop(); - break; -#if LIBOBS_API_VER >= MAKE_SEMANTIC_VERSION(26, 0, 0) - case sceneTriggerAction::START_REPLAY_BUFFER: - obs_frontend_replay_buffer_start(); - break; - case sceneTriggerAction::STOP_REPLAY_BUFFER: - obs_frontend_replay_buffer_stop(); - break; -#endif -#if LIBOBS_API_VER >= MAKE_SEMANTIC_VERSION(27, 0, 0) - case sceneTriggerAction::START_VCAM: - obs_frontend_start_virtualcam(); - break; - case sceneTriggerAction::STOP_VCAM: - obs_frontend_stop_virtualcam(); - break; -#endif - default: - blog(LOG_WARNING, "ignoring unexpected frontend action '%d'", - static_cast(action)); - break; - } -} - -void muteThread(OBSWeakSource source, double delay, bool mute) -{ - long long mil = delay * 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(mil)); - - auto s = obs_weak_source_get_source(source); - obs_source_set_muted(s, mute); - obs_source_release(s); -} - -void statusThread(double delay, bool stop) -{ - long long mil = delay * 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(mil)); - - if (stop) { - switcher->Stop(); - } else { - switcher->Start(); - } -} - -bool isFrontendAction(sceneTriggerAction triggerAction) -{ - return triggerAction == sceneTriggerAction::START_RECORDING || - triggerAction == sceneTriggerAction::PAUSE_RECORDING || - triggerAction == sceneTriggerAction::UNPAUSE_RECORDING || - triggerAction == sceneTriggerAction::STOP_RECORDING || - triggerAction == sceneTriggerAction::START_STREAMING || - triggerAction == sceneTriggerAction::STOP_STREAMING || - triggerAction == sceneTriggerAction::START_REPLAY_BUFFER || - triggerAction == sceneTriggerAction::STOP_REPLAY_BUFFER || - triggerAction == sceneTriggerAction::START_VCAM || - triggerAction == sceneTriggerAction::STOP_VCAM; -} - -bool isAudioAction(sceneTriggerAction t) -{ - return t == sceneTriggerAction::MUTE_SOURCE || - t == sceneTriggerAction::UNMUTE_SOURCE; -} - -bool isSwitcherStatusAction(sceneTriggerAction t) -{ - return t == sceneTriggerAction::START_SWITCHER || - t == sceneTriggerAction::STOP_SWITCHER; -} - -void SceneTrigger::performAction() -{ - if (triggerAction == sceneTriggerAction::NONE) { - return; - } - - std::thread t; - - if (isFrontendAction(triggerAction)) { - t = std::thread(frontEndActionThread, triggerAction, - duration.Seconds()); - } else if (isAudioAction(triggerAction)) { - bool mute = triggerAction == sceneTriggerAction::MUTE_SOURCE; - t = std::thread(muteThread, audioSource, duration.Seconds(), - mute); - } else if (isSwitcherStatusAction(triggerAction)) { - bool stop = triggerAction == sceneTriggerAction::STOP_SWITCHER; - t = std::thread(statusThread, duration.Seconds(), stop); - } else { - blog(LOG_WARNING, "ignoring unknown action '%d'", - static_cast(triggerAction)); - } - - t.detach(); -} - -bool SceneTrigger::checkMatch(OBSWeakSource currentScene, - OBSWeakSource previousScene) -{ - switch (triggerType) { - case sceneTriggerType::NONE: - return false; - case sceneTriggerType::SCENE_ACTIVE: - return currentScene == scene; - case sceneTriggerType::SCENE_INACTIVE: - return currentScene != scene; - case sceneTriggerType::SCENE_LEAVE: - return previousScene == scene; - } - return false; -} - -void SwitcherData::checkTriggers() -{ - if (SceneTrigger::pause) { - return; - } - - for (auto &t : sceneTriggers) { - if (stop && !isSwitcherStatusAction(t.triggerAction)) { - continue; - } - - if (t.checkMatch(currentScene, previousScene)) { - t.logMatch(); - t.performAction(); - } - } -} - -void SwitcherData::saveSceneTriggers(obs_data_t *obj) -{ - obs_data_array_t *triggerArray = obs_data_array_create(); - for (auto &s : sceneTriggers) { - obs_data_t *array_obj = obs_data_create(); - - s.save(array_obj); - obs_data_array_push_back(triggerArray, array_obj); - - obs_data_release(array_obj); - } - obs_data_set_array(obj, "triggers", triggerArray); - obs_data_array_release(triggerArray); -} - -void SwitcherData::loadSceneTriggers(obs_data_t *obj) -{ - sceneTriggers.clear(); - - obs_data_array_t *triggerArray = obs_data_get_array(obj, "triggers"); - size_t count = obs_data_array_count(triggerArray); - - for (size_t i = 0; i < count; i++) { - obs_data_t *array_obj = obs_data_array_item(triggerArray, i); - - sceneTriggers.emplace_back(); - sceneTriggers.back().load(array_obj); - - obs_data_release(array_obj); - } - obs_data_array_release(triggerArray); -} - -void AdvSceneSwitcher::SetupTriggerTab() -{ - for (auto &s : switcher->sceneTriggers) { - QListWidgetItem *item; - item = new QListWidgetItem(ui->sceneTriggers); - ui->sceneTriggers->addItem(item); - SceneTriggerWidget *sw = new SceneTriggerWidget(this, &s); - item->setSizeHint(sw->minimumSizeHint()); - ui->sceneTriggers->setItemWidget(item, sw); - } - - if (switcher->sceneTriggers.size() == 0) { - if (!switcher->disableHints) { - addPulse = HighlightWidget(ui->triggerAdd, - QColor(Qt::green)); - } - ui->triggerHelp->setVisible(true); - } else { - ui->triggerHelp->setVisible(false); - } -} - -void SceneTrigger::save(obs_data_t *obj) -{ - obs_data_set_string(obj, "scene", GetWeakSourceName(scene).c_str()); - obs_data_set_int(obj, "triggerType", static_cast(triggerType)); - obs_data_set_int(obj, "triggerAction", static_cast(triggerAction)); - duration.Save(obj, "duration"); - obs_data_set_string(obj, "audioSource", - GetWeakSourceName(audioSource).c_str()); -} - -void SceneTrigger::load(obs_data_t *obj) -{ - const char *sceneName = obs_data_get_string(obj, "scene"); - scene = GetWeakSourceByName(sceneName); - - triggerType = static_cast( - obs_data_get_int(obj, "triggerType")); - triggerAction = static_cast( - obs_data_get_int(obj, "triggerAction")); - duration.Load(obj, "duration"); - - const char *audioSourceName = obs_data_get_string(obj, "audioSource"); - audioSource = GetWeakSourceByName(audioSourceName); -} - -static inline void populateTriggers(QComboBox *list) -{ - AddSelectionEntry( - list, - obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.none")); - - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneActive")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneInactive")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerType.sceneLeave")); -} - -inline void populateActions(QComboBox *list) -{ - AddSelectionEntry( - list, - obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.none")); - - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startRecording")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.pauseRecording")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unpauseRecording")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopRecording")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startStreaming")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopStreaming")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startReplayBuffer")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopReplayBuffer")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera")); - list->addItem(obs_module_text( - "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera")); -} - -SceneTriggerWidget::SceneTriggerWidget(QWidget *parent, SceneTrigger *s) - : SwitchWidget(parent, s, false, false) -{ - triggers = new QComboBox(); - actions = new QComboBox(); - duration = new DurationSelection(); - audioSources = new QComboBox(); - - QWidget::connect(triggers, SIGNAL(currentIndexChanged(int)), this, - SLOT(TriggerTypeChanged(int))); - QWidget::connect(actions, SIGNAL(currentIndexChanged(int)), this, - SLOT(TriggerActionChanged(int))); - QWidget::connect(duration, SIGNAL(DurationChanged(const Duration &)), - this, SLOT(DurationChanged(const Duration &))); - QWidget::connect(audioSources, - SIGNAL(currentTextChanged(const QString &)), this, - SLOT(AudioSourceChanged(const QString &))); - - populateTriggers(triggers); - populateActions(actions); - PopulateAudioSelection(audioSources); - - if (s) { - triggers->setCurrentIndex(static_cast(s->triggerType)); - actions->setCurrentIndex(static_cast(s->triggerAction)); - duration->SetDuration(s->duration); - - audioSources->setCurrentText( - GetWeakSourceName(s->audioSource).c_str()); - - if (isAudioAction(s->triggerAction)) { - audioSources->show(); - } else { - audioSources->hide(); - } - } - - QHBoxLayout *mainLayout = new QHBoxLayout; - std::unordered_map widgetPlaceholders = { - {"{{triggers}}", triggers}, - {"{{actions}}", actions}, - {"{{audioSources}}", audioSources}, - {"{{duration}}", duration}, - {"{{scenes}}", scenes}}; - PlaceWidgets(obs_module_text("AdvSceneSwitcher.sceneTriggerTab.entry"), - mainLayout, widgetPlaceholders); - setLayout(mainLayout); - - switchData = s; - - loading = false; -} - -SceneTrigger *SceneTriggerWidget::getSwitchData() -{ - return switchData; -} - -void SceneTriggerWidget::setSwitchData(SceneTrigger *s) -{ - switchData = s; -} - -void SceneTriggerWidget::swapSwitchData(SceneTriggerWidget *s1, - SceneTriggerWidget *s2) -{ - SwitchWidget::swapSwitchData(s1, s2); - - SceneTrigger *t = s1->getSwitchData(); - s1->setSwitchData(s2->getSwitchData()); - s2->setSwitchData(t); -} - -void SceneTriggerWidget::TriggerTypeChanged(int index) -{ - if (loading || !switchData) { - return; - } - - std::lock_guard lock(switcher->m); - switchData->triggerType = static_cast(index); -} - -void SceneTriggerWidget::TriggerActionChanged(int index) -{ - if (loading || !switchData) { - return; - } - - { - std::lock_guard lock(switcher->m); - switchData->triggerAction = - static_cast(index); - } - - if (isAudioAction(switchData->triggerAction)) { - audioSources->show(); - } else { - audioSources->hide(); - } -} - -void SceneTriggerWidget::DurationChanged(const Duration &duration) -{ - if (loading || !switchData) { - return; - } - - std::lock_guard lock(switcher->m); - switchData->duration = duration; -} - -void SceneTriggerWidget::AudioSourceChanged(const QString &text) -{ - if (loading || !switchData) { - return; - } - - std::lock_guard lock(switcher->m); - switchData->audioSource = GetWeakSourceByQString(text); -} - -} // namespace advss diff --git a/lib/legacy/scene-trigger.hpp b/lib/legacy/scene-trigger.hpp deleted file mode 100644 index 03736e4a..00000000 --- a/lib/legacy/scene-trigger.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/****************************************************************************** - Note: Long-term goal is to remove this tab / file. - Most functionality shall be moved to the Macro tab instead. - - So if you plan to make changes here, please consider applying them to the - corresponding macro tab functionality instead. -******************************************************************************/ -#pragma once - -#include "switch-generic.hpp" -#include "duration-control.hpp" - -namespace advss { - -enum class sceneTriggerType { - NONE = 0, - SCENE_ACTIVE = 1, - SCENE_INACTIVE = 2, - SCENE_LEAVE = 3, -}; - -enum class sceneTriggerAction { - NONE = 0, - START_RECORDING, - PAUSE_RECORDING, - UNPAUSE_RECORDING, - STOP_RECORDING, - - START_STREAMING, - STOP_STREAMING, - - START_REPLAY_BUFFER, - STOP_REPLAY_BUFFER, - - MUTE_SOURCE, - UNMUTE_SOURCE, - - START_SWITCHER, - STOP_SWITCHER, - - START_VCAM, - STOP_VCAM, -}; - -struct SceneTrigger : SceneSwitcherEntry { - static bool pause; - sceneTriggerType triggerType = sceneTriggerType::NONE; - sceneTriggerAction triggerAction = sceneTriggerAction::NONE; - Duration duration; - OBSWeakSource audioSource = nullptr; - - const char *getType() { return "trigger"; } - void save(obs_data_t *obj); - void load(obs_data_t *obj); - - bool checkMatch(OBSWeakSource currentScene, - OBSWeakSource previousScene); - void performAction(); - void logMatch(); -}; - -class SceneTriggerWidget : public SwitchWidget { - Q_OBJECT - -public: - SceneTriggerWidget(QWidget *parent, SceneTrigger *s); - SceneTrigger *getSwitchData(); - void setSwitchData(SceneTrigger *s); - - static void swapSwitchData(SceneTriggerWidget *s1, - SceneTriggerWidget *s2); - -private slots: - void TriggerTypeChanged(int index); - void TriggerActionChanged(int index); - void DurationChanged(const Duration &); - void AudioSourceChanged(const QString &text); - -private: - QComboBox *triggers; - QComboBox *actions; - DurationSelection *duration; - QComboBox *audioSources; - - SceneTrigger *switchData; -}; - -} // namespace advss diff --git a/lib/switcher-data.hpp b/lib/switcher-data.hpp index b398ad43..0b83a6fb 100644 --- a/lib/switcher-data.hpp +++ b/lib/switcher-data.hpp @@ -1,6 +1,5 @@ #pragma once #include "scene-group.hpp" -#include "scene-trigger.hpp" #include "switch-audio.hpp" #include "switch-executable.hpp" #include "switch-file.hpp" @@ -193,7 +192,6 @@ public: void saveTimeSwitches(obs_data_t *obj); void saveAudioSwitches(obs_data_t *obj); void saveSceneGroups(obs_data_t *obj); - void saveSceneTriggers(obs_data_t *obj); void saveVideoSwitches(obs_data_t *obj); void loadWindowTitleSwitches(obs_data_t *obj); @@ -209,7 +207,6 @@ public: void loadTimeSwitches(obs_data_t *obj); void loadAudioSwitches(obs_data_t *obj); void loadSceneGroups(obs_data_t *obj); - void loadSceneTriggers(obs_data_t *obj); void loadVideoSwitches(obs_data_t *obj); void Prune(); @@ -233,7 +230,6 @@ public: void checkAudioSwitchFallback(OBSWeakSource &scene, OBSWeakSource &transition); bool checkVideoSwitch(OBSWeakSource &scene, OBSWeakSource &transition); - void checkTriggers(); bool checkPause(); void checkDefaultSceneTransitions(); void writeSceneInfoToFile(); @@ -253,7 +249,6 @@ public: FileIOData fileIO; std::deque fileSwitches; std::deque executableSwitches; - std::deque sceneTriggers; std::deque sceneTransitions; std::deque defaultSceneTransitions; std::deque mediaSwitches; diff --git a/lib/utils/priority-helper.cpp b/lib/utils/priority-helper.cpp index de2f412a..d8dea41d 100644 --- a/lib/utils/priority-helper.cpp +++ b/lib/utils/priority-helper.cpp @@ -2,7 +2,6 @@ #include "switcher-data.hpp" #include "advanced-scene-switcher.hpp" #include "scene-group.hpp" -#include "scene-trigger.hpp" #include "switch-audio.hpp" #include "switch-executable.hpp" #include "switch-file.hpp" diff --git a/lib/utils/tab-helpers.cpp b/lib/utils/tab-helpers.cpp index 203b4092..ffa282ad 100644 --- a/lib/utils/tab-helpers.cpp +++ b/lib/utils/tab-helpers.cpp @@ -15,7 +15,7 @@ static std::vector tabNames = { "screenRegionTab", "mediaTab", "fileTab", "randomTab", "timeTab", "idleTab", "sceneSequenceTab", "audioTab", "videoTab", "sceneGroupTab", "transitionsTab", "pauseTab", - "sceneTriggerTab"}; +}; static std::vector tabOrder = std::vector(tabNames.size());