Пример #1
0
        public static void refreshFolder(DynamicDeckFolder folder)
        {
            string value1 = string.Join("+", folder.KeyGlobalValue.ModifierKeys.Where(c => c != Keys.None).Select(c => c.ToString()).OrderBy(c => c));
            string value2 = string.Join("+", folder.KeyGlobalValue.Keys.Where(c => !(c == Keys.ShiftKey || c == Keys.ControlKey || c == Keys.Menu)));
            string result = string.IsNullOrEmpty(value1) ? value2 : string.IsNullOrEmpty(value2) ? value1 : (string.Join("+", value1, value2));

            result = result.Replace("Control", "Ctrl");

            System.Windows.Forms.Keys retval = System.Windows.Forms.Keys.None;
            if (!folder.UniqueID.IsNullOrEmpty())
            {
                if (!result.IsNullOrEmpty())
                {
                    try
                    {
                        System.Windows.Forms.KeysConverter kc = new System.Windows.Forms.KeysConverter();
                        retval = (System.Windows.Forms.Keys)kc.ConvertFromInvariantString(result);


                        var handlerEvent = new ActionsFolderButtons(folder);

                        HotkeyManager.Current.AddOrReplace(folder.UniqueID, retval, handlerEvent.MyEventHandler);
                    }
                    catch (Exception)
                    {
                        //Debug.(ex.ToString());
                    }
                }
            }
        }
Пример #2
0
 public static void RemoveHotKey(DynamicDeckFolder folder)
 {
     if (folder != null)
     {
         HotkeyManager.Current.Remove(folder.UniqueID);
     }
 }
Пример #3
0
        public static void RegisterUniqueId(DynamicDeckFolder folder)
        {
            if (folder != null)
#pragma warning disable CS0618 // O tipo ou membro é obsoleto
            {
                folder.UniqueID = ShortId.Generate(true, false, 12);
            }
#pragma warning restore CS0618 // O tipo ou membro é obsoleto
        }
Пример #4
0
        public static List <DynamicDeckFolder> ListFolders(DynamicDeckFolder initialFolder)
        {
            var folders = new List <DynamicDeckFolder>();

            folders.Add(initialFolder);
            foreach (var f in initialFolder.GetSubFolders())
            {
                if (f is DynamicDeckFolder DF)
                {
                    folders.AddRange(ListFolders(DF));
                }
            }
            return(folders);
        }
Пример #5
0
        public void ToExecuteHelper()
        {
            dynamic form = Activator.CreateInstance(AbstractDeckAction.FindType("DisplayButtons.Forms.EventSystem.EventCreateNew")) as Form;


            //  form.comboBox.Visible = false;
            form.Controls.Remove(form.comboBox);
            var instance = new WindowAction(this);

            form.UpdateForm(instance, 1);

            if (form.ShowDialog() == DialogResult.OK)
            {
                folder = (DynamicDeckFolder)instance.comboBox1.SelectedItem;
            }
            else
            {
                form.Close();
            }
        }
Пример #6
0
 public DeckFolderEventDelete(DynamicDeckFolder folder)
 {
     this._folder = folder;
 }
Пример #7
0
 public DeckFolderEventCreate(DynamicDeckFolder folder)
 {
     this._folder = folder;
 }
Пример #8
0
 public ActionsFolderButtons(DynamicDeckFolder folder)
 {
     FolderPrincipal = folder;
 }
Пример #9
0
 public DeckFolderEvent(DynamicDeckFolder folder)
 {
     _folder = folder;
 }
        public override void OnButtonUp(DeckDevice deckDevice)
        {
            Thread th = new Thread(() => {
                //We create a deck folder
                Size imageSize           = new Size(512, 512);
                DynamicDeckFolder folder = new DynamicDeckFolder();
                Font defaultFont         = new Font("Arial", 80, GraphicsUnit.Point);
                folder.SetParent(deckDevice.CurrentFolder);

                var scenes = OBSUtils.GetScenes();
                int index  = 0;
                using (var bmp = new Bitmap(imageSize.Width, imageSize.Height)) {
                    using (var g = Graphics.FromImage(bmp)) {
                        g.DrawString("Exit", defaultFont, Brushes.Black, new RectangleF(Point.Empty, imageSize), new StringFormat {
                            LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Center
                        });
                    }
                    folder.Add(++index, new DynamicDeckItem()
                    {
                        DeckImage = new DeckImage(bmp)
                    });
                }

                foreach (var s in scenes)
                {
                    using (var bmp = new Bitmap(imageSize.Width, imageSize.Height)) {
                        using (var g = Graphics.FromImage(bmp)) {
                            g.DrawString(s, defaultFont, Brushes.Black, new RectangleF(Point.Empty, imageSize), new StringFormat {
                                LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Center
                            });
                        }
                        folder.Add(++index, new DynamicDeckItem()
                        {
                            DeckImage = new DeckImage(bmp)
                        });
                    }
                }

                foreach (var s in scenes)
                {
                    using (var bmp = new Bitmap(imageSize.Width, imageSize.Height)) {
                        using (var g = Graphics.FromImage(bmp)) {
                            g.DrawString(s + previewSuffix, defaultFont, Brushes.Black, new RectangleF(Point.Empty, imageSize), new StringFormat {
                                LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Center
                            });
                        }
                        folder.Add(++index, new DynamicDeckItem()
                        {
                            DeckImage = new DeckImage(bmp)
                        });
                    }
                }

                try {
                    var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();

                    Type callType = assemblies.SelectMany(a => a.GetTypes())
                                    .Single(t => t.FullName == "ButtonDeck.Misc.IDeckDeviceExtensions");

                    var method = callType.GetMethod("GetConnection", BindingFlags.Static | BindingFlags.Public);

                    ConnectionState connection = (ConnectionState)method.Invoke(null, new object[] { deckDevice });



                    deckDevice.CurrentFolder = folder;


                    //This is a local fuction. Don't be scared, because this can happen.
                    void fakeFolderHandle(object s, ButtonInteractionEventArgs e)
                    {
                        if (deckDevice.CurrentFolder != folder)
                        {
                            return;
                        }
                        if (e.PerformedAction != Networking.Implementation.ButtonInteractPacket.ButtonAction.ButtonUp)
                        {
                            return;
                        }
                        if (deckDevice.CurrentFolder.GetDeckItems().Any(c => deckDevice.CurrentFolder.GetItemIndex(c) == e.SlotID))
                        {
                            var item = deckDevice.CurrentFolder.GetDeckItems().Where(c => deckDevice.CurrentFolder.GetItemIndex(c) == e.SlotID);
                            if (item is IDeckItem && e.SlotID == 1)
                            {
                                deckDevice.CurrentFolder = folder.ParentFolder;
                                SendFolder(connection, folder.ParentFolder);
                                deckDevice.ButtonInteraction -= fakeFolderHandle;
                                return;
                            }
                            if (e.SlotID - 1 <= scenes.Count)
                            {
                                if (scenes.AsEnumerable().ElementAtOrDefault(e.SlotID - 1) != null)
                                {
                                    OBSUtils.SwitchScene(scenes[e.SlotID - 1]);
                                }
                            }
                            else
                            {
                                if (scenes.AsEnumerable().ElementAtOrDefault((e.SlotID - 1) - scenes.Count) != null)
                                {
                                    OBSUtils.SwitchPreviewScene(scenes[(e.SlotID - 1) - scenes.Count]);
                                }
                            }
                        }
                    }

                    deckDevice.ButtonInteraction += fakeFolderHandle;

                    SendFolder(connection, folder);


#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body
                } catch (Exception) {
#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body
                    //Don't trow. Just flow.
                }
            });

            th.Start();
        }