示例#1
0
        private void ButtonDeleteFace_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                var streamDeckButton     = _streamDeckPanel.SelectedButton;
                var streamDeckButtonName = streamDeckButton.StreamDeckButtonName;

                streamDeckButton.Face.Dispose(); //todo this must be properly made
                streamDeckButton.Face = null;    //todo this must be properly made

                if (streamDeckButton.HasConfig)
                {
                    _streamDeckPanel.SelectedLayer.AddButton(streamDeckButton);
                }
                else
                {
                    _streamDeckPanel.SelectedLayer.RemoveButton(streamDeckButton);
                }
                UCStreamDeckButtonFace.Clear();
                _streamDeckPanel.ClearFace(streamDeckButtonName);
                SDEventHandler.NotifyToSyncConfiguration(this, _streamDeckPanel.BindingHash);
                SetFormState();
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }
示例#2
0
 private void ButtonInfoLayer_OnClick(object sender, RoutedEventArgs e)
 {
     Debug.WriteLine(_streamDeckPanel.GetConfigurationInformation());
     Debug.WriteLine(HIDHandler.GetInformation());
     Debug.WriteLine(_streamDeckPanel.GetLayerHandlerInformation());
     Debug.WriteLine(SDEventHandler.GetInformation());
 }
示例#3
0
        private void ButtonDeleteAction_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                var streamDeckButton = _streamDeckPanel.SelectedButton;
                if (streamDeckButton.ActionForPress != null && streamDeckButton.ActionForPress.ActionType == EnumStreamDeckActionType.LayerNavigation && streamDeckButton.Face != null)
                {
                    streamDeckButton.Face.Dispose();
                    streamDeckButton.Face = null;
                    UCStreamDeckButtonFace.Clear();
                }
                streamDeckButton.ActionForPress   = null;
                streamDeckButton.ActionForRelease = null;

                if (streamDeckButton.HasConfig)
                {
                    _streamDeckPanel.SelectedLayer.AddButton(streamDeckButton);
                }
                else
                {
                    _streamDeckPanel.SelectedLayer.RemoveButton(streamDeckButton);
                }

                UCStreamDeckButtonAction.Clear();

                SDEventHandler.NotifyToSyncConfiguration(this, _streamDeckPanel.BindingHash);
                SetFormState();
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }
示例#4
0
        private void ButtonAcceptButtonChanges_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                try
                {
                    var streamDeckButton = _streamDeckPanel.SelectedButton;
                    streamDeckButton.ActionForPress   = UCStreamDeckButtonAction.GetStreamDeckButtonAction(true);
                    streamDeckButton.ActionForRelease = UCStreamDeckButtonAction.GetStreamDeckButtonAction(false);

                    streamDeckButton.Face = UCStreamDeckButtonFace.GetStreamDeckButtonFace(streamDeckButton.StreamDeckButtonName);

                    if (streamDeckButton.HasConfig)
                    {
                        _streamDeckPanel.SelectedLayer.AddButton(streamDeckButton);
                    }
                    else
                    {
                        _streamDeckPanel.SelectedLayer.RemoveButton(streamDeckButton);
                    }
                    UCStreamDeckButtonAction.StateSaved();
                    UCStreamDeckButtonFace.StateSaved();
                    SDEventHandler.NotifyToSyncConfiguration(this, _streamDeckPanel.BindingHash);
                    SetFormState();
                }
                catch (Exception ex)
                {
                    Common.ShowErrorMessageBox(ex);
                }
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }
        /*[NonSerialized]
         * private List<string> _listDecimalFormatters = new List<string>()
         * {
         *  "0", "0.0", "0.00", "0.000", "0.0000", "0.00000"
         * };*/

        public DCSBIOSDecoder()
        {
            Debug.WriteLine("Creating Image Update Thread for Streamdeck #2");
            _imageUpdateTread = new Thread(ImageRefreshingThread);
            _imageUpdateTread.Start();
            BIOSEventHandler.AttachDataListener(this);
            BIOSEventHandler.AttachStringListener(this);
            SDEventHandler.AttachDCSBIOSDecoder(this);
        }
示例#6
0
        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);
        }
示例#7
0
 private void ButtonCancelAction_OnClick(object sender, RoutedEventArgs e)
 {
     try
     {
         SDEventHandler.ClearSettings(this, true, false, false, _streamDeckPanel.BindingHash);
         SDEventHandler.SelectedButtonChanged(this, _streamDeckPanel.SelectedButton, _streamDeckPanel.BindingHash);
         SDEventHandler.NotifyToSyncConfiguration(this, _streamDeckPanel.BindingHash);
         SetFormState();
     }
     catch (Exception ex)
     {
         Common.ShowErrorMessageBox(ex);
     }
 }
示例#8
0
 public void SettingsApplied(object sender, PanelInfoArgs e)
 {
     try
     {
         if (e.HidInstance.Equals(_streamDeckPanel.HIDInstance) && e.PanelType == _streamDeckPanel.TypeOfPanel)
         {
             SDEventHandler.NotifyToSyncConfiguration(this, _streamDeckPanel.BindingHash);
         }
     }
     catch (Exception ex)
     {
         Common.ShowErrorMessageBox(ex);
     }
 }
示例#9
0
 private void ButtonContextMenuDelete_OnClick(object sender, RoutedEventArgs e)
 {
     try
     {
         var streamDeckButton = _streamDeckPanel.SelectedLayer.GetStreamDeckButton(SelectedButtonName);
         if (MessageBox.Show("Delete button" + streamDeckButton.StreamDeckButtonName.ToString() + "?", "Confirm", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
         {
             _streamDeckPanel.SelectedLayer.RemoveButton(streamDeckButton);
             SDEventHandler.ClearSettings(this, true, true, true, _streamDeckPanel.BindingHash);
         }
     }
     catch (Exception ex)
     {
         Common.ShowErrorMessageBox(ex);
     }
 }
示例#10
0
        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());
        }
示例#11
0
        // Protected implementation of Dispose pattern.
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    StackPanelButtonUI.Children.Clear();
                    SDEventHandler.DetachStreamDeckListener(UCStreamDeckButtonAction);
                    SDEventHandler.DetachStreamDeckListener(UCStreamDeckButtonFace);
                    SDEventHandler.DetachStreamDeckListener(_uiButtonGrid);
                    SDEventHandler.DetachStreamDeckConfigListener(_uiButtonGrid);
                    SDEventHandler.DetachStreamDeckListener(this);
                    SDEventHandler.DetachActionTypeChangedListener(UCStreamDeckButtonFace);
                    AppEventHandler.DetachGamingPanelListener(this);
                    _streamDeckPanel.Dispose();
                }

                _disposed = true;
            }

            // Call base class implementation.
            base.Dispose(disposing);
        }
示例#12
0
        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.SelectedButton && SDEventHandler.AreThereDirtyListeners(this))
                {
                    if (CommonUI.DoDiscardAfterMessage(true, $"Discard Changes to {SelectedButtonName} ?"))
                    {
                        SetFormState();
                    }
                    else
                    {
                        e.Handled = true;
                    }
                }
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }