New Ram Watch - recent menu, RecentFiles - add a GenerateRecentMenu method, still todo: refactor dialogs to use this instead of doing the same code in a bunch of places

This commit is contained in:
adelikat 2013-09-06 22:06:44 +00:00
parent 195b002ec1
commit 5210da36b0
3 changed files with 62 additions and 32 deletions

View File

@ -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<string> recentlist; //List of recent files
@ -15,6 +18,16 @@ namespace BizHawk.MultiClient
MAX_RECENT_FILES = max;
}
public IEnumerator<string> 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<string> 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);
}
}
}
}

View File

@ -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;

View File

@ -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())