protected void ButtonImage_PreviewMouseDown(object sender, MouseButtonEventArgs e) { try { if (SelectedButtonName == EnumStreamDeckButtonNames.BUTTON0_NO_BUTTON) { return; } var newlySelectedImage = (StreamDeckImage)sender; /* * Here we must check if event if we can change the button that is selected. If there are unsaved configurations we can't */ if (newlySelectedImage.Bill.Button != StreamDeckPanel.GetInstance(PanelHash).SelectedButton&& EventHandlers.AreThereDirtyListeners(this)) { if (CommonUI.DoDiscardAfterMessage(true, "Discard Changes to " + SelectedButtonName + " ?")) { SetFormState(); } else { e.Handled = true; } } } catch (Exception ex) { Common.ShowErrorMessageBox(ex); } }
protected bool Paste() { var iDataObject = Clipboard.GetDataObject(); if (iDataObject == null || !iDataObject.GetDataPresent("NonVisuals.StreamDeck.StreamDeckButton")) { return(false); } var result = false; var newStreamDeckButton = (StreamDeckButton)iDataObject.GetData("NonVisuals.StreamDeck.StreamDeckButton"); var oldStreamDeckButton = StreamDeckPanel.GetInstance(PanelHash).SelectedLayer.GetStreamDeckButton(SelectedButtonName); if (oldStreamDeckButton.CheckIfWouldOverwrite(newStreamDeckButton) && MessageBox.Show("Overwrite previous configuration (partial or fully)", "Overwrite?)", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { result = oldStreamDeckButton.Consume(true, newStreamDeckButton); } else { result = oldStreamDeckButton.Consume(true, newStreamDeckButton); } if (result) { StreamDeckPanel.GetInstance(PanelHash).SelectedLayer.AddButton(oldStreamDeckButton); UpdateButtonInfoFromSource(); SetIsDirty(); } return(result); }
public static void SetPanel(this List <StreamDeckLayer> list, StreamDeckPanel streamDeckPanel) { foreach (var streamDeckLayer in list) { streamDeckLayer.StreamDeckPanelInstance = streamDeckPanel; } }
private void ButtonExport_OnClick(object sender, RoutedEventArgs e) { try { var saveFileDialog = new SaveFileDialog(); saveFileDialog.InitialDirectory = string.IsNullOrEmpty(Settings.Default.LastStreamDeckExportFolder) ? Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) : Settings.Default.LastStreamDeckExportFolder; saveFileDialog.Filter = @"Compressed File|*.zip"; saveFileDialog.FileName = "streamdeck_export"; if (saveFileDialog.ShowDialog() == true) { _zipFileName = saveFileDialog.FileName; Settings.Default.LastStreamDeckExportFolder = Path.GetDirectoryName(saveFileDialog.FileName); Settings.Default.Save(); var buttonExports = DataGridStreamDeckButtons.SelectedItems.Cast <ButtonExport>().ToList(); StreamDeckPanel.GetInstance(_panelHash).Export(_zipFileName, buttonExports); } SetFormState(); } catch (Exception ex) { Common.ShowErrorMessageBox(ex); } }
public StreamDeckDCSBIOSConverterWindow(EnumStreamDeckButtonNames streamDeckButtonName, DCSBIOSConverter dcsbiosConverter, StreamDeckPanel streamDeckPanel) { InitializeComponent(); _streamDeckButtonName = streamDeckButtonName; _streamDeckPanel = streamDeckPanel; _dcsbiosConverter = dcsbiosConverter; }
public StreamDeckUserControl(GamingPanelEnum panelType, HIDSkeleton hidSkeleton, TabItem parentTabItem, IGlobalHandler globalHandler, DCSBIOS dcsbios) { InitializeComponent(); ParentTabItem = parentTabItem; //no worky worky for this library hidSkeleton.HIDReadDevice.Removed += DeviceRemovedHandler; _streamDeckPanel = new StreamDeckPanel(panelType, hidSkeleton); _streamDeckPanel.Attach((IGamingPanelListener)this); globalHandler.Attach(_streamDeckPanel); GlobalHandler = globalHandler; _dcsbios = dcsbios; UCStreamDeckButtonAction.SetStreamDeckPanel(_streamDeckPanel); UCStreamDeckButtonFace.SetStreamDeckPanel(_streamDeckPanel); StackPanelButtonUI.Children.Clear(); switch (panelType) { case GamingPanelEnum.StreamDeckMini: { var child = new UserControlStreamDeckUIMini(_streamDeckPanel); _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } case GamingPanelEnum.StreamDeck: { var child = new UserControlStreamDeckUINormal(_streamDeckPanel); _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } case GamingPanelEnum.StreamDeckXL: { var child = new UserControlStreamDeckUIXL(_streamDeckPanel); _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } } EventHandlers.AttachStreamDeckListener(UCStreamDeckButtonAction); EventHandlers.AttachStreamDeckListener(UCStreamDeckButtonFace); EventHandlers.AttachStreamDeckListener(_uiButtonGrid); EventHandlers.AttachStreamDeckConfigListener(_uiButtonGrid); EventHandlers.AttachStreamDeckListener(this); UCStreamDeckButtonAction.GlobalHandler = GlobalHandler; UCStreamDeckButtonFace.GlobalHandler = GlobalHandler; UCStreamDeckButtonFace.SetStreamDeckPanel(_streamDeckPanel); UCStreamDeckButtonAction.SetStreamDeckPanel(_streamDeckPanel); }
private void LoadButtons() { var buttonList = StreamDeckPanel.GetInstance(_panelHash).GetButtonExports(); DataGridStreamDeckButtons.DataContext = buttonList; DataGridStreamDeckButtons.ItemsSource = buttonList; DataGridStreamDeckButtons.Items.Refresh(); }
public StreamDeckDCSBIOSConverterWindow(EnumStreamDeckButtonNames streamDeckButtonName, string streamDeckPanelInstanceId, DCSBIOSConverter dcsbiosConverter) { InitializeComponent(); _streamDeckButtonName = streamDeckButtonName; _streamDeckPanelInstanceId = streamDeckPanelInstanceId; _streamDeckPanel = StreamDeckPanel.GetInstance(_streamDeckPanelInstanceId); _dcsbiosConverter = dcsbiosConverter; }
public StreamDeckUserControl(GamingPanelEnum panelType, HIDSkeleton hidSkeleton, TabItem parentTabItem, IGlobalHandler globalHandler, DCSBIOS dcsbios) { InitializeComponent(); _parentTabItem = parentTabItem; _parentTabItemHeader = _parentTabItem.Header.ToString(); _streamDeckPanel = new StreamDeckPanel(panelType, hidSkeleton); _streamDeckPanel.Attach((IGamingPanelListener)this); globalHandler.Attach(_streamDeckPanel); _globalHandler = globalHandler; _dcsbios = dcsbios; StackPanelButtonUI.Children.Clear(); switch (panelType) { case GamingPanelEnum.StreamDeckMini: { var child = new UserControlStreamDeckUIMini(); child.PanelHash = _streamDeckPanel.PanelHash; _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } case GamingPanelEnum.StreamDeck: { var child = new UserControlStreamDeckUINormal(); child.PanelHash = _streamDeckPanel.PanelHash; _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } case GamingPanelEnum.StreamDeckXL: { var child = new UserControlStreamDeckUIXL(); child.PanelHash = _streamDeckPanel.PanelHash; _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } } EventHandlers.AttachStreamDeckListener(UCStreamDeckButtonAction); EventHandlers.AttachStreamDeckListener(UCStreamDeckButtonFace); EventHandlers.AttachStreamDeckListener(_uiButtonGrid); EventHandlers.AttachStreamDeckConfigListener(_uiButtonGrid); EventHandlers.AttachStreamDeckListener(this); UCStreamDeckButtonAction.GlobalHandler = _globalHandler; UCStreamDeckButtonFace.GlobalHandler = _globalHandler; UCStreamDeckButtonFace.PanelHash = _streamDeckPanel.PanelHash; UCStreamDeckButtonAction.PanelHash = _streamDeckPanel.PanelHash; }
protected void Copy() { var streamDeckButton = StreamDeckPanel.GetInstance(PanelHash).SelectedLayer.GetStreamDeckButton(SelectedButtonName); if (streamDeckButton != null) { Clipboard.SetDataObject(streamDeckButton); } }
public StreamDeckDCSBIOSDecoderWindow(DCSBIOSDecoder dcsbiosDecoder, StreamDeckPanel streamDeckPanel) { InitializeComponent(); _dcsbiosDecoder = dcsbiosDecoder; DCSBIOSControlLocator.LoadControls(); _dcsbiosControls = DCSBIOSControlLocator.GetIntegerOutputControls(); _streamDeckPanel = streamDeckPanel; BIOSEventHandler.AttachDataListener(this); }
public StreamDeckLayerWindow(List <StreamDeckLayer> existingLayers, StreamDeckPanel streamDeckPanel) { InitializeComponent(); if (existingLayers != null) { _existingLayers = existingLayers; } _streamDeckPanel = streamDeckPanel; }
public static void ActionTypeChangedLayerNavigation(object sender, StreamDeckPanel streamDeckPanel, EnumStreamDeckActionType actionType, string layerName) { var arguments = new ActionTypeChangedEventArgs { BindingHash = streamDeckPanel.BindingHash, ActionType = actionType, TargetLayerName = layerName }; OnActionTypeChanged?.Invoke(sender, arguments); }
protected override void SetFormState() { try { SetButtonGridStatus(StreamDeckPanel.GetInstance(SDUIParent.GetStreamDeckInstanceId()).HasLayers); } catch (Exception ex) { Common.ShowErrorMessageBox(471473, ex); } }
public StreamDeckDCSBIOSDecoderWindow(DCSBIOSDecoder dcsbiosDecoder, StreamDeckPanel streamDeckPanel) { InitializeComponent(); _dcsbiosDecoder = dcsbiosDecoder; DCSBIOSControlLocator.LoadControls(); _dcsbiosControls = DCSBIOSControlLocator.GetIntegerOutputControls(); _streamDeckPanel = streamDeckPanel; var thread = new Thread(ThreadLoop); thread.Start(); }
public StreamDeckUserControl(GamingPanelEnum panelType, HIDSkeleton hidSkeleton, TabItem parentTabItem) { InitializeComponent(); ParentTabItem = parentTabItem; _streamDeckPanel = new StreamDeckPanel(panelType, hidSkeleton); UCStreamDeckButtonAction.SetStreamDeckPanel(_streamDeckPanel); UCStreamDeckButtonFace.SetStreamDeckPanel(_streamDeckPanel); StackPanelButtonUI.Children.Clear(); switch (panelType) { case GamingPanelEnum.StreamDeckMini: { var child = new UserControlStreamDeckUIMini(_streamDeckPanel); _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } case GamingPanelEnum.StreamDeck: case GamingPanelEnum.StreamDeckV2: case GamingPanelEnum.StreamDeckMK2: { var child = new UserControlStreamDeckUINormal(_streamDeckPanel); _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } case GamingPanelEnum.StreamDeckXL: { var child = new UserControlStreamDeckUIXL(_streamDeckPanel); _uiButtonGrid = child; StackPanelButtonUI.Children.Add(child); break; } } SDEventHandler.AttachStreamDeckListener(UCStreamDeckButtonAction); SDEventHandler.AttachStreamDeckListener(UCStreamDeckButtonFace); SDEventHandler.AttachStreamDeckListener(_uiButtonGrid); SDEventHandler.AttachStreamDeckConfigListener(_uiButtonGrid); SDEventHandler.AttachStreamDeckListener(this); SDEventHandler.AttachActionTypeChangedListener(UCStreamDeckButtonFace); AppEventHandler.AttachGamingPanelListener(this); UCStreamDeckButtonFace.SetStreamDeckPanel(_streamDeckPanel); UCStreamDeckButtonAction.SetStreamDeckPanel(_streamDeckPanel); }
private void LoadComboBoxLayers() { ComboBoxLayers.DropDownClosed -= ComboBoxLayers_OnDropDownClosed; var layerList = StreamDeckPanel.GetInstance(_bindingHash).GetStreamDeckLayerNames(); foreach (var layerName in layerList) { ComboBoxLayers.Items.Add(layerName); } ComboBoxLayers.DropDownClosed += ComboBoxLayers_OnDropDownClosed; }
private void LoadComboBoxButtonName() { ComboBoxButtonName.DropDownClosed -= ComboBoxButtonName_OnDropDownClosed; var buttonName = "BUTTON"; for (var i = 0; i < StreamDeckPanel.GetInstance(_bindingHash).ButtonCount; i++) { ComboBoxButtonName.Items.Add(buttonName + (i + 1).ToString()); } ComboBoxButtonName.DropDownClosed += ComboBoxButtonName_OnDropDownClosed; }
private void ButtonContextMenu_OnOpened(object sender, RoutedEventArgs e) { try { /* * Can't get context menu [ContextMenuOpening] events to work. Workaround. */ var contextMenu = (ContextMenu)sender; MenuItem menuItemCopy = null; MenuItem menuItemPaste = null; MenuItem menuItemDelete = null; foreach (var contextMenuItem in contextMenu.Items) { if (contextMenuItem.GetType() == typeof(MenuItem) && ((MenuItem)contextMenuItem).Name == "MenuItemCopy") { menuItemCopy = ((MenuItem)contextMenuItem); } } foreach (var contextMenuItem in contextMenu.Items) { if (contextMenuItem.GetType() == typeof(MenuItem) && ((MenuItem)contextMenuItem).Name == "MenuItemPaste") { menuItemPaste = ((MenuItem)contextMenuItem); } } foreach (var contextMenuItem in contextMenu.Items) { if (contextMenuItem.GetType() == typeof(MenuItem) && ((MenuItem)contextMenuItem).Name == "MenuItemPaste") { menuItemDelete = ((MenuItem)contextMenuItem); } } if (menuItemCopy == null || menuItemPaste == null || menuItemDelete == null) { return; } var selectedStreamDeckButton = StreamDeckPanel.GetInstance(PanelHash).SelectedLayer.GetStreamDeckButton(SelectedButtonName); menuItemCopy.IsEnabled = selectedStreamDeckButton.HasConfig; menuItemDelete.IsEnabled = selectedStreamDeckButton.HasConfig; var iDataObject = Clipboard.GetDataObject(); menuItemPaste.IsEnabled = iDataObject != null && iDataObject.GetDataPresent("NonVisuals.StreamDeck.StreamDeckButton"); } catch (Exception ex) { Common.ShowErrorMessageBox(ex); } }
private void ButtonContextMenuDelete_OnClick(object sender, RoutedEventArgs e) { try { var streamDeckButton = StreamDeckPanel.GetInstance(PanelHash).SelectedLayer.GetStreamDeckButton(SelectedButtonName); if (MessageBox.Show("Delete button" + streamDeckButton.StreamDeckButtonName.ToString() + "?", "Confirm", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { StreamDeckPanel.GetInstance(PanelHash).SelectedLayer.RemoveButton(streamDeckButton); } } catch (Exception ex) { Common.ShowErrorMessageBox(ex); } }
public StreamDeckDCSBIOSDecoderWindow(StreamDeckPanel streamDeckPanel) { InitializeComponent(); _streamDeckPanel = streamDeckPanel; _dcsbiosDecoder = new DCSBIOSDecoder { DecoderSourceType = DCSBiosOutputType.IntegerType, StreamDeckPanelInstance = streamDeckPanel, StreamDeckButtonName = streamDeckPanel.SelectedButtonName }; LoadDefaults(); DCSBIOSControlLocator.LoadControls(); _dcsbiosControls = DCSBIOSControlLocator.GetIntegerOutputControls(); BIOSEventHandler.AttachDataListener(this); }
public StreamDeckDCSBIOSDecoderWindow(string panelHash) { InitializeComponent(); _dcsbiosDecoder = new DCSBIOSDecoder(); _dcsbiosDecoder.DecoderSourceType = DCSBiosOutputType.INTEGER_TYPE; _dcsbiosDecoder.PanelHash = panelHash; LoadDefaults(); DCSBIOSControlLocator.LoadControls(); _dcsbiosControls = DCSBIOSControlLocator.GetIntegerOutputControls(); _dcsbiosDecoder.StreamDeckButtonName = StreamDeckPanel.GetInstance(panelHash).SelectedButtonName; _panelHash = panelHash; var thread = new Thread(ThreadLoop); thread.Start(); }
private void ButtonImport_OnClick(object sender, RoutedEventArgs e) { try { var stringBuilder = new StringBuilder(100); if (Settings.Default.ShowImportWarning) { stringBuilder.Append("WARNING !\n\n"); stringBuilder.Append("A failed import can corrupt a bindings file.\n"); stringBuilder.Append("Before you import, make a copy of your bindings file"); System.Windows.MessageBox.Show(stringBuilder.ToString(), "Make backup", MessageBoxButton.OK, MessageBoxImage.Information); } CopyFilesToNewLocation(); var selectedButtonExports = DataGridStreamDeckButtons.SelectedItems.Cast <ButtonExport>().ToList();; /*var duplicateList = selectedStreamDeckButtons.GroupBy(a => a.StreamDeckButtonName).Where(a => a.Count() > 1).Select(x => new { StreamDeckButtonName = x.Key }).ToList(); * * if (duplicateList.Count > 0) * { * var infoText = duplicateList[0].StreamDeckButtonName + " is repeated in the selection. Modify the selection."; * MessageBox.Show(infoText, "Duplicate buttons", MessageBoxButton.OK, MessageBoxImage.Exclamation); * return; * } */ var importMode = EnumButtonImportMode.None; if (CheckBoxReplace.IsChecked == true) { importMode = EnumButtonImportMode.Replace; } else if (CheckBoxOverwrite.IsChecked == true) { importMode = EnumButtonImportMode.Overwrite; } StreamDeckPanel.GetInstance(_bindingHash).ImportButtons(importMode, selectedButtonExports); System.Windows.MessageBox.Show("Import was completed", "Import successful", MessageBoxButton.OK, MessageBoxImage.Information); SetFormState(); } catch (Exception ex) { Common.ShowErrorMessageBox(ex); } }
public void DCSBIOSConverter_MustBe_Clonable() { var gamingPanelSkeleton = new GamingPanelSkeleton(GamingPanelVendorEnum.Saitek, GamingPanelEnum.PZ70MultiPanel); StreamDeckPanel streamdeckPanel = new StreamDeckPanel(GamingPanelEnum.StreamDeck, new HIDSkeleton(gamingPanelSkeleton, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), true); DCSBIOSConverter source = new(streamdeckPanel); source.ConverterOutputType = EnumConverterOutputType.Image; source.BackgroundColor = _colorValue1; source.OffsetX = _intValue1; DCSBIOSConverter cloned = source.CloneJson(); Assert.NotNull(cloned); Assert.Equal(_colorValue1, cloned.BackgroundColor); Assert.Equal(EnumConverterOutputType.Image, cloned.ConverterOutputType); Assert.Equal(_intValue1, cloned.OffsetX); }
public StreamDeckUserControl(GamingPanelEnum panelType, HIDSkeleton hidSkeleton, TabItem parentTabItem, IGlobalHandler globalHandler, DCSBIOS dcsbios) { InitializeComponent(); _parentTabItem = parentTabItem; _parentTabItemHeader = _parentTabItem.Header.ToString(); _streamDeck = new StreamDeckPanel(this, panelType, hidSkeleton); _streamDeck.Attach((IGamingPanelListener)this); globalHandler.Attach(_streamDeck); _globalHandler = globalHandler; _dcsbios = dcsbios; StackPanelButtonUI.Children.Clear(); switch (panelType) { case GamingPanelEnum.StreamDeckMini: case GamingPanelEnum.StreamDeck: { var child = new UserControlStreamDeckUINormal(); _streamDeckUI = child; child.SetSDUIParent(this); StackPanelButtonUI.Children.Add(child); break; } case GamingPanelEnum.StreamDeckXL: { var child = new UserControlStreamDeckUIXL(); _streamDeckUI = child; child.SetSDUIParent(this); StackPanelButtonUI.Children.Add(child); break; } } UCStreamDeckButtonAction.SDUIParent = this; UCStreamDeckButtonAction.GlobalHandler = _globalHandler; UCStreamDeckButtonFace.SDUIParent = this; UCStreamDeckButtonFace.GlobalHandler = _globalHandler; UCStreamDeckButtonFace.UserControlStreamDeckButtonAction = UCStreamDeckButtonAction; UCStreamDeckButtonAction.UserControlStreamDeckButtonFace = UCStreamDeckButtonFace; _streamDeckUI.HideAllDotImages(); }
public void Event_StreamDeck_OnDirtyConfigurations_Proper_Attachment() { var gamingPanelSkeleton = new GamingPanelSkeleton(GamingPanelVendorEnum.Saitek, GamingPanelEnum.PZ70MultiPanel); var streamDeckPanel = new StreamDeckPanel(GamingPanelEnum.StreamDeck, new HIDSkeleton(gamingPanelSkeleton, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), true); //GamingPanel Assert.True(AppEventHandler.OnProfileEventSubscribed()); Assert.True(AppEventHandler.OnSavePanelSettingsSubscribed()); Assert.True(AppEventHandler.OnSavePanelSettingsJSONSubscribed()); //StreamDeckPanel Assert.True(SDEventHandler.OnStreamDeckSyncConfigurationEventSubscribed()); Assert.True(SDEventHandler.OnDirtyConfigurationsEventHandlerEventSubscribed()); Assert.True(SDEventHandler.OnDirtyNotificationEventHandlerSubscribed()); Assert.True(SDEventHandler.OnStreamDeckShowNewLayerEventSubscribed()); Assert.True(SDEventHandler.OnRemoteStreamDeckShowNewLayerEventSubscribed()); Assert.True(SDEventHandler.OnStreamDeckSelectedButtonChangedEventSubscribed()); Assert.True(SDEventHandler.OnStreamDeckClearSettingsEventSubscribed()); }
public ExportWindow(StreamDeckPanel streamDeckPanel) { InitializeComponent(); _streamDeckPanel = streamDeckPanel; }
public BillStreamDeckAction(TextBox textBox, StreamDeckButtonOnOff button, StreamDeckPanel streamDeckPanel) { TextBox = textBox; _button = button; _streamDeckPanel = streamDeckPanel; }
public UserControlStreamDeckUIXL(StreamDeckPanel streamDeckPanel) : base(streamDeckPanel) { InitializeComponent(); }
internal void SetStreamDeckPanel(StreamDeckPanel streamDeckPanel) { _streamDeckPanel = streamDeckPanel; }