From 9dce6576e2233683223ef36a232346f2b8609317 Mon Sep 17 00:00:00 2001 From: Sebastian Hedtrich Date: Sun, 30 Aug 2026 22:47:53 +0200 Subject: [PATCH] TemplateDesigner: UI update --- .../ProjectLifecycleTests.cs | 4 + LehrerApp.TemplateDesigner/App.axaml | 1 + .../DesignerViewModel.cs | 8 + LehrerApp.TemplateDesigner/MainWindow.axaml | 237 ++++++++++-------- TODO.md | 27 ++ 5 files changed, 166 insertions(+), 111 deletions(-) diff --git a/LehrerApp.TemplateDesigner.Tests/ProjectLifecycleTests.cs b/LehrerApp.TemplateDesigner.Tests/ProjectLifecycleTests.cs index 9a48ac7..ef0ee59 100644 --- a/LehrerApp.TemplateDesigner.Tests/ProjectLifecycleTests.cs +++ b/LehrerApp.TemplateDesigner.Tests/ProjectLifecycleTests.cs @@ -55,6 +55,8 @@ public sealed class ProjectLifecycleTests placeholder.Sample = "Deutsch"; Assert.Same(placeholder, viewModel.SelectedPlaceholder); + Assert.True(viewModel.HasSelectedPlaceholder); + Assert.False(viewModel.HasNoSelectedPlaceholder); var definition = Assert.Single(viewModel.BuildManifest().Placeholders); Assert.Equal("Sprache", definition.Name); Assert.Equal(LehrerApp.Templating.PlaceholderType.Text, definition.Type); @@ -63,6 +65,8 @@ public sealed class ProjectLifecycleTests viewModel.RemoveSelectedPlaceholder(); Assert.Empty(viewModel.Placeholders); Assert.Null(viewModel.SelectedPlaceholder); + Assert.False(viewModel.HasSelectedPlaceholder); + Assert.True(viewModel.HasNoSelectedPlaceholder); } [Fact] diff --git a/LehrerApp.TemplateDesigner/App.axaml b/LehrerApp.TemplateDesigner/App.axaml index 00cbfb5..78119ae 100644 --- a/LehrerApp.TemplateDesigner/App.axaml +++ b/LehrerApp.TemplateDesigner/App.axaml @@ -2,6 +2,7 @@ x:Class="LehrerApp.TemplateDesigner.App" RequestedThemeVariant="Default"> + diff --git a/LehrerApp.TemplateDesigner/DesignerViewModel.cs b/LehrerApp.TemplateDesigner/DesignerViewModel.cs index abe5d12..5b75859 100644 --- a/LehrerApp.TemplateDesigner/DesignerViewModel.cs +++ b/LehrerApp.TemplateDesigner/DesignerViewModel.cs @@ -59,9 +59,17 @@ public partial class DesignerViewModel : ObservableObject public Dictionary Assets { get; } = new(StringComparer.OrdinalIgnoreCase); public ObservableCollection AssetItems { get; } = []; public ObservableCollection StarterTemplates { get; } = []; + public bool HasSelectedPlaceholder => SelectedPlaceholder is not null; + public bool HasNoSelectedPlaceholder => SelectedPlaceholder is null; public DesignerViewModel() => SelectedPlaceholder = Placeholders.FirstOrDefault(); + partial void OnSelectedPlaceholderChanged(DesignerPlaceholder? value) + { + OnPropertyChanged(nameof(HasSelectedPlaceholder)); + OnPropertyChanged(nameof(HasNoSelectedPlaceholder)); + } + public void Reset() { TemplateId = "neue-vorlage"; TemplateName = "Neue Vorlage"; Description = ""; diff --git a/LehrerApp.TemplateDesigner/MainWindow.axaml b/LehrerApp.TemplateDesigner/MainWindow.axaml index a5b58fa..fa2494a 100644 --- a/LehrerApp.TemplateDesigner/MainWindow.axaml +++ b/LehrerApp.TemplateDesigner/MainWindow.axaml @@ -42,123 +42,138 @@ - - - -