From ccdf616d461a644424165b84e9eac51eccc90549 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 19 Oct 2019 20:02:46 -0500 Subject: [PATCH] convert Tastudio UndoHistory from VirtualListView to InputRoll --- .../TAStudio/UndoHistoryForm.Designer.cs | 32 ++------- .../tools/TAStudio/UndoHistoryForm.cs | 65 ++++++++++--------- 2 files changed, 42 insertions(+), 55 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/UndoHistoryForm.Designer.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/UndoHistoryForm.Designer.cs index 2e4168040e..14b81b3ec1 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/UndoHistoryForm.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/UndoHistoryForm.Designer.cs @@ -40,9 +40,7 @@ this.AutoScrollCheck = new System.Windows.Forms.CheckBox(); this.MaxStepsNum = new System.Windows.Forms.NumericUpDown(); this.label1 = new System.Windows.Forms.Label(); - this.HistoryView = new BizHawk.Client.EmuHawk.VirtualListView(); - this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.HistoryView = new InputRoll(); this.RightClickMenu.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.MaxStepsNum)).BeginInit(); this.SuspendLayout(); @@ -168,35 +166,19 @@ this.HistoryView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.HistoryView.BlazingFast = false; - this.HistoryView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeader1, - this.columnHeader2}); - this.HistoryView.HideSelection = false; - this.HistoryView.ItemCount = 0; + this.HistoryView.RowCount = 0; this.HistoryView.Location = new System.Drawing.Point(10, 10); this.HistoryView.MultiSelect = false; this.HistoryView.Name = "HistoryView"; - this.HistoryView.SelectAllInProgress = false; - this.HistoryView.selectedItem = -1; this.HistoryView.Size = new System.Drawing.Size(369, 213); this.HistoryView.TabIndex = 2; - this.HistoryView.UseCompatibleStateImageBehavior = false; this.HistoryView.UseCustomBackground = true; - this.HistoryView.View = System.Windows.Forms.View.Details; this.HistoryView.DoubleClick += new System.EventHandler(this.HistoryView_DoubleClick); this.HistoryView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.HistoryView_MouseDown); this.HistoryView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.HistoryView_MouseUp); - // - // columnHeader1 - // - this.columnHeader1.Text = "ID"; - this.columnHeader1.Width = 40; - // - // columnHeader2 - // - this.columnHeader2.Text = "Undo Step"; - this.columnHeader2.Width = 322; + this.HistoryView.AllowColumnReorder = false; + this.HistoryView.AllowColumnResize = false; + this.HistoryView.FullRowSelect = true; // // UndoHistoryForm // @@ -225,9 +207,7 @@ private System.Windows.Forms.Button ClearButton; private System.Windows.Forms.Button UndoButton; - private VirtualListView HistoryView; - private System.Windows.Forms.ColumnHeader columnHeader1; - private System.Windows.Forms.ColumnHeader columnHeader2; + private InputRoll HistoryView; private System.Windows.Forms.Button RedoButton; private System.Windows.Forms.ContextMenuStrip RightClickMenu; private System.Windows.Forms.ToolStripMenuItem undoHereToolStripMenuItem; diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/UndoHistoryForm.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/UndoHistoryForm.cs index 5b37c6f46d..b08c0e49db 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/UndoHistoryForm.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/UndoHistoryForm.cs @@ -1,5 +1,6 @@ using System; using System.Drawing; +using System.Linq; using System.Windows.Forms; using BizHawk.Client.Common; @@ -7,6 +8,9 @@ namespace BizHawk.Client.EmuHawk { public partial class UndoHistoryForm : Form { + private const string IdColumnName = "ID"; + private const string UndoColumnName = "Undo Step"; + private readonly TAStudio _tastudio; private string _lastUndoAction; private TasMovieChangeLog Log => _tastudio.CurrentTasMovie.ChangeLog; @@ -19,30 +23,30 @@ namespace BizHawk.Client.EmuHawk HistoryView.QueryItemText += HistoryView_QueryItemText; HistoryView.QueryItemBkColor += HistoryView_QueryItemBkColor; - HistoryView.Columns[1].Width = 280; + HistoryView.AllColumns.Clear(); + HistoryView.AllColumns.AddRange(new[] + { + new InputRoll.RollColumn { Name = IdColumnName, Text = IdColumnName, Width = 40, Type = InputRoll.RollColumn.InputType.Text }, + new InputRoll.RollColumn { Name = UndoColumnName, Text = UndoColumnName, Width = 280, Type = InputRoll.RollColumn.InputType.Text } + }); MaxStepsNum.Value = Log.MaxSteps; } - private void HistoryView_QueryItemText(int row, int column, out string text) + private void HistoryView_QueryItemText(int index, InputRoll.RollColumn column, out string text, ref int offsetX, ref int offsetY) { - text = column == 1 - ? Log.Names[row] - : row.ToString(); + text = column.Name == UndoColumnName + ? Log.Names[index] + : index.ToString(); } - private void HistoryView_QueryItemBkColor(int row, int column, ref Color color) + private void HistoryView_QueryItemBkColor(int index, InputRoll.RollColumn column, ref Color color) { - if (column == 0) - { - return; - } - - if (row == Log.UndoIndex) + if (index == Log.UndoIndex) { color = TAStudio.GreenZone_InputLog; } - else if (row > Log.UndoIndex) + else if (index > Log.UndoIndex) { color = TAStudio.LagZone_InputLog; } @@ -50,12 +54,12 @@ namespace BizHawk.Client.EmuHawk public void UpdateValues() { - HistoryView.ItemCount = Log.Names.Count; + HistoryView.RowCount = Log.Names.Count; if (AutoScrollCheck.Checked && _lastUndoAction != Log.NextUndoStepName) { - HistoryView.ensureVisible(Log.UndoIndex); - HistoryView.clearSelection(); - HistoryView.SelectItem(Log.UndoIndex - 1, true); + HistoryView.ScrollToIndex(Log.UndoIndex); + HistoryView.DeselectAll(); + HistoryView.SelectRow(Log.UndoIndex - 1, true); } _lastUndoAction = Log.NextUndoStepName; @@ -81,9 +85,13 @@ namespace BizHawk.Client.EmuHawk _tastudio.RefreshDialog(); } + private int SelectedItem => HistoryView.SelectedRows.Any() + ? HistoryView.SelectedRows.First() + : -1; + private void HistoryView_DoubleClick(object sender, EventArgs e) { - if (Log.UndoIndex <= HistoryView.selectedItem) + if (Log.UndoIndex <= SelectedItem) { return; } @@ -92,7 +100,7 @@ namespace BizHawk.Client.EmuHawk { Log.Undo(); } - while (Log.UndoIndex > HistoryView.selectedItem); + while (Log.UndoIndex > SelectedItem); UpdateValues(); } @@ -105,9 +113,9 @@ namespace BizHawk.Client.EmuHawk } else if (e.Button == MouseButtons.Left) { - if (HistoryView.selectedItem == -1) + if (SelectedItem == -1) { - HistoryView.SelectItem(_hackSelect, true); + HistoryView.SelectRow(_hackSelect, true); } } } @@ -117,13 +125,12 @@ namespace BizHawk.Client.EmuHawk private void HistoryView_MouseDown(object sender, MouseEventArgs e) { - HistoryView.SelectItem((e.Y / HistoryView.LineHeight) + HistoryView.VScrollPos - 1, true); - _hackSelect = HistoryView.selectedItem; + _hackSelect = SelectedItem; } private void UndoHereMenuItem_Click(object sender, EventArgs e) { - if (HistoryView.selectedItem == -1 || Log.UndoIndex < HistoryView.selectedItem) + if (SelectedItem == -1 || Log.UndoIndex < SelectedItem) { return; } @@ -132,14 +139,14 @@ namespace BizHawk.Client.EmuHawk { Log.Undo(); } - while (Log.UndoIndex >= HistoryView.selectedItem); + while (Log.UndoIndex >= SelectedItem); UpdateValues(); } private void RedoHereMenuItem_Click(object sender, EventArgs e) { - if (HistoryView.selectedItem == -1 || Log.UndoIndex >= HistoryView.selectedItem) + if (SelectedItem == -1 || Log.UndoIndex >= SelectedItem) { return; } @@ -148,16 +155,16 @@ namespace BizHawk.Client.EmuHawk { Log.Redo(); } - while (Log.UndoIndex < HistoryView.selectedItem); + while (Log.UndoIndex < SelectedItem); UpdateValues(); } private void ClearHistoryToHereMenuItem_Click(object sender, EventArgs e) { - if (HistoryView.selectedItem != -1) + if (SelectedItem != -1) { - Log.ClearLog(HistoryView.selectedItem); + Log.ClearLog(SelectedItem); } UpdateValues();