diff --git a/BizHawk.MultiClient/RecentFiles.cs b/BizHawk.MultiClient/RecentFiles.cs index b760cc0646..95fba4be0a 100644 --- a/BizHawk.MultiClient/RecentFiles.cs +++ b/BizHawk.MultiClient/RecentFiles.cs @@ -1,9 +1,12 @@ -using System.Collections.Generic; +using System; +using System.Collections; +using System.Collections.Generic; using System.Linq; +using System.Windows.Forms; namespace BizHawk.MultiClient { - public class RecentFiles + public class RecentFiles : IEnumerable { private readonly int MAX_RECENT_FILES; //Maximum number of files private readonly List recentlist; //List of recent files @@ -15,6 +18,16 @@ namespace BizHawk.MultiClient MAX_RECENT_FILES = max; } + public IEnumerator GetEnumerator() + { + return recentlist.GetEnumerator(); + } + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + public void Clear() { recentlist.Clear(); @@ -80,5 +93,38 @@ namespace BizHawk.MultiClient } } } + + public static void GenerateRecentMenu(ToolStripMenuItem menu, RecentFiles recent, Action loadFileCallback, bool? autoloadConfigVar = null, Action autoloadCallback = null) + { + menu.DropDownItems.Clear(); + + if (recent.Empty) + { + var none = new ToolStripMenuItem { Enabled = false, Text = "None" }; + menu.DropDownItems.Add(none); + } + else + { + foreach (string filename in recent) + { + var item = new ToolStripMenuItem { Text = filename }; + item.Click += (o, ev) => loadFileCallback(filename); + menu.DropDownItems.Add(item); + } + } + + menu.DropDownItems.Add("-"); + + var clearitem = new ToolStripMenuItem { Text = "&Clear" }; + clearitem.Click += (o, ev) => recent.Clear(); + menu.DropDownItems.Add(clearitem); + + if (autoloadConfigVar.HasValue) + { + var auto = new ToolStripMenuItem { Text = "&Auto-Load", Checked = autoloadConfigVar.Value }; + auto.Click += (o, ev) => autoloadCallback(); + menu.DropDownItems.Add(auto); + } + } } } diff --git a/BizHawk.MultiClient/tools/NewRamWatch.Designer.cs b/BizHawk.MultiClient/tools/NewRamWatch.Designer.cs index 7dbebc1152..108cf51c86 100644 --- a/BizHawk.MultiClient/tools/NewRamWatch.Designer.cs +++ b/BizHawk.MultiClient/tools/NewRamWatch.Designer.cs @@ -56,9 +56,6 @@ this.appendFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.recentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.noneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.autoLoadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.watchesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -368,39 +365,19 @@ // recentToolStripMenuItem // this.recentToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.noneToolStripMenuItem, - this.toolStripSeparator4, - this.clearToolStripMenuItem, - this.autoLoadToolStripMenuItem}); - this.recentToolStripMenuItem.Enabled = false; + this.noneToolStripMenuItem}); this.recentToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Recent; this.recentToolStripMenuItem.Name = "recentToolStripMenuItem"; this.recentToolStripMenuItem.Size = new System.Drawing.Size(195, 22); this.recentToolStripMenuItem.Text = "Recent"; + this.recentToolStripMenuItem.DropDownOpened += new System.EventHandler(this.recentToolStripMenuItem_DropDownOpened); // // noneToolStripMenuItem // this.noneToolStripMenuItem.Name = "noneToolStripMenuItem"; - this.noneToolStripMenuItem.Size = new System.Drawing.Size(131, 22); + this.noneToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.noneToolStripMenuItem.Text = "None"; // - // toolStripSeparator4 - // - this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(128, 6); - // - // clearToolStripMenuItem - // - this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; - this.clearToolStripMenuItem.Size = new System.Drawing.Size(131, 22); - this.clearToolStripMenuItem.Text = "Clear"; - // - // autoLoadToolStripMenuItem - // - this.autoLoadToolStripMenuItem.Name = "autoLoadToolStripMenuItem"; - this.autoLoadToolStripMenuItem.Size = new System.Drawing.Size(131, 22); - this.autoLoadToolStripMenuItem.Text = "Auto-Load"; - // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; @@ -769,10 +746,7 @@ private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem appendFileToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem recentToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem noneToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; - private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem autoLoadToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem noneToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem watchesToolStripMenuItem; diff --git a/BizHawk.MultiClient/tools/NewRamWatch.cs b/BizHawk.MultiClient/tools/NewRamWatch.cs index 7e3e2f0548..44a6d03b82 100644 --- a/BizHawk.MultiClient/tools/NewRamWatch.cs +++ b/BizHawk.MultiClient/tools/NewRamWatch.cs @@ -318,6 +318,16 @@ namespace BizHawk.MultiClient } } + private void UpdateAutoLoadRamWatch() + { + Global.Config.AutoLoadRamWatch ^= true; + } + + private void recentToolStripMenuItem_DropDownOpened(object sender, EventArgs e) + { + RecentFiles.GenerateRecentMenu(recentToolStripMenuItem, Global.Config.RecentWatches, LoadWatchFromRecent, Global.Config.AutoLoadRamWatch, UpdateAutoLoadRamWatch); + } + private void exitToolStripMenuItem_Click(object sender, EventArgs e) { if (!AskSave())