tastudio: ignore inputroll hotkeys and numeric branch hotkeys during float editing mode.

This commit is contained in:
feos 2016-05-07 15:04:42 +03:00
parent a7f03d4c2c
commit 53c7f4e5be
3 changed files with 98 additions and 72 deletions

View File

@ -45,6 +45,7 @@ namespace BizHawk.Client.EmuHawk
public bool denoteMarkersWithBGColor { get; set; }
public bool allowRightClickSelecton { get; set; }
public bool letKeysModifySelection { get; set; }
public bool suspendHotkeys { get; set; }
private IntPtr RotatedFont;
private readonly IntPtr NormalFont;
@ -1263,93 +1264,96 @@ namespace BizHawk.Client.EmuHawk
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.Control && !e.Alt && e.Shift && e.KeyCode == Keys.F) // Ctrl+Shift+F
if (!suspendHotkeys)
{
HorizontalOrientation ^= true;
}
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageUp) // Page Up
{
if (FirstVisibleRow > 0)
if (e.Control && !e.Alt && e.Shift && e.KeyCode == Keys.F) // Ctrl+Shift+F
{
LastVisibleRow = FirstVisibleRow;
Refresh();
HorizontalOrientation ^= true;
}
}
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageDown) // Page Down
{
var totalRows = LastVisibleRow - FirstVisibleRow;
if (totalRows <= RowCount)
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageUp) // Page Up
{
var final = LastVisibleRow + totalRows;
if (final > RowCount)
if (FirstVisibleRow > 0)
{
final = RowCount;
LastVisibleRow = FirstVisibleRow;
Refresh();
}
}
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageDown) // Page Down
{
var totalRows = LastVisibleRow - FirstVisibleRow;
if (totalRows <= RowCount)
{
var final = LastVisibleRow + totalRows;
if (final > RowCount)
{
final = RowCount;
}
LastVisibleRow = final;
Refresh();
}
}
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.Home) // Home
{
FirstVisibleRow = 0;
Refresh();
}
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.End) // End
{
LastVisibleRow = RowCount;
Refresh();
}
else if (e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.Up) // Ctrl + Up
{
if (SelectedRows.Any() && letKeysModifySelection)
{
foreach (var row in SelectedRows.ToList())
{
SelectRow(row - 1, true);
SelectRow(row, false);
LastVisibleRow = final;
Refresh();
}
}
}
else if (e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.Down) // Ctrl + Down
{
if (SelectedRows.Any() && letKeysModifySelection)
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.Home) // Home
{
foreach (var row in SelectedRows.Reverse().ToList())
FirstVisibleRow = 0;
Refresh();
}
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.End) // End
{
LastVisibleRow = RowCount;
Refresh();
}
else if (e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.Up) // Ctrl + Up
{
if (SelectedRows.Any() && letKeysModifySelection)
{
SelectRow(row + 1, true);
SelectRow(row, false);
foreach (var row in SelectedRows.ToList())
{
SelectRow(row - 1, true);
SelectRow(row, false);
}
}
}
}
else if (!e.Control && e.Shift && !e.Alt && e.KeyCode == Keys.Up) // Shift + Up
{
if (SelectedRows.Any() && letKeysModifySelection)
else if (e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.Down) // Ctrl + Down
{
SelectRow(SelectedRows.First() - 1, true);
if (SelectedRows.Any() && letKeysModifySelection)
{
foreach (var row in SelectedRows.Reverse().ToList())
{
SelectRow(row + 1, true);
SelectRow(row, false);
}
}
}
}
else if (!e.Control && e.Shift && !e.Alt && e.KeyCode == Keys.Down) // Shift + Down
{
if (SelectedRows.Any() && letKeysModifySelection)
else if (!e.Control && e.Shift && !e.Alt && e.KeyCode == Keys.Up) // Shift + Up
{
SelectRow(SelectedRows.Last() + 1, true);
if (SelectedRows.Any() && letKeysModifySelection)
{
SelectRow(SelectedRows.First() - 1, true);
}
}
}
else if (!e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.Up) // Up
{
if (FirstVisibleRow > 0)
else if (!e.Control && e.Shift && !e.Alt && e.KeyCode == Keys.Down) // Shift + Down
{
FirstVisibleRow--;
Refresh();
if (SelectedRows.Any() && letKeysModifySelection)
{
SelectRow(SelectedRows.Last() + 1, true);
}
}
}
else if (!e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.Down) // Down
{
if (FirstVisibleRow < RowCount - 1)
else if (!e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.Up) // Up
{
FirstVisibleRow++;
Refresh();
if (FirstVisibleRow > 0)
{
FirstVisibleRow--;
Refresh();
}
}
else if (!e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.Down) // Down
{
if (FirstVisibleRow < RowCount - 1)
{
FirstVisibleRow++;
Refresh();
}
}
}

View File

@ -276,6 +276,9 @@ namespace BizHawk.Client.EmuHawk
public void LoadBranchExternal(int slot = -1)
{
if (Tastudio.FloatEditingMode)
return;
if (slot != -1)
{
if (GetBranch(slot) != null)
@ -293,6 +296,9 @@ namespace BizHawk.Client.EmuHawk
public void UpdateBranchExternal(int slot = -1)
{
if (Tastudio.FloatEditingMode)
return;
if (slot != -1)
{
if (GetBranch(slot) != null)
@ -315,6 +321,9 @@ namespace BizHawk.Client.EmuHawk
public void SelectBranchExternal(int slot)
{
if (Tastudio.FloatEditingMode)
return;
if (GetBranch(slot) != null)
{
BranchView.SelectRow(slot, true);

View File

@ -25,6 +25,14 @@ namespace BizHawk.Client.EmuHawk
// SuuperW: For editing analog input
private string _floatEditColumn = string.Empty;
private int _floatEditRow = -1;
private int floatEditRow
{
set
{
_floatEditRow = value;
TasView.suspendHotkeys = FloatEditingMode;
}
}
private string _floatTypedValue;
private int _floatEditYPos = -1;
// Right-click dragging
@ -86,6 +94,11 @@ namespace BizHawk.Client.EmuHawk
_seekBackgroundWorker.CancelAsync();
}
public bool FloatEditingMode
{
get { return _floatEditRow != -1; }
}
// public static Color CurrentFrame_FrameCol = Color.FromArgb(0xCFEDFC); Why?
public static Color CurrentFrame_InputLog = Color.FromArgb(0xB5E7F7);
@ -400,7 +413,7 @@ namespace BizHawk.Client.EmuHawk
{
if (_floatEditColumn != buttonName || _floatEditRow != frame)
{
_floatEditRow = -1;
floatEditRow = -1;
RefreshTasView();
}
else
@ -486,12 +499,12 @@ namespace BizHawk.Client.EmuHawk
else // Double-click enters float editing mode
{
if (_floatEditColumn == buttonName && _floatEditRow == frame)
_floatEditRow = -1;
floatEditRow = -1;
else
{
CurrentTasMovie.ChangeLog.BeginNewBatch("Float Edit: " + frame);
_floatEditColumn = buttonName;
_floatEditRow = frame;
floatEditRow = frame;
_floatTypedValue = "";
_floatEditYPos = e.Y;
_triggerAutoRestore = true;
@ -559,7 +572,7 @@ namespace BizHawk.Client.EmuHawk
// Exit float editing if value was changed with cursor
if (_floatEditRow != -1 && _floatPaintState != CurrentTasMovie.GetFloatState(_floatEditRow, _floatEditColumn))
{
_floatEditRow = -1;
floatEditRow = -1;
RefreshDialog();
}
_floatPaintState = 0;
@ -937,7 +950,7 @@ namespace BizHawk.Client.EmuHawk
_floatEditYPos = -1;
CurrentTasMovie.SetFloatState(_floatEditRow, _floatEditColumn, _floatPaintState);
}
_floatEditRow = -1;
floatEditRow = -1;
}
else
{