| 1 | using CascadeIDE.Cockpit.Composition.HostSurface; |
| 2 | |
| 3 | namespace CascadeIDE.ViewModels; |
| 4 | |
| 5 | /// <summary> |
| 6 | /// Какой инструмент показан в слотах PFD/MFD главного окна — по <see cref="InstrumentPlacementRuntime"/> и |
| 7 | /// <see cref="DisplaySettings"/> (в т.ч. <c>[display.instrument_routing]</c> и merge <c>workspace.toml</c>). |
| 8 | /// Логика — <see cref="MainWindowDockedGridInstrumentSlots"/>. |
| 9 | /// </summary> |
| 10 | public partial class MainWindowViewModel |
| 11 | { |
| 12 | private static readonly string[] DockedInstrumentPlacementBindingNames = |
| 13 | [ |
| 14 | nameof(IsDockedPfdSolutionExplorerTree), |
| 15 | nameof(IsDockedPfdWorkspaceNavigationMap), |
| 16 | nameof(IsDockedMfdSolutionExplorerTree), |
| 17 | nameof(IsMfdShellSolutionExplorerPageActive), |
| 18 | ]; |
| 19 | |
| 20 | /// <summary>Дерево решения в колонке PFD — только если карта назначает его в слот Pfd.</summary> |
| 21 | public bool IsDockedPfdSolutionExplorerTree => |
| 22 | MainWindowDockedGridInstrumentSlots.IsDockedPfdSolutionExplorerTree(_settings.Display); |
| 23 | |
| 24 | /// <summary>Карта намерений в колонке PFD — если карта назначает workspace map в слот Pfd.</summary> |
| 25 | public bool IsDockedPfdWorkspaceNavigationMap => |
| 26 | MainWindowDockedGridInstrumentSlots.IsDockedPfdWorkspaceNavigationMap(_settings.Display); |
| 27 | |
| 28 | /// <summary>Дерево решения на странице вторичного контура «Обозреватель» — только если карта назначает дерево в слот Mfd (не дублируем PFD).</summary> |
| 29 | public bool IsDockedMfdSolutionExplorerTree => |
| 30 | MainWindowDockedGridInstrumentSlots.IsDockedMfdSolutionExplorerTree(_settings.Display); |
| 31 | |
| 32 | /// <summary>Вызывать после смены решения / merge <c>workspace.toml</c> / настроек Display, влияющих на placement.</summary> |
| 33 | public void NotifyDockedInstrumentSlotBindings() |
| 34 | { |
| 35 | foreach (var name in DockedInstrumentPlacementBindingNames) |
| 36 | OnPropertyChanged(name); |
| 37 | NotifyWorkspaceBackgroundStatusStripPlacement(); |
| 38 | CoerceMfdShellPageToAllowed(); |
| 39 | } |
| 40 | } |
| 41 | |