1 using Mesen.GUI.Config; 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Windows.Forms; 8 9 namespace Mesen.GUI.Controls 10 { 11 public class ctrlMesenToolStrip : ToolStrip 12 { 13 private const int WM_MOUSEACTIVATE = 0x21; WndProc(ref Message m)14 protected override void WndProc(ref Message m) 15 { 16 if(m.Msg == WM_MOUSEACTIVATE && this.CanFocus && !this.Focused) { 17 this.FindForm()?.Focus(); 18 } 19 base.WndProc(ref m); 20 } 21 AddItemToToolbar(ToolStripMenuItem item, string caption = null)22 public void AddItemToToolbar(ToolStripMenuItem item, string caption = null) 23 { 24 if(item == null) { 25 this.Items.Add("-"); 26 } else { 27 ToolStripItem newItem = item.HasDropDownItems ? (ToolStripItem)new ToolStripDropDownButton(item.Text, item.Image) : (ToolStripItem)new ToolStripButton(item.Image); 28 if(item.Image == null) { 29 newItem.Text = item.Text; 30 } 31 newItem.ToolTipText = (caption ?? item.Text) + (item.ShortcutKeys != Keys.None ? $" ({DebuggerShortcutsConfig.GetShortcutDisplay(item.ShortcutKeys)})" : ""); 32 newItem.Click += (s, e) => item.PerformClick(); 33 if(newItem is ToolStripButton) { 34 ((ToolStripButton)newItem).Checked = item.Checked; 35 item.CheckedChanged += (s, e) => ((ToolStripButton)newItem).Checked = item.Checked; 36 } 37 newItem.Enabled = item.Enabled; 38 newItem.MouseEnter += (s, e) => newItem.ToolTipText = (caption ?? item.Text) + (item.ShortcutKeys != Keys.None ? $" ({DebuggerShortcutsConfig.GetShortcutDisplay(item.ShortcutKeys)})" : ""); 39 item.EnabledChanged += (s, e) => newItem.Enabled = item.Enabled; 40 item.VisibleChanged += (s, e) => newItem.Visible = item.Visible; 41 42 if(item.HasDropDownItems) { 43 foreach(ToolStripItem ddItem in item.DropDownItems) { 44 ToolStripItem newDdItem = ((ToolStripDropDownButton)newItem).DropDownItems.Add(ddItem.Text, ddItem.Image); 45 newDdItem.Click += (s, e) => ddItem.PerformClick(); 46 } 47 } 48 49 this.Items.Add(newItem); 50 } 51 } 52 AddItemsToToolbar(params ToolStripMenuItem[] items)53 public void AddItemsToToolbar(params ToolStripMenuItem[] items) 54 { 55 foreach(ToolStripMenuItem item in items) { 56 AddItemToToolbar(item); 57 } 58 } 59 } 60 } 61