Convert debugger to use InputRoll instead of VirtualListView
This commit is contained in:
parent
701533f4fe
commit
9100526a0c
|
@ -1573,11 +1573,11 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
if (_horizontalOrientation)
|
||||
{
|
||||
ColumnScroll?.Invoke(this, e);
|
||||
ColumnScroll?.Invoke(_vBar, e);
|
||||
}
|
||||
else
|
||||
{
|
||||
RowScroll?.Invoke(this, e);
|
||||
RowScroll?.Invoke(_vBar, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1590,11 +1590,11 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
if (_horizontalOrientation)
|
||||
{
|
||||
RowScroll?.Invoke(this, e);
|
||||
RowScroll?.Invoke(_hBar, e);
|
||||
}
|
||||
else
|
||||
{
|
||||
ColumnScroll?.Invoke(this, e);
|
||||
ColumnScroll?.Invoke(_vBar, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,9 +46,7 @@
|
|||
this.DisassemblerBox = new System.Windows.Forms.GroupBox();
|
||||
this.ToPCBtn = new System.Windows.Forms.Button();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.DisassemblerView = new BizHawk.Client.EmuHawk.VirtualListView();
|
||||
this.Address = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.Instruction = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.DisassemblerView = new InputRoll();
|
||||
this.DisassemblerContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.AddBreakpointContextMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.StepOutBtn = new System.Windows.Forms.Button();
|
||||
|
@ -239,39 +237,21 @@
|
|||
this.DisassemblerView.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.DisassemblerView.BlazingFast = false;
|
||||
this.DisassemblerView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.Address,
|
||||
this.Instruction});
|
||||
this.DisassemblerView.AllowColumnReorder = false;
|
||||
this.DisassemblerView.AllowColumnResize = true;
|
||||
this.DisassemblerView.ContextMenuStrip = this.DisassemblerContextMenu;
|
||||
this.DisassemblerView.Font = new System.Drawing.Font("Courier New", 8F);
|
||||
this.DisassemblerView.FullRowSelect = true;
|
||||
this.DisassemblerView.GridLines = true;
|
||||
this.DisassemblerView.HideSelection = false;
|
||||
this.DisassemblerView.ItemCount = 0;
|
||||
this.DisassemblerView.RowCount = 0;
|
||||
this.DisassemblerView.Location = new System.Drawing.Point(6, 39);
|
||||
this.DisassemblerView.Name = "DisassemblerView";
|
||||
this.DisassemblerView.SelectAllInProgress = false;
|
||||
this.DisassemblerView.selectedItem = -1;
|
||||
this.DisassemblerView.Size = new System.Drawing.Size(395, 476);
|
||||
this.DisassemblerView.TabIndex = 1;
|
||||
this.DisassemblerView.UseCompatibleStateImageBehavior = false;
|
||||
this.DisassemblerView.UseCustomBackground = true;
|
||||
this.DisassemblerView.View = System.Windows.Forms.View.Details;
|
||||
this.DisassemblerView.Scroll += new System.Windows.Forms.ScrollEventHandler(this.DisassemblerView_Scroll);
|
||||
this.DisassemblerView.RowScroll += new InputRoll.RowScrollEvent(this.DisassemblerView_Scroll);
|
||||
this.DisassemblerView.SizeChanged += new System.EventHandler(this.DisassemblerView_SizeChanged);
|
||||
this.DisassemblerView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.DisassemblerView_KeyDown);
|
||||
this.DisassemblerView.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.DisassemblerView_Wheel);
|
||||
//
|
||||
// Address
|
||||
//
|
||||
this.Address.Text = "Address";
|
||||
this.Address.Width = 94;
|
||||
//
|
||||
// Instruction
|
||||
//
|
||||
this.Instruction.Text = "Instruction";
|
||||
this.Instruction.Width = 291;
|
||||
//
|
||||
// DisassemblerContextMenu
|
||||
//
|
||||
|
@ -412,9 +392,7 @@
|
|||
private System.Windows.Forms.GroupBox BreakpointsGroupBox;
|
||||
private BreakpointControl BreakPointControl1;
|
||||
private System.Windows.Forms.GroupBox DisassemblerBox;
|
||||
private VirtualListView DisassemblerView;
|
||||
private System.Windows.Forms.ColumnHeader Address;
|
||||
private System.Windows.Forms.ColumnHeader Instruction;
|
||||
private InputRoll DisassemblerView;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button StepOutBtn;
|
||||
private System.Windows.Forms.Button StepIntoBtn;
|
||||
|
|
|
@ -43,16 +43,14 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
if (CanDisassemble)
|
||||
{
|
||||
DisassemblerView.BlazingFast = true;
|
||||
Disassemble();
|
||||
SetDisassemblerItemCount();
|
||||
DisassemblerView.BlazingFast = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Disassemble()
|
||||
{
|
||||
int lineCount = DisassemblerView.NumberOfVisibleRows;
|
||||
int lineCount = DisassemblerView.RowCount + 2;
|
||||
|
||||
_disassemblyLines.Clear();
|
||||
uint a = _currentDisassemblerAddress;
|
||||
|
@ -69,24 +67,24 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
private void DisassemblerView_QueryItemText(int index, int column, out string text)
|
||||
private void DisassemblerView_QueryItemText(int index, InputRoll.RollColumn column, out string text, ref int offsetX, ref int offsetY)
|
||||
{
|
||||
text = "";
|
||||
|
||||
if (index < _disassemblyLines.Count)
|
||||
{
|
||||
if (column == 0)
|
||||
if (column.Name == AddressColumnName)
|
||||
{
|
||||
text = _disassemblyLines[index].Address.ToHexString(_pcRegisterSize);
|
||||
}
|
||||
else if (column == 1)
|
||||
else if (column.Name == InstructionColumnName)
|
||||
{
|
||||
text = _disassemblyLines[index].Mnemonic;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DisassemblerView_QueryItemBkColor(int index, int column, ref Color color)
|
||||
private void DisassemblerView_QueryItemBkColor(int index, InputRoll.RollColumn column, ref Color color)
|
||||
{
|
||||
if (_disassemblyLines.Any() && index < _disassemblyLines.Count)
|
||||
{
|
||||
|
@ -97,9 +95,16 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private void DecrementCurrentAddress()
|
||||
{
|
||||
if (_currentDisassemblerAddress == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
uint newaddress = _currentDisassemblerAddress;
|
||||
|
||||
while (true)
|
||||
{
|
||||
int bytestoadvance;
|
||||
|
@ -137,51 +142,44 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
private void DisassemblerView_Scroll(object sender, ScrollEventArgs e)
|
||||
|
||||
private bool _blockScroll;
|
||||
private void DisassemblerView_Scroll(object sender, EventArgs e)
|
||||
{
|
||||
if (e.Type == ScrollEventType.SmallIncrement)
|
||||
// This is really really gross, but it works
|
||||
if (_blockScroll)
|
||||
{
|
||||
SmallIncrement();
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.Type == ScrollEventType.SmallDecrement)
|
||||
var scrollBar = sender as ScrollBar;
|
||||
if (scrollBar != null)
|
||||
{
|
||||
SmallDecrement();
|
||||
}
|
||||
}
|
||||
if (scrollBar.Value > 0)
|
||||
{
|
||||
SmallIncrement();
|
||||
|
||||
private void DisassemblerView_Wheel(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Delta > 0)
|
||||
{
|
||||
SmallDecrement();
|
||||
}
|
||||
if (e.Delta > 120)
|
||||
{
|
||||
SmallDecrement();
|
||||
}
|
||||
if (e.Delta > 240)
|
||||
{
|
||||
SmallDecrement();
|
||||
}
|
||||
_blockScroll = true;
|
||||
scrollBar.Value = 14;
|
||||
_blockScroll = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
SmallDecrement();
|
||||
|
||||
if (e.Delta < 0)
|
||||
{
|
||||
SmallIncrement();
|
||||
}
|
||||
if (e.Delta < -120)
|
||||
{
|
||||
SmallIncrement();
|
||||
}
|
||||
if (e.Delta < -240)
|
||||
{
|
||||
SmallIncrement();
|
||||
if (_currentDisassemblerAddress != 0)
|
||||
{
|
||||
_blockScroll = true;
|
||||
scrollBar.Value = 14;
|
||||
_blockScroll = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetDisassemblerItemCount()
|
||||
{
|
||||
DisassemblerView.ItemCount = DisassemblerView.NumberOfVisibleRows + 1;
|
||||
DisassemblerView.RowCount = DisassemblerView.VisibleRows + 2;
|
||||
}
|
||||
|
||||
private void DisassemblerView_SizeChanged(object sender, EventArgs e)
|
||||
|
@ -225,7 +223,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void CopySelectedDisassembler()
|
||||
{
|
||||
var indices = DisassemblerView.SelectedIndices;
|
||||
var indices = DisassemblerView.SelectedRows.ToList();
|
||||
|
||||
if (indices.Count > 0)
|
||||
{
|
||||
|
@ -256,12 +254,12 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void DisassemblerContextMenu_Opening(object sender, EventArgs e)
|
||||
{
|
||||
AddBreakpointContextMenuItem.Enabled = DisassemblerView.SelectedIndices.Count > 0;
|
||||
AddBreakpointContextMenuItem.Enabled = DisassemblerView.SelectedRows.Any();
|
||||
}
|
||||
|
||||
private void AddBreakpointContextMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var indices = DisassemblerView.SelectedIndices;
|
||||
var indices = DisassemblerView.SelectedRows.ToList();
|
||||
|
||||
if (indices.Count > 0)
|
||||
{
|
||||
|
|
|
@ -10,6 +10,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
public partial class GenericDebugger : Form, IToolFormAutoConfig, IControlMainform
|
||||
{
|
||||
private const string AddressColumnName = "Address";
|
||||
private const string InstructionColumnName = "Instruction";
|
||||
|
||||
public GenericDebugger()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -17,7 +20,24 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
DisassemblerView.QueryItemText += DisassemblerView_QueryItemText;
|
||||
DisassemblerView.QueryItemBkColor += DisassemblerView_QueryItemBkColor;
|
||||
DisassemblerView.VirtualMode = true;
|
||||
DisassemblerView.AllColumns.Clear();
|
||||
DisassemblerView.AllColumns.AddRange(new[]
|
||||
{
|
||||
new InputRoll.RollColumn
|
||||
{
|
||||
Name = AddressColumnName,
|
||||
Text = AddressColumnName,
|
||||
Width = 94,
|
||||
Type = InputRoll.RollColumn.InputType.Text
|
||||
},
|
||||
new InputRoll.RollColumn
|
||||
{
|
||||
Name = InstructionColumnName,
|
||||
Text = InstructionColumnName,
|
||||
Width = 291,
|
||||
Type = InputRoll.RollColumn.InputType.Text
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void GenericDebugger_Load(object sender, EventArgs e)
|
||||
|
@ -75,7 +95,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
else
|
||||
{
|
||||
DisassemblerBox.Enabled = false;
|
||||
DisassemblerView.ItemCount = 0;
|
||||
DisassemblerView.RowCount = 0;
|
||||
DisassemblerBox.Controls.Add(new Label
|
||||
{
|
||||
Location = new Point(UIHelper.ScaleX(35), UIHelper.ScaleY(23)),
|
||||
|
|
|
@ -184,6 +184,7 @@
|
|||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Autosave/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=bsnes/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Disasm/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=disassembly/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Dontfire/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Endian/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=frameadvance/@EntryIndexedValue">True</s:Boolean>
|
||||
|
|
Loading…
Reference in New Issue