Ram Search - ran into an issue where I clicked a radio and it didn't update the search engine state but I couldn't reproduce the issue consistently, so I put it in a more thorough approach of setting the engine state just before doing a search rather than trying to keep it up to date with change events
This commit is contained in:
parent
f72303f326
commit
ba6102b160
|
@ -19,19 +19,15 @@ namespace BizHawk.MultiClient
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class RamSearch : Form
|
public partial class RamSearch : Form
|
||||||
{
|
{
|
||||||
public const string ADDRESS = "AddressColumn";
|
//TODO: DoSearch grabs the state of widgets and passes it to the engine before running, so rip out code that is attempting to keep the state up to date through change events
|
||||||
public const string VALUE = "ValueColumn";
|
|
||||||
public const string PREV = "PrevColumn";
|
|
||||||
public const string CHANGES = "ChangesColumn";
|
|
||||||
public const string DIFF = "DiffColumn";
|
|
||||||
|
|
||||||
private readonly Dictionary<string, int> DefaultColumnWidths = new Dictionary<string, int>
|
private readonly Dictionary<string, int> DefaultColumnWidths = new Dictionary<string, int>
|
||||||
{
|
{
|
||||||
{ ADDRESS, 60 },
|
{ WatchList.ADDRESS, 60 },
|
||||||
{ VALUE, 59 },
|
{ WatchList.VALUE, 59 },
|
||||||
{ PREV, 59 },
|
{ WatchList.PREV, 59 },
|
||||||
{ CHANGES, 55 },
|
{ WatchList.CHANGES, 55 },
|
||||||
{ DIFF, 59 },
|
{ WatchList.DIFF, 59 },
|
||||||
};
|
};
|
||||||
|
|
||||||
private string CurrentFileName = String.Empty;
|
private string CurrentFileName = String.Empty;
|
||||||
|
@ -174,19 +170,19 @@ namespace BizHawk.MultiClient
|
||||||
string columnName = WatchListView.Columns[column].Name;
|
string columnName = WatchListView.Columns[column].Name;
|
||||||
switch (columnName)
|
switch (columnName)
|
||||||
{
|
{
|
||||||
case ADDRESS:
|
case WatchList.ADDRESS:
|
||||||
text = Searches[index].AddressString;
|
text = Searches[index].AddressString;
|
||||||
break;
|
break;
|
||||||
case VALUE:
|
case WatchList.VALUE:
|
||||||
text = Searches[index].ValueString;
|
text = Searches[index].ValueString;
|
||||||
break;
|
break;
|
||||||
case PREV:
|
case WatchList.PREV:
|
||||||
text = Searches[index].PreviousStr;
|
text = Searches[index].PreviousStr;
|
||||||
break;
|
break;
|
||||||
case CHANGES:
|
case WatchList.CHANGES:
|
||||||
text = Searches[index].ChangeCount.ToString();
|
text = Searches[index].ChangeCount.ToString();
|
||||||
break;
|
break;
|
||||||
case DIFF:
|
case WatchList.DIFF:
|
||||||
text = Searches[index].Diff;
|
text = Searches[index].Diff;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -413,10 +409,39 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private RamSearchEngine.ComparisonOperator Operator
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (NotEqualToRadio.Checked) return RamSearchEngine.ComparisonOperator.NotEqual;
|
||||||
|
else if (LessThanRadio.Checked) return RamSearchEngine.ComparisonOperator.LessThan;
|
||||||
|
else if (GreaterThanRadio.Checked) return RamSearchEngine.ComparisonOperator.GreaterThan;
|
||||||
|
else if (LessThanOrEqualToRadio.Checked) return RamSearchEngine.ComparisonOperator.LessThanEqual;
|
||||||
|
else if (GreaterThanOrEqualToRadio.Checked) return RamSearchEngine.ComparisonOperator.GreaterThanEqual;
|
||||||
|
else if (DifferentByRadio.Checked) return RamSearchEngine.ComparisonOperator.DifferentBy;
|
||||||
|
else return RamSearchEngine.ComparisonOperator.Equal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private RamSearchEngine.Compare Compare
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (SpecificValueRadio.Checked) return RamSearchEngine.Compare.SpecificValue;
|
||||||
|
else if (SpecificAddressRadio.Checked) return RamSearchEngine.Compare.SpecificAddress;
|
||||||
|
else if (NumberOfChangesRadio.Checked) return RamSearchEngine.Compare.Changes;
|
||||||
|
else if (DifferenceRadio.Checked) return RamSearchEngine.Compare.Difference;
|
||||||
|
else return RamSearchEngine.Compare.Previous;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void DoSearch()
|
public void DoSearch()
|
||||||
{
|
{
|
||||||
Searches.CompareValue = CompareToValue;
|
Searches.CompareValue = CompareToValue;
|
||||||
Searches.DifferentBy = DifferentByValue;
|
Searches.DifferentBy = DifferentByValue;
|
||||||
|
Searches.Operator = Operator;
|
||||||
|
Searches.CompareTo = Compare;
|
||||||
|
|
||||||
int removed = Searches.DoSearch();
|
int removed = Searches.DoSearch();
|
||||||
SetTotal();
|
SetTotal();
|
||||||
WatchListView.ItemCount = Searches.Count;
|
WatchListView.ItemCount = Searches.Count;
|
||||||
|
@ -515,11 +540,11 @@ namespace BizHawk.MultiClient
|
||||||
private void LoadColumnInfo()
|
private void LoadColumnInfo()
|
||||||
{
|
{
|
||||||
WatchListView.Columns.Clear();
|
WatchListView.Columns.Clear();
|
||||||
ToolHelpers.AddColumn(WatchListView, ADDRESS, true, GetColumnWidth(ADDRESS));
|
ToolHelpers.AddColumn(WatchListView, WatchList.ADDRESS, true, GetColumnWidth(WatchList.ADDRESS));
|
||||||
ToolHelpers.AddColumn(WatchListView, VALUE, true, GetColumnWidth(VALUE));
|
ToolHelpers.AddColumn(WatchListView, WatchList.VALUE, true, GetColumnWidth(WatchList.VALUE));
|
||||||
ToolHelpers.AddColumn(WatchListView, PREV, Global.Config.RamSearchShowPrevColumn, GetColumnWidth(PREV));
|
ToolHelpers.AddColumn(WatchListView, WatchList.PREV, Global.Config.RamSearchShowPrevColumn, GetColumnWidth(WatchList.PREV));
|
||||||
ToolHelpers.AddColumn(WatchListView, CHANGES, Global.Config.RamSearchShowChangeColumn, GetColumnWidth(CHANGES));
|
ToolHelpers.AddColumn(WatchListView, WatchList.CHANGES, Global.Config.RamSearchShowChangeColumn, GetColumnWidth(WatchList.CHANGES));
|
||||||
ToolHelpers.AddColumn(WatchListView, DIFF, Global.Config.RamSearchShowDiffColumn, GetColumnWidth(DIFF));
|
ToolHelpers.AddColumn(WatchListView, WatchList.DIFF, Global.Config.RamSearchShowDiffColumn, GetColumnWidth(WatchList.DIFF));
|
||||||
|
|
||||||
ColumnPositions();
|
ColumnPositions();
|
||||||
}
|
}
|
||||||
|
@ -542,34 +567,34 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void SaveColumnInfo()
|
private void SaveColumnInfo()
|
||||||
{
|
{
|
||||||
if (WatchListView.Columns[ADDRESS] != null)
|
if (WatchListView.Columns[WatchList.ADDRESS] != null)
|
||||||
{
|
{
|
||||||
Global.Config.RamSearchColumnIndexes[ADDRESS] = WatchListView.Columns[ADDRESS].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.ADDRESS] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnWidths[ADDRESS] = WatchListView.Columns[ADDRESS].Width;
|
Global.Config.RamSearchColumnWidths[WatchList.ADDRESS] = WatchListView.Columns[WatchList.ADDRESS].Width;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WatchListView.Columns[VALUE] != null)
|
if (WatchListView.Columns[WatchList.VALUE] != null)
|
||||||
{
|
{
|
||||||
Global.Config.RamSearchColumnIndexes[VALUE] = WatchListView.Columns[VALUE].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.VALUE] = WatchListView.Columns[WatchList.VALUE].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnWidths[VALUE] = WatchListView.Columns[VALUE].Width;
|
Global.Config.RamSearchColumnWidths[WatchList.VALUE] = WatchListView.Columns[WatchList.VALUE].Width;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WatchListView.Columns[PREV] != null)
|
if (WatchListView.Columns[WatchList.PREV] != null)
|
||||||
{
|
{
|
||||||
Global.Config.RamSearchColumnIndexes[PREV] = WatchListView.Columns[PREV].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.PREV] = WatchListView.Columns[WatchList.PREV].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnWidths[PREV] = WatchListView.Columns[PREV].Width;
|
Global.Config.RamSearchColumnWidths[WatchList.PREV] = WatchListView.Columns[WatchList.PREV].Width;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WatchListView.Columns[CHANGES] != null)
|
if (WatchListView.Columns[WatchList.CHANGES] != null)
|
||||||
{
|
{
|
||||||
Global.Config.RamSearchColumnIndexes[CHANGES] = WatchListView.Columns[CHANGES].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnWidths[CHANGES] = WatchListView.Columns[CHANGES].Width;
|
Global.Config.RamSearchColumnWidths[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].Width;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WatchListView.Columns[DIFF] != null)
|
if (WatchListView.Columns[WatchList.DIFF] != null)
|
||||||
{
|
{
|
||||||
Global.Config.RamSearchColumnIndexes[DIFF] = WatchListView.Columns[DIFF].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnWidths[DIFF] = WatchListView.Columns[DIFF].Width;
|
Global.Config.RamSearchColumnWidths[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].Width;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -700,7 +725,7 @@ namespace BizHawk.MultiClient
|
||||||
DifferenceRadio.Enabled = true;
|
DifferenceRadio.Enabled = true;
|
||||||
DifferentByBox.Enabled = true;
|
DifferentByBox.Enabled = true;
|
||||||
ClearChangeCountsToolBarItem.Enabled = true;
|
ClearChangeCountsToolBarItem.Enabled = true;
|
||||||
WatchListView.Columns[CHANGES].Width = Global.Config.RamSearchColumnWidths[CHANGES];
|
WatchListView.Columns[WatchList.CHANGES].Width = Global.Config.RamSearchColumnWidths[WatchList.CHANGES];
|
||||||
SetReboot(true);
|
SetReboot(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -723,8 +748,8 @@ namespace BizHawk.MultiClient
|
||||||
PreviousValueRadio.Checked = true;
|
PreviousValueRadio.Checked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.Config.RamSearchColumnWidths[CHANGES] = WatchListView.Columns[CHANGES].Width;
|
Global.Config.RamSearchColumnWidths[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].Width;
|
||||||
WatchListView.Columns[CHANGES].Width = 0;
|
WatchListView.Columns[WatchList.CHANGES].Width = 0;
|
||||||
SetReboot(true);
|
SetReboot(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -846,15 +871,15 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
return String.Empty;
|
return String.Empty;
|
||||||
case ADDRESS:
|
case WatchList.ADDRESS:
|
||||||
return Searches[index].AddressString;
|
return Searches[index].AddressString;
|
||||||
case VALUE:
|
case WatchList.VALUE:
|
||||||
return Searches[index].ValueString;
|
return Searches[index].ValueString;
|
||||||
case PREV:
|
case WatchList.PREV:
|
||||||
return Searches[index].PreviousStr;
|
return Searches[index].PreviousStr;
|
||||||
case CHANGES:
|
case WatchList.CHANGES:
|
||||||
return Searches[index].ChangeCount.ToString();
|
return Searches[index].ChangeCount.ToString();
|
||||||
case DIFF:
|
case WatchList.DIFF:
|
||||||
return Searches[index].Diff;
|
return Searches[index].Diff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1286,11 +1311,11 @@ namespace BizHawk.MultiClient
|
||||||
Global.Config.RamSearchShowPrevColumn = true;
|
Global.Config.RamSearchShowPrevColumn = true;
|
||||||
Global.Config.RamSearchShowDiffColumn = false;
|
Global.Config.RamSearchShowDiffColumn = false;
|
||||||
|
|
||||||
WatchListView.Columns[ADDRESS].Width = DefaultColumnWidths[ADDRESS];
|
WatchListView.Columns[WatchList.ADDRESS].Width = DefaultColumnWidths[WatchList.ADDRESS];
|
||||||
WatchListView.Columns[VALUE].Width = DefaultColumnWidths[VALUE];
|
WatchListView.Columns[WatchList.VALUE].Width = DefaultColumnWidths[WatchList.VALUE];
|
||||||
//WatchListView.Columns[PREV].Width = DefaultColumnWidths[PREV];
|
//WatchListView.Columns[WatchList.PREV].Width = DefaultColumnWidths[WatchList.PREV];
|
||||||
WatchListView.Columns[CHANGES].Width = DefaultColumnWidths[CHANGES];
|
WatchListView.Columns[WatchList.CHANGES].Width = DefaultColumnWidths[WatchList.CHANGES];
|
||||||
//WatchListView.Columns[DIFF].Width = DefaultColumnWidths[DIFF];
|
//WatchListView.Columns[WatchList.DIFF].Width = DefaultColumnWidths[WatchList.DIFF];
|
||||||
|
|
||||||
Global.Config.RamSearchSaveWindowPosition = true;
|
Global.Config.RamSearchSaveWindowPosition = true;
|
||||||
Global.Config.RamSearchAlwaysOnTop = TopMost = false;
|
Global.Config.RamSearchAlwaysOnTop = TopMost = false;
|
||||||
|
@ -1643,11 +1668,11 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void WatchListView_ColumnReordered(object sender, ColumnReorderedEventArgs e)
|
private void WatchListView_ColumnReordered(object sender, ColumnReorderedEventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.RamSearchColumnIndexes[ADDRESS] = WatchListView.Columns[ADDRESS].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.ADDRESS] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnIndexes[VALUE] = WatchListView.Columns[VALUE].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.VALUE] = WatchListView.Columns[WatchList.VALUE].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnIndexes[PREV] = WatchListView.Columns[ADDRESS].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.PREV] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnIndexes[CHANGES] = WatchListView.Columns[CHANGES].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].DisplayIndex;
|
||||||
Global.Config.RamSearchColumnIndexes[DIFF] = WatchListView.Columns[DIFF].DisplayIndex;
|
Global.Config.RamSearchColumnIndexes[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].DisplayIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WatchListView_Enter(object sender, EventArgs e)
|
private void WatchListView_Enter(object sender, EventArgs e)
|
||||||
|
|
|
@ -49,8 +49,6 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
public class RamSearchEngine
|
public class RamSearchEngine
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
public enum ComparisonOperator { Equal, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, NotEqual, DifferentBy };
|
public enum ComparisonOperator { Equal, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, NotEqual, DifferentBy };
|
||||||
public enum Compare { Previous, SpecificValue, SpecificAddress, Changes, Difference }
|
public enum Compare { Previous, SpecificValue, SpecificAddress, Changes, Difference }
|
||||||
|
|
||||||
|
@ -408,7 +406,7 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
switch(column)
|
switch(column)
|
||||||
{
|
{
|
||||||
case RamSearch.ADDRESS:
|
case WatchList.ADDRESS:
|
||||||
if (reverse)
|
if (reverse)
|
||||||
{
|
{
|
||||||
_watchList = _watchList.OrderByDescending(x => x.Address).ToList();
|
_watchList = _watchList.OrderByDescending(x => x.Address).ToList();
|
||||||
|
@ -418,7 +416,7 @@ namespace BizHawk.MultiClient
|
||||||
_watchList = _watchList.OrderBy(x => x.Address).ToList();
|
_watchList = _watchList.OrderBy(x => x.Address).ToList();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RamSearch.VALUE:
|
case WatchList.VALUE:
|
||||||
if (reverse)
|
if (reverse)
|
||||||
{
|
{
|
||||||
_watchList = _watchList.OrderByDescending(x => GetValue(x.Address)).ToList();
|
_watchList = _watchList.OrderByDescending(x => GetValue(x.Address)).ToList();
|
||||||
|
@ -428,7 +426,7 @@ namespace BizHawk.MultiClient
|
||||||
_watchList = _watchList.OrderBy(x => GetValue(x.Address)).ToList();
|
_watchList = _watchList.OrderBy(x => GetValue(x.Address)).ToList();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RamSearch.PREV:
|
case WatchList.PREV:
|
||||||
if (reverse)
|
if (reverse)
|
||||||
{
|
{
|
||||||
_watchList = _watchList.OrderByDescending(x => x.Previous).ToList();
|
_watchList = _watchList.OrderByDescending(x => x.Previous).ToList();
|
||||||
|
@ -438,7 +436,7 @@ namespace BizHawk.MultiClient
|
||||||
_watchList = _watchList.OrderBy(x => x.Previous).ToList();
|
_watchList = _watchList.OrderBy(x => x.Previous).ToList();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RamSearch.CHANGES:
|
case WatchList.CHANGES:
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == Settings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
if (reverse)
|
if (reverse)
|
||||||
|
@ -457,7 +455,7 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RamSearch.DIFF:
|
case WatchList.DIFF:
|
||||||
if (reverse)
|
if (reverse)
|
||||||
{
|
{
|
||||||
_watchList = _watchList.OrderByDescending(x => (GetValue(x.Address) - x.Previous)).ToList();
|
_watchList = _watchList.OrderByDescending(x => (GetValue(x.Address) - x.Previous)).ToList();
|
||||||
|
|
Loading…
Reference in New Issue