Debugger - disassembler - support ctrl+C to copy selected rows to the clipboard

This commit is contained in:
adelikat 2015-01-24 00:02:22 +00:00
parent 5d2eb17771
commit 652640d580
2 changed files with 30 additions and 0 deletions

View File

@ -208,6 +208,7 @@
this.DisassemblerView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.Address,
this.Instruction});
this.DisassemblerView.FullRowSelect = true;
this.DisassemblerView.GridLines = true;
this.DisassemblerView.ItemCount = 0;
this.DisassemblerView.Location = new System.Drawing.Point(6, 39);
@ -221,6 +222,7 @@
this.DisassemblerView.View = System.Windows.Forms.View.Details;
this.DisassemblerView.Scroll += new System.Windows.Forms.ScrollEventHandler(this.DisassemblerView_Scroll);
this.DisassemblerView.SizeChanged += new System.EventHandler(this.DisassemblerView_SizeChanged);
this.DisassemblerView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.DisassemblerView_KeyDown);
//
// Address
//

View File

@ -160,5 +160,33 @@ namespace BizHawk.Client.EmuHawk
SetDisassemblerItemCount();
Disassemble();
}
private void DisassemblerView_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && !e.Shift && !e.Alt && e.KeyCode == Keys.C) // Ctrl + C
{
CopySelectedDisassembler();
}
}
private void CopySelectedDisassembler()
{
var indices = DisassemblerView.SelectedIndices;
if (indices.Count > 0)
{
var blob = new StringBuilder();
foreach (int index in indices)
{
blob.Append(DisassemblyLines[index].Address)
.Append(" ")
.Append(DisassemblyLines[index].Mnemonic)
.AppendLine();
}
blob.Remove(blob.Length - 2, 2); // Lazy way to not have a line break at the end
Clipboard.SetDataObject(blob.ToString());
}
}
}
}