Forge
csharpdeeb25a2
1using CascadeIDE.Features.UiChrome;
2using CascadeIDE.Models;
3using CascadeIDE.Models.Shell;
4using CascadeIDE.ViewModels;
5using CommunityToolkit.Mvvm.ComponentModel;
6
7namespace CascadeIDE.Features.Shell;
8
9/// <summary>
10/// Состояние оболочки главного окна: регионы MainGrid, страница MFD, режим UI, сборка на полосе.
11/// <see cref="MainWindowViewModel"/> — композитор (прокси + presentation/reactive side-effects).
12/// </summary>
13public sealed partial class ShellChromeViewModel : ViewModelBase
14{
15 private readonly MainWindowViewModel _host;
16
17 public ShellChromeViewModel(MainWindowViewModel host) => _host = host;
18
19 /// <summary>Bootstrap из настроек до первой UI-привязки (без side-effects host).</summary>
20 internal void ApplyBootstrapFromSettings(CascadeIdeSettings settings)
21 {
22#pragma warning disable MVVMTK0034
23 _isPfdRegionExpanded = settings.Workspace.PfdExpanded;
24 _isTerminalVisible = settings.Workspace.ShowTerminal;
25 _isGitPanelVisible = settings.Workspace.ShowGit;
26 _isInstrumentationDockVisible = settings.Workspace.ShowInstrumentation;
27 _uiMode = UiChromeViewModel.NormalizeUiMode(settings.Workspace.Mode);
28#pragma warning restore MVVMTK0034
29 }
30
31 /// <summary>
32 /// Intent геометрии: регион Mfd в <c>MainGrid</c> развёрнут (ширина по режиму) или свёрнут.
33 /// Страница «Чат» — <see cref="MfdShellPage.Chat"/> через <see cref="CurrentMfdShellPage"/>, отдельно.
34 /// </summary>
35 [ObservableProperty]
36 private bool _isMfdRegionExpanded = true;
37
38 /// <summary>
39 /// Intent геометрии: регион Pfd в <c>MainGrid</c> развёрнут (ширина по workspace/режиму) или свёрнут.
40 /// </summary>
41 [ObservableProperty]
42 private bool _isPfdRegionExpanded = true;
43
44 /// <summary>Страница «Терминал» в колонке MFD (меню Вид → Терминал).</summary>
45 [ObservableProperty]
46 private bool _isTerminalVisible;
47
48 /// <summary>Страница «Git» в колонке MFD (меню Вид → Git).</summary>
49 [ObservableProperty]
50 private bool _isGitPanelVisible;
51
52 /// <summary>Страница «Вывод сборки» в колонке MFD.</summary>
53 [ObservableProperty]
54 private bool _isBuildOutputVisible;
55
56 /// <summary>Док инструментирования в колонке MFD.</summary>
57 [ObservableProperty]
58 private bool _isInstrumentationDockVisible = true;
59
60 /// <summary>Какая страница показана в оболочке Mfd.</summary>
61 [ObservableProperty]
62 private MfdShellPage _currentMfdShellPage = MfdShellPage.Terminal;
63
64 [ObservableProperty]
65 private CommandPaletteHost _commandPaletteHost = CommandPaletteHost.MainWindow;
66
67 [ObservableProperty]
68 private string _uiMode = "Balanced";
69
70 [ObservableProperty]
71 private int _editorGroupCount = 1;
72
73 /// <summary>Снимок раскладки UI (JSON), полоса Workspace Health в Power.</summary>
74 [ObservableProperty]
75 private string _workspaceSnapshotJson = "";
76
77 [ObservableProperty]
78 private bool _isBuilding;
79}
80
View only · write via MCP/CIDE