| 1 | using Avalonia.Controls; |
| 2 | using Avalonia.Input; |
| 3 | using Avalonia.Interactivity; |
| 4 | using CascadeIDE.Models.Shell; |
| 5 | |
| 6 | namespace CascadeIDE.Views; |
| 7 | |
| 8 | /// <summary>TopLevel со сплитом PFD | MFD для пресета <c>(xP+yM)(F)</c> — ADR 0017.</summary> |
| 9 | public partial class PmSplitHostWindow : PointerTrackingWindow |
| 10 | { |
| 11 | public PmSplitHostWindow() |
| 12 | { |
| 13 | InitializeComponent(); |
| 14 | AddHandler(InputElement.KeyDownEvent, OnTunnelKeyDown, RoutingStrategies.Tunnel, handledEventsToo: true); |
| 15 | Loaded += OnLoaded; |
| 16 | Activated += OnActivated; |
| 17 | } |
| 18 | |
| 19 | private void OnLoaded(object? sender, RoutedEventArgs e) |
| 20 | { |
| 21 | if (PmSplitRootGrid is not { } grid) |
| 22 | return; |
| 23 | if (DataContext is not ViewModels.MainWindowViewModel vm) |
| 24 | return; |
| 25 | grid.ColumnDefinitions.Clear(); |
| 26 | foreach (var col in ColumnDefinitions.Parse(vm.PmSplitHostColumnDefinitions)) |
| 27 | grid.ColumnDefinitions.Add(col); |
| 28 | } |
| 29 | |
| 30 | private void OnTunnelKeyDown(object? sender, KeyEventArgs e) |
| 31 | { |
| 32 | if (DataContext is not ViewModels.MainWindowViewModel vm) |
| 33 | return; |
| 34 | vm.CommandPaletteHost = CommandPaletteHost.PmSplitHost; |
| 35 | MainWindowHotkeyService.TryHandleTunnelKeyDownFromWindow(nameof(PmSplitHostWindow), e, vm); |
| 36 | } |
| 37 | |
| 38 | private void OnActivated(object? sender, EventArgs e) |
| 39 | { |
| 40 | if (DataContext is ViewModels.MainWindowViewModel vm) |
| 41 | vm.CommandPaletteHost = CommandPaletteHost.PmSplitHost; |
| 42 | } |
| 43 | } |
| 44 | |