From 57c8b2f75f2e9e6fac029294d3616a348b98d694 Mon Sep 17 00:00:00 2001 From: adelikat Date: Fri, 20 Dec 2013 03:28:25 +0000 Subject: [PATCH] TAStudio - when dragging the frame column to select items, catch the "in betweens" when the mouse moves fast enough to move past some rows. --- .../tools/TAStudio/TAStudio.Designer.cs | 40 ++++----- .../tools/TAStudio/TAStudio.cs | 81 +++++++++++-------- 2 files changed, 68 insertions(+), 53 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Designer.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Designer.cs index 0282be150f..5f431ac7d2 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Designer.cs @@ -99,7 +99,7 @@ namespace BizHawk.Client.EmuHawk this.EnableTooltipsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.TASView = new BizHawk.Client.EmuHawk.TasListView(); + this.TasView = new BizHawk.Client.EmuHawk.TasListView(); this.Frame = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.Log = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.TasStatusStrip = new System.Windows.Forms.StatusStrip(); @@ -659,27 +659,27 @@ namespace BizHawk.Client.EmuHawk // // TASView // - this.TASView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.TasView.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.TASView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.TasView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.Frame, this.Log}); - this.TASView.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.TASView.FullRowSelect = true; - this.TASView.GridLines = true; - this.TASView.InputPaintingMode = false; - this.TASView.ItemCount = 0; - this.TASView.Location = new System.Drawing.Point(8, 27); - this.TASView.Name = "TASView"; - this.TASView.selectedItem = -1; - this.TASView.Size = new System.Drawing.Size(288, 471); - this.TASView.TabIndex = 1; - this.TASView.UseCompatibleStateImageBehavior = false; - this.TASView.View = System.Windows.Forms.View.Details; - this.TASView.SelectedIndexChanged += new System.EventHandler(this.TASView_SelectedIndexChanged); - this.TASView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TASView_MouseDown); - this.TASView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TASView_MouseUp); + this.TasView.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.TasView.FullRowSelect = true; + this.TasView.GridLines = true; + this.TasView.InputPaintingMode = false; + this.TasView.ItemCount = 0; + this.TasView.Location = new System.Drawing.Point(8, 27); + this.TasView.Name = "TASView"; + this.TasView.selectedItem = -1; + this.TasView.Size = new System.Drawing.Size(288, 471); + this.TasView.TabIndex = 1; + this.TasView.UseCompatibleStateImageBehavior = false; + this.TasView.View = System.Windows.Forms.View.Details; + this.TasView.SelectedIndexChanged += new System.EventHandler(this.TASView_SelectedIndexChanged); + this.TasView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TASView_MouseDown); + this.TasView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TASView_MouseUp); // // Frame // @@ -739,7 +739,7 @@ namespace BizHawk.Client.EmuHawk this.Controls.Add(this.TasPlaybackBox); this.Controls.Add(this.TasStatusStrip); this.Controls.Add(this.TASMenu); - this.Controls.Add(this.TASView); + this.Controls.Add(this.TasView); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MainMenuStrip = this.TASMenu; this.MinimumSize = new System.Drawing.Size(437, 148); @@ -769,7 +769,7 @@ namespace BizHawk.Client.EmuHawk private System.Windows.Forms.ToolStripMenuItem ExitMenuItem; private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem ConfigSubMenu; - private TasListView TASView; + private TasListView TasView; private System.Windows.Forms.ColumnHeader Log; private System.Windows.Forms.ToolStripMenuItem RecentSubMenu; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 98599e414d..5c0e926e1c 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -34,9 +34,9 @@ namespace BizHawk.Client.EmuHawk public TAStudio() { InitializeComponent(); - TASView.QueryItemText += TASView_QueryItemText; - TASView.QueryItemBkColor += TASView_QueryItemBkColor; - TASView.VirtualMode = true; + TasView.QueryItemText += TASView_QueryItemText; + TasView.QueryItemBkColor += TASView_QueryItemBkColor; + TasView.VirtualMode = true; Closing += (o, e) => { if (AskSave()) @@ -56,8 +56,8 @@ namespace BizHawk.Client.EmuHawk }; TopMost = Global.Config.TAStudioTopMost; - TASView.InputPaintingMode = Global.Config.TAStudioDrawInput; - TASView.PointedCellChanged += TASView_PointedCellChanged; + TasView.InputPaintingMode = Global.Config.TAStudioDrawInput; + TasView.PointedCellChanged += TASView_PointedCellChanged; } public bool AskSave() @@ -98,14 +98,14 @@ namespace BizHawk.Client.EmuHawk return; } - TASView.ItemCount = _tas.InputLogLength; + TasView.ItemCount = _tas.InputLogLength; if (_tas.IsRecording) { - TASView.ensureVisible(_tas.InputLogLength - 1); + TasView.ensureVisible(_tas.InputLogLength - 1); } else { - TASView.ensureVisible(Global.Emulator.Frame - 1); + TasView.ensureVisible(Global.Emulator.Frame - 1); } } @@ -140,8 +140,8 @@ namespace BizHawk.Client.EmuHawk { try { - var columnName = TASView.Columns[column].Name; - var columnText = TASView.Columns[column].Text; + var columnName = TasView.Columns[column].Name; + var columnText = TasView.Columns[column].Text; if (columnName == MarkerColumnName) { @@ -218,13 +218,13 @@ namespace BizHawk.Client.EmuHawk GlobalWin.OSD.AddMessage("new TAStudio session started"); _tas.StartNewRecording(); GlobalWin.MainForm.StartNewMovie(_tas, true, true); - TASView.ItemCount = _tas.InputLogLength; + TasView.ItemCount = _tas.InputLogLength; } } private void SetUpColumns() { - TASView.Columns.Clear(); + TasView.Columns.Clear(); AddColumn(MarkerColumnName, String.Empty, 18); AddColumn(FrameColumnName, "Frame#", 68); @@ -236,7 +236,7 @@ namespace BizHawk.Client.EmuHawk public void AddColumn(string columnName, string columnText, int columnWidth) { - if (TASView.Columns[columnName] == null) + if (TasView.Columns[columnName] == null) { var column = new ColumnHeader { @@ -245,7 +245,7 @@ namespace BizHawk.Client.EmuHawk Width = columnWidth, }; - TASView.Columns.Add(column); + TasView.Columns.Add(column); } } @@ -286,7 +286,7 @@ namespace BizHawk.Client.EmuHawk else { Global.Config.RecentTas.Add(path); - TASView.ItemCount = _tas.InputLogLength; + TasView.ItemCount = _tas.InputLogLength; } } } @@ -305,8 +305,8 @@ namespace BizHawk.Client.EmuHawk Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(_tas[frame].State.ToArray()))); Global.Emulator.FrameAdvance(true, true); GlobalWin.DisplayManager.NeedsToPaint = true; - TASView.ensureVisible(frame); - TASView.Refresh(); + TasView.ensureVisible(frame); + TasView.Refresh(); } else { @@ -318,7 +318,7 @@ namespace BizHawk.Client.EmuHawk { // TODO: columns selected // TODO: clipboard - ListView.SelectedIndexCollection list = TASView.SelectedIndices; + ListView.SelectedIndexCollection list = TasView.SelectedIndices; string message = String.Empty; if (list.Count > 0) @@ -368,7 +368,7 @@ namespace BizHawk.Client.EmuHawk _tas.Filename = file.FullName; _tas.Load(); Global.Config.RecentTas.Add(_tas.Filename); - TASView.ItemCount = _tas.InputLogLength; + TasView.ItemCount = _tas.InputLogLength; // TOOD: message to the user } } @@ -415,13 +415,13 @@ namespace BizHawk.Client.EmuHawk private void DrawInputByDraggingMenuItem_Click(object sender, EventArgs e) { - TASView.InputPaintingMode = Global.Config.TAStudioDrawInput ^= true; + TasView.InputPaintingMode = Global.Config.TAStudioDrawInput ^= true; } private void CopyMenuItem_Click(object sender, EventArgs e) { TasClipboard.Clear(); - ListView.SelectedIndexCollection list = TASView.SelectedIndices; + ListView.SelectedIndexCollection list = TasView.SelectedIndices; for (int i = 0; i < list.Count; i++) { TasClipboard.Add(new TasClipboardEntry(list[i], _tas[i].Buttons)); @@ -477,28 +477,28 @@ namespace BizHawk.Client.EmuHawk private void OnMovieChanged(object sender, MovieRecord.InputEventArgs e) { //TODO: move logic needs to go here - TASView.ItemCount = _tas.InputLogLength; + TasView.ItemCount = _tas.InputLogLength; } private void TASView_MouseDown(object sender, MouseEventArgs e) { - if (TASView.PointedCell.Row.HasValue && !String.IsNullOrEmpty(TASView.PointedCell.Column)) + if (TasView.PointedCell.Row.HasValue && !String.IsNullOrEmpty(TasView.PointedCell.Column)) { - if (TASView.PointedCell.Column == MarkerColumnName) + if (TasView.PointedCell.Column == MarkerColumnName) { StartMarkerDrag = true; } - else if (TASView.PointedCell.Column == FrameColumnName) + else if (TasView.PointedCell.Column == FrameColumnName) { StartFrameDrag = true; } else { - _tas.ToggleButton(TASView.PointedCell.Row.Value, TASView.PointedCell.Column); - TASView.Refresh(); + _tas.ToggleButton(TasView.PointedCell.Row.Value, TasView.PointedCell.Column); + TasView.Refresh(); - StartDrawColumn = TASView.PointedCell.Column; - StartOn = _tas.IsPressed(TASView.PointedCell.Row.Value, TASView.PointedCell.Column); + StartDrawColumn = TasView.PointedCell.Column; + StartOn = _tas.IsPressed(TasView.PointedCell.Row.Value, TasView.PointedCell.Column); } } } @@ -521,15 +521,30 @@ namespace BizHawk.Client.EmuHawk } else if (StartFrameDrag) { - if (e.NewCell.Row.HasValue) + if (e.OldCell.Row.HasValue && e.NewCell.Row.HasValue) { - TASView.SelectItem(e.NewCell.Row.Value, true); + int startVal, endVal; + if (e.OldCell.Row.Value < e.NewCell.Row.Value) + { + startVal = e.OldCell.Row.Value; + endVal = e.NewCell.Row.Value; + } + else + { + startVal = e.NewCell.Row.Value; + endVal = e.OldCell.Row.Value; + } + + for (int i = startVal + 1; i <= endVal; i++) + { + TasView.SelectItem(i, true); + } } } - else if (TASView.IsPaintDown && e.NewCell.Row.HasValue && !String.IsNullOrEmpty(StartDrawColumn)) + else if (TasView.IsPaintDown && e.NewCell.Row.HasValue && !String.IsNullOrEmpty(StartDrawColumn)) { _tas.SetButton(e.NewCell.Row.Value, StartDrawColumn, StartOn); //Notice it uses new row, old column, you can only paint across a single column - TASView.Refresh(); + TasView.Refresh(); } }