From f6bc793d4b91995586050d8534948b4990a6d419 Mon Sep 17 00:00:00 2001 From: Coasterpete <83011124+Coasterpete@users.noreply.github.com> Date: Sun, 19 Jul 2026 19:02:42 -0400 Subject: [PATCH] M161: Add workspace profile infrastructure --- Quantum.Editor.Avalonia/App.axaml.cs | 6 +- Quantum.Editor.Avalonia/MainWindow.axaml | 28 ++-- Quantum.Editor.Avalonia/MainWindow.axaml.cs | 77 ++++++++- .../Workspaces/WorkspaceCompositionIds.cs | 31 ++++ .../Services/Workspaces/WorkspaceProfile.cs | 151 ++++++++++++++++++ .../Workspaces/WorkspaceProfileCatalog.cs | 136 ++++++++++++++++ .../Services/Workspaces/WorkspaceProfileId.cs | 50 ++++++ .../Workspaces/WorkspaceProfileManager.cs | 76 +++++++++ .../WorkspaceProfileInfrastructureTests.cs | 99 ++++++++++++ README.md | 4 +- .../m161-workspace-profile-infrastructure.md | 53 ++++++ 11 files changed, 694 insertions(+), 17 deletions(-) create mode 100644 Quantum.Editor.Avalonia/Services/Workspaces/WorkspaceCompositionIds.cs create mode 100644 Quantum.Editor.Avalonia/Services/Workspaces/WorkspaceProfile.cs create mode 100644 Quantum.Editor.Avalonia/Services/Workspaces/WorkspaceProfileCatalog.cs create mode 100644 Quantum.Editor.Avalonia/Services/Workspaces/WorkspaceProfileId.cs create mode 100644 Quantum.Editor.Avalonia/Services/Workspaces/WorkspaceProfileManager.cs create mode 100644 Quantum.Tests/Editor/WorkspaceProfileInfrastructureTests.cs create mode 100644 docs/editor/m161-workspace-profile-infrastructure.md diff --git a/Quantum.Editor.Avalonia/App.axaml.cs b/Quantum.Editor.Avalonia/App.axaml.cs index eb0838b..2d7501e 100644 --- a/Quantum.Editor.Avalonia/App.axaml.cs +++ b/Quantum.Editor.Avalonia/App.axaml.cs @@ -1,6 +1,7 @@ using global::Avalonia.Controls.ApplicationLifetimes; using global::Avalonia.Markup.Xaml; using Quantum.Editor.Avalonia.Services; +using Quantum.Editor.Avalonia.Services.Workspaces; namespace Quantum.Editor.Avalonia; @@ -8,6 +9,8 @@ public partial class App : global::Avalonia.Application { public EditorWorkspace? Workspace { get; private set; } + public WorkspaceProfileManager? WorkspaceProfiles { get; private set; } + public override void Initialize() { AvaloniaXamlLoader.Load(this); @@ -19,7 +22,8 @@ public override void OnFrameworkInitializationCompleted() { Workspace = new EditorWorkspace(); Workspace.NewDocument(); - desktop.MainWindow = new MainWindow(Workspace); + WorkspaceProfiles = new WorkspaceProfileManager(); + desktop.MainWindow = new MainWindow(Workspace, WorkspaceProfiles); } base.OnFrameworkInitializationCompleted(); diff --git a/Quantum.Editor.Avalonia/MainWindow.axaml b/Quantum.Editor.Avalonia/MainWindow.axaml index 59638c2..45377e7 100644 --- a/Quantum.Editor.Avalonia/MainWindow.axaml +++ b/Quantum.Editor.Avalonia/MainWindow.axaml @@ -42,7 +42,7 @@ - + - + @@ -59,11 +59,11 @@ - + - + @@ -79,12 +79,12 @@ BorderThickness="0,0,0,1" Padding="10,7"> -