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>
|
||||
public partial class RamSearch : Form
|
||||
{
|
||||
public const string ADDRESS = "AddressColumn";
|
||||
public const string VALUE = "ValueColumn";
|
||||
public const string PREV = "PrevColumn";
|
||||
public const string CHANGES = "ChangesColumn";
|
||||
public const string DIFF = "DiffColumn";
|
||||
//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
|
||||
|
||||
private readonly Dictionary<string, int> DefaultColumnWidths = new Dictionary<string, int>
|
||||
{
|
||||
{ ADDRESS, 60 },
|
||||
{ VALUE, 59 },
|
||||
{ PREV, 59 },
|
||||
{ CHANGES, 55 },
|
||||
{ DIFF, 59 },
|
||||
{ WatchList.ADDRESS, 60 },
|
||||
{ WatchList.VALUE, 59 },
|
||||
{ WatchList.PREV, 59 },
|
||||
{ WatchList.CHANGES, 55 },
|
||||
{ WatchList.DIFF, 59 },
|
||||
};
|
||||
|
||||
private string CurrentFileName = String.Empty;
|
||||
|
@ -174,19 +170,19 @@ namespace BizHawk.MultiClient
|
|||
string columnName = WatchListView.Columns[column].Name;
|
||||
switch (columnName)
|
||||
{
|
||||
case ADDRESS:
|
||||
case WatchList.ADDRESS:
|
||||
text = Searches[index].AddressString;
|
||||
break;
|
||||
case VALUE:
|
||||
case WatchList.VALUE:
|
||||
text = Searches[index].ValueString;
|
||||
break;
|
||||
case PREV:
|
||||
case WatchList.PREV:
|
||||
text = Searches[index].PreviousStr;
|
||||
break;
|
||||
case CHANGES:
|
||||
case WatchList.CHANGES:
|
||||
text = Searches[index].ChangeCount.ToString();
|
||||
break;
|
||||
case DIFF:
|
||||
case WatchList.DIFF:
|
||||
text = Searches[index].Diff;
|
||||
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()
|
||||
{
|
||||
Searches.CompareValue = CompareToValue;
|
||||
Searches.DifferentBy = DifferentByValue;
|
||||
Searches.Operator = Operator;
|
||||
Searches.CompareTo = Compare;
|
||||
|
||||
int removed = Searches.DoSearch();
|
||||
SetTotal();
|
||||
WatchListView.ItemCount = Searches.Count;
|
||||
|
@ -515,11 +540,11 @@ namespace BizHawk.MultiClient
|
|||
private void LoadColumnInfo()
|
||||
{
|
||||
WatchListView.Columns.Clear();
|
||||
ToolHelpers.AddColumn(WatchListView, ADDRESS, true, GetColumnWidth(ADDRESS));
|
||||
ToolHelpers.AddColumn(WatchListView, VALUE, true, GetColumnWidth(VALUE));
|
||||
ToolHelpers.AddColumn(WatchListView, PREV, Global.Config.RamSearchShowPrevColumn, GetColumnWidth(PREV));
|
||||
ToolHelpers.AddColumn(WatchListView, CHANGES, Global.Config.RamSearchShowChangeColumn, GetColumnWidth(CHANGES));
|
||||
ToolHelpers.AddColumn(WatchListView, DIFF, Global.Config.RamSearchShowDiffColumn, GetColumnWidth(DIFF));
|
||||
ToolHelpers.AddColumn(WatchListView, WatchList.ADDRESS, true, GetColumnWidth(WatchList.ADDRESS));
|
||||
ToolHelpers.AddColumn(WatchListView, WatchList.VALUE, true, GetColumnWidth(WatchList.VALUE));
|
||||
ToolHelpers.AddColumn(WatchListView, WatchList.PREV, Global.Config.RamSearchShowPrevColumn, GetColumnWidth(WatchList.PREV));
|
||||
ToolHelpers.AddColumn(WatchListView, WatchList.CHANGES, Global.Config.RamSearchShowChangeColumn, GetColumnWidth(WatchList.CHANGES));
|
||||
ToolHelpers.AddColumn(WatchListView, WatchList.DIFF, Global.Config.RamSearchShowDiffColumn, GetColumnWidth(WatchList.DIFF));
|
||||
|
||||
ColumnPositions();
|
||||
}
|
||||
|
@ -542,34 +567,34 @@ namespace BizHawk.MultiClient
|
|||
|
||||
private void SaveColumnInfo()
|
||||
{
|
||||
if (WatchListView.Columns[ADDRESS] != null)
|
||||
if (WatchListView.Columns[WatchList.ADDRESS] != null)
|
||||
{
|
||||
Global.Config.RamSearchColumnIndexes[ADDRESS] = WatchListView.Columns[ADDRESS].DisplayIndex;
|
||||
Global.Config.RamSearchColumnWidths[ADDRESS] = WatchListView.Columns[ADDRESS].Width;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.ADDRESS] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
|
||||
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.RamSearchColumnWidths[VALUE] = WatchListView.Columns[VALUE].Width;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.VALUE] = WatchListView.Columns[WatchList.VALUE].DisplayIndex;
|
||||
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.RamSearchColumnWidths[PREV] = WatchListView.Columns[PREV].Width;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.PREV] = WatchListView.Columns[WatchList.PREV].DisplayIndex;
|
||||
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.RamSearchColumnWidths[CHANGES] = WatchListView.Columns[CHANGES].Width;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].DisplayIndex;
|
||||
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.RamSearchColumnWidths[DIFF] = WatchListView.Columns[DIFF].Width;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].DisplayIndex;
|
||||
Global.Config.RamSearchColumnWidths[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].Width;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -700,7 +725,7 @@ namespace BizHawk.MultiClient
|
|||
DifferenceRadio.Enabled = true;
|
||||
DifferentByBox.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);
|
||||
}
|
||||
|
||||
|
@ -723,8 +748,8 @@ namespace BizHawk.MultiClient
|
|||
PreviousValueRadio.Checked = true;
|
||||
}
|
||||
|
||||
Global.Config.RamSearchColumnWidths[CHANGES] = WatchListView.Columns[CHANGES].Width;
|
||||
WatchListView.Columns[CHANGES].Width = 0;
|
||||
Global.Config.RamSearchColumnWidths[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].Width;
|
||||
WatchListView.Columns[WatchList.CHANGES].Width = 0;
|
||||
SetReboot(true);
|
||||
}
|
||||
|
||||
|
@ -846,15 +871,15 @@ namespace BizHawk.MultiClient
|
|||
{
|
||||
default:
|
||||
return String.Empty;
|
||||
case ADDRESS:
|
||||
case WatchList.ADDRESS:
|
||||
return Searches[index].AddressString;
|
||||
case VALUE:
|
||||
case WatchList.VALUE:
|
||||
return Searches[index].ValueString;
|
||||
case PREV:
|
||||
case WatchList.PREV:
|
||||
return Searches[index].PreviousStr;
|
||||
case CHANGES:
|
||||
case WatchList.CHANGES:
|
||||
return Searches[index].ChangeCount.ToString();
|
||||
case DIFF:
|
||||
case WatchList.DIFF:
|
||||
return Searches[index].Diff;
|
||||
}
|
||||
}
|
||||
|
@ -1286,11 +1311,11 @@ namespace BizHawk.MultiClient
|
|||
Global.Config.RamSearchShowPrevColumn = true;
|
||||
Global.Config.RamSearchShowDiffColumn = false;
|
||||
|
||||
WatchListView.Columns[ADDRESS].Width = DefaultColumnWidths[ADDRESS];
|
||||
WatchListView.Columns[VALUE].Width = DefaultColumnWidths[VALUE];
|
||||
//WatchListView.Columns[PREV].Width = DefaultColumnWidths[PREV];
|
||||
WatchListView.Columns[CHANGES].Width = DefaultColumnWidths[CHANGES];
|
||||
//WatchListView.Columns[DIFF].Width = DefaultColumnWidths[DIFF];
|
||||
WatchListView.Columns[WatchList.ADDRESS].Width = DefaultColumnWidths[WatchList.ADDRESS];
|
||||
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.DIFF].Width = DefaultColumnWidths[WatchList.DIFF];
|
||||
|
||||
Global.Config.RamSearchSaveWindowPosition = true;
|
||||
Global.Config.RamSearchAlwaysOnTop = TopMost = false;
|
||||
|
@ -1643,11 +1668,11 @@ namespace BizHawk.MultiClient
|
|||
|
||||
private void WatchListView_ColumnReordered(object sender, ColumnReorderedEventArgs e)
|
||||
{
|
||||
Global.Config.RamSearchColumnIndexes[ADDRESS] = WatchListView.Columns[ADDRESS].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[VALUE] = WatchListView.Columns[VALUE].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[PREV] = WatchListView.Columns[ADDRESS].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[CHANGES] = WatchListView.Columns[CHANGES].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[DIFF] = WatchListView.Columns[DIFF].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.ADDRESS] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.VALUE] = WatchListView.Columns[WatchList.VALUE].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.PREV] = WatchListView.Columns[WatchList.ADDRESS].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.CHANGES] = WatchListView.Columns[WatchList.CHANGES].DisplayIndex;
|
||||
Global.Config.RamSearchColumnIndexes[WatchList.DIFF] = WatchListView.Columns[WatchList.DIFF].DisplayIndex;
|
||||
}
|
||||
|
||||
private void WatchListView_Enter(object sender, EventArgs e)
|
||||
|
|
|
@ -49,8 +49,6 @@ namespace BizHawk.MultiClient
|
|||
|
||||
public class RamSearchEngine
|
||||
{
|
||||
|
||||
|
||||
public enum ComparisonOperator { Equal, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, NotEqual, DifferentBy };
|
||||
public enum Compare { Previous, SpecificValue, SpecificAddress, Changes, Difference }
|
||||
|
||||
|
@ -408,7 +406,7 @@ namespace BizHawk.MultiClient
|
|||
{
|
||||
switch(column)
|
||||
{
|
||||
case RamSearch.ADDRESS:
|
||||
case WatchList.ADDRESS:
|
||||
if (reverse)
|
||||
{
|
||||
_watchList = _watchList.OrderByDescending(x => x.Address).ToList();
|
||||
|
@ -418,7 +416,7 @@ namespace BizHawk.MultiClient
|
|||
_watchList = _watchList.OrderBy(x => x.Address).ToList();
|
||||
}
|
||||
break;
|
||||
case RamSearch.VALUE:
|
||||
case WatchList.VALUE:
|
||||
if (reverse)
|
||||
{
|
||||
_watchList = _watchList.OrderByDescending(x => GetValue(x.Address)).ToList();
|
||||
|
@ -428,7 +426,7 @@ namespace BizHawk.MultiClient
|
|||
_watchList = _watchList.OrderBy(x => GetValue(x.Address)).ToList();
|
||||
}
|
||||
break;
|
||||
case RamSearch.PREV:
|
||||
case WatchList.PREV:
|
||||
if (reverse)
|
||||
{
|
||||
_watchList = _watchList.OrderByDescending(x => x.Previous).ToList();
|
||||
|
@ -438,7 +436,7 @@ namespace BizHawk.MultiClient
|
|||
_watchList = _watchList.OrderBy(x => x.Previous).ToList();
|
||||
}
|
||||
break;
|
||||
case RamSearch.CHANGES:
|
||||
case WatchList.CHANGES:
|
||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
||||
{
|
||||
if (reverse)
|
||||
|
@ -457,7 +455,7 @@ namespace BizHawk.MultiClient
|
|||
}
|
||||
}
|
||||
break;
|
||||
case RamSearch.DIFF:
|
||||
case WatchList.DIFF:
|
||||
if (reverse)
|
||||
{
|
||||
_watchList = _watchList.OrderByDescending(x => (GetValue(x.Address) - x.Previous)).ToList();
|
||||
|
|
Loading…
Reference in New Issue