From 0d40a40ea4ddb3e14f76640dfe12af5280b1465f Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 23 Jun 2012 20:48:17 +0000 Subject: [PATCH] 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. --- BizHawk.MultiClient/tools/HexEditor.cs | 94 ++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 6 deletions(-) diff --git a/BizHawk.MultiClient/tools/HexEditor.cs b/BizHawk.MultiClient/tools/HexEditor.cs index bc81d0f28b..4dd7cd8acf 100644 --- a/BizHawk.MultiClient/tools/HexEditor.cs +++ b/BizHawk.MultiClient/tools/HexEditor.cs @@ -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()))