csharpdeeb25a2 | 1 | namespace CascadeIDE.Features.UiChrome; |
| 2 | |
| 3 | /// <summary> |
| 4 | /// Куда показывать preview Markdown (TOML: <c>markdown_preview_placement</c> в <c>UiModes/workspace.toml</c>). |
| 5 | /// </summary> |
| 6 | public enum MarkdownPreviewPlacement |
| 7 | { |
| 8 | /// <summary>Зона MFD / вторичный контур — primary placement.</summary> |
| 9 | Mfd, |
| 10 | |
| 11 | /// <summary>Отдельное окно <see cref="Views.MarkdownPreviewWindow"/>.</summary> |
| 12 | SeparateWindow, |
| 13 | } |
| 14 | |
| 15 | /// <summary>Парсинг значений из TOML/строк.</summary> |
| 16 | public static class MarkdownPreviewPlacementParser |
| 17 | { |
| 18 | /// <summary> |
| 19 | /// Допустимые строки: <c>mfd</c>, <c>separate_window</c>, <c>window</c> (синоним окна). |
| 20 | /// Неизвестное или пустое — <paramref name="defaultValue"/>. |
| 21 | /// </summary> |
| 22 | public static MarkdownPreviewPlacement ParseOrDefault(string? s, MarkdownPreviewPlacement defaultValue) |
| 23 | { |
| 24 | if (string.IsNullOrWhiteSpace(s)) |
| 25 | return defaultValue; |
| 26 | return s.Trim().ToLowerInvariant() switch |
| 27 | { |
| 28 | "mfd" => MarkdownPreviewPlacement.Mfd, |
| 29 | "separate_window" or "window" => MarkdownPreviewPlacement.SeparateWindow, |
| 30 | _ => defaultValue, |
| 31 | }; |
| 32 | } |
| 33 | } |
| 34 | |
View only · write via MCP/CIDE