mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
85 lines
2 KiB
C#
85 lines
2 KiB
C#
using Avalonia;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using Avalonia.Markup.Xaml;
|
|
using Mesen.Controls;
|
|
using Mesen.Interop;
|
|
using Mesen.Utilities;
|
|
using ReactiveUI.Fody.Helpers;
|
|
using System;
|
|
|
|
namespace Mesen.Debugger.Windows
|
|
{
|
|
public class BreakInWindow : MesenWindow
|
|
{
|
|
public static int _lastValue { get; set; } = 0;
|
|
public static StepType _lastStepType { get; set; } = StepType.Step;
|
|
|
|
public static readonly StyledProperty<int> ValueProperty = AvaloniaProperty.Register<BreakInWindow, int>(nameof(Value), defaultBindingMode: Avalonia.Data.BindingMode.TwoWay);
|
|
public static readonly StyledProperty<StepType> StepTypeProperty = AvaloniaProperty.Register<BreakInWindow, StepType>(nameof(StepType));
|
|
|
|
public int Value
|
|
{
|
|
get { return GetValue(ValueProperty); }
|
|
set { SetValue(ValueProperty, value); }
|
|
}
|
|
|
|
public StepType StepType
|
|
{
|
|
get { return GetValue(StepTypeProperty); }
|
|
set { SetValue(StepTypeProperty, value); }
|
|
}
|
|
|
|
public bool ShowCpuCycles { get; } = false;
|
|
|
|
private CpuType _cpuType;
|
|
|
|
[Obsolete("For designer only")]
|
|
public BreakInWindow() : this(CpuType.Snes) { }
|
|
|
|
public BreakInWindow(CpuType cpuType)
|
|
{
|
|
_cpuType = cpuType;
|
|
StepType = _lastStepType;
|
|
Value = _lastValue;
|
|
|
|
if(!Design.IsDesignMode) {
|
|
ShowCpuCycles = DebugApi.GetDebuggerFeatures(cpuType).CpuCycleStep;
|
|
if(!ShowCpuCycles && StepType == StepType.CpuCycleStep) {
|
|
StepType = StepType.Step;
|
|
}
|
|
}
|
|
|
|
InitializeComponent();
|
|
#if DEBUG
|
|
this.AttachDevTools();
|
|
#endif
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
AvaloniaXamlLoader.Load(this);
|
|
}
|
|
|
|
protected override void OnOpened(EventArgs e)
|
|
{
|
|
base.OnOpened(e);
|
|
this.GetControl<MesenNumericTextBox>("txtValue").FocusAndSelectAll();
|
|
}
|
|
|
|
private void Ok_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
_lastValue = Value;
|
|
_lastStepType = StepType;
|
|
|
|
DebugApi.Step(_cpuType, Value, StepType);
|
|
|
|
Close();
|
|
}
|
|
|
|
private void Cancel_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
Close();
|
|
}
|
|
}
|
|
}
|