From af851b8ad6a5d9323a3cad502261d12b4100cb4a Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 20 Dec 2014 13:36:22 +0000 Subject: [PATCH] Show Step buttons/menu items based on whether it is implemented in the current core --- .../Debugger/GenericDebugger.IToolForm.cs | 49 ++++++++++++++++++- .../tools/Debugger/GenericDebugger.cs | 12 +++-- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.IToolForm.cs b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.IToolForm.cs index 33a7755d40..f162f36f26 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.IToolForm.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.IToolForm.cs @@ -10,7 +10,7 @@ namespace BizHawk.Client.EmuHawk public partial class GenericDebugger : IToolForm { [RequiredService] - private IDebuggable Core { get; set; } + private IDebuggable Debuggable { get; set; } [OptionalService] private IDisassemblable Disassembler { get; set; } [OptionalService] @@ -23,7 +23,7 @@ namespace BizHawk.Client.EmuHawk private int PC { // TODO: is this okay for N64? - get { return (int)Core.GetCpuFlagsAndRegisters()[Disassembler.PCRegisterName].Value; } + get { return (int)Debuggable.GetCpuFlagsAndRegisters()[Disassembler.PCRegisterName].Value; } } #region Implementation checking @@ -66,6 +66,51 @@ namespace BizHawk.Client.EmuHawk } } + private bool CanStepInto + { + get + { + try + { + return Debuggable.CanStep(StepType.Into); + } + catch (NotImplementedException) + { + return false; + } + } + } + + private bool CanStepOver + { + get + { + try + { + return Debuggable.CanStep(StepType.Over); + } + catch (NotImplementedException) + { + return false; + } + } + } + + private bool CanStepOut + { + get + { + try + { + return Debuggable.CanStep(StepType.Out); + } + catch (NotImplementedException) + { + return false; + } + } + } + #endregion public void UpdateValues() diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs index 8b1b92e92e..79266dd141 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs @@ -132,22 +132,26 @@ namespace BizHawk.Client.EmuHawk }); } - RegisterPanel.Core = Core; + RegisterPanel.Core = Debuggable; RegisterPanel.ParentDebugger = this; RegisterPanel.GenerateUI(); - BreakPointControl1.Core = Core; + BreakPointControl1.Core = Debuggable; BreakPointControl1.MCS = MCS; BreakPointControl1.ParentDebugger = this; BreakPointControl1.GenerateUI(); + + StepIntoMenuItem.Enabled = StepIntoBtn.Enabled = CanStepInto; + StepOutMenuItem.Enabled = StepOutBtn.Enabled = CanStepOut; + StepOverMenuItem.Enabled = StepOverBtn.Enabled = CanStepOver; } private void DisengageDebugger() { SaveConfigSettings(); - if (Core.Tracer != null) + if (Debuggable.Tracer != null) { - Core.Tracer.Enabled = false; + Debuggable.Tracer.Enabled = false; } BreakPointControl1.Shutdown();