Repository navigation
Expand file tree
/
Copy pathMainWindow.Debugging.cs
More file actions
41 lines (37 loc) · 1.49 KB
/
Copy pathMainWindow.Debugging.cs
File metadata and controls
41 lines (37 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using KaneCode.Controls;
using System.ComponentModel;
namespace KaneCode;
public partial class MainWindow
{
private DebugBreakpointMargin? _debugMargin;
private bool _debuggerShutdownComplete;
private bool _debuggerShutdownInProgress;
private void InitializeDebugger()
{
_debugMargin = new DebugBreakpointMargin(_viewModel.Debugger, () => _viewModel.ActiveTab?.FilePath);
CodeEditor.TextArea.LeftMargins.Insert(0, _debugMargin);
CodeEditor.TextArea.TextView.BackgroundRenderers.Add(_debugMargin);
_viewModel.Debugger.ShowRequested += () =>
{
DebuggerAnchorable.Show();
DebuggerAnchorable.IsSelected = true;
};
_viewModel.Debugger.StateChanged += () => CodeEditor.IsReadOnly = _viewModel.Debugger.IsActive;
_viewModel.PropertyChanged += (_, e) =>
{
if (e.PropertyName == nameof(_viewModel.ActiveTab)) _debugMargin.Refresh();
};
DebuggerPanel.NavigateRequested += _viewModel.NavigateToFileLine;
Closing += OnDebuggerClosing;
}
private async void OnDebuggerClosing(object? sender, CancelEventArgs e)
{
if (_debuggerShutdownComplete || !_viewModel.Debugger.IsActive) return;
e.Cancel = true;
if (_debuggerShutdownInProgress) return;
_debuggerShutdownInProgress = true;
await _viewModel.Debugger.GuardAsync(() => _viewModel.Debugger.StopForShutdownAsync());
_debuggerShutdownComplete = true;
Close();
}
}