2019-02-12 22:13:09 -05:00
|
|
|
|
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;
|
|
|
|
|
}
|
2019-03-30 23:17:10 -04:00
|
|
|
|
newItem.ToolTipText = (caption ?? item.Text) + (item.ShortcutKeys != Keys.None ? $" ({DebuggerShortcutsConfig.GetShortcutDisplay(item.ShortcutKeys)})" : "");
|
2019-02-12 22:13:09 -05:00
|
|
|
|
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;
|
2019-03-30 23:17:10 -04:00
|
|
|
|
newItem.MouseEnter += (s, e) => newItem.ToolTipText = (caption ?? item.Text) + (item.ShortcutKeys != Keys.None ? $" ({DebuggerShortcutsConfig.GetShortcutDisplay(item.ShortcutKeys)})" : "");
|
2019-02-12 22:13:09 -05:00
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|