TAStudio - when dragging the frame column to select items, catch the "in betweens" when the mouse moves fast enough to move past some rows.
This commit is contained in:
parent
c2cc80ee12
commit
57c8b2f75f
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue