From dd77eaf0c9b2e801ae28c9dc11fed2f257a5d6c7 Mon Sep 17 00:00:00 2001 From: adelikat <adelikat@tasvideos.org> Date: Sun, 14 Dec 2014 16:40:31 +0000 Subject: [PATCH] Debugger - add Step Into/Over/Out menu items and buttons, not enabled yet, still need an API to wire up to --- .../Debugger/GenericDebugger.Designer.cs | 108 ++++++++++++++++-- .../tools/Debugger/GenericDebugger.cs | 55 +++++++++ 2 files changed, 155 insertions(+), 8 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Designer.cs b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Designer.cs index 97851b7b78..dc9fe509f1 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.Designer.cs @@ -32,6 +32,10 @@ this.menuStrip1 = new MenuStripEx(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ExitMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.DebugSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.StepIntoMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.StepOverMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.StepOutMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.OptionsSubMenu = new System.Windows.Forms.ToolStripMenuItem(); this.AutoloadMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.SaveWindowPositionMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -44,10 +48,13 @@ this.BreakpointsGroupBox = new System.Windows.Forms.GroupBox(); this.BreakPointControl1 = new BizHawk.Client.EmuHawk.tools.Debugger.BreakpointControl(); this.DisassemblerBox = new System.Windows.Forms.GroupBox(); + 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.label1 = new System.Windows.Forms.Label(); + this.StepOutBtn = new System.Windows.Forms.Button(); + this.StepIntoBtn = new System.Windows.Forms.Button(); + this.StepOverBtn = new System.Windows.Forms.Button(); this.menuStrip1.SuspendLayout(); this.RegistersGroupBox.SuspendLayout(); this.BreakpointsGroupBox.SuspendLayout(); @@ -59,6 +66,7 @@ this.menuStrip1.ClickThrough = true; this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem, + this.DebugSubMenu, this.OptionsSubMenu}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; @@ -82,6 +90,44 @@ this.ExitMenuItem.Text = "&Close"; this.ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItem_Click); // + // DebugSubMenu + // + this.DebugSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.StepIntoMenuItem, + this.StepOverMenuItem, + this.StepOutMenuItem}); + this.DebugSubMenu.Name = "DebugSubMenu"; + this.DebugSubMenu.Size = new System.Drawing.Size(54, 20); + this.DebugSubMenu.Text = "&Debug"; + this.DebugSubMenu.DropDownOpened += new System.EventHandler(this.DebugSubMenu_DropDownOpened); + // + // StepIntoMenuItem + // + this.StepIntoMenuItem.Enabled = false; + this.StepIntoMenuItem.Name = "StepIntoMenuItem"; + this.StepIntoMenuItem.ShortcutKeyDisplayString = "F11"; + this.StepIntoMenuItem.Size = new System.Drawing.Size(177, 22); + this.StepIntoMenuItem.Text = "Step &Into"; + this.StepIntoMenuItem.Click += new System.EventHandler(this.StepIntoMenuItem_Click); + // + // StepOverMenuItem + // + this.StepOverMenuItem.Enabled = false; + this.StepOverMenuItem.Name = "StepOverMenuItem"; + this.StepOverMenuItem.ShortcutKeyDisplayString = "F10"; + this.StepOverMenuItem.Size = new System.Drawing.Size(177, 22); + this.StepOverMenuItem.Text = "Step O&ver"; + this.StepOverMenuItem.Click += new System.EventHandler(this.StepOverMenuItem_Click); + // + // StepOutMenuItem + // + this.StepOutMenuItem.Enabled = false; + this.StepOutMenuItem.Name = "StepOutMenuItem"; + this.StepOutMenuItem.ShortcutKeyDisplayString = "Shift+F11"; + this.StepOutMenuItem.Size = new System.Drawing.Size(177, 22); + this.StepOutMenuItem.Text = "Step Ou&t"; + this.StepOutMenuItem.Click += new System.EventHandler(this.StepOutMenuItem_Click); + // // OptionsSubMenu // this.OptionsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -199,6 +245,15 @@ this.DisassemblerBox.TabStop = false; this.DisassemblerBox.Text = "Disassembler"; // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 23); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(29, 13); + this.label1.TabIndex = 2; + this.label1.Text = "Cpu:"; + // // DisassemblerView // this.DisassemblerView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -230,20 +285,50 @@ this.Instruction.Text = "Instruction"; this.Instruction.Width = 143; // - // label1 + // StepOutBtn // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(6, 23); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(29, 13); - this.label1.TabIndex = 2; - this.label1.Text = "Cpu:"; + this.StepOutBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.StepOutBtn.Enabled = false; + this.StepOutBtn.Location = new System.Drawing.Point(680, 325); + this.StepOutBtn.Name = "StepOutBtn"; + this.StepOutBtn.Size = new System.Drawing.Size(75, 23); + this.StepOutBtn.TabIndex = 10; + this.StepOutBtn.Text = "Step Out"; + this.StepOutBtn.UseVisualStyleBackColor = true; + this.StepOutBtn.Click += new System.EventHandler(this.StepOutMenuItem_Click); + // + // StepIntoBtn + // + this.StepIntoBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.StepIntoBtn.Enabled = false; + this.StepIntoBtn.Location = new System.Drawing.Point(680, 267); + this.StepIntoBtn.Name = "StepIntoBtn"; + this.StepIntoBtn.Size = new System.Drawing.Size(75, 23); + this.StepIntoBtn.TabIndex = 11; + this.StepIntoBtn.Text = "Step Into"; + this.StepIntoBtn.UseVisualStyleBackColor = true; + this.StepIntoBtn.Click += new System.EventHandler(this.StepIntoMenuItem_Click); + // + // StepOverBtn + // + this.StepOverBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.StepOverBtn.Enabled = false; + this.StepOverBtn.Location = new System.Drawing.Point(680, 296); + this.StepOverBtn.Name = "StepOverBtn"; + this.StepOverBtn.Size = new System.Drawing.Size(75, 23); + this.StepOverBtn.TabIndex = 12; + this.StepOverBtn.Text = "Step Over"; + this.StepOverBtn.UseVisualStyleBackColor = true; + this.StepOverBtn.Click += new System.EventHandler(this.StepOverMenuItem_Click); // // GenericDebugger // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(767, 560); + this.Controls.Add(this.StepOverBtn); + this.Controls.Add(this.StepIntoBtn); + this.Controls.Add(this.StepOutBtn); this.Controls.Add(this.BreakpointsGroupBox); this.Controls.Add(this.RegistersGroupBox); this.Controls.Add(this.DisassemblerBox); @@ -286,5 +371,12 @@ private System.Windows.Forms.ColumnHeader Address; private System.Windows.Forms.ColumnHeader Instruction; private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button StepOutBtn; + private System.Windows.Forms.Button StepIntoBtn; + private System.Windows.Forms.Button StepOverBtn; + private System.Windows.Forms.ToolStripMenuItem DebugSubMenu; + private System.Windows.Forms.ToolStripMenuItem StepIntoMenuItem; + private System.Windows.Forms.ToolStripMenuItem StepOverMenuItem; + private System.Windows.Forms.ToolStripMenuItem StepOutMenuItem; } } \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs index 3c8ebedb78..7ff873e503 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs @@ -235,11 +235,41 @@ namespace BizHawk.Client.EmuHawk #region Menu Items + #region File + private void ExitMenuItem_Click(object sender, EventArgs e) { Close(); } + #endregion + + #region Debug + + private void DebugSubMenu_DropDownOpened(object sender, EventArgs e) + { + + } + + private void StepIntoMenuItem_Click(object sender, EventArgs e) + { + MessageBox.Show("TODO"); + } + + private void StepOverMenuItem_Click(object sender, EventArgs e) + { + MessageBox.Show("TODO"); + } + + private void StepOutMenuItem_Click(object sender, EventArgs e) + { + MessageBox.Show("TODO"); + } + + #endregion + + #region Options + private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e) { AutoloadMenuItem.Checked = Global.Config.GenericDebuggerAutoload; @@ -278,5 +308,30 @@ namespace BizHawk.Client.EmuHawk } #endregion + + #endregion + + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + if (keyData == Keys.F10) + { + StepIntoMenuItem_Click(null, null); + return true; + } + else if (keyData == (Keys.F11 | Keys.Shift)) + { + StepOverMenuItem_Click(null, null); + return true; + } + else if (keyData == Keys.F11) + { + StepOutMenuItem_Click(null, null); + return true; + } + else + { + return base.ProcessCmdKey(ref msg, keyData); + } + } } }