create a ToolDialogSettings object and refactor Ram Search to use it as a proof of concept

This commit is contained in:
adelikat 2014-01-30 00:55:31 +00:00
parent ba163b5c08
commit 53fa1a566a
4 changed files with 134 additions and 86 deletions

View File

@ -101,6 +101,7 @@
<Compile Include="config\Config.cs" /> <Compile Include="config\Config.cs" />
<Compile Include="config\ConfigService.cs" /> <Compile Include="config\ConfigService.cs" />
<Compile Include="config\PathEntry.cs" /> <Compile Include="config\PathEntry.cs" />
<Compile Include="config\ToolDialogSettings.cs" />
<Compile Include="ControllerBinding.cs" /> <Compile Include="ControllerBinding.cs" />
<Compile Include="CoreFileProvider.cs" /> <Compile Include="CoreFileProvider.cs" />
<Compile Include="FirmwareManager.cs" /> <Compile Include="FirmwareManager.cs" />

View File

@ -1,8 +1,8 @@
using System; using System;
using System.Drawing;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Nintendo.Gameboy;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
{ {
@ -17,7 +17,7 @@ namespace BizHawk.Client.Common
{ {
if (AllTrollers.Count == 0 && AllTrollersAutoFire.Count == 0 && AllTrollersAnalog.Count == 0) if (AllTrollers.Count == 0 && AllTrollersAutoFire.Count == 0 && AllTrollersAnalog.Count == 0)
{ {
ControlDefaults cd = ConfigService.Load<ControlDefaults>(ControlDefaultPath); var cd = ConfigService.Load<ControlDefaults>(ControlDefaultPath);
AllTrollers = cd.AllTrollers; AllTrollers = cd.AllTrollers;
AllTrollersAutoFire = cd.AllTrollersAutoFire; AllTrollersAutoFire = cd.AllTrollersAutoFire;
AllTrollersAnalog = cd.AllTrollersAnalog; AllTrollersAnalog = cd.AllTrollersAnalog;
@ -35,12 +35,12 @@ namespace BizHawk.Client.Common
HotkeyBindings.ResolveWithDefaults(); HotkeyBindings.ResolveWithDefaults();
} }
//Path Settings ************************************/ // Path Settings ************************************/
public bool UseRecentForROMs = false; public bool UseRecentForROMs = false;
public string LastRomPath = "."; public string LastRomPath = ".";
public PathEntryCollection PathEntries = new PathEntryCollection(); public PathEntryCollection PathEntries = new PathEntryCollection();
//BIOS Paths // BIOS Paths
public Dictionary<string, string> FirmwareUserSpecifications = new Dictionary<string, string>(); //key: sysid+firmwareId; value: absolute path public Dictionary<string, string> FirmwareUserSpecifications = new Dictionary<string, string>(); //key: sysid+firmwareId; value: absolute path
public string FFMpegPath = "%exe%/dll/ffmpeg.exe"; public string FFMpegPath = "%exe%/dll/ffmpeg.exe";
@ -85,7 +85,7 @@ namespace BizHawk.Client.Common
public SaveStateTypeE SaveStateType = SaveStateTypeE.Default; public SaveStateTypeE SaveStateType = SaveStateTypeE.Default;
// Run-Control settings // Run-Control settings
public int FrameProgressDelayMs = 500; //how long until a frame advance hold turns into a frame progress? public int FrameProgressDelayMs = 500; // how long until a frame advance hold turns into a frame progress?
public int FrameSkip = 4; public int FrameSkip = 4;
public int SpeedPercent = 100; public int SpeedPercent = 100;
public int SpeedPercentAlternate = 400; public int SpeedPercentAlternate = 400;
@ -93,7 +93,7 @@ namespace BizHawk.Client.Common
public bool AutoMinimizeSkipping = true; public bool AutoMinimizeSkipping = true;
public bool VSyncThrottle = false; public bool VSyncThrottle = false;
//Rewind settings // Rewind settings
public bool Rewind_UseDelta = true; public bool Rewind_UseDelta = true;
public bool RewindEnabledSmall = true; public bool RewindEnabledSmall = true;
public bool RewindEnabledMedium = false; public bool RewindEnabledMedium = false;
@ -172,7 +172,7 @@ namespace BizHawk.Client.Common
public RecentFiles RecentLuaSession = new RecentFiles(8); public RecentFiles RecentLuaSession = new RecentFiles(8);
public bool AutoLoadLuaConsole = false; public bool AutoLoadLuaConsole = false;
public bool LuaConsoleSaveWindowPosition = true; public bool LuaConsoleSaveWindowPosition = true;
public int LuaConsoleWndx = -1; //Negative numbers will be ignored even with save window position set public int LuaConsoleWndx = -1; // Negative numbers will be ignored even with save window position set
public int LuaConsoleWndy = -1; public int LuaConsoleWndy = -1;
public int LuaConsoleWidth = -1; public int LuaConsoleWidth = -1;
public int LuaConsoleHeight = -1; public int LuaConsoleHeight = -1;
@ -182,7 +182,7 @@ namespace BizHawk.Client.Common
public RecentFiles RecentWatches = new RecentFiles(8); public RecentFiles RecentWatches = new RecentFiles(8);
public bool RamWatchSaveWindowPosition = true; public bool RamWatchSaveWindowPosition = true;
public bool RamWatchAlwaysOnTop = false; public bool RamWatchAlwaysOnTop = false;
public int RamWatchWndx = -1; //Negative numbers will be ignored even with save window position set public int RamWatchWndx = -1; // Negative numbers will be ignored even with save window position set
public int RamWatchWndy = -1; public int RamWatchWndy = -1;
public int RamWatchWidth = -1; public int RamWatchWidth = -1;
public int RamWatchHeight = -1; public int RamWatchHeight = -1;
@ -216,13 +216,9 @@ namespace BizHawk.Client.Common
public Watch.PreviousType RamWatchDefinePrevious = Watch.PreviousType.LastFrame; public Watch.PreviousType RamWatchDefinePrevious = Watch.PreviousType.LastFrame;
// RamSearch Settings // RamSearch Settings
public ToolDialogSettings RamSearchSettings = new ToolDialogSettings();
public int RamSearchPrev_Type = 1; public int RamSearchPrev_Type = 1;
public bool RamSearchSaveWindowPosition = true;
public RecentFiles RecentSearches = new RecentFiles(8); public RecentFiles RecentSearches = new RecentFiles(8);
public int RamSearchWndx = -1; //Negative numbers will be ignored even with save window position set
public int RamSearchWndy = -1;
public int RamSearchWidth = -1; //Negative numbers will be ignored
public int RamSearchHeight = -1;
public int RamSearchPreviousAs = 0; public int RamSearchPreviousAs = 0;
public bool RamSearchPreviewMode = true; public bool RamSearchPreviewMode = true;
public bool RamSearchAlwaysExcludeRamWatch = false; public bool RamSearchAlwaysExcludeRamWatch = false;
@ -235,8 +231,14 @@ namespace BizHawk.Client.Common
public int RamSearchPrevIndex = 2; public int RamSearchPrevIndex = 2;
public int RamSearchChangesIndex = 3; public int RamSearchChangesIndex = 3;
public bool RamSearchFastMode = false; public bool RamSearchFastMode = false;
public bool RamSearchAlwaysOnTop = false;
public bool RamSearchFloatingWindow = true; //default to the old behaviour // public bool RamSearchSaveWindowPosition = true;
// public int RamSearchWndx = -1; // Negative numbers will be ignored even with save window position set
// public int RamSearchWndy = -1;
// public int RamSearchWidth = -1; // Negative numbers will be ignored
// public int RamSearchHeight = -1;
// public bool RamSearchAlwaysOnTop = false;
// public bool RamSearchFloatingWindow = true; // default to the old behaviour
public Dictionary<string, int> RamSearchColumnWidths = new Dictionary<string, int> public Dictionary<string, int> RamSearchColumnWidths = new Dictionary<string, int>
{ {
@ -264,14 +266,14 @@ namespace BizHawk.Client.Common
public bool AutoLoadHexEditor = false; public bool AutoLoadHexEditor = false;
public bool HexEditorSaveWindowPosition = true; public bool HexEditorSaveWindowPosition = true;
public bool HexEditorAlwaysOnTop = false; public bool HexEditorAlwaysOnTop = false;
public int HexEditorWndx = -1; //Negative numbers will be ignored even with save window position set public int HexEditorWndx = -1; // Negative numbers will be ignored even with save window position set
public int HexEditorWndy = -1; public int HexEditorWndy = -1;
public int HexEditorWidth = -1; public int HexEditorWidth = -1;
public int HexEditorHeight = -1; public int HexEditorHeight = -1;
public bool HexEditorBigEndian = false; public bool HexEditorBigEndian = false;
public int HexEditorDataSize = 1; public int HexEditorDataSize = 1;
//Hex Editor Colors // Hex Editor Colors
public Color HexBackgrndColor = Color.FromName("Control"); public Color HexBackgrndColor = Color.FromName("Control");
public Color HexForegrndColor = Color.FromName("ControlText"); public Color HexForegrndColor = Color.FromName("ControlText");
public Color HexMenubarColor = Color.FromName("Control"); public Color HexMenubarColor = Color.FromName("Control");
@ -279,7 +281,7 @@ namespace BizHawk.Client.Common
public Color HexHighlightColor = Color.Pink; public Color HexHighlightColor = Color.Pink;
public Color HexHighlightFreezeColor = Color.Violet; public Color HexHighlightFreezeColor = Color.Violet;
//Trace Logger Settings // Trace Logger Settings
public bool TraceLoggerAutoLoad = false; public bool TraceLoggerAutoLoad = false;
public bool TraceLoggerSaveWindowPosition = true; public bool TraceLoggerSaveWindowPosition = true;
public bool TraceLoggerOnTop = false; public bool TraceLoggerOnTop = false;
@ -309,46 +311,61 @@ namespace BizHawk.Client.Common
{ {
return GetCoreSettings(typeof(T)); return GetCoreSettings(typeof(T));
} }
public object GetCoreSettings(Type t) public object GetCoreSettings(Type t)
{ {
object ret; object ret;
CoreSettings.TryGetValue(t.ToString(), out ret); CoreSettings.TryGetValue(t.ToString(), out ret);
return ret; return ret;
} }
public void PutCoreSettings<T>(object o) public void PutCoreSettings<T>(object o)
where T : IEmulator where T : IEmulator
{ {
PutCoreSettings(o, typeof(T)); PutCoreSettings(o, typeof(T));
} }
public void PutCoreSettings(object o, Type t) public void PutCoreSettings(object o, Type t)
{ {
if (o != null) if (o != null)
{
CoreSettings[t.ToString()] = o; CoreSettings[t.ToString()] = o;
}
else else
{
CoreSettings.Remove(t.ToString()); CoreSettings.Remove(t.ToString());
}
} }
public object GetCoreSyncSettings<T>() public object GetCoreSyncSettings<T>()
where T : IEmulator where T : IEmulator
{ {
return GetCoreSyncSettings(typeof(T)); return GetCoreSyncSettings(typeof(T));
} }
public object GetCoreSyncSettings(Type t) public object GetCoreSyncSettings(Type t)
{ {
object ret; object ret;
CoreSyncSettings.TryGetValue(t.ToString(), out ret); CoreSyncSettings.TryGetValue(t.ToString(), out ret);
return ret; return ret;
} }
public void PutCoreSyncSettings<T>(object o) public void PutCoreSyncSettings<T>(object o)
where T : IEmulator where T : IEmulator
{ {
PutCoreSyncSettings(o, typeof(T)); PutCoreSyncSettings(o, typeof(T));
} }
public void PutCoreSyncSettings(object o, Type t) public void PutCoreSyncSettings(object o, Type t)
{ {
if (o != null) if (o != null)
{
CoreSyncSettings[t.ToString()] = o; CoreSyncSettings[t.ToString()] = o;
}
else else
{
CoreSyncSettings.Remove(t.ToString()); CoreSyncSettings.Remove(t.ToString());
}
} }
#endregion #endregion
@ -511,7 +528,7 @@ namespace BizHawk.Client.Common
public int GENGGWndx = -1; public int GENGGWndx = -1;
public int GENGGWndy = -1; public int GENGGWndy = -1;
//Movie Settings // Movie Settings
public RecentFiles RecentMovies = new RecentFiles(8); public RecentFiles RecentMovies = new RecentFiles(8);
public string DefaultAuthor = "default user"; public string DefaultAuthor = "default user";
public bool UseDefaultAuthor = true; public bool UseDefaultAuthor = true;
@ -533,7 +550,7 @@ namespace BizHawk.Client.Common
public BindingCollection HotkeyBindings = new BindingCollection(); public BindingCollection HotkeyBindings = new BindingCollection();
//Analog Hotkey values // Analog Hotkey values
public int Analog_LargeChange = 10; public int Analog_LargeChange = 10;
public int Analog_SmallChange = 1; public int Analog_SmallChange = 1;
@ -564,7 +581,7 @@ namespace BizHawk.Client.Common
public bool GB_AsSGB = false; public bool GB_AsSGB = false;
public bool NES_InQuickNES = false; public bool NES_InQuickNES = false;
//LuaWriter Settings // LuaWriter Settings
public int LuaDefaultTextColor = -16777216; public int LuaDefaultTextColor = -16777216;
public bool LuaDefaultTextBold = false; public bool LuaDefaultTextBold = false;
public int LuaWriterBackColor = -1; public int LuaWriterBackColor = -1;
@ -588,7 +605,7 @@ namespace BizHawk.Client.Common
public bool LuaShowLineNumbers = false; public bool LuaShowLineNumbers = false;
} }
// these are used in the defctrl.json or wherever // These are used in the defctrl.json or wherever
public class ControlDefaults public class ControlDefaults
{ {
public Dictionary<string, Dictionary<string, string>> AllTrollers = new Dictionary<string, Dictionary<string, string>>(); public Dictionary<string, Dictionary<string, string>> AllTrollers = new Dictionary<string, Dictionary<string, string>>();

View File

@ -0,0 +1,35 @@
namespace BizHawk.Client.Common
{
public class ToolDialogSettings
{
public ToolDialogSettings()
{
SaveWindowPosition = true;
}
public int? Wndx { get; set; }
public int? Wndy { get; set; }
public int? Width { get; set; }
public int? Height { get; set; }
public bool SaveWindowPosition { get; set; }
public bool AlwaysOnTop { get; set; }
public bool FloatingWindow { get; set; }
public bool UseWindowPosition
{
get
{
return SaveWindowPosition && Wndx.HasValue && Wndy.HasValue;
}
}
public bool UseWindowSize
{
get
{
return Width.HasValue && Height.HasValue;
}
}
}
}

View File

@ -28,14 +28,14 @@ namespace BizHawk.Client.EmuHawk
{ WatchList.DIFF, 59 }, { WatchList.DIFF, 59 },
}; };
private string _currentFileName = String.Empty; private string _currentFileName = string.Empty;
private RamSearchEngine _searches; private RamSearchEngine _searches;
private RamSearchEngine.Settings _settings; private RamSearchEngine.Settings _settings;
private int _defaultWidth; private int _defaultWidth;
private int _defaultHeight; private int _defaultHeight;
private string _sortedColumn = String.Empty; private string _sortedColumn = string.Empty;
private bool _sortReverse; private bool _sortReverse;
private bool _forcePreviewClear; private bool _forcePreviewClear;
private bool _autoSearch; private bool _autoSearch;
@ -68,13 +68,13 @@ namespace BizHawk.Client.EmuHawk
WatchListView.VirtualMode = true; WatchListView.VirtualMode = true;
Closing += (o, e) => SaveConfigSettings(); Closing += (o, e) => SaveConfigSettings();
_sortedColumn = String.Empty; _sortedColumn = string.Empty;
_sortReverse = false; _sortReverse = false;
_settings = new RamSearchEngine.Settings(); _settings = new RamSearchEngine.Settings();
_searches = new RamSearchEngine(_settings); _searches = new RamSearchEngine(_settings);
TopMost = Global.Config.RamSearchAlwaysOnTop; TopMost = Global.Config.RamSearchSettings.AlwaysOnTop;
} }
private void HardSetDisplayTypeDropDown(Watch.DisplayType type) private void HardSetDisplayTypeDropDown(Watch.DisplayType type)
@ -111,7 +111,7 @@ namespace BizHawk.Client.EmuHawk
SpecificValueBox.ByteSize = _settings.Size; SpecificValueBox.ByteSize = _settings.Size;
SpecificValueBox.Type = _settings.Type; SpecificValueBox.Type = _settings.Type;
MessageLabel.Text = String.Empty; MessageLabel.Text = string.Empty;
SpecificAddressBox.MaxLength = IntHelpers.GetNumDigits(Global.Emulator.MemoryDomains.MainMemory.Size); SpecificAddressBox.MaxLength = IntHelpers.GetNumDigits(Global.Emulator.MemoryDomains.MainMemory.Size);
HardSetSizeDropDown(_settings.Size); HardSetSizeDropDown(_settings.Size);
PopulateTypeDropDown(); PopulateTypeDropDown();
@ -163,7 +163,7 @@ namespace BizHawk.Client.EmuHawk
private void ListView_QueryItemText(int index, int column, out string text) private void ListView_QueryItemText(int index, int column, out string text)
{ {
text = String.Empty; text = string.Empty;
if (index >= _searches.Count) if (index >= _searches.Count)
{ {
@ -196,17 +196,17 @@ namespace BizHawk.Client.EmuHawk
_defaultWidth = Size.Width; _defaultWidth = Size.Width;
_defaultHeight = Size.Height; _defaultHeight = Size.Height;
if (Global.Config.RamSearchSaveWindowPosition && Global.Config.RamSearchWndx >= 0 && Global.Config.RamSearchWndy >= 0) if (Global.Config.RamSearchSettings.UseWindowPosition)
{ {
Location = new Point(Global.Config.RamSearchWndx, Global.Config.RamSearchWndy); Location = new Point(Global.Config.RamSearchSettings.Wndx.Value, Global.Config.RamSearchSettings.Wndy.Value);
} }
if (Global.Config.RamSearchWidth >= 0 && Global.Config.RamSearchHeight >= 0) if (Global.Config.RamSearchSettings.UseWindowSize)
{ {
Size = new Size(Global.Config.RamSearchWidth, Global.Config.RamSearchHeight); Size = new Size(Global.Config.RamSearchSettings.Width.Value, Global.Config.RamSearchSettings.Height.Value);
} }
TopMost = Global.Config.RamSearchAlwaysOnTop; TopMost = Global.Config.RamSearchSettings.AlwaysOnTop;
LoadColumnInfo(); LoadColumnInfo();
} }
@ -248,10 +248,10 @@ namespace BizHawk.Client.EmuHawk
{ {
SaveColumnInfo(); SaveColumnInfo();
Global.Config.RamSearchWndx = Location.X; Global.Config.RamSearchSettings.Wndx = Location.X;
Global.Config.RamSearchWndy = Location.Y; Global.Config.RamSearchSettings.Wndy = Location.Y;
Global.Config.RamSearchWidth = Right - Left; Global.Config.RamSearchSettings.Width = Right - Left;
Global.Config.RamSearchHeight = Bottom - Top; Global.Config.RamSearchSettings.Height = Bottom - Top;
} }
public void NewSearch() public void NewSearch()
@ -271,7 +271,7 @@ namespace BizHawk.Client.EmuHawk
WatchListView.ItemCount = _searches.Count; WatchListView.ItemCount = _searches.Count;
ToggleSearchDependentToolBarItems(); ToggleSearchDependentToolBarItems();
SetReboot(false); SetReboot(false);
MessageLabel.Text = String.Empty; MessageLabel.Text = string.Empty;
SetDomainLabel(); SetDomainLabel();
} }
@ -351,9 +351,9 @@ namespace BizHawk.Client.EmuHawk
#region Private #region Private
void RefreshFloatingWindowControl() private void RefreshFloatingWindowControl()
{ {
this.Owner = Global.Config.RamSearchFloatingWindow ? null : GlobalWin.MainForm; this.Owner = Global.Config.RamSearchSettings.FloatingWindow ? null : GlobalWin.MainForm;
} }
private void ToggleSearchDependentToolBarItems() private void ToggleSearchDependentToolBarItems()
@ -399,14 +399,7 @@ namespace BizHawk.Client.EmuHawk
{ {
get get
{ {
if (DifferentByRadio.Checked) return DifferentByRadio.Checked ? DifferentByBox.ToRawInt() : null;
{
return DifferentByBox.ToRawInt();
}
else
{
return null;
}
} }
} }
@ -468,12 +461,12 @@ namespace BizHawk.Client.EmuHawk
private void SetRemovedMessage(int val) private void SetRemovedMessage(int val)
{ {
MessageLabel.Text = val + " address" + (val != 1 ? "es" : String.Empty) + " removed"; MessageLabel.Text = val + " address" + (val != 1 ? "es" : string.Empty) + " removed";
} }
private void SetTotal() private void SetTotal()
{ {
TotalSearchLabel.Text = String.Format("{0:n0}", _searches.Count) + " addresses"; TotalSearchLabel.Text = string.Format("{0:n0}", _searches.Count) + " addresses";
} }
private void SetDomainLabel() private void SetDomainLabel()
@ -584,7 +577,7 @@ namespace BizHawk.Client.EmuHawk
private void DoDisplayTypeClick(Watch.DisplayType type) private void DoDisplayTypeClick(Watch.DisplayType type)
{ {
if (_settings.Type != type && !String.IsNullOrEmpty(SpecificValueBox.Text)) if (_settings.Type != type && !string.IsNullOrEmpty(SpecificValueBox.Text))
{ {
SpecificValueBox.Text = "0"; SpecificValueBox.Text = "0";
} }
@ -608,12 +601,12 @@ namespace BizHawk.Client.EmuHawk
private void SetSize(Watch.WatchSize size) private void SetSize(Watch.WatchSize size)
{ {
SpecificValueBox.ByteSize = _settings.Size = size; SpecificValueBox.ByteSize = _settings.Size = size;
if (!String.IsNullOrEmpty(SpecificAddressBox.Text)) if (!string.IsNullOrEmpty(SpecificAddressBox.Text))
{ {
SpecificAddressBox.Text = "0"; SpecificAddressBox.Text = "0";
} }
if (!String.IsNullOrEmpty(SpecificValueBox.Text)) if (!string.IsNullOrEmpty(SpecificValueBox.Text))
{ {
SpecificValueBox.Text = "0"; SpecificValueBox.Text = "0";
} }
@ -645,8 +638,8 @@ namespace BizHawk.Client.EmuHawk
private void PopulateTypeDropDown() private void PopulateTypeDropDown()
{ {
var previous = DisplayTypeDropdown.SelectedItem != null ? DisplayTypeDropdown.SelectedItem.ToString() : String.Empty; var previous = DisplayTypeDropdown.SelectedItem != null ? DisplayTypeDropdown.SelectedItem.ToString() : string.Empty;
var next = String.Empty; var next = string.Empty;
DisplayTypeDropdown.Items.Clear(); DisplayTypeDropdown.Items.Clear();
var types = Watch.AvailableTypes(_settings.Size); var types = Watch.AvailableTypes(_settings.Size);
@ -660,7 +653,7 @@ namespace BizHawk.Client.EmuHawk
} }
} }
if (!String.IsNullOrEmpty(next)) if (!string.IsNullOrEmpty(next))
{ {
DisplayTypeDropdown.SelectedItem = next; DisplayTypeDropdown.SelectedItem = next;
} }
@ -718,7 +711,7 @@ namespace BizHawk.Client.EmuHawk
NumberOfChangesRadio.Enabled = false; NumberOfChangesRadio.Enabled = false;
NumberOfChangesBox.Enabled = false; NumberOfChangesBox.Enabled = false;
NumberOfChangesBox.Text = String.Empty; NumberOfChangesBox.Text = string.Empty;
ClearChangeCountsToolBarItem.Enabled = false; ClearChangeCountsToolBarItem.Enabled = false;
if (NumberOfChangesRadio.Checked || DifferenceRadio.Checked) if (NumberOfChangesRadio.Checked || DifferenceRadio.Checked)
@ -837,7 +830,7 @@ namespace BizHawk.Client.EmuHawk
switch (name) switch (name)
{ {
default: default:
return String.Empty; return string.Empty;
case WatchList.ADDRESS: case WatchList.ADDRESS:
return _searches[index].AddressString; return _searches[index].AddressString;
case WatchList.VALUE: case WatchList.VALUE:
@ -886,7 +879,7 @@ namespace BizHawk.Client.EmuHawk
private void FileSubMenu_DropDownOpened(object sender, EventArgs e) private void FileSubMenu_DropDownOpened(object sender, EventArgs e)
{ {
SaveMenuItem.Enabled = !String.IsNullOrWhiteSpace(_currentFileName); SaveMenuItem.Enabled = !string.IsNullOrWhiteSpace(_currentFileName);
} }
private void RecentSubMenu_DropDownOpened(object sender, EventArgs e) private void RecentSubMenu_DropDownOpened(object sender, EventArgs e)
@ -900,7 +893,7 @@ namespace BizHawk.Client.EmuHawk
private void OpenMenuItem_Click(object sender, EventArgs e) private void OpenMenuItem_Click(object sender, EventArgs e)
{ {
LoadWatchFile( LoadWatchFile(
ToolHelpers.GetWatchFileFromUser(String.Empty), ToolHelpers.GetWatchFileFromUser(string.Empty),
sender == AppendFileMenuItem, sender == AppendFileMenuItem,
sender == TruncateFromFileMenuItem sender == TruncateFromFileMenuItem
); );
@ -908,7 +901,7 @@ namespace BizHawk.Client.EmuHawk
private void SaveMenuItem_Click(object sender, EventArgs e) private void SaveMenuItem_Click(object sender, EventArgs e)
{ {
if (!String.IsNullOrWhiteSpace(_currentFileName)) if (!string.IsNullOrWhiteSpace(_currentFileName))
{ {
var watches = new WatchList(_settings.Domain) { CurrentFileName = _currentFileName }; var watches = new WatchList(_settings.Domain) { CurrentFileName = _currentFileName };
for (var i = 0; i < _searches.Count; i++) for (var i = 0; i < _searches.Count; i++)
@ -916,7 +909,7 @@ namespace BizHawk.Client.EmuHawk
watches.Add(_searches[i]); watches.Add(_searches[i]);
} }
if (!String.IsNullOrWhiteSpace(watches.CurrentFileName)) if (!string.IsNullOrWhiteSpace(watches.CurrentFileName))
{ {
if (watches.Save()) if (watches.Save())
{ {
@ -1195,12 +1188,12 @@ namespace BizHawk.Client.EmuHawk
private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e) private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e)
{ {
AutoloadDialogMenuItem.Checked = Global.Config.RecentSearches.AutoLoad; AutoloadDialogMenuItem.Checked = Global.Config.RecentSearches.AutoLoad;
SaveWinPositionMenuItem.Checked = Global.Config.RamSearchSaveWindowPosition; SaveWinPositionMenuItem.Checked = Global.Config.RamSearchSettings.SaveWindowPosition;
ExcludeRamWatchMenuItem.Checked = Global.Config.RamSearchAlwaysExcludeRamWatch; ExcludeRamWatchMenuItem.Checked = Global.Config.RamSearchAlwaysExcludeRamWatch;
UseUndoHistoryMenuItem.Checked = _searches.UndoEnabled; UseUndoHistoryMenuItem.Checked = _searches.UndoEnabled;
PreviewModeMenuItem.Checked = Global.Config.RamSearchPreviewMode; PreviewModeMenuItem.Checked = Global.Config.RamSearchPreviewMode;
AlwaysOnTopMenuItem.Checked = Global.Config.RamSearchAlwaysOnTop; AlwaysOnTopMenuItem.Checked = Global.Config.RamSearchSettings.AlwaysOnTop;
FloatingWindowMenuItem.Checked = Global.Config.RamSearchFloatingWindow; FloatingWindowMenuItem.Checked = Global.Config.RamSearchSettings.FloatingWindow;
AutoSearchMenuItem.Checked = _autoSearch; AutoSearchMenuItem.Checked = _autoSearch;
} }
@ -1235,18 +1228,18 @@ namespace BizHawk.Client.EmuHawk
private void SaveWinPositionMenuItem_Click(object sender, EventArgs e) private void SaveWinPositionMenuItem_Click(object sender, EventArgs e)
{ {
Global.Config.RamSearchSaveWindowPosition ^= true; Global.Config.RamSearchSettings.SaveWindowPosition ^= true;
} }
private void AlwaysOnTopMenuItem_Click(object sender, EventArgs e) private void AlwaysOnTopMenuItem_Click(object sender, EventArgs e)
{ {
Global.Config.RamSearchAlwaysOnTop ^= true; Global.Config.RamSearchSettings.AlwaysOnTop ^= true;
TopMost = Global.Config.RamSearchAlwaysOnTop; TopMost = Global.Config.RamSearchSettings.AlwaysOnTop;
} }
private void FloatingWindowMenuItem_Click(object sender, EventArgs e) private void FloatingWindowMenuItem_Click(object sender, EventArgs e)
{ {
Global.Config.RamSearchFloatingWindow ^= true; Global.Config.RamSearchSettings.FloatingWindow ^= true;
RefreshFloatingWindowControl(); RefreshFloatingWindowControl();
} }
@ -1273,12 +1266,11 @@ namespace BizHawk.Client.EmuHawk
WatchListView.Columns[WatchList.ADDRESS].Width = _defaultColumnWidths[WatchList.ADDRESS]; WatchListView.Columns[WatchList.ADDRESS].Width = _defaultColumnWidths[WatchList.ADDRESS];
WatchListView.Columns[WatchList.VALUE].Width = _defaultColumnWidths[WatchList.VALUE]; WatchListView.Columns[WatchList.VALUE].Width = _defaultColumnWidths[WatchList.VALUE];
//WatchListView.Columns[WatchList.PREV].Width = DefaultColumnWidths[WatchList.PREV];
WatchListView.Columns[WatchList.CHANGES].Width = _defaultColumnWidths[WatchList.CHANGES]; WatchListView.Columns[WatchList.CHANGES].Width = _defaultColumnWidths[WatchList.CHANGES];
//WatchListView.Columns[WatchList.DIFF].Width = DefaultColumnWidths[WatchList.DIFF];
Global.Config.RamSearchSaveWindowPosition = true; Global.Config.RamSearchSettings.SaveWindowPosition = true;
Global.Config.RamSearchAlwaysOnTop = TopMost = false; Global.Config.RamSearchSettings.AlwaysOnTop = TopMost = false;
Global.Config.RamSearchSettings.FloatingWindow = false;
Global.Config.RamSearchColumnWidths = new Dictionary<string, int> Global.Config.RamSearchColumnWidths = new Dictionary<string, int>
{ {
@ -1349,7 +1341,7 @@ namespace BizHawk.Client.EmuHawk
UnfreezeAllContextMenuItem.Visible = Global.CheatList.ActiveCount > 0; UnfreezeAllContextMenuItem.Visible = Global.CheatList.ActiveCount > 0;
ContextMenuSeparator3.Visible = (SelectedIndices.Any()) || (Global.CheatList.ActiveCount > 0); ContextMenuSeparator3.Visible = SelectedIndices.Any() || (Global.CheatList.ActiveCount > 0);
var allCheats = true; var allCheats = true;
foreach (var index in SelectedIndices) foreach (var index in SelectedIndices)
@ -1436,10 +1428,11 @@ namespace BizHawk.Client.EmuHawk
private void SpecificValueRadio_Click(object sender, EventArgs e) private void SpecificValueRadio_Click(object sender, EventArgs e)
{ {
SpecificValueBox.Enabled = true; SpecificValueBox.Enabled = true;
if (String.IsNullOrWhiteSpace(SpecificValueBox.Text)) if (string.IsNullOrWhiteSpace(SpecificValueBox.Text))
{ {
SpecificAddressBox.ResetText(); SpecificAddressBox.ResetText();
} }
_searches.CompareValue = SpecificValueBox.ToRawInt(); _searches.CompareValue = SpecificValueBox.ToRawInt();
if (Focused) if (Focused)
@ -1457,11 +1450,11 @@ namespace BizHawk.Client.EmuHawk
{ {
SpecificValueBox.Enabled = false; SpecificValueBox.Enabled = false;
SpecificAddressBox.Enabled = true; SpecificAddressBox.Enabled = true;
if (String.IsNullOrWhiteSpace(SpecificAddressBox.Text)) if (string.IsNullOrWhiteSpace(SpecificAddressBox.Text))
{ {
SpecificAddressBox.ResetText(); SpecificAddressBox.ResetText();
} }
_searches.CompareValue = SpecificAddressBox.ToRawInt(); _searches.CompareValue = SpecificAddressBox.ToRawInt();
if (Focused) if (Focused)
@ -1479,7 +1472,7 @@ namespace BizHawk.Client.EmuHawk
SpecificValueBox.Enabled = false; SpecificValueBox.Enabled = false;
SpecificAddressBox.Enabled = false; SpecificAddressBox.Enabled = false;
NumberOfChangesBox.Enabled = true; NumberOfChangesBox.Enabled = true;
if (String.IsNullOrWhiteSpace(NumberOfChangesBox.Text)) if (string.IsNullOrWhiteSpace(NumberOfChangesBox.Text))
{ {
NumberOfChangesBox.ResetText(); NumberOfChangesBox.ResetText();
} }
@ -1501,10 +1494,11 @@ namespace BizHawk.Client.EmuHawk
SpecificAddressBox.Enabled = false; SpecificAddressBox.Enabled = false;
NumberOfChangesBox.Enabled = false; NumberOfChangesBox.Enabled = false;
DifferenceBox.Enabled = true; DifferenceBox.Enabled = true;
if (String.IsNullOrWhiteSpace(DifferenceBox.Text)) if (string.IsNullOrWhiteSpace(DifferenceBox.Text))
{ {
DifferenceBox.ResetText(); DifferenceBox.ResetText();
} }
_searches.CompareValue = DifferenceBox.ToRawInt(); _searches.CompareValue = DifferenceBox.ToRawInt();
if (Focused) if (Focused)
@ -1564,10 +1558,11 @@ namespace BizHawk.Client.EmuHawk
{ {
DifferentByBox.Enabled = true; DifferentByBox.Enabled = true;
if (String.IsNullOrWhiteSpace(DifferentByBox.Text)) if (string.IsNullOrWhiteSpace(DifferentByBox.Text))
{ {
DifferentByBox.ResetText(); DifferentByBox.ResetText();
} }
_searches.DifferentBy = DifferenceBox.ToRawInt(); _searches.DifferentBy = DifferenceBox.ToRawInt();
if (Focused) if (Focused)
@ -1580,8 +1575,7 @@ namespace BizHawk.Client.EmuHawk
private void DifferentByBox_TextChanged(object sender, EventArgs e) private void DifferentByBox_TextChanged(object sender, EventArgs e)
{ {
_searches.DifferentBy = !String.IsNullOrWhiteSpace(DifferentByBox.Text) ? DifferentByBox.ToRawInt() : null; _searches.DifferentBy = !string.IsNullOrWhiteSpace(DifferentByBox.Text) ? DifferentByBox.ToRawInt() : null;
WatchListView.Refresh(); WatchListView.Refresh();
} }
@ -1595,14 +1589,14 @@ namespace BizHawk.Client.EmuHawk
{ {
RemoveAddresses(); RemoveAddresses();
} }
else if (e.KeyCode == Keys.A && e.Control && !e.Alt && !e.Shift) //Select All else if (e.KeyCode == Keys.A && e.Control && !e.Alt && !e.Shift) // Select All
{ {
for (var i = 0; i < _searches.Count; i++) for (var i = 0; i < _searches.Count; i++)
{ {
WatchListView.SelectItem(i, true); WatchListView.SelectItem(i, true);
} }
} }
else if (e.KeyCode == Keys.C && e.Control && !e.Alt && !e.Shift) //Copy else if (e.KeyCode == Keys.C && e.Control && !e.Alt && !e.Shift) // Copy
{ {
if (SelectedIndices.Count > 0) if (SelectedIndices.Count > 0)
{ {
@ -1613,6 +1607,7 @@ namespace BizHawk.Client.EmuHawk
{ {
sb.Append(GetColumnValue(column.Name, index)).Append('\t'); sb.Append(GetColumnValue(column.Name, index)).Append('\t');
} }
sb.Remove(sb.Length - 1, 1); sb.Remove(sb.Length - 1, 1);
sb.AppendLine(); sb.AppendLine();
} }
@ -1692,7 +1687,7 @@ namespace BizHawk.Client.EmuHawk
private void NewRamSearch_DragDrop(object sender, DragEventArgs e) private void NewRamSearch_DragDrop(object sender, DragEventArgs e)
{ {
var filePaths = (string[])e.Data.GetData(DataFormats.FileDrop); var filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
if (Path.GetExtension(filePaths[0]) == (".wch")) if (Path.GetExtension(filePaths[0]) == ".wch")
{ {
var file = new FileInfo(filePaths[0]); var file = new FileInfo(filePaths[0]);
if (file.Exists) if (file.Exists)