Mesen-SX/UI/Controls/ctrlMesenToolStrip.cs
2019-03-30 23:17:10 -04:00

60 lines
2.1 KiB
C#

using Mesen.GUI.Config;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mesen.GUI.Controls
{
public class ctrlMesenToolStrip : ToolStrip
{
private const int WM_MOUSEACTIVATE = 0x21;
protected override void WndProc(ref Message m)
{
if(m.Msg == WM_MOUSEACTIVATE && this.CanFocus && !this.Focused) {
this.FindForm()?.Focus();
}
base.WndProc(ref m);
}
public void AddItemToToolbar(ToolStripMenuItem item, string caption = null)
{
if(item == null) {
this.Items.Add("-");
} else {
ToolStripItem newItem = item.HasDropDownItems ? (ToolStripItem)new ToolStripDropDownButton(item.Text, item.Image) : (ToolStripItem)new ToolStripButton(item.Image);
if(item.Image == null) {
newItem.Text = item.Text;
}
newItem.ToolTipText = (caption ?? item.Text) + (item.ShortcutKeys != Keys.None ? $" ({DebuggerShortcutsConfig.GetShortcutDisplay(item.ShortcutKeys)})" : "");
newItem.Click += (s, e) => item.PerformClick();
if(newItem is ToolStripButton) {
((ToolStripButton)newItem).Checked = item.Checked;
item.CheckedChanged += (s, e) => ((ToolStripButton)newItem).Checked = item.Checked;
}
newItem.Enabled = item.Enabled;
newItem.MouseEnter += (s, e) => newItem.ToolTipText = (caption ?? item.Text) + (item.ShortcutKeys != Keys.None ? $" ({DebuggerShortcutsConfig.GetShortcutDisplay(item.ShortcutKeys)})" : "");
item.EnabledChanged += (s, e) => newItem.Enabled = item.Enabled;
item.VisibleChanged += (s, e) => newItem.Visible = item.Visible;
if(item.HasDropDownItems) {
foreach(ToolStripItem ddItem in item.DropDownItems) {
ToolStripItem newDdItem = ((ToolStripDropDownButton)newItem).DropDownItems.Add(ddItem.Text, ddItem.Image);
newDdItem.Click += (s, e) => ddItem.PerformClick();
}
}
this.Items.Add(newItem);
}
}
public void AddItemsToToolbar(params ToolStripMenuItem[] items)
{
foreach(ToolStripMenuItem item in items) {
AddItemToToolbar(item);
}
}
}
}