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()); } } } }
public static void RemoveHotKey(DynamicDeckFolder folder) { if (folder != null) { HotkeyManager.Current.Remove(folder.UniqueID); } }
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 }
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); }
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(); } }
public DeckFolderEventDelete(DynamicDeckFolder folder) { this._folder = folder; }
public DeckFolderEventCreate(DynamicDeckFolder folder) { this._folder = folder; }
public ActionsFolderButtons(DynamicDeckFolder folder) { FolderPrincipal = folder; }
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(); }