| 1 | namespace CascadeIDE.Features.UiChrome; |
| 2 | |
| 3 | /// <summary>Продуктовая «семья» UI-режима: одна ось для веток в коде и привязок вместо набора <c>Is*Mode</c>.</summary> |
| 4 | public enum UiModeFamily |
| 5 | { |
| 6 | Focus, |
| 7 | /// <summary>Максимум места редактору: скрытый хром по capabilities; вызовы — палитра/MCP.</summary> |
| 8 | Editor, |
| 9 | Balanced, |
| 10 | Power, |
| 11 | AgentChat, |
| 12 | Debug, |
| 13 | /// <summary>Полигон для экспериментов с раскладкой; дефолты capabilities как у <see cref="Balanced"/>.</summary> |
| 14 | Flight, |
| 15 | } |
| 16 | |
| 17 | /// <summary>Соответствие стабильного id режима (после <see cref="UiChromeViewModel.NormalizeUiMode"/>) семейству.</summary> |
| 18 | public static class UiModeFamilyResolver |
| 19 | { |
| 20 | public static UiModeFamily FromNormalizedMode(string normalizedMode) => |
| 21 | UiModeCatalog.GetFamily(normalizedMode); |
| 22 | } |
| 23 | |
| 24 | /// <summary>Предикаты по значению <see cref="UiModeFamily"/>: одна точка для каждого семейства вместо размножения <c>== UiModeFamily.*</c> в VM.</summary> |
| 25 | public static class UiModeFamilyExtensions |
| 26 | { |
| 27 | public static bool IsFocusFamily(this UiModeFamily family) => |
| 28 | family == UiModeFamily.Focus; |
| 29 | |
| 30 | public static bool IsEditorFamily(this UiModeFamily family) => |
| 31 | family == UiModeFamily.Editor; |
| 32 | |
| 33 | public static bool IsBalancedFamily(this UiModeFamily family) => |
| 34 | family == UiModeFamily.Balanced; |
| 35 | |
| 36 | public static bool IsPowerFamily(this UiModeFamily family) => |
| 37 | family == UiModeFamily.Power; |
| 38 | |
| 39 | public static bool IsAgentChatFamily(this UiModeFamily family) => |
| 40 | family == UiModeFamily.AgentChat; |
| 41 | |
| 42 | public static bool IsDebugFamily(this UiModeFamily family) => |
| 43 | family == UiModeFamily.Debug; |
| 44 | |
| 45 | public static bool IsFlightFamily(this UiModeFamily family) => |
| 46 | family == UiModeFamily.Flight; |
| 47 | } |
| 48 | |