New Ram Search - implement "Use Undo History"

This commit is contained in:
adelikat 2013-09-26 01:09:08 +00:00
parent bb62fa569e
commit 0deb8761bd
3 changed files with 54 additions and 21 deletions

View File

@ -101,7 +101,7 @@
this.AutoSearchMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.AutoSearchMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
this.ExcludeRamWatchMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ExcludeRamWatchMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.useUndoHistoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.UseUndoHistoryMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
this.AutoloadDialogMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.AutoloadDialogMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.SaveWinPositionMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.SaveWinPositionMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -196,7 +196,7 @@
this.WatchListView.Location = new System.Drawing.Point(9, 65); this.WatchListView.Location = new System.Drawing.Point(9, 65);
this.WatchListView.Name = "WatchListView"; this.WatchListView.Name = "WatchListView";
this.WatchListView.selectedItem = -1; this.WatchListView.selectedItem = -1;
this.WatchListView.Size = new System.Drawing.Size(216, 366); this.WatchListView.Size = new System.Drawing.Size(223, 366);
this.WatchListView.TabIndex = 1; this.WatchListView.TabIndex = 1;
this.WatchListView.UseCompatibleStateImageBehavior = false; this.WatchListView.UseCompatibleStateImageBehavior = false;
this.WatchListView.View = System.Windows.Forms.View.Details; this.WatchListView.View = System.Windows.Forms.View.Details;
@ -347,7 +347,7 @@
this.ColumnsMenuItem}); this.ColumnsMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(438, 24); this.menuStrip1.Size = new System.Drawing.Size(445, 24);
this.menuStrip1.TabIndex = 4; this.menuStrip1.TabIndex = 4;
this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.Text = "menuStrip1";
// //
@ -725,7 +725,7 @@
this.AutoSearchMenuItem, this.AutoSearchMenuItem,
this.toolStripSeparator9, this.toolStripSeparator9,
this.ExcludeRamWatchMenuItem, this.ExcludeRamWatchMenuItem,
this.useUndoHistoryToolStripMenuItem, this.UseUndoHistoryMenuItem,
this.toolStripSeparator11, this.toolStripSeparator11,
this.AutoloadDialogMenuItem, this.AutoloadDialogMenuItem,
this.SaveWinPositionMenuItem, this.SaveWinPositionMenuItem,
@ -763,12 +763,12 @@
this.ExcludeRamWatchMenuItem.Text = "Always Exclude Ram Search List"; this.ExcludeRamWatchMenuItem.Text = "Always Exclude Ram Search List";
this.ExcludeRamWatchMenuItem.Click += new System.EventHandler(this.ExcludeRamWatchMenuItem_Click); this.ExcludeRamWatchMenuItem.Click += new System.EventHandler(this.ExcludeRamWatchMenuItem_Click);
// //
// useUndoHistoryToolStripMenuItem // UseUndoHistoryMenuItem
// //
this.useUndoHistoryToolStripMenuItem.Enabled = false; this.UseUndoHistoryMenuItem.Name = "UseUndoHistoryMenuItem";
this.useUndoHistoryToolStripMenuItem.Name = "useUndoHistoryToolStripMenuItem"; this.UseUndoHistoryMenuItem.Size = new System.Drawing.Size(240, 22);
this.useUndoHistoryToolStripMenuItem.Size = new System.Drawing.Size(240, 22); this.UseUndoHistoryMenuItem.Text = "&Use Undo History";
this.useUndoHistoryToolStripMenuItem.Text = "&Use Undo History"; this.UseUndoHistoryMenuItem.Click += new System.EventHandler(this.UseUndoHistoryMenuItem_Click);
// //
// toolStripSeparator11 // toolStripSeparator11
// //
@ -840,7 +840,7 @@
this.CompareToBox.Controls.Add(this.SpecificAddressRadio); this.CompareToBox.Controls.Add(this.SpecificAddressRadio);
this.CompareToBox.Controls.Add(this.SpecificValueRadio); this.CompareToBox.Controls.Add(this.SpecificValueRadio);
this.CompareToBox.Controls.Add(this.PreviousValueRadio); this.CompareToBox.Controls.Add(this.PreviousValueRadio);
this.CompareToBox.Location = new System.Drawing.Point(230, 65); this.CompareToBox.Location = new System.Drawing.Point(237, 65);
this.CompareToBox.Name = "CompareToBox"; this.CompareToBox.Name = "CompareToBox";
this.CompareToBox.Size = new System.Drawing.Size(197, 125); this.CompareToBox.Size = new System.Drawing.Size(197, 125);
this.CompareToBox.TabIndex = 10; this.CompareToBox.TabIndex = 10;
@ -966,7 +966,7 @@
this.RedoToolBarItem}); this.RedoToolBarItem});
this.toolStrip1.Location = new System.Drawing.Point(0, 24); this.toolStrip1.Location = new System.Drawing.Point(0, 24);
this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(438, 25); this.toolStrip1.Size = new System.Drawing.Size(445, 25);
this.toolStrip1.TabIndex = 11; this.toolStrip1.TabIndex = 11;
this.toolStrip1.Text = "toolStrip1"; this.toolStrip1.Text = "toolStrip1";
// //
@ -1109,7 +1109,7 @@
this.ComparisonBox.Controls.Add(this.LessThanOrEqualToRadio); this.ComparisonBox.Controls.Add(this.LessThanOrEqualToRadio);
this.ComparisonBox.Controls.Add(this.GreaterThanRadio); this.ComparisonBox.Controls.Add(this.GreaterThanRadio);
this.ComparisonBox.Controls.Add(this.LessThanRadio); this.ComparisonBox.Controls.Add(this.LessThanRadio);
this.ComparisonBox.Location = new System.Drawing.Point(230, 196); this.ComparisonBox.Location = new System.Drawing.Point(237, 196);
this.ComparisonBox.Name = "ComparisonBox"; this.ComparisonBox.Name = "ComparisonBox";
this.ComparisonBox.Size = new System.Drawing.Size(197, 159); this.ComparisonBox.Size = new System.Drawing.Size(197, 159);
this.ComparisonBox.TabIndex = 12; this.ComparisonBox.TabIndex = 12;
@ -1256,7 +1256,7 @@
this.AllowDrop = true; this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(438, 459); this.ClientSize = new System.Drawing.Size(445, 459);
this.Controls.Add(this.ComparisonBox); this.Controls.Add(this.ComparisonBox);
this.Controls.Add(this.toolStrip1); this.Controls.Add(this.toolStrip1);
this.Controls.Add(this.CompareToBox); this.Controls.Add(this.CompareToBox);
@ -1337,7 +1337,7 @@
private System.Windows.Forms.ToolStripMenuItem AlwaysOnTopMenuItem; private System.Windows.Forms.ToolStripMenuItem AlwaysOnTopMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13; private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
private System.Windows.Forms.ToolStripMenuItem ClearUndoMenuItem; private System.Windows.Forms.ToolStripMenuItem ClearUndoMenuItem;
private System.Windows.Forms.ToolStripMenuItem useUndoHistoryToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem UseUndoHistoryMenuItem;
private System.Windows.Forms.ToolStripSeparator ContextMenuSeparator2; private System.Windows.Forms.ToolStripSeparator ContextMenuSeparator2;
private System.Windows.Forms.ToolStripMenuItem ClearPreviewContextMenuItem; private System.Windows.Forms.ToolStripMenuItem ClearPreviewContextMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;

View File

@ -873,6 +873,7 @@ namespace BizHawk.MultiClient
AutoloadDialogMenuItem.Checked = Global.Config.RecentSearches.AutoLoad; AutoloadDialogMenuItem.Checked = Global.Config.RecentSearches.AutoLoad;
SaveWinPositionMenuItem.Checked = Global.Config.RamSearchSaveWindowPosition; SaveWinPositionMenuItem.Checked = Global.Config.RamSearchSaveWindowPosition;
ExcludeRamWatchMenuItem.Checked = Global.Config.RamSearchAlwaysExcludeRamWatch; ExcludeRamWatchMenuItem.Checked = Global.Config.RamSearchAlwaysExcludeRamWatch;
UseUndoHistoryMenuItem.Checked = Searches.UndoEnabled;
PreviewModeMenuItem.Checked = Global.Config.RamSearchPreviewMode; PreviewModeMenuItem.Checked = Global.Config.RamSearchPreviewMode;
AlwaysOnTopMenuItem.Checked = Global.Config.RamSearchAlwaysOnTop; AlwaysOnTopMenuItem.Checked = Global.Config.RamSearchAlwaysOnTop;
AutoSearchMenuItem.Checked = autoSearch; AutoSearchMenuItem.Checked = autoSearch;
@ -897,6 +898,11 @@ namespace BizHawk.MultiClient
} }
} }
private void UseUndoHistoryMenuItem_Click(object sender, EventArgs e)
{
Searches.UndoEnabled ^= true;
}
private void AutoloadDialogMenuItem_Click(object sender, EventArgs e) private void AutoloadDialogMenuItem_Click(object sender, EventArgs e)
{ {
Global.Config.RecentSearches.AutoLoad ^= true; Global.Config.RecentSearches.AutoLoad ^= true;

View File

@ -17,10 +17,12 @@ namespace BizHawk.MultiClient
public int? CompareValue = null; public int? CompareValue = null;
public ComparisonOperator Operator = ComparisonOperator.Equal; public ComparisonOperator Operator = ComparisonOperator.Equal;
public int? DifferentBy = null; public int? DifferentBy = null;
private List<IMiniWatch> _watchList = new List<IMiniWatch>(); private List<IMiniWatch> _watchList = new List<IMiniWatch>();
private Settings _settings; private Settings _settings;
private WatchHistory _history = new WatchHistory(true); private WatchHistory _history = new WatchHistory(true);
private bool _keepHistory = true;
public RamSearchEngine(Settings settings) public RamSearchEngine(Settings settings)
{ {
@ -86,7 +88,10 @@ namespace BizHawk.MultiClient
break; break;
} }
_history.AddState(_watchList); if (_keepHistory)
{
_history.AddState(_watchList);
}
} }
/// <summary> /// <summary>
@ -152,7 +157,10 @@ namespace BizHawk.MultiClient
SetPrevousToCurrent(); SetPrevousToCurrent();
} }
_history.AddState(_watchList); if (_keepHistory)
{
_history.AddState(_watchList);
}
return before - _watchList.Count; return before - _watchList.Count;
} }
@ -297,9 +305,22 @@ namespace BizHawk.MultiClient
#endregion #endregion
#region Undo API #region Undo API
public bool CanUndo { get { return _history.CanUndo; } } public bool UndoEnabled
public bool CanRedo { get { return _history.CanRedo; } } {
get { return _keepHistory; }
set { _keepHistory = value; }
}
public bool CanUndo
{
get { return _keepHistory && _history.CanUndo; }
}
public bool CanRedo
{
get { return _keepHistory && _history.CanRedo; }
}
public void ClearHistory() public void ClearHistory()
{ {
@ -308,12 +329,18 @@ namespace BizHawk.MultiClient
public void Undo() public void Undo()
{ {
_watchList = _history.Undo(); if (_keepHistory)
{
_watchList = _history.Undo();
}
} }
public void Redo() public void Redo()
{ {
_watchList = _history.Redo(); if (_keepHistory)
{
_watchList = _history.Redo();
}
} }
#endregion #endregion