You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
using Avalonia.Controls; |
|
using Avalonia.Input; |
|
using Avalonia.Interactivity; |
|
using StabilityMatrix.Avalonia.Diagnostics.ViewModels; |
|
|
|
namespace StabilityMatrix.Avalonia.Diagnostics.Views; |
|
|
|
public partial class LogWindow : Window |
|
{ |
|
public LogWindow() |
|
{ |
|
InitializeComponent(); |
|
} |
|
|
|
public static IDisposable Attach(TopLevel root, IServiceProvider serviceProvider) |
|
{ |
|
return Attach(root, serviceProvider, new KeyGesture(Key.F11)); |
|
} |
|
|
|
public static IDisposable Attach( |
|
TopLevel root, |
|
IServiceProvider serviceProvider, |
|
KeyGesture gesture |
|
) |
|
{ |
|
return (root ?? throw new ArgumentNullException(nameof(root))).AddDisposableHandler( |
|
KeyDownEvent, |
|
PreviewKeyDown, |
|
RoutingStrategies.Tunnel |
|
); |
|
|
|
void PreviewKeyDown(object? sender, KeyEventArgs e) |
|
{ |
|
if (gesture.Matches(e)) |
|
{ |
|
var window = new LogWindow() |
|
{ |
|
DataContext = LogWindowViewModel.FromServiceProvider(serviceProvider) |
|
}; |
|
window.Show(); |
|
} |
|
} |
|
} |
|
}
|
|
|