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);
            }
        }
Beispiel #2
0
        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);
            }
        }
        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);
        }
Beispiel #4
0
 public StreamDeckDCSBIOSConverterWindow(EnumStreamDeckButtonNames streamDeckButtonName, string streamDeckPanelInstanceId, DCSBIOSConverter dcsbiosConverter)
 {
     InitializeComponent();
     _streamDeckButtonName      = streamDeckButtonName;
     _streamDeckPanelInstanceId = streamDeckPanelInstanceId;
     _streamDeckPanel           = StreamDeckPanel.GetInstance(_streamDeckPanelInstanceId);
     _dcsbiosConverter          = dcsbiosConverter;
 }
Beispiel #5
0
        private void LoadButtons()
        {
            var buttonList = StreamDeckPanel.GetInstance(_panelHash).GetButtonExports();

            DataGridStreamDeckButtons.DataContext = buttonList;
            DataGridStreamDeckButtons.ItemsSource = buttonList;
            DataGridStreamDeckButtons.Items.Refresh();
        }
        protected void Copy()
        {
            var streamDeckButton = StreamDeckPanel.GetInstance(PanelHash).SelectedLayer.GetStreamDeckButton(SelectedButtonName);

            if (streamDeckButton != null)
            {
                Clipboard.SetDataObject(streamDeckButton);
            }
        }
 protected override void SetFormState()
 {
     try
     {
         SetButtonGridStatus(StreamDeckPanel.GetInstance(SDUIParent.GetStreamDeckInstanceId()).HasLayers);
     }
     catch (Exception ex)
     {
         Common.ShowErrorMessageBox(471473, ex);
     }
 }
        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(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);
            }
        }
 private void SetTextBoxBills()
 {
     foreach (var textBox in _textBoxes)
     {
         textBox.Bill = new BillStreamDeckAction(textBox, new StreamDeckButtonOnOff(StreamDeckPanel.GetInstance(PanelHash).SelectedButtonName, !textBox.Name.Contains("Off")));
     }
 }