Convert some more toolhelper methods to extensions

This commit is contained in:
adelikat 2014-07-28 02:10:31 +00:00
parent 3bbe3990ed
commit c988466942
6 changed files with 65 additions and 58 deletions

View File

@ -34,6 +34,24 @@ namespace BizHawk.Client.EmuHawk.WinFormExtensions
{ {
control.Invoke(action); control.Invoke(action);
} }
public static void AddColumn(this ListView listView, string columnName, bool enabled, int columnWidth)
{
if (enabled)
{
if (listView.Columns[columnName] == null)
{
var column = new ColumnHeader
{
Name = columnName,
Text = columnName.Replace("Column", string.Empty),
Width = columnWidth,
};
listView.Columns.Add(column);
}
}
}
} }
public static class FormExtensions public static class FormExtensions

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Windows.Forms; using System.Windows.Forms;
using System.Linq; using System.Linq;
using BizHawk.Emulation.Common;
using BizHawk.Client.Common; using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk.ToolExtensions namespace BizHawk.Client.EmuHawk.ToolExtensions
@ -69,5 +70,22 @@ namespace BizHawk.Client.EmuHawk.ToolExtensions
{ {
Global.CheatList.RemoveRange(watches.Where(watch => !watch.IsSeparator)); Global.CheatList.RemoveRange(watches.Where(watch => !watch.IsSeparator));
} }
public static IEnumerable<ToolStripItem> MenuItems(this MemoryDomainList domains, Action<string> setCallback, string selected = "", int? maxSize = null)
{
foreach (var domain in domains)
{
var name = domain.Name;
var item = new ToolStripMenuItem
{
Text = name,
Enabled = !(maxSize.HasValue && domain.Size > maxSize.Value),
Checked = name == selected
};
item.Click += (o, ev) => setCallback(name);
yield return item;
}
}
} }
} }

View File

@ -9,7 +9,9 @@ using System.Windows.Forms;
using BizHawk.Client.Common; using BizHawk.Client.Common;
using BizHawk.Emulation.Cores.Nintendo.SNES; using BizHawk.Emulation.Cores.Nintendo.SNES;
using BizHawk.Emulation.Cores.Sega.Genesis; using BizHawk.Emulation.Cores.Sega.Genesis;
using BizHawk.Client.EmuHawk.ToolExtensions; using BizHawk.Client.EmuHawk.ToolExtensions;
using BizHawk.Client.EmuHawk.WinFormExtensions;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
{ {
@ -235,15 +237,15 @@ namespace BizHawk.Client.EmuHawk
private void LoadColumnInfo() private void LoadColumnInfo()
{ {
CheatListView.Columns.Clear(); CheatListView.Columns.Clear();
ToolHelpers.AddColumn(CheatListView, NAME, Global.Config.CheatsColumnShow[NAME], GetColumnWidth(NAME)); CheatListView.AddColumn(NAME, Global.Config.CheatsColumnShow[NAME], GetColumnWidth(NAME));
ToolHelpers.AddColumn(CheatListView, ADDRESS, Global.Config.CheatsColumnShow[ADDRESS], GetColumnWidth(ADDRESS)); CheatListView.AddColumn(ADDRESS, Global.Config.CheatsColumnShow[ADDRESS], GetColumnWidth(ADDRESS));
ToolHelpers.AddColumn(CheatListView, VALUE, Global.Config.CheatsColumnShow[VALUE], GetColumnWidth(VALUE)); CheatListView.AddColumn(VALUE, Global.Config.CheatsColumnShow[VALUE], GetColumnWidth(VALUE));
ToolHelpers.AddColumn(CheatListView, COMPARE, Global.Config.CheatsColumnShow[COMPARE], GetColumnWidth(COMPARE)); CheatListView.AddColumn(COMPARE, Global.Config.CheatsColumnShow[COMPARE], GetColumnWidth(COMPARE));
ToolHelpers.AddColumn(CheatListView, ON, Global.Config.CheatsColumnShow[ON], GetColumnWidth(ON)); CheatListView.AddColumn(ON, Global.Config.CheatsColumnShow[ON], GetColumnWidth(ON));
ToolHelpers.AddColumn(CheatListView, DOMAIN, Global.Config.CheatsColumnShow[DOMAIN], GetColumnWidth(DOMAIN)); CheatListView.AddColumn(DOMAIN, Global.Config.CheatsColumnShow[DOMAIN], GetColumnWidth(DOMAIN));
ToolHelpers.AddColumn(CheatListView, SIZE, Global.Config.CheatsColumnShow[SIZE], GetColumnWidth(SIZE)); CheatListView.AddColumn(SIZE, Global.Config.CheatsColumnShow[SIZE], GetColumnWidth(SIZE));
ToolHelpers.AddColumn(CheatListView, ENDIAN, Global.Config.CheatsColumnShow[ENDIAN], GetColumnWidth(ENDIAN)); CheatListView.AddColumn(ENDIAN, Global.Config.CheatsColumnShow[ENDIAN], GetColumnWidth(ENDIAN));
ToolHelpers.AddColumn(CheatListView, TYPE, Global.Config.CheatsColumnShow[TYPE], GetColumnWidth(TYPE)); CheatListView.AddColumn(TYPE, Global.Config.CheatsColumnShow[TYPE], GetColumnWidth(TYPE));
ColumnPositions(); ColumnPositions();
} }

View File

@ -205,23 +205,6 @@ namespace BizHawk.Client.EmuHawk
return new FileInfo(sfd.FileName); return new FileInfo(sfd.FileName);
} }
public static IEnumerable<ToolStripItem> GenerateMemoryDomainMenuItems(Action<string> setCallback, string selectedDomain = "", int? maxSize = null)
{
var items = new List<ToolStripMenuItem>();
foreach (var domain in Global.Emulator.MemoryDomains)
{
var name = domain.Name;
var item = new ToolStripMenuItem { Text = name };
item.Click += (o, ev) => setCallback(name);
item.Checked = name == selectedDomain;
item.Enabled = !(maxSize.HasValue && domain.Size > maxSize.Value);
items.Add(item);
}
return items;
}
public static void PopulateMemoryDomainDropdown(ref ComboBox dropdown, MemoryDomain startDomain) public static void PopulateMemoryDomainDropdown(ref ComboBox dropdown, MemoryDomain startDomain)
{ {
dropdown.Items.Clear(); dropdown.Items.Clear();
@ -257,23 +240,5 @@ namespace BizHawk.Client.EmuHawk
GlobalWin.Tools.Load<HexEditor>(); GlobalWin.Tools.Load<HexEditor>();
GlobalWin.Tools.HexEditor.SetToAddresses(addresses, domain, size); GlobalWin.Tools.HexEditor.SetToAddresses(addresses, domain, size);
} }
public static void AddColumn(ListView listView, string columnName, bool enabled, int columnWidth)
{
if (enabled)
{
if (listView.Columns[columnName] == null)
{
var column = new ColumnHeader
{
Name = columnName,
Text = columnName.Replace("Column", string.Empty),
Width = columnWidth,
};
listView.Columns.Add(column);
}
}
}
} }
} }

View File

@ -586,11 +586,11 @@ namespace BizHawk.Client.EmuHawk
private void LoadColumnInfo() private void LoadColumnInfo()
{ {
WatchListView.Columns.Clear(); WatchListView.Columns.Clear();
ToolHelpers.AddColumn(WatchListView, WatchList.ADDRESS, true, GetColumnWidth(WatchList.ADDRESS)); WatchListView.AddColumn(WatchList.ADDRESS, true, GetColumnWidth(WatchList.ADDRESS));
ToolHelpers.AddColumn(WatchListView, WatchList.VALUE, true, GetColumnWidth(WatchList.VALUE)); WatchListView.AddColumn(WatchList.VALUE, true, GetColumnWidth(WatchList.VALUE));
ToolHelpers.AddColumn(WatchListView, WatchList.PREV, Global.Config.RamSearchShowPrevColumn, GetColumnWidth(WatchList.PREV)); WatchListView.AddColumn(WatchList.PREV, Global.Config.RamSearchShowPrevColumn, GetColumnWidth(WatchList.PREV));
ToolHelpers.AddColumn(WatchListView, WatchList.CHANGES, Global.Config.RamSearchShowChangeColumn, GetColumnWidth(WatchList.CHANGES)); WatchListView.AddColumn(WatchList.CHANGES, Global.Config.RamSearchShowChangeColumn, GetColumnWidth(WatchList.CHANGES));
ToolHelpers.AddColumn(WatchListView, WatchList.DIFF, Global.Config.RamSearchShowDiffColumn, GetColumnWidth(WatchList.DIFF)); WatchListView.AddColumn(WatchList.DIFF, Global.Config.RamSearchShowDiffColumn, GetColumnWidth(WatchList.DIFF));
ColumnPositions(); ColumnPositions();
} }
@ -1045,7 +1045,9 @@ namespace BizHawk.Client.EmuHawk
private void MemoryDomainsSubMenu_DropDownOpened(object sender, EventArgs e) private void MemoryDomainsSubMenu_DropDownOpened(object sender, EventArgs e)
{ {
MemoryDomainsSubMenu.DropDownItems.Clear(); MemoryDomainsSubMenu.DropDownItems.Clear();
MemoryDomainsSubMenu.DropDownItems.AddRange(ToolHelpers.GenerateMemoryDomainMenuItems(SetMemoryDomain, _searches.Domain.Name, MaxSupportedSize).ToArray()); MemoryDomainsSubMenu.DropDownItems.AddRange(
Global.Emulator.MemoryDomains.MenuItems(SetMemoryDomain, _searches.Domain.Name, MaxSupportedSize)
.ToArray());
} }
private void SizeSubMenu_DropDownOpened(object sender, EventArgs e) private void SizeSubMenu_DropDownOpened(object sender, EventArgs e)

View File

@ -404,13 +404,13 @@ namespace BizHawk.Client.EmuHawk
private void LoadColumnInfo() private void LoadColumnInfo()
{ {
WatchListView.Columns.Clear(); WatchListView.Columns.Clear();
ToolHelpers.AddColumn(WatchListView, WatchList.ADDRESS, Global.Config.RamWatchShowAddressColumn, GetColumnWidth(WatchList.ADDRESS)); WatchListView.AddColumn(WatchList.ADDRESS, Global.Config.RamWatchShowAddressColumn, GetColumnWidth(WatchList.ADDRESS));
ToolHelpers.AddColumn(WatchListView, WatchList.VALUE, true, GetColumnWidth(WatchList.VALUE)); WatchListView.AddColumn(WatchList.VALUE, true, GetColumnWidth(WatchList.VALUE));
ToolHelpers.AddColumn(WatchListView, WatchList.PREV, Global.Config.RamWatchShowPrevColumn, GetColumnWidth(WatchList.PREV)); WatchListView.AddColumn(WatchList.PREV, Global.Config.RamWatchShowPrevColumn, GetColumnWidth(WatchList.PREV));
ToolHelpers.AddColumn(WatchListView, WatchList.CHANGES, Global.Config.RamWatchShowChangeColumn, GetColumnWidth(WatchList.CHANGES)); WatchListView.AddColumn(WatchList.CHANGES, Global.Config.RamWatchShowChangeColumn, GetColumnWidth(WatchList.CHANGES));
ToolHelpers.AddColumn(WatchListView, WatchList.DIFF, Global.Config.RamWatchShowDiffColumn, GetColumnWidth(WatchList.DIFF)); WatchListView.AddColumn(WatchList.DIFF, Global.Config.RamWatchShowDiffColumn, GetColumnWidth(WatchList.DIFF));
ToolHelpers.AddColumn(WatchListView, WatchList.DOMAIN, Global.Config.RamWatchShowDomainColumn, GetColumnWidth(WatchList.DOMAIN)); WatchListView.AddColumn(WatchList.DOMAIN, Global.Config.RamWatchShowDomainColumn, GetColumnWidth(WatchList.DOMAIN));
ToolHelpers.AddColumn(WatchListView, WatchList.NOTES, true, GetColumnWidth(WatchList.NOTES)); WatchListView.AddColumn(WatchList.NOTES, true, GetColumnWidth(WatchList.NOTES));
ColumnPositions(); ColumnPositions();
} }
@ -714,7 +714,9 @@ namespace BizHawk.Client.EmuHawk
private void MemoryDomainsSubMenu_DropDownOpened(object sender, EventArgs e) private void MemoryDomainsSubMenu_DropDownOpened(object sender, EventArgs e)
{ {
MemoryDomainsSubMenu.DropDownItems.Clear(); MemoryDomainsSubMenu.DropDownItems.Clear();
MemoryDomainsSubMenu.DropDownItems.AddRange(ToolHelpers.GenerateMemoryDomainMenuItems(SetMemoryDomain, _watches.Domain.Name).ToArray()); MemoryDomainsSubMenu.DropDownItems.AddRange(
Global.Emulator.MemoryDomains.MenuItems(SetMemoryDomain, _watches.Domain.Name)
.ToArray());
} }
private void NewWatchMenuItem_Click(object sender, EventArgs e) private void NewWatchMenuItem_Click(object sender, EventArgs e)