| 1 | <views:PointerTrackingWindow xmlns="https://github.com/avaloniaui" |
| 2 | xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
| 3 | xmlns:vm="using:CascadeIDE.ViewModels" |
| 4 | xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
| 5 | xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
| 6 | xmlns:models="using:CascadeIDE.Models" |
| 7 | xmlns:views="using:CascadeIDE.Views" |
| 8 | xmlns:chrome="using:CascadeIDE.Features.UiChrome" |
| 9 | xmlns:lang="using:CascadeIDE.Lang" |
| 10 | xmlns:dock="clr-namespace:Dock.Avalonia.Controls;assembly=Dock.Avalonia" |
| 11 | xmlns:Ease="using:Avalonia.Animation.Easings" |
| 12 | mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="600" |
| 13 | x:Class="CascadeIDE.Views.MainWindow" |
| 14 | x:Name="RootWindow" |
| 15 | x:DataType="vm:MainWindowViewModel" |
| 16 | Icon="/Assets/avalonia-logo.ico" |
| 17 | Title="{Binding WindowTitle}" |
| 18 | Background="{DynamicResource CascadeTheme.MainWindowBackground}" |
| 19 | Width="1000" Height="600"> |
| 20 | |
| 21 | <Window.Resources> |
| 22 | <views:SolutionItemIconConverter x:Key="SolutionItemIconConverter"/> |
| 23 | </Window.Resources> |
| 24 | |
| 25 | <Window.Styles> |
| 26 | <!-- Меню и кнопки — из темы (ide_set_ui_theme) --> |
| 27 | <Style Selector="Menu"> |
| 28 | <Setter Property="Background" Value="{DynamicResource CascadeTheme.MenuBackground}"/> |
| 29 | <Setter Property="Foreground" Value="{DynamicResource CascadeTheme.MenuForeground}"/> |
| 30 | </Style> |
| 31 | <Style Selector="MenuItem"> |
| 32 | <Setter Property="Foreground" Value="{DynamicResource CascadeTheme.MenuForeground}"/> |
| 33 | </Style> |
| 34 | <Style Selector="Button"> |
| 35 | <Setter Property="Background" Value="{DynamicResource CascadeTheme.ButtonBackground}"/> |
| 36 | <Setter Property="Foreground" Value="{DynamicResource CascadeTheme.ButtonForeground}"/> |
| 37 | <Setter Property="BorderBrush" Value="{DynamicResource CascadeTheme.ButtonBorderBrush}"/> |
| 38 | <Setter Property="BorderThickness" Value="1"/> |
| 39 | </Style> |
| 40 | <Style Selector="Button:pointerover"> |
| 41 | <Setter Property="Background" Value="{DynamicResource CascadeTheme.ButtonHoverBackground}"/> |
| 42 | </Style> |
| 43 | <Style Selector="Button:disabled"> |
| 44 | <Setter Property="Background" Value="{DynamicResource CascadeTheme.ButtonDisabledBackground}"/> |
| 45 | <Setter Property="Foreground" Value="{DynamicResource CascadeTheme.ButtonDisabledForeground}"/> |
| 46 | </Style> |
| 47 | <Style Selector="Border#ModeBadge"> |
| 48 | <Setter Property="Background" Value="#29437A"/> |
| 49 | <Setter Property="BorderBrush" Value="#4D72D5"/> |
| 50 | <Setter Property="BorderThickness" Value="1"/> |
| 51 | <Setter Property="CornerRadius" Value="6"/> |
| 52 | <Setter Property="RenderTransformOrigin" Value="50%,50%"/> |
| 53 | <Setter Property="RenderTransform" Value="scale(1)"/> |
| 54 | <Setter Property="Transitions"> |
| 55 | <Transitions> |
| 56 | <BrushTransition Property="BorderBrush" Duration="0:0:0.35"> |
| 57 | <BrushTransition.Easing> |
| 58 | <Ease:CubicEaseOut/> |
| 59 | </BrushTransition.Easing> |
| 60 | </BrushTransition> |
| 61 | <BrushTransition Property="Background" Duration="0:0:0.35"> |
| 62 | <BrushTransition.Easing> |
| 63 | <Ease:CubicEaseOut/> |
| 64 | </BrushTransition.Easing> |
| 65 | </BrushTransition> |
| 66 | <TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.28"> |
| 67 | <TransformOperationsTransition.Easing> |
| 68 | <Ease:CubicEaseOut/> |
| 69 | </TransformOperationsTransition.Easing> |
| 70 | </TransformOperationsTransition> |
| 71 | </Transitions> |
| 72 | </Setter> |
| 73 | </Style> |
| 74 | <Style Selector="Border#ModeBadge.power"> |
| 75 | <Setter Property="Background" Value="#36256D"/> |
| 76 | <Setter Property="BorderBrush" Value="#8A65FF"/> |
| 77 | <Setter Property="BorderThickness" Value="1"/> |
| 78 | <Setter Property="CornerRadius" Value="6"/> |
| 79 | <Setter Property="RenderTransform" Value="scale(1.04)"/> |
| 80 | </Style> |
| 81 | <Style Selector="Border#ModeBadge.agentchat"> |
| 82 | <Setter Property="Background" Value="#1E4D3A"/> |
| 83 | <Setter Property="BorderBrush" Value="#3DCC8C"/> |
| 84 | <Setter Property="BorderThickness" Value="1"/> |
| 85 | <Setter Property="CornerRadius" Value="6"/> |
| 86 | <Setter Property="RenderTransform" Value="scale(1.02)"/> |
| 87 | </Style> |
| 88 | <Style Selector="Border#ModeBadge.debug"> |
| 89 | <Setter Property="Background" Value="#3A2E1E"/> |
| 90 | <Setter Property="BorderBrush" Value="#C88A2A"/> |
| 91 | <Setter Property="BorderThickness" Value="1"/> |
| 92 | <Setter Property="CornerRadius" Value="6"/> |
| 93 | <Setter Property="RenderTransform" Value="scale(1.02)"/> |
| 94 | </Style> |
| 95 | <Style Selector="Border.modeCard"> |
| 96 | <Setter Property="Background" Value="{DynamicResource CascadeTheme.PanelBackgroundBrush}"/> |
| 97 | <Setter Property="BorderBrush" Value="{DynamicResource CascadeTheme.WorkspacePanelBorderBrush}"/> |
| 98 | <Setter Property="BorderThickness" Value="1"/> |
| 99 | <Setter Property="CornerRadius" Value="4"/> |
| 100 | <Setter Property="Padding" Value="8"/> |
| 101 | </Style> |
| 102 | <!-- Визуальные якоря PFD | Forward | MFD (отладка раскладки; классы задаёт AttentionZoneContainer). --> |
| 103 | <Style Selector="chrome|AttentionZoneContainer.attention-zone-pfd"> |
| 104 | <Setter Property="BorderThickness" Value="1"/> |
| 105 | <Setter Property="BorderBrush" Value="#6600ACC1"/> |
| 106 | <Setter Property="Background" Value="Transparent"/> |
| 107 | <Setter Property="ToolTip.Tip" Value="Якорь: PFD"/> |
| 108 | </Style> |
| 109 | <Style Selector="chrome|AttentionZoneContainer.attention-zone-forward"> |
| 110 | <Setter Property="BorderThickness" Value="1"/> |
| 111 | <Setter Property="BorderBrush" Value="#66FFB300"/> |
| 112 | <Setter Property="Background" Value="Transparent"/> |
| 113 | <Setter Property="ToolTip.Tip" Value="Якорь: Forward"/> |
| 114 | </Style> |
| 115 | <Style Selector="chrome|AttentionZoneContainer.attention-zone-mfd"> |
| 116 | <Setter Property="BorderThickness" Value="1"/> |
| 117 | <Setter Property="BorderBrush" Value="#667E57C2"/> |
| 118 | <Setter Property="Background" Value="Transparent"/> |
| 119 | <Setter Property="ToolTip.Tip" Value="Якорь: MFD"/> |
| 120 | </Style> |
| 121 | <Style Selector="chrome|AttentionZoneContainer.attention-layer-hud"> |
| 122 | <Setter Property="ToolTip.Tip" Value="Слой: HUD (над редактором, ADR 0021 §9)"/> |
| 123 | </Style> |
| 124 | <Style Selector="Border#SkiaZoneGeometryOverlayPfd, Border#SkiaZoneGeometryOverlayForward, Border#SkiaZoneGeometryOverlayMfd"> |
| 125 | <Setter Property="BorderThickness" Value="2"/> |
| 126 | <Setter Property="CornerRadius" Value="4"/> |
| 127 | <Setter Property="Background" Value="#04000000"/> |
| 128 | <Setter Property="IsHitTestVisible" Value="False"/> |
| 129 | </Style> |
| 130 | <Style Selector="Border#SkiaZoneGeometryOverlayPfd"> |
| 131 | <Setter Property="BorderBrush" Value="#48C8F4"/> |
| 132 | </Style> |
| 133 | <Style Selector="Border#SkiaZoneGeometryOverlayForward"> |
| 134 | <Setter Property="BorderBrush" Value="#FFC75A"/> |
| 135 | </Style> |
| 136 | <Style Selector="Border#SkiaZoneGeometryOverlayMfd"> |
| 137 | <Setter Property="BorderBrush" Value="#B38CFF"/> |
| 138 | </Style> |
| 139 | </Window.Styles> |
| 140 | |
| 141 | <Design.DataContext> |
| 142 | <vm:MainWindowViewModel/> |
| 143 | </Design.DataContext> |
| 144 | |
| 145 | <Grid Background="{DynamicResource CascadeTheme.MainWindowBackground}"> |
| 146 | <DockPanel> |
| 147 | <!-- Главное меню --> |
| 148 | <Menu DockPanel.Dock="Top" Background="{DynamicResource CascadeTheme.MenuBackground}"> |
| 149 | <MenuItem Header="_Файл"> |
| 150 | <MenuItem Header="_Открыть решение..." Command="{Binding OpenSolutionCommand}"/> |
| 151 | <MenuItem Header="_Создать новое решение..." Command="{Binding CreateNewSolutionCommand}"/> |
| 152 | <MenuItem Header="_Открыть папку..." Command="{Binding OpenFolderCommand}"/> |
| 153 | <MenuItem Header="_Открыть файл..." Command="{Binding OpenFileFromDialogCommand}"/> |
| 154 | <MenuItem Header="Export expanded _Markdown..." Command="{Binding ExportExpandedMarkdownCommand}"/> |
| 155 | <Separator/> |
| 156 | <MenuItem Header="В_ыход" Command="{Binding ExitCommand}"/> |
| 157 | </MenuItem> |
| 158 | <MenuItem Header="_Отладка"> |
| 159 | <MenuItem x:Name="MenuDebugStartOrContinue" Header="_Начать или продолжить" Command="{Binding DebugStartOrContinueCommand}"/> |
| 160 | <MenuItem Header="Стартовый проект из _выделения в дереве" Command="{Binding SetStartupProjectFromSelectionCommand}"/> |
| 161 | <MenuItem Header="_Сбросить стартовый проект" Command="{Binding ClearStartupProjectCommand}"/> |
| 162 | <Separator/> |
| 163 | <MenuItem Header="_Присоединиться к процессу…" Command="{Binding DebugAttachCommand}"/> |
| 164 | <MenuItem x:Name="MenuDebugStop" Header="_Остановить отладку" Command="{Binding DebugStopCommand}"/> |
| 165 | <Separator/> |
| 166 | <MenuItem x:Name="MenuDebugStepOver" Header="Шаг с _обходом" Command="{Binding DebugStepOverCommand}"/> |
| 167 | <MenuItem x:Name="MenuDebugStepInto" Header="Шаг с _заходом" Command="{Binding DebugStepIntoCommand}"/> |
| 168 | <MenuItem x:Name="MenuDebugStepOut" Header="Шаг с _выходом" Command="{Binding DebugStepOutCommand}"/> |
| 169 | </MenuItem> |
| 170 | <MenuItem Header="_Вид"> |
| 171 | <MenuItem x:Name="MenuCommandPalette" Header="Палитра _команд" Command="{Binding ToggleCommandPaletteCommand}"/> |
| 172 | <MenuItem Header="Перейти к _файлу…" Command="{Binding OpenGoToFilePaletteCommand}"/> |
| 173 | <Separator/> |
| 174 | <MenuItem Header="Дерево _проекта (MFD)" Command="{Binding Shell.ShowSolutionExplorerPageCommand}"/> |
| 175 | <MenuItem Header="_Вывод сборки" ToggleType="CheckBox" IsChecked="{Binding IsBuildOutputVisible, Mode=TwoWay}"/> |
| 176 | <MenuItem Header="_Чат" ToggleType="CheckBox" IsChecked="{Binding IsMfdRegionExpanded, Mode=TwoWay}"/> |
| 177 | <MenuItem Header="_Терминал" ToggleType="CheckBox" IsChecked="{Binding IsTerminalVisible, Mode=TwoWay}"/> |
| 178 | <MenuItem Header="_Git" ToggleType="CheckBox" IsChecked="{Binding IsGitPanelVisible, Mode=TwoWay}"/> |
| 179 | <MenuItem Header="Док_ инструментирования (события, тесты, отладка)" |
| 180 | ToggleType="CheckBox" |
| 181 | IsChecked="{Binding IsInstrumentationDockVisible, Mode=TwoWay}" |
| 182 | IsVisible="{Binding ShowInstrumentationLayoutMenu}"/> |
| 183 | <Separator/> |
| 184 | <MenuItem Header="_Тема"> |
| 185 | <MenuItem Header="_Светлая" Command="{Binding ApplyLightThemeCommand}"/> |
| 186 | <MenuItem Header="_Тёмная" Command="{Binding ApplyDarkThemeCommand}"/> |
| 187 | <MenuItem Header="Как _Cursor" Command="{Binding ApplyCursorLikeThemeCommand}"/> |
| 188 | <MenuItem Header="Power _классическая (циан)" Command="{Binding ApplyPowerClassicThemeCommand}"/> |
| 189 | <Separator/> |
| 190 | <MenuItem Header="Открыть файл темы..." Command="{Binding OpenThemeFileCommand}"/> |
| 191 | </MenuItem> |
| 192 | <Separator/> |
| 193 | <MenuItem Header="{Binding Lang_Menu_UiLanguage, Source={StaticResource Loc}, DataType={x:Type lang:LocViewModel}}"> |
| 194 | <MenuItem Header="{Binding Lang_Menu_Russian, Source={StaticResource Loc}, DataType={x:Type lang:LocViewModel}}" |
| 195 | Command="{Binding SetUiLanguageCommand}" CommandParameter="ru-RU"/> |
| 196 | <MenuItem Header="{Binding Lang_Menu_English, Source={StaticResource Loc}, DataType={x:Type lang:LocViewModel}}" |
| 197 | Command="{Binding SetUiLanguageCommand}" CommandParameter="en-US"/> |
| 198 | <Separator/> |
| 199 | <MenuItem Header="{Binding Lang_Menu_FollowSystem, Source={StaticResource Loc}, DataType={x:Type lang:LocViewModel}}" |
| 200 | Command="{Binding ResetUiLanguageToSystemCommand}"/> |
| 201 | </MenuItem> |
| 202 | <MenuItem Header="Показать Markdown preview в _MFD" Command="{Binding ShowMarkdownPreviewPageCommand}"/> |
| 203 | <MenuItem Header="Превью в отдельном _окне" Command="{Binding OpenPreviewWindowCommand}"/> |
| 204 | </MenuItem> |
| 205 | <MenuItem Header="_Настройки"> |
| 206 | <MenuItem Header="Параметры…" Command="{Binding OpenSettingsCommand}"/> |
| 207 | </MenuItem> |
| 208 | <MenuItem Header="_Справка"> |
| 209 | <MenuItem Header="О _программе" Command="{Binding AboutCommand}"/> |
| 210 | </MenuItem> |
| 211 | </Menu> |
| 212 | |
| 213 | <!-- Строка 2 — рабочая область (якоря PFD | Forward | MFD в MainGrid; AttentionLayoutSurfaceKind.MainWindowDockedGrid). В колонке MFD сейчас MfdShellView: страницы вторичного контура (WORKSPACE/чат/терминал/…) и полоса EICAS сверху — не синоним «зона MFD», а хост по умолчанию (пресет). --> |
| 214 | <Grid x:Name="MainGrid" ColumnDefinitions="220,4,*,4,340"> |
| 215 | <Grid.RowDefinitions> |
| 216 | <RowDefinition Height="Auto"/> |
| 217 | <RowDefinition Height="Auto"/> |
| 218 | <RowDefinition Height="*"/> |
| 219 | <RowDefinition Height="0"/> |
| 220 | <RowDefinition Height="0"/> |
| 221 | <RowDefinition Height="0"/> |
| 222 | <RowDefinition Height="0"/> |
| 223 | </Grid.RowDefinitions> |
| 224 | <!-- Подсказка при работе как MCP-сервер --> |
| 225 | <views:McpBannerView Grid.Row="0" Grid.ColumnSpan="5"/> |
| 226 | |
| 227 | <views:TaskCockpitView Grid.Row="1" Grid.ColumnSpan="5"/> |
| 228 | |
| 229 | <!-- Якорь зоны PFD (cockpit): левая колонка. Compact — дерево справа, см. CompactRightChromeHost. --> |
| 230 | <chrome:AttentionZoneContainer Zone="Pfd" Grid.Row="2" Grid.Column="0" IsVisible="{Binding IsCockpitPfdColumnVisible}"> |
| 231 | <Grid RowDefinitions="Auto,*"> |
| 232 | <views:PfdBackgroundStatusBarView Grid.Row="0" |
| 233 | IsVisible="{Binding ShowWorkspaceBackgroundStatusOnPfd}"/> |
| 234 | <Grid Grid.Row="1"> |
| 235 | <views:SolutionExplorerView IsVisible="{Binding IsDockedPfdSolutionExplorerTree}"/> |
| 236 | <Grid IsVisible="{Binding IsDockedPfdWorkspaceNavigationMap}"> |
| 237 | <views:WorkspaceNavigationMapView DataContext="{Binding NavigationMap}"/> |
| 238 | </Grid> |
| 239 | <!-- Wave 3: mount-layer host preview для PFD (единая точка подключения мини-инструмента). --> |
| 240 | <views:ZoneInstrumentMountView IsVisible="{Binding UseSkiaInstrumentMount}" |
| 241 | HorizontalAlignment="Right" |
| 242 | VerticalAlignment="Top" |
| 243 | Margin="8" |
| 244 | Width="250" |
| 245 | InstrumentId="ide_health_status_v1" |
| 246 | SlotId="pfd" |
| 247 | MountStyle="{Binding PfdInstrumentMountStyle}" |
| 248 | ZIndex="415"/> |
| 249 | </Grid> |
| 250 | </Grid> |
| 251 | </chrome:AttentionZoneContainer> |
| 252 | <GridSplitter Grid.Row="2" Grid.Column="1" Width="4" ResizeDirection="Columns" Background="{DynamicResource CascadeTheme.WorkspacePanelBorderBrush}" IsVisible="{Binding IsCockpitPfdColumnVisible}" IsEnabled="{Binding WorkspaceSplittersUnlocked}"/> |
| 253 | |
| 254 | <!-- Лобовое: редактор или Intercom (ADR 0120 primary_work_surface) --> |
| 255 | <chrome:AttentionZoneContainer Zone="Forward" Grid.Row="2" Grid.Column="2"> |
| 256 | <Grid RowDefinitions="Auto,*"> |
| 257 | <views:PfdBackgroundStatusBarView Grid.Row="0" |
| 258 | IsVisible="{Binding ShowWorkspaceBackgroundStatusOnForward}"/> |
| 259 | <Panel Grid.Row="1"> |
| 260 | <views:DocumentsDockView IsVisible="{Binding IsForwardEditorHostVisible}" /> |
| 261 | <Border IsVisible="{Binding IsForwardIntercomHostVisible}" |
| 262 | Background="{DynamicResource CascadeTheme.ChatPanelBackground}"> |
| 263 | <views:ChatPanelView DataContext="{Binding ChatPanel}" /> |
| 264 | </Border> |
| 265 | </Panel> |
| 266 | </Grid> |
| 267 | </chrome:AttentionZoneContainer> |
| 268 | <GridSplitter Grid.Row="2" Grid.Column="3" |
| 269 | Grid.RowSpan="{Binding ChatPanelMainGridRowSpan}" |
| 270 | Width="4" ResizeDirection="Columns" Background="{DynamicResource CascadeTheme.WorkspacePanelBorderBrush}" |
| 271 | IsVisible="{Binding IsMfdColumnVisible}" |
| 272 | IsEnabled="{Binding WorkspaceSplittersUnlocked}"/> |
| 273 | |
| 274 | <!-- Cockpit: MFD справа. Compact: Intercom/PFD справа + MFD снизу (ADR 0171 IDE-scan). --> |
| 275 | <chrome:AttentionZoneContainer Zone="Mfd" Grid.Row="2" Grid.Column="4" Grid.RowSpan="{Binding ChatPanelMainGridRowSpan}" |
| 276 | IsVisible="{Binding IsCockpitMfdColumnVisible}"> |
| 277 | <views:MfdShellView DataContext="{Binding DataContext, ElementName=RootWindow}" MinHeight="0"/> |
| 278 | </chrome:AttentionZoneContainer> |
| 279 | |
| 280 | <Grid Grid.Row="2" Grid.Column="4" RowDefinitions="Auto,*" IsVisible="{Binding IsCompactRightChromeColumnVisible}"> |
| 281 | <chrome:AttentionZoneContainer Zone="Pfd" Grid.Row="0" IsVisible="{Binding IsCompactPfdRightVisible}"> |
| 282 | <views:SolutionExplorerView IsVisible="{Binding IsDockedPfdSolutionExplorerTree}"/> |
| 283 | </chrome:AttentionZoneContainer> |
| 284 | <Border Grid.Row="1" IsVisible="{Binding IsCompactIntercomAuxVisible}" |
| 285 | Background="{DynamicResource CascadeTheme.ChatPanelBackground}"> |
| 286 | <views:ChatPanelView DataContext="{Binding ChatPanel}"/> |
| 287 | </Border> |
| 288 | </Grid> |
| 289 | |
| 290 | <GridSplitter Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="5" Height="4" ResizeDirection="Rows" |
| 291 | Background="{DynamicResource CascadeTheme.WorkspacePanelBorderBrush}" |
| 292 | IsVisible="{Binding IsCompactIntercomBottomDockVisible}" |
| 293 | IsEnabled="{Binding WorkspaceSplittersUnlocked}"/> |
| 294 | |
| 295 | <Border Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="5" |
| 296 | IsVisible="{Binding IsCompactIntercomBottomDockVisible}" |
| 297 | Background="{DynamicResource CascadeTheme.ChatPanelBackground}"> |
| 298 | <views:ChatPanelView DataContext="{Binding ChatPanel}"/> |
| 299 | </Border> |
| 300 | |
| 301 | <GridSplitter Grid.Row="{Binding CompactMfdBottomDockSplitterGridRow}" Grid.Column="0" Grid.ColumnSpan="5" Height="4" ResizeDirection="Rows" |
| 302 | Background="{DynamicResource CascadeTheme.WorkspacePanelBorderBrush}" |
| 303 | IsVisible="{Binding IsCompactMfdBottomDockVisible}" |
| 304 | IsEnabled="{Binding WorkspaceSplittersUnlocked}"/> |
| 305 | |
| 306 | <chrome:AttentionZoneContainer Zone="Mfd" Grid.Row="{Binding CompactMfdBottomDockGridRow}" Grid.Column="0" Grid.ColumnSpan="5" |
| 307 | IsVisible="{Binding IsCompactMfdBottomDockVisible}"> |
| 308 | <views:MfdShellView DataContext="{Binding DataContext, ElementName=RootWindow}" MinHeight="0"/> |
| 309 | </chrome:AttentionZoneContainer> |
| 310 | |
| 311 | <!-- W2: overlay контуров зон поверх контента (без изменения содержимого). --> |
| 312 | <Border x:Name="SkiaZoneGeometryOverlayPfd" |
| 313 | Grid.Row="2" |
| 314 | Grid.Column="0" |
| 315 | IsVisible="{Binding IsSkiaZoneGeometryOverlayPfdVisible}" |
| 316 | ZIndex="410"> |
| 317 | <TextBlock Text="PFD" |
| 318 | Margin="6,4,0,0" |
| 319 | HorizontalAlignment="Left" |
| 320 | VerticalAlignment="Top" |
| 321 | Foreground="#C6F2FF"/> |
| 322 | </Border> |
| 323 | <Border x:Name="SkiaZoneGeometryOverlayForward" |
| 324 | Grid.Row="2" |
| 325 | Grid.Column="2" |
| 326 | IsVisible="{Binding IsSkiaZoneGeometryOverlayForwardVisible}" |
| 327 | ZIndex="410"> |
| 328 | <TextBlock Text="FORWARD" |
| 329 | Margin="6,4,0,0" |
| 330 | HorizontalAlignment="Left" |
| 331 | VerticalAlignment="Top" |
| 332 | Foreground="#FFE7A6"/> |
| 333 | </Border> |
| 334 | <Border x:Name="SkiaZoneGeometryOverlayMfd" |
| 335 | Grid.Row="2" |
| 336 | Grid.Column="4" |
| 337 | Grid.RowSpan="{Binding ChatPanelMainGridRowSpan}" |
| 338 | IsVisible="{Binding IsSkiaZoneGeometryOverlayMfdVisible}" |
| 339 | ZIndex="410"> |
| 340 | <TextBlock Text="MFD" |
| 341 | Margin="6,4,0,0" |
| 342 | HorizontalAlignment="Left" |
| 343 | VerticalAlignment="Top" |
| 344 | Foreground="#E6D8FF"/> |
| 345 | </Border> |
| 346 | <!-- Bloom только над task bar + рабочей областью (строки 1–2). --> |
| 347 | <Border x:Name="UiModeBloomOverlay" |
| 348 | Grid.Row="1" Grid.RowSpan="2" Grid.Column="0" Grid.ColumnSpan="5" |
| 349 | ZIndex="400" |
| 350 | IsHitTestVisible="False" |
| 351 | Background="{Binding Chrome.UiModeBloomBrush}" |
| 352 | Opacity="{Binding Chrome.UiModeBloomOpacity}"> |
| 353 | <Border.Transitions> |
| 354 | <Transitions> |
| 355 | <DoubleTransition Property="Opacity" Duration="0:0:0.42"> |
| 356 | <DoubleTransition.Easing> |
| 357 | <Ease:CubicEaseOut/> |
| 358 | </DoubleTransition.Easing> |
| 359 | </DoubleTransition> |
| 360 | </Transitions> |
| 361 | </Border.Transitions> |
| 362 | </Border> |
| 363 | <!-- Оверлей подсветки эффективного контрола (ide_highlight_control, как в Comet) --> |
| 364 | <Canvas x:Name="AgentHighlightLayer" Grid.Row="0" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="5" IsHitTestVisible="False" ZIndex="1000"> |
| 365 | <Border x:Name="AgentHighlightOverlay" IsVisible="False" BorderBrush="#FF6B9D" BorderThickness="2" Background="#10000000"/> |
| 366 | </Canvas> |
| 367 | </Grid> |
| 368 | </DockPanel> |
| 369 | <views:CommandPaletteView ZIndex="5000"/> |
| 370 | <views:CockpitCommandLineOverlayView DataContext="{Binding CockpitCommandLineOverlay}" ZIndex="4999"/> |
| 371 | <!-- CascadeChord (Ctrl+K): полоска ввода — TaskCockpitView / CascadeChordHudStripView (ADR 0060). --> |
| 372 | </Grid> |
| 373 | </views:PointerTrackingWindow> |
| 374 | |