diff --git a/Assets/MainWindow.jpg b/Assets/MainWindow.jpg index 12b0457..7f4d0f8 100644 Binary files a/Assets/MainWindow.jpg and b/Assets/MainWindow.jpg differ diff --git a/Assets/PelcoConfig.jpg b/Assets/PelcoConfig.jpg index 7a9dc25..c44ac97 100644 Binary files a/Assets/PelcoConfig.jpg and b/Assets/PelcoConfig.jpg differ diff --git a/Assets/PelcoSlot.jpg b/Assets/PelcoSlot.jpg index 243902d..2edab47 100644 Binary files a/Assets/PelcoSlot.jpg and b/Assets/PelcoSlot.jpg differ diff --git a/Assets/ProfileConfig.jpg b/Assets/ProfileConfig.jpg new file mode 100644 index 0000000..91c807b Binary files /dev/null and b/Assets/ProfileConfig.jpg differ diff --git a/Assets/QlcSelect.jpg b/Assets/QlcSelect.jpg new file mode 100644 index 0000000..d879185 Binary files /dev/null and b/Assets/QlcSelect.jpg differ diff --git a/Assets/QlcSlot.jpg b/Assets/QlcSlot.jpg index d781ffa..0281116 100644 Binary files a/Assets/QlcSlot.jpg and b/Assets/QlcSlot.jpg differ diff --git a/Assets/SetEditor.jpg b/Assets/SetEditor.jpg new file mode 100644 index 0000000..fa003f9 Binary files /dev/null and b/Assets/SetEditor.jpg differ diff --git a/Assets/Slot.jpg b/Assets/Slot.jpg new file mode 100644 index 0000000..e1eb56d Binary files /dev/null and b/Assets/Slot.jpg differ diff --git a/Assets/SlotConfig.jpg b/Assets/SlotConfig.jpg index 7d7a2bd..b66ef82 100644 Binary files a/Assets/SlotConfig.jpg and b/Assets/SlotConfig.jpg differ diff --git a/Assets/StreamView.jpg b/Assets/StreamView.jpg index dbd3ecf..7b17559 100644 Binary files a/Assets/StreamView.jpg and b/Assets/StreamView.jpg differ diff --git a/BetterMultiview/ObsMultiview/Dialogs/SetConfig.xaml.cs b/BetterMultiview/ObsMultiview/Dialogs/SetConfig.xaml.cs index b1589d0..8df2783 100644 --- a/BetterMultiview/ObsMultiview/Dialogs/SetConfig.xaml.cs +++ b/BetterMultiview/ObsMultiview/Dialogs/SetConfig.xaml.cs @@ -73,7 +73,7 @@ public partial class SetConfig : Window { Set.PluginConfigs = new Dictionary(); // load config controls for all active plugins - foreach (var plugin in _plugins.Plugins.Where(x => x.Active && x.Plugin.HasSlotSettings)) { + foreach (var plugin in _plugins.Plugins.Where(x => x.Active && x.Plugin.HasSlotSettings && x.Plugin.TriggerType != PluginTriggerType.Trigger)) { PluginState.Add(plugin.Plugin.Name, Set.PluginConfigs.ContainsKey(plugin.Plugin.Name)); var expander = new Expander(); diff --git a/BetterMultiview/ObsMultiview/Properties/PublishProfiles/FolderProfile.pubxml b/BetterMultiview/ObsMultiview/Properties/PublishProfiles/FolderProfile.pubxml index d7675ca..6f09d1f 100644 --- a/BetterMultiview/ObsMultiview/Properties/PublishProfiles/FolderProfile.pubxml +++ b/BetterMultiview/ObsMultiview/Properties/PublishProfiles/FolderProfile.pubxml @@ -1,17 +1,17 @@  - + Release Any CPU bin\Publish\ FileSystem - net5.0-windows + net6.0-windows false win-x64 - True - True + true + true \ No newline at end of file diff --git a/BetterMultiview/ObsMultiview/Services/ProfileWatcher.cs b/BetterMultiview/ObsMultiview/Services/ProfileWatcher.cs index fccc185..969724d 100644 --- a/BetterMultiview/ObsMultiview/Services/ProfileWatcher.cs +++ b/BetterMultiview/ObsMultiview/Services/ProfileWatcher.cs @@ -100,6 +100,9 @@ public class ProfileWatcher { public void ReplaceProfile(UserProfile.DSceneViewConfig config) { var newProfile = new UserProfile.DObsProfile(ActiveProfile.Id); newProfile.SceneView = config; + _profile.ActiveProfile.Profiles.Remove(ActiveProfile); + _profile.ActiveProfile.Profiles.Add(newProfile); + _profile.SaveProfile(); OnActiveProfileChanged(newProfile); } diff --git a/BetterMultiview/ObsMultiview/StreamView.xaml b/BetterMultiview/ObsMultiview/StreamView.xaml index 880a9b7..28c8f38 100644 --- a/BetterMultiview/ObsMultiview/StreamView.xaml +++ b/BetterMultiview/ObsMultiview/StreamView.xaml @@ -88,11 +88,11 @@ - - diff --git a/BetterMultiview/ObsMultiview/StreamView.xaml.cs b/BetterMultiview/ObsMultiview/StreamView.xaml.cs index 75e4b21..9a87de1 100644 --- a/BetterMultiview/ObsMultiview/StreamView.xaml.cs +++ b/BetterMultiview/ObsMultiview/StreamView.xaml.cs @@ -311,5 +311,9 @@ public partial class StreamView : Window { SceneCollectionChanged(_watcher.ActiveProfile); } } + + private void AbortEnter_OnPreviewKeyDown(object sender, KeyEventArgs e) { + e.Handled = (e.Key == Key.Enter || e.Key == Key.Return); + } } } \ No newline at end of file diff --git a/Readme.md b/Readme.md index 05f25ea..1f80a92 100644 --- a/Readme.md +++ b/Readme.md @@ -1,8 +1,12 @@ # Better Multiview An enhanced version of the OBS-Multiview with support for controlling more than just OBS. It allows arbitrary layouting your scenes in a custom grid and adding custom actions that will trigger when activating that scene. +Actions can also be grouped into sets and will only be triggered when entering or exiting that group of slots. + It is a standalone app that interfaces with OBS via the OBS-WebSocket Plugin. +![StreamView](https://github.com/CShark/obs-stream-deck/blob/master/Assets/StreamView.jpg) + ## Requirements OBS >= 27.0.0 @@ -29,12 +33,12 @@ Supports manipulating DMX Devices through QLC+. Requires QLC+ to be launched wit This Plugin allows you to associate a scene with one or multiple functions or widgets from the virtual console which will be activated when the scene is activated and optionally reset when leaving the scene. For functions, any value other than zero will activate the function. For widgets it depends on the type of widget; buttons only support on/off, while sliders allow to set a value between 0 and 255. -### KNX -Supports sending messages to a KNX/IP interface. Requires a KNX/IP interface in the local network. - -This Plugin allows you to send arbitrary messages to a device on the KNX bus system. You have to configure available groups and their datapoint types by hand before using them, currently Datapoint 1.* (boolean) and 5.* (relative) are supported. You can then define actions for the entry and exit of a scene slot. - ### PELCO-D A popular PTZ-protocol for cameras via RS485. Requires a RS485 dongle. -This plugin allows you to recall presets programmed in cameras that support the PelcoD-Protocol. Usually requires a PelcoD-Capable camera console to program the presets first as well as an RS485-dongle. \ No newline at end of file +This plugin allows you to recall presets programmed in cameras that support the PelcoD-Protocol. Usually requires a PelcoD-Capable camera console to program the presets first as well as an RS485-dongle. + +### KNX +Supports sending messages to a KNX/IP interface. Requires a KNX/IP interface in the local network. + +This Plugin allows you to send arbitrary messages to a device on the KNX bus system. You have to configure available groups and their datapoint types by hand before using them, currently Datapoint 1.* (boolean) and 5.* (relative) are supported. You can then define actions for the entry and exit of a scene slot. \ No newline at end of file