diff --git a/Actions/InteractAction.cs b/Actions/InteractAction.cs new file mode 100644 index 0000000..c29a561 --- /dev/null +++ b/Actions/InteractAction.cs @@ -0,0 +1,40 @@ +using Newtonsoft.Json.Linq; +using SuchByte.MacroDeck.ActionButton; +using SuchByte.MacroDeck.GUI; +using SuchByte.MacroDeck.GUI.CustomControls; +using SuchByte.MacroDeck.Plugins; +using SuchByte.OBSWebSocketPlugin.Controllers; +using SuchByte.OBSWebSocketPlugin.GUI; +using SuchByte.OBSWebSocketPlugin.Language; +using SuchByte.OBSWebSocketPlugin.Models; +using SuchByte.OBSWebSocketPlugin.Models.Action; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SuchByte.OBSWebSocketPlugin.Actions +{ + public class InteractAction : ActionBase + { + public override bool CanConfigure => true; + + public override string Name => PluginLanguageManager.PluginStrings.ActionInteract; + + public override string Description => PluginLanguageManager.PluginStrings.ActionInteractDescription; + + public override ConfigBase GetConfig() => GetConfig(); + + public override void Trigger(string clientId, ActionButton actionButton) + { + var config = GetConfig(); + Connection conn = PluginInstance.Main.Connections.GetValueOrDefault(config?.ConnectionName ?? PluginInstance.Main.Connections.FirstOrDefault().Key); + conn?.OBS.UiRequests.OpenInputInteractDialogAsync(config.SourceName); + } + + public override ActionConfigControl GetActionConfigControl(ActionConfigurator actionConfigurator) + { + return new InteractConfigView(this, actionConfigurator); + } + } +} diff --git a/ExtensionManifest.json b/ExtensionManifest.json index 9c59410..7ab7fbf 100644 --- a/ExtensionManifest.json +++ b/ExtensionManifest.json @@ -4,7 +4,7 @@ "author": "Macro Deck", "repository": "https://github.com/SuchByte/Macro-Deck-OBS-WebSocket-Plugin", "packageId": "SuchByte.OBS-WebSocketPlugin", - "version": "2.0.0", + "version": "2.1.0", "target-plugin-api-version": 40, "target-macro-deck-version": "2.13.0-b10", "dll": "OBS-WebSocket Plugin.dll" diff --git a/GUI/InteractConfigView.Designer.cs b/GUI/InteractConfigView.Designer.cs new file mode 100644 index 0000000..e36e9d4 --- /dev/null +++ b/GUI/InteractConfigView.Designer.cs @@ -0,0 +1,178 @@ + +namespace SuchByte.OBSWebSocketPlugin.GUI +{ + partial class InteractConfigView + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Komponenten-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + btnReloadSources = new MacroDeck.GUI.CustomControls.ButtonPrimary(); + sourcesBox = new MacroDeck.GUI.CustomControls.RoundedComboBox(); + lblSource = new System.Windows.Forms.Label(); + btnReloadScenes = new MacroDeck.GUI.CustomControls.ButtonPrimary(); + scenesBox = new MacroDeck.GUI.CustomControls.RoundedComboBox(); + lblScene = new System.Windows.Forms.Label(); + connectionSelector1 = new ConnectionSelector(); + lblConnection = new System.Windows.Forms.Label(); + SuspendLayout(); + // + // btnReloadSources + // + btnReloadSources.BorderRadius = 8; + btnReloadSources.Cursor = System.Windows.Forms.Cursors.Hand; + btnReloadSources.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + btnReloadSources.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + btnReloadSources.ForeColor = System.Drawing.Color.White; + btnReloadSources.HoverColor = System.Drawing.Color.FromArgb(0, 89, 184); + btnReloadSources.Icon = Properties.Resources.reload; + btnReloadSources.Location = new System.Drawing.Point(586, 132); + btnReloadSources.Name = "btnReloadSources"; + btnReloadSources.Progress = 0; + btnReloadSources.ProgressColor = System.Drawing.Color.FromArgb(0, 46, 94); + btnReloadSources.Size = new System.Drawing.Size(30, 30); + btnReloadSources.TabIndex = 14; + btnReloadSources.UseVisualStyleBackColor = true; + btnReloadSources.UseWindowsAccentColor = true; + btnReloadSources.Click += BtnReloadSources_Click; + // + // sourcesBox + // + sourcesBox.BackColor = System.Drawing.Color.FromArgb(65, 65, 65); + sourcesBox.Cursor = System.Windows.Forms.Cursors.Hand; + sourcesBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + sourcesBox.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + sourcesBox.Icon = null; + sourcesBox.Location = new System.Drawing.Point(279, 132); + sourcesBox.Name = "sourcesBox"; + sourcesBox.Padding = new System.Windows.Forms.Padding(8, 2, 8, 2); + sourcesBox.SelectedIndex = -1; + sourcesBox.SelectedItem = null; + sourcesBox.Size = new System.Drawing.Size(301, 30); + sourcesBox.TabIndex = 13; + // + // lblSource + // + lblSource.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + lblSource.Location = new System.Drawing.Point(160, 132); + lblSource.Name = "lblSource"; + lblSource.Size = new System.Drawing.Size(113, 30); + lblSource.TabIndex = 12; + lblSource.Text = "Source:"; + lblSource.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // btnReloadScenes + // + btnReloadScenes.BorderRadius = 8; + btnReloadScenes.Cursor = System.Windows.Forms.Cursors.Hand; + btnReloadScenes.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + btnReloadScenes.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + btnReloadScenes.ForeColor = System.Drawing.Color.White; + btnReloadScenes.HoverColor = System.Drawing.Color.FromArgb(0, 89, 184); + btnReloadScenes.Icon = Properties.Resources.reload; + btnReloadScenes.Location = new System.Drawing.Point(586, 96); + btnReloadScenes.Name = "btnReloadScenes"; + btnReloadScenes.Progress = 0; + btnReloadScenes.ProgressColor = System.Drawing.Color.FromArgb(0, 46, 94); + btnReloadScenes.Size = new System.Drawing.Size(30, 30); + btnReloadScenes.TabIndex = 17; + btnReloadScenes.UseVisualStyleBackColor = true; + btnReloadScenes.UseWindowsAccentColor = true; + btnReloadScenes.Click += BtnReloadScenes_Click; + // + // scenesBox + // + scenesBox.BackColor = System.Drawing.Color.FromArgb(65, 65, 65); + scenesBox.Cursor = System.Windows.Forms.Cursors.Hand; + scenesBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + scenesBox.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + scenesBox.Icon = null; + scenesBox.Location = new System.Drawing.Point(279, 96); + scenesBox.Name = "scenesBox"; + scenesBox.Padding = new System.Windows.Forms.Padding(8, 2, 8, 2); + scenesBox.SelectedIndex = -1; + scenesBox.SelectedItem = null; + scenesBox.Size = new System.Drawing.Size(301, 30); + scenesBox.TabIndex = 16; + scenesBox.SelectedIndexChanged += ScenesBox_SelectedIndexChanged; + // + // lblScene + // + lblScene.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + lblScene.Location = new System.Drawing.Point(160, 96); + lblScene.Name = "lblScene"; + lblScene.Size = new System.Drawing.Size(113, 30); + lblScene.TabIndex = 15; + lblScene.Text = "Scene:"; + lblScene.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // connectionSelector1 + // + connectionSelector1.BackColor = System.Drawing.Color.FromArgb(45, 45, 45); + connectionSelector1.Location = new System.Drawing.Point(279, 67); + connectionSelector1.Margin = new System.Windows.Forms.Padding(0); + connectionSelector1.Name = "connectionSelector1"; + connectionSelector1.Size = new System.Drawing.Size(337, 26); + connectionSelector1.TabIndex = 21; + connectionSelector1.Value = null; + // + // lblConnection + // + lblConnection.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + lblConnection.Location = new System.Drawing.Point(160, 63); + lblConnection.Name = "lblConnection"; + lblConnection.Size = new System.Drawing.Size(113, 30); + lblConnection.TabIndex = 22; + lblConnection.Text = "Connection:"; + lblConnection.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // SetFilterStateConfigView + // + AutoScaleDimensions = new System.Drawing.SizeF(10F, 23F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + Controls.Add(lblConnection); + Controls.Add(connectionSelector1); + Controls.Add(btnReloadScenes); + Controls.Add(scenesBox); + Controls.Add(lblScene); + Controls.Add(btnReloadSources); + Controls.Add(sourcesBox); + Controls.Add(lblSource); + Name = "InteractConfigView"; + ResumeLayout(false); + } + + #endregion + + private MacroDeck.GUI.CustomControls.ButtonPrimary btnReloadSources; + private MacroDeck.GUI.CustomControls.RoundedComboBox sourcesBox; + private System.Windows.Forms.Label lblSource; + private MacroDeck.GUI.CustomControls.ButtonPrimary btnReloadScenes; + private MacroDeck.GUI.CustomControls.RoundedComboBox scenesBox; + private System.Windows.Forms.Label lblScene; + private ConnectionSelector connectionSelector1; + private System.Windows.Forms.Label lblConnection; + } +} diff --git a/GUI/InteractConfigView.cs b/GUI/InteractConfigView.cs new file mode 100644 index 0000000..3c8db9a --- /dev/null +++ b/GUI/InteractConfigView.cs @@ -0,0 +1,165 @@ +using Newtonsoft.Json.Linq; +using SuchByte.MacroDeck.GUI; +using SuchByte.MacroDeck.GUI.CustomControls; +using SuchByte.MacroDeck.Language; +using SuchByte.MacroDeck.Plugins; +using SuchByte.OBSWebSocketPlugin.Controllers; +using SuchByte.OBSWebSocketPlugin.GUI.Interfaces; +using SuchByte.OBSWebSocketPlugin.Language; +using SuchByte.OBSWebSocketPlugin.Models.Action; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SuchByte.OBSWebSocketPlugin.GUI +{ + public partial class InteractConfigView : ActionConfigControl, IConnDepConfigs + { + + PluginAction pluginAction; + InteractConfig config; + + public ConnectionSelector ConnectionSelector => connectionSelector1; + + public InteractConfigView(PluginAction pluginAction, ActionConfigurator actionConfigurator) + { + this.pluginAction = pluginAction; + InitializeComponent(); + + this.lblConnection.Text = PluginLanguageManager.PluginStrings.Connection; + this.lblScene.Text = PluginLanguageManager.PluginStrings.Scene; + this.lblSource.Text = PluginLanguageManager.PluginStrings.Source; + + LoadConfig(); + ResetValues(); + LoadScenes(); + connectionSelector1.ValueChanged += (sender, args) => LoadScenes(); + } + + public override bool OnActionSave() + { + var config = JObject.FromObject(new InteractConfig + { + ConnectionName = this.connectionSelector1.Value, + SceneName = this.scenesBox.Text, + SourceName = this.sourcesBox.Text, + }); + + this.pluginAction.Configuration = config.ToString(); + this.pluginAction.ConfigurationSummary = "Interact with " + (String.IsNullOrWhiteSpace(this.sourcesBox.Text) ? this.scenesBox.Text : this.sourcesBox.Text); + return true; + } + + private void LoadScenes() + { + var conn = (this as IConnDepConfigs).Conn; + if (conn == null) return; + + if (!conn?.IsConnected ?? false) + { + using var msgBox = new MacroDeck.GUI.CustomControls.MessageBox(); + msgBox.ShowDialog(LanguageManager.Strings.Error, PluginLanguageManager.PluginStrings.ErrorNotConnected, System.Windows.Forms.MessageBoxButtons.OK); + return; + } + + this.scenesBox.Items.Clear(); + this.scenesBox.Text = String.Empty; + + var self = this; + _ = Task.Run(async () => + { + var response = await conn.OBS.ScenesRequests.GetSceneListAsync(); + foreach (JObject scene in response.Scenes) + { + var name = scene["sceneName"]?.ToString(); + if (!name.Equals(String.Empty)) + { + scenesBox.Invoke((MethodInvoker)delegate { scenesBox.Items.Add(name); }); + } + } + + self.Invoke((MethodInvoker)delegate + { + scenesBox.Text = config?.SceneName; + LoadSources(); + }); + }); + + } + + private void LoadSources() + { + var conn = (this as IConnDepConfigs).Conn; + if (conn == null) return; + + if (!conn?.IsConnected ?? false) + { + using var msgBox = new MacroDeck.GUI.CustomControls.MessageBox(); + msgBox.ShowDialog(LanguageManager.Strings.Error, PluginLanguageManager.PluginStrings.ErrorNotConnected, System.Windows.Forms.MessageBoxButtons.OK); + return; + } + + this.sourcesBox.Items.Clear(); + this.sourcesBox.Text = String.Empty; + + var self = this; + var sceneName = scenesBox.Text; + _ = Task.Run(async () => + { + var response = await conn.OBS.SceneItemsRequests.GetSceneItemListAsync(sceneName); + if (response != null) + { + foreach (JObject item in response.SceneItems) + { + var name = item["sourceName"]?.ToString(); + if (!String.IsNullOrEmpty(name)) + { + sourcesBox.Invoke((MethodInvoker)delegate { sourcesBox.Items.Add(name); }); + } + } + } + self.Invoke((MethodInvoker)delegate + { + sourcesBox.Text = config?.SourceName; + }); + }); + } + + private void LoadConfig() + { + if (!String.IsNullOrWhiteSpace(this.pluginAction.Configuration)) + { + try + { + config = JObject.Parse(this.pluginAction.Configuration).ToObject(); + } + catch { } + } + } + + private void ResetValues() + { + this.connectionSelector1.Value = config?.ConnectionName; + this.scenesBox.Text = config?.SceneName; + this.sourcesBox.Text = config?.SourceName; + } + + + private void BtnReloadScenes_Click(object sender, EventArgs e) + { + LoadScenes(); + } + + private void BtnReloadSources_Click(object sender, EventArgs e) + { + LoadSources(); + } + + private void ScenesBox_SelectedIndexChanged(object sender, EventArgs e) + { + LoadSources(); + } + + } +} diff --git a/GUI/InteractConfigView.resx b/GUI/InteractConfigView.resx new file mode 100644 index 0000000..a395bff --- /dev/null +++ b/GUI/InteractConfigView.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Language/PluginStrings.cs b/Language/PluginStrings.cs index bcbbdd9..615be51 100644 --- a/Language/PluginStrings.cs +++ b/Language/PluginStrings.cs @@ -79,6 +79,8 @@ public class PluginStrings public string Disconnect = "Disconnect"; public string Value = "Value"; public string Default = "Default"; + public string ActionInteract = "Interact with Input"; + public string ActionInteractDescription = "Open the OBS dialog box to interact with a specific input source"; } } // PluginLanguageManager.PluginStrings. \ No newline at end of file diff --git a/Macro-Deck-OBS-WebSocket.csproj b/Macro-Deck-OBS-WebSocket.csproj index 77aeee7..493a2a9 100644 --- a/Macro-Deck-OBS-WebSocket.csproj +++ b/Macro-Deck-OBS-WebSocket.csproj @@ -4,14 +4,14 @@ SuchByte.OBSWebSocketPlugin OBS-WebSocket Plugin true - Macro Deck + Macro Deck, RecklessBoon Macro Deck MIT - 2.0.0 + 2.1.0 true en - https://github.com/SuchByte/Macro-Deck-OBS-WebSocket-Plugin - https://github.com/SuchByte/Macro-Deck-OBS-WebSocket-Plugin + https://github.com/RecklessBoon/Macro-Deck-OBS-WebSocket-Plugin + https://github.com/RecklessBoon/Macro-Deck-OBS-WebSocket-Plugin SuchByte net7.0-windows10.0.22000.0 @@ -20,7 +20,6 @@ - diff --git a/Main.cs b/Main.cs index 3f9fa53..3e7dc05 100644 --- a/Main.cs +++ b/Main.cs @@ -139,6 +139,7 @@ public override void Enable() new SetSceneAction(), new SetStreamingStateAction(), new SetVirtualCamAction(), + new InteractAction(), new ToggleConnectionAction(), }; _ = SetupAndStartAsync(); diff --git a/Models/Action/InteractConfig.Migrator.cs b/Models/Action/InteractConfig.Migrator.cs new file mode 100644 index 0000000..b3a7556 --- /dev/null +++ b/Models/Action/InteractConfig.Migrator.cs @@ -0,0 +1,10 @@ +namespace SuchByte.OBSWebSocketPlugin.Models.Action +{ + public partial class InteractConfig + { + protected override void Upgrade(int prevVersion) + { + // No migrations yet + } + } +} diff --git a/Models/Action/InteractConfig.cs b/Models/Action/InteractConfig.cs new file mode 100644 index 0000000..f52ad24 --- /dev/null +++ b/Models/Action/InteractConfig.cs @@ -0,0 +1,17 @@ +using SuchByte.OBSWebSocketPlugin.Enum; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SuchByte.OBSWebSocketPlugin.Models.Action +{ + public partial class InteractConfig: ConfigBase + { + public override int TargetVersion => 1; + + public string SceneName; + public string SourceName; + } +} diff --git a/README.md b/README.md index 47ea427..fd45316 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,9 @@ Update the value of a text source #### Set Source Visibility Hide/Unhide sources +#### Interact with Input +Show the "Interact" dialog on a source that supports that kind of action + ---- > NOTE: This is a plugin for [Macro Deck 2](https://github.com/SuchByte/Macro-Deck), it does NOT function as a standalone app diff --git a/Resources/Languages/English.xml b/Resources/Languages/English.xml index 369d349..1bb03cd 100644 --- a/Resources/Languages/English.xml +++ b/Resources/Languages/English.xml @@ -1,68 +1,70 @@  - <__Language__>English - <__LanguageCode__>en - <__Author__>Macro Deck + <__Language__>English + <__LanguageCode__>en + <__Author__>Macro Deck - Set OBS source visibility - Hide/show/toggle scene source visibility - Set OBS filter state - Enable/disable/toggle filter state - Set OBS audio source mute - Mute/unmute/toggle audio source - Set OBS source volume - Set the volume of an audio source - Set OBS text source value - Set the value of a text (GDI+) source - Set OBS profile - Set the profile of OBS - Set OBS recording state - Start/stop/toggle recording - Set OBS streaming state - Start/stop/toggle streaming - Set OBS virtual cam state - Start/stop/toggle virtual cam - Set OBS scene - Sets a configured scene as the active scene - Toggle OBS connection - Toggles the connection between OBS and Macro Deck - Source - Mute - Unmute - Toggle - by - to - Increase - Decrease - Set - Macro Deck is not connected to OBS. Please make sure, OBS and the OBS-WebSocket plugin are working properly and you configured the plugin - Host - Password - OBS Authentication failed - Please make sure, you set the correct password - OBS Connection failed - Please make sure, you set the correct host and OBS is running with the OBS-WebSocket plugin installed - Profile - Scene - Start - Stop - Hide - Show - Filter - Enable - Disable - OBS connected - OBS disconnected - Save replay buffer - Saves the replay buffer - The replay buffer needs to be started to save the replay buffer! - Set OBS replay buffer state - Start/stop/toggle the replay buffer + Set OBS source visibility + Hide/show/toggle scene source visibility + Set OBS filter state + Enable/disable/toggle filter state + Set OBS audio source mute + Mute/unmute/toggle audio source + Set OBS source volume + Set the volume of an audio source + Set OBS text source value + Set the value of a text (GDI+) source + Set OBS profile + Set the profile of OBS + Set OBS recording state + Start/stop/toggle recording + Set OBS streaming state + Start/stop/toggle streaming + Set OBS virtual cam state + Start/stop/toggle virtual cam + Set OBS scene + Sets a configured scene as the active scene + Toggle OBS connection + Toggles the connection between OBS and Macro Deck + Source + Mute + Unmute + Toggle + by + to + Increase + Decrease + Set + Macro Deck is not connected to OBS. Please make sure, OBS and the OBS-WebSocket plugin are working properly and you configured the plugin + Host + Password + OBS Authentication failed + Please make sure, you set the correct password + OBS Connection failed + Please make sure, you set the correct host and OBS is running with the OBS-WebSocket plugin installed + Profile + Scene + Start + Stop + Hide + Show + Filter + Enable + Disable + OBS connected + OBS disconnected + Save replay buffer + Saves the replay buffer + The replay buffer needs to be started to save the replay buffer! + Set OBS replay buffer state + Start/stop/toggle the replay buffer All Connections Connection - Connect + Connect Disconnect Clear Variables Value Default + Interact with Input + Open the OBS dialog box to interact with a specific input source \ No newline at end of file diff --git a/Resources/Languages/German.xml b/Resources/Languages/German.xml index 6ff3344..45967b6 100644 --- a/Resources/Languages/German.xml +++ b/Resources/Languages/German.xml @@ -1,58 +1,58 @@  - <__Language__>German - <__LanguageCode__>de - <__Author__>Macro Deck + <__Language__>German + <__LanguageCode__>de + <__Author__>Macro Deck - OBS Quelle Sichtbarkeit - Sichtbarkeit einer Szenenquelle zeigen, verstecken und umschalten - OBS Audioquelle Stummschaltung - Audioquelle stummschalten, Stummschaltung aufheben und Stummschaltung umschalten - OBS Quelle Lautstärke ändern - Lautstärke der eingestellten Quelle ändern - OBS Profil ändern - Ändert das aktuelle Profil in OBS - OBS Aufnahme - Aufnahme starten, stoppen oder umschalten - OBS Stream - Stream starten, stoppen oder umschalten - OBS virtuelle Kamera - Virtuelle Kamera starten, stoppen oder umschalten - OBS Szene ändern - Ändert die aktuelle Szene - OBS Verbindung umschalten - Schaltet den Verbindungsstatus zwischen Macro Deck und OBS um - Quelle - Stummschalten - Stummschaltung aufheben - Umschalten - um - zu - Erhöhen - Verringern - Setzen - Macro Deck ist nicht mit OBS verbunden. Bitte sicherstellen dass OBS und das OBS-WebSocket plugin richtig konfiguriert sind und funktionieren - Host - Passwort - OBS Autentifizierung fehlgeschlagen - Bitte sicherstellen, dass das richtige Passwort in der Konfiguration eingegeben wurde - OBS Verbindung fehlgeschlagen - Bitte sicherstellen dass OBS und das OBS-WebSocket plugin richtig konfiguriert sind und funktionieren - Profil - Szene - Starten - Stoppen - Verstecken - Zeigen - OBS verbunden - OBS getrennt - OBS Wiederholungspuffer speichern - - Speichert den Wiederholungspuffer - Der Wiederholungspuffer muss aktiviert und gestartet sein um diese Aktion auszuführen! - - OBS Wiederholungspuffer - Wiederholungspuffer starten, stoppen oder umschalten + OBS Quelle Sichtbarkeit + Sichtbarkeit einer Szenenquelle zeigen, verstecken und umschalten + OBS Audioquelle Stummschaltung + Audioquelle stummschalten, Stummschaltung aufheben und Stummschaltung umschalten + OBS Quelle Lautstärke ändern + Lautstärke der eingestellten Quelle ändern + OBS Profil ändern + Ändert das aktuelle Profil in OBS + OBS Aufnahme + Aufnahme starten, stoppen oder umschalten + OBS Stream + Stream starten, stoppen oder umschalten + OBS virtuelle Kamera + Virtuelle Kamera starten, stoppen oder umschalten + OBS Szene ändern + Ändert die aktuelle Szene + OBS Verbindung umschalten + Schaltet den Verbindungsstatus zwischen Macro Deck und OBS um + Quelle + Stummschalten + Stummschaltung aufheben + Umschalten + um + zu + Erhöhen + Verringern + Setzen + Macro Deck ist nicht mit OBS verbunden. Bitte sicherstellen dass OBS und das OBS-WebSocket plugin richtig konfiguriert sind und funktionieren + Host + Passwort + OBS Autentifizierung fehlgeschlagen + Bitte sicherstellen, dass das richtige Passwort in der Konfiguration eingegeben wurde + OBS Verbindung fehlgeschlagen + Bitte sicherstellen dass OBS und das OBS-WebSocket plugin richtig konfiguriert sind und funktionieren + Profil + Szene + Starten + Stoppen + Verstecken + Zeigen + OBS verbunden + OBS getrennt + OBS Wiederholungspuffer speichern + + Speichert den Wiederholungspuffer + Der Wiederholungspuffer muss aktiviert und gestartet sein um diese Aktion auszuführen! + + OBS Wiederholungspuffer + Wiederholungspuffer starten, stoppen oder umschalten Alle Verbindungen Verbindung Verbinden @@ -60,4 +60,6 @@ Variablen löschen Wert Default + Interagieren Sie mit Eingaben + Öffnen Sie das OBS-Dialogfeld, um mit einer bestimmten Eingabequelle zu interagieren \ No newline at end of file diff --git a/Resources/Languages/Italian.xml b/Resources/Languages/Italian.xml index 0b1726a..29af44d 100644 --- a/Resources/Languages/Italian.xml +++ b/Resources/Languages/Italian.xml @@ -1,49 +1,49 @@ - <__Language__>Italian - <__LanguageCode__>it - <__Author__>PhoenixWyllow + <__Language__>Italian + <__LanguageCode__>it + <__Author__>PhoenixWyllow - Imposta la visibilità della sorgente OBS - Nascondi/mostra/alterna la visibilità della sorgente di scena - Silenzia della sorgente audio OBS - Muovi/rimuovi/alterna la sorgente audio - Imposta il volume della sorgente OBS - Imposta il volume di una sorgente audio - Imposta il profilo OBS - Imposta il profilo di OBS - Imposta lo stato di registrazione di OBS - Avvia/ferma/alterna la registrazione - Imposta lo stato dello streaming OBS - Avvia/ferma/alterna lo streaming - Imposta lo stato della OBS Virtual Cam - Avvia/ferma/alterna Virtual Cam - Imposta la scena OBS - Imposta una scena configurata come scena attiva - Attiva/disattiva la connessione a OBS - Attiva o disattiva la connessione tra OBS e Macro Deck - Sorgente - Muto - Disattiva muto - Commuta - di - a - Aumenta - Riduci - Imposta - Macro Deck non è connesso a OBS. Assicurati che OBS e il plugin OBS-WebSocket funzionino correttamente e che tu abbia configurato il plugin - Host - Password - Autenticazione OBS fallita - Assicurati di aver impostato la password corretta - Connessione OBS fallita - Assicurati di aver impostato l'host corretto e che OBS sia in esecuzione con il plugin OBS-WebSocket installato - Profilo - Scena - Avvia - Ferma - Nascondi - Mostra + Imposta la visibilità della sorgente OBS + Nascondi/mostra/alterna la visibilità della sorgente di scena + Silenzia della sorgente audio OBS + Muovi/rimuovi/alterna la sorgente audio + Imposta il volume della sorgente OBS + Imposta il volume di una sorgente audio + Imposta il profilo OBS + Imposta il profilo di OBS + Imposta lo stato di registrazione di OBS + Avvia/ferma/alterna la registrazione + Imposta lo stato dello streaming OBS + Avvia/ferma/alterna lo streaming + Imposta lo stato della OBS Virtual Cam + Avvia/ferma/alterna Virtual Cam + Imposta la scena OBS + Imposta una scena configurata come scena attiva + Attiva/disattiva la connessione a OBS + Attiva o disattiva la connessione tra OBS e Macro Deck + Sorgente + Muto + Disattiva muto + Commuta + di + a + Aumenta + Riduci + Imposta + Macro Deck non è connesso a OBS. Assicurati che OBS e il plugin OBS-WebSocket funzionino correttamente e che tu abbia configurato il plugin + Host + Password + Autenticazione OBS fallita + Assicurati di aver impostato la password corretta + Connessione OBS fallita + Assicurati di aver impostato l'host corretto e che OBS sia in esecuzione con il plugin OBS-WebSocket installato + Profilo + Scena + Avvia + Ferma + Nascondi + Mostra Tutti i collegamenti Connessione Collegare @@ -51,4 +51,6 @@ Cancella variabili Valore Predefinito + Interagisci con l'input + Apri la finestra di dialogo OBS per interagire con una sorgente di input specifica diff --git a/Resources/Languages/Portuguese.xml b/Resources/Languages/Portuguese.xml index 360fabc..02b2806 100644 --- a/Resources/Languages/Portuguese.xml +++ b/Resources/Languages/Portuguese.xml @@ -1,63 +1,63 @@  - <__Language__>Portuguese - <__LanguageCode__>pt - <__Author__>alex-purple + <__Language__>Portuguese + <__LanguageCode__>pt + <__Author__>alex-purple - Definir a visibilidade da fonte do OBS - Ocultar/mostrar/alternar a visibilidade da fonte da cena - Definir o estado do filtro OBS - Ativar/desativar/alternar o estado do filtro - Silenciar o som da fonte de áudio OBS - Silenciar/ativar/alternar fonte de áudio - Definir volume da fonte do OBS - Definir o volume de uma fonte de áudio - Definir valor da fonte do texto OBS - Definir o valor de uma fonte de texto (GDI+) - Definir perfil do OBS - Defina o nome do perfil do OBS - Definir o estado de gravação do OBS - Iniciar/parar/alternar a gravação - Definir estado da transmissão do OBS - Iniciar/parar/alternar a transmissão - Definir o estado da câmera virtual OBS - Iniciar/parar/alternar câmera virtual - Definir cena OBS - Define uma cena configurada como a cena ativa - Alternar conexão OBS - Alterna a conexão entre o OBS e o Macro Deck - Fonte - Mudo - Desativar mudo - Alternar - por - para - Aumentar - Diminuir - Definir - O Macro Deck não está conectado ao OBS. Verifique se o OBS e o plug-in OBS-WebSocket estão funcionando corretamente e se você configurou o plug-in - Servidor - Senha - Falha na autenticação do OBS - Certifique-se de definir a senha correta - Falha na conexão do OBS - Certifique-se de definir o host correto e o OBS está sendo executado com o plug-in OBS-WebSocket instalado - Perfil - Cena - Iniciar - Parar - Ocultar - Mostrar - Filtrar - Ativar - Desativar - OBS conectado - OBS desconectado - Salvar buffer de repetição - Salva o buffer de repetição -O buffer de repetição precisa ser iniciado para salvar o buffer de repetição! - Definir o estado do buffer de repetição do OBS - Iniciar/parar/alternar o buffer de repetição + Definir a visibilidade da fonte do OBS + Ocultar/mostrar/alternar a visibilidade da fonte da cena + Definir o estado do filtro OBS + Ativar/desativar/alternar o estado do filtro + Silenciar o som da fonte de áudio OBS + Silenciar/ativar/alternar fonte de áudio + Definir volume da fonte do OBS + Definir o volume de uma fonte de áudio + Definir valor da fonte do texto OBS + Definir o valor de uma fonte de texto (GDI+) + Definir perfil do OBS + Defina o nome do perfil do OBS + Definir o estado de gravação do OBS + Iniciar/parar/alternar a gravação + Definir estado da transmissão do OBS + Iniciar/parar/alternar a transmissão + Definir o estado da câmera virtual OBS + Iniciar/parar/alternar câmera virtual + Definir cena OBS + Define uma cena configurada como a cena ativa + Alternar conexão OBS + Alterna a conexão entre o OBS e o Macro Deck + Fonte + Mudo + Desativar mudo + Alternar + por + para + Aumentar + Diminuir + Definir + O Macro Deck não está conectado ao OBS. Verifique se o OBS e o plug-in OBS-WebSocket estão funcionando corretamente e se você configurou o plug-in + Servidor + Senha + Falha na autenticação do OBS + Certifique-se de definir a senha correta + Falha na conexão do OBS + Certifique-se de definir o host correto e o OBS está sendo executado com o plug-in OBS-WebSocket instalado + Perfil + Cena + Iniciar + Parar + Ocultar + Mostrar + Filtrar + Ativar + Desativar + OBS conectado + OBS desconectado + Salvar buffer de repetição + Salva o buffer de repetição + O buffer de repetição precisa ser iniciado para salvar o buffer de repetição! + Definir o estado do buffer de repetição do OBS + Iniciar/parar/alternar o buffer de repetição Todas as conexões Conexão Conectar @@ -65,4 +65,6 @@ O buffer de repetição precisa ser iniciado para salvar o buffer de repetição Limpar Variáveis Valor Padrão + Interaja com a entrada + Abra a caixa de diálogo OBS para interagir com uma fonte de entrada específica \ No newline at end of file