Hex Editor - add shift highlighting logic to up,down,left,right,pageup,pagedown keys, add multi-highlight logic to tab and shift+tab. Still todo: several other keys.

This commit is contained in:
adelikat 2012-06-23 20:48:17 +00:00
parent 12e674973d
commit 0d40a40ea4
1 changed files with 88 additions and 6 deletions

View File

@ -1136,27 +1136,101 @@ namespace BizHawk.MultiClient
private void HexEditor_KeyDown(object sender, KeyEventArgs e)
{
int newHighlighted;
switch (e.KeyCode)
{
case Keys.Up:
GoToAddress(addressHighlighted - 16);
newHighlighted = addressHighlighted - 16;
if (e.Modifiers == Keys.Shift)
{
for (int i = newHighlighted + 1; i <= addressHighlighted; i++)
{
AddToSecondaryHighlights(i);
}
GoToAddress(newHighlighted);
}
else
{
SecondaryHighlightedAddresses.Clear();
GoToAddress(newHighlighted);
}
break;
case Keys.Down:
GoToAddress(addressHighlighted + 16);
newHighlighted = addressHighlighted + 16;
if (e.Modifiers == Keys.Shift)
{
for (int i = newHighlighted - 16; i < newHighlighted; i++)
{
AddToSecondaryHighlights(i);
}
GoToAddress(newHighlighted);
}
else
{
SecondaryHighlightedAddresses.Clear();
GoToAddress(newHighlighted);
}
break;
case Keys.Left:
GoToAddress(addressHighlighted - (1 * DataSize));
newHighlighted = addressHighlighted - (1 * DataSize);
if (e.Modifiers == Keys.Shift)
{
AddToSecondaryHighlights(addressHighlighted);
GoToAddress(newHighlighted);
}
else
{
SecondaryHighlightedAddresses.Clear();
GoToAddress(newHighlighted);
}
break;
case Keys.Right:
GoToAddress(addressHighlighted + (1 * DataSize));
newHighlighted = addressHighlighted + (1 * DataSize);
if (e.Modifiers == Keys.Shift)
{
AddToSecondaryHighlights(addressHighlighted);
GoToAddress(newHighlighted);
}
else
{
SecondaryHighlightedAddresses.Clear();
GoToAddress(newHighlighted);
}
break;
case Keys.PageUp:
GoToAddress(addressHighlighted - (RowsVisible * 16));
newHighlighted = addressHighlighted - (RowsVisible * 16);
if (e.Modifiers == Keys.Shift)
{
for (int i = newHighlighted + 1; i <= addressHighlighted; i++)
{
AddToSecondaryHighlights(i);
}
GoToAddress(newHighlighted);
}
else
{
SecondaryHighlightedAddresses.Clear();
GoToAddress(newHighlighted);
}
break;
case Keys.PageDown:
GoToAddress(addressHighlighted + (RowsVisible * 16));
newHighlighted = addressHighlighted + (RowsVisible * 16);
if (e.Modifiers == Keys.Shift)
{
for (int i = addressHighlighted + 1; i < newHighlighted; i++)
{
AddToSecondaryHighlights(i);
}
GoToAddress(newHighlighted);
}
else
{
SecondaryHighlightedAddresses.Clear();
GoToAddress(newHighlighted);
}
break;
case Keys.Tab:
SecondaryHighlightedAddresses.Clear();
if (e.Modifiers == Keys.Shift)
GoToAddress(addressHighlighted - 8);
else
@ -1192,6 +1266,14 @@ namespace BizHawk.MultiClient
}
}
private void AddToSecondaryHighlights(int address)
{
if (address >= 0 && address < Domain.Size)
{
SecondaryHighlightedAddresses.Add(address);
}
}
private void HexEditor_KeyUp(object sender, KeyEventArgs e)
{
if (!InputValidate.IsValidHexNumber(((char)e.KeyCode).ToString()))