Forge
csharpdeeb25a2
1using CascadeIDE.Cockpit.Composition.HostSurface;
2
3namespace 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>
10public 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
View only · write via MCP/CIDE