Browse Source

Fixed menu commands and a lot of other stuff

Krzysztof Krysiński 2 years ago
parent
commit
38a79fad52
21 changed files with 77 additions and 57 deletions
  1. 7 6
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Helpers/Behaviours/GlobalShortcutFocusBehavior.cs
  2. 4 4
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Commands/CommandMethods.cs
  3. 0 7
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Commands/Commands/Command.cs
  4. 1 1
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Commands/XAML/ShortcutBinding.cs
  5. 2 0
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/DocumentModels/ActionAccumulator.cs
  6. 3 3
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Handlers/ITransformHandler.cs
  7. 2 0
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Input/KeyCombination.cs
  8. 0 1
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Styles/CommandsMenu.axaml
  9. 7 12
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/Document/DocumentViewModel.cs
  10. 21 0
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/Document/LayerHandlerFactory.cs
  11. 2 1
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/Document/TransformOverlays/DocumentTransformViewModel.cs
  12. 7 7
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/SubViewModels/ToolsViewModel.cs
  13. 6 4
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/Tools/SelectedToolEventArgs.cs
  14. 2 2
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/ViewModelMain.cs
  15. 1 1
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Decorators/Chip.axaml
  16. 1 1
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Dialogs/ConfirmationPopup.axaml
  17. 4 4
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Input/SizeInput.axaml
  18. 2 2
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Palettes/PaletteItem.axaml
  19. 1 0
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Windows/HelloTherePopup.axaml.cs
  20. 1 1
      src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Windows/PalettesBrowser.axaml
  21. 3 0
      src/PixiEditor.UI.Common/Accents/Base.axaml

+ 7 - 6
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Helpers/Behaviours/GlobalShortcutFocusBehavior.cs

@@ -1,5 +1,6 @@
 using Avalonia.Controls;
 using Avalonia.Controls;
 using Avalonia.Input;
 using Avalonia.Input;
+using Avalonia.Interactivity;
 using Avalonia.Xaml.Interactivity;
 using Avalonia.Xaml.Interactivity;
 using PixiEditor.AvaloniaUI.Models.Controllers;
 using PixiEditor.AvaloniaUI.Models.Controllers;
 
 
@@ -10,23 +11,23 @@ internal class GlobalShortcutFocusBehavior : Behavior<Control>
     protected override void OnAttached()
     protected override void OnAttached()
     {
     {
         base.OnAttached();
         base.OnAttached();
-        AssociatedObject.AddHandler(InputElement.GotFocusEvent, AssociatedObject_GotKeyboardFocus);
-        AssociatedObject.AddHandler(InputElement.LostFocusEvent, AssociatedObject_LostKeyboardFocus);
+        AssociatedObject.GotFocus += AssociatedObject_GotKeyboardFocus;
+        AssociatedObject.LostFocus += AssociatedObject_LostKeyboardFocus;
     }
     }
 
 
     protected override void OnDetaching()
     protected override void OnDetaching()
     {
     {
         base.OnDetaching();
         base.OnDetaching();
-        AssociatedObject.RemoveHandler(InputElement.GotFocusEvent, AssociatedObject_GotKeyboardFocus);
-        AssociatedObject.RemoveHandler(InputElement.LostFocusEvent, AssociatedObject_LostKeyboardFocus);
+        AssociatedObject.GotFocus -= AssociatedObject_GotKeyboardFocus;
+        AssociatedObject.LostFocus -= AssociatedObject_LostKeyboardFocus;
     }
     }
 
 
-    private void AssociatedObject_LostKeyboardFocus(object sender)
+    private void AssociatedObject_LostKeyboardFocus(object? sender, RoutedEventArgs routedEventArgs)
     {
     {
         ShortcutController.UnblockShortcutExecution("GlobalShortcutFocusBehavior");
         ShortcutController.UnblockShortcutExecution("GlobalShortcutFocusBehavior");
     }
     }
 
 
-    private void AssociatedObject_GotKeyboardFocus(object sender)
+    private void AssociatedObject_GotKeyboardFocus(object? sender, GotFocusEventArgs gotFocusEventArgs)
     {
     {
         ShortcutController.BlockShortcutExecution("GlobalShortcutFocusBehavior");
         ShortcutController.BlockShortcutExecution("GlobalShortcutFocusBehavior");
     }
     }

+ 4 - 4
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Commands/CommandMethods.cs

@@ -7,21 +7,21 @@ namespace PixiEditor.AvaloniaUI.Models.Commands;
 internal class CommandMethods
 internal class CommandMethods
 {
 {
     private readonly Command _command;
     private readonly Command _command;
-    private readonly Func<object, Task> _execute;
+    private readonly Action<object> _execute;
     private readonly CanExecuteEvaluator _canExecute;
     private readonly CanExecuteEvaluator _canExecute;
 
 
-    public CommandMethods(Command command, Func<object, Task> execute, CanExecuteEvaluator canExecute)
+    public CommandMethods(Command command, Action<object> execute, CanExecuteEvaluator canExecute)
     {
     {
         _execute = execute;
         _execute = execute;
         _canExecute = canExecute;
         _canExecute = canExecute;
         _command = command;
         _command = command;
     }
     }
 
 
-    public async Task Execute(object parameter)
+    public void Execute(object parameter)
     {
     {
         if (CanExecute(parameter))
         if (CanExecute(parameter))
         {
         {
-            await _execute(parameter);
+            _execute(parameter);
         }
         }
     }
     }
 
 

+ 0 - 7
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Commands/Commands/Command.cs

@@ -47,13 +47,6 @@ internal abstract partial class Command : ObservableObject
     public abstract object GetParameter();
     public abstract object GetParameter();
 
 
     protected Command(Action<object> onExecute, CanExecuteEvaluator canExecute)
     protected Command(Action<object> onExecute, CanExecuteEvaluator canExecute)
-    {
-        Methods = new(this, (_) => Task.FromResult(onExecute), canExecute);
-        ILocalizationProvider.Current.OnLanguageChanged += OnLanguageChanged;
-        /*InputLanguageManager.Current.InputLanguageChanged += (_, _) => this.OnPropertyChanged(nameof(Shortcut)); TODO: Didn't find implementation of this in Avalonia*/
-    }
-
-    protected Command(Func<object, Task> onExecute, CanExecuteEvaluator canExecute)
     {
     {
         Methods = new(this, onExecute, canExecute);
         Methods = new(this, onExecute, canExecute);
         ILocalizationProvider.Current.OnLanguageChanged += OnLanguageChanged;
         ILocalizationProvider.Current.OnLanguageChanged += OnLanguageChanged;

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Commands/XAML/ShortcutBinding.cs

@@ -47,7 +47,7 @@ internal class ShortcutBinding : MarkupExtension
     public static Binding GetBinding(ActualCommand command, IValueConverter converter) => new Binding
     public static Binding GetBinding(ActualCommand command, IValueConverter converter) => new Binding
     {
     {
         Source = command,
         Source = command,
-        Path = new("Shortcut"),
+        Path = new("Shortcut.Gesture"),
         Mode = BindingMode.OneWay,
         Mode = BindingMode.OneWay,
         StringFormat = "",
         StringFormat = "",
         Converter = converter
         Converter = converter

+ 2 - 0
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/DocumentModels/ActionAccumulator.cs

@@ -129,6 +129,8 @@ internal class ActionAccumulator
                 lockedFramebuffer.Dispose();
                 lockedFramebuffer.Dispose();
             }
             }
 
 
+            lockedFramebuffers.Clear();
+
             // force refresh viewports for better responsiveness
             // force refresh viewports for better responsiveness
             foreach (var (_, value) in internals.State.Viewports)
             foreach (var (_, value) in internals.State.Viewports)
             {
             {

+ 3 - 3
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Handlers/ITransformHandler.cs

@@ -9,7 +9,7 @@ internal interface ITransformHandler : IHandler
     public void KeyModifiersInlet(bool argsIsShiftDown, bool argsIsCtrlDown, bool argsIsAltDown);
     public void KeyModifiersInlet(bool argsIsShiftDown, bool argsIsCtrlDown, bool argsIsAltDown);
     public void ShowTransform(DocumentTransformMode transformMode, bool b, ShapeCorners shapeCorners, bool b1);
     public void ShowTransform(DocumentTransformMode transformMode, bool b, ShapeCorners shapeCorners, bool b1);
     public void HideTransform();
     public void HideTransform();
-    public void Undo();
-    public void Redo();
-    public void Nudge(VecI distance);
+    public bool Undo();
+    public bool Redo();
+    public bool Nudge(VecD distance);
 }
 }

+ 2 - 0
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Models/Input/KeyCombination.cs

@@ -17,6 +17,8 @@ public record struct KeyCombination(Key Key, KeyModifiers Modifiers)
 
 
     public KeyGesture ToKeyGesture() => new(Key, Modifiers);
     public KeyGesture ToKeyGesture() => new(Key, Modifiers);
 
 
+    public KeyGesture Gesture => ToKeyGesture();
+
     private string ToString(bool forceInvariant)
     private string ToString(bool forceInvariant)
     {
     {
         StringBuilder builder = new();
         StringBuilder builder = new();

+ 0 - 1
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Styles/CommandsMenu.axaml

@@ -5,5 +5,4 @@
 
 
     <ControlTheme x:Key="{x:Type xaml:Menu}"
     <ControlTheme x:Key="{x:Type xaml:Menu}"
                   TargetType="xaml:Menu" BasedOn="{StaticResource {x:Type Menu}}"/>
                   TargetType="xaml:Menu" BasedOn="{StaticResource {x:Type Menu}}"/>
-
 </ResourceDictionary>
 </ResourceDictionary>

+ 7 - 12
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/Document/DocumentViewModel.cs

@@ -156,9 +156,9 @@ internal partial class DocumentViewModel : ObservableObject, IDocument
     private DocumentInternalParts Internals { get; }
     private DocumentInternalParts Internals { get; }
     IFolderHandler IDocument.StructureRoot => StructureRoot;
     IFolderHandler IDocument.StructureRoot => StructureRoot;
     IDocumentOperations IDocument.Operations => Operations;
     IDocumentOperations IDocument.Operations => Operations;
-    ITransformHandler IDocument.TransformHandler { get; }
+    ITransformHandler IDocument.TransformHandler => TransformViewModel;
     ILineOverlayHandler IDocument.LineToolOverlayHandler => LineToolOverlayViewModel;
     ILineOverlayHandler IDocument.LineToolOverlayHandler => LineToolOverlayViewModel;
-    ILayerHandlerFactory IDocument.LayerHandlerFactory { get; }
+    public ILayerHandlerFactory LayerHandlerFactory { get; }
     IFolderHandlerFactory IDocument.FolderHandlerFactory { get; }
     IFolderHandlerFactory IDocument.FolderHandlerFactory { get; }
     IReferenceLayerHandler IDocument.ReferenceLayerHandler => ReferenceLayerViewModel;
     IReferenceLayerHandler IDocument.ReferenceLayerHandler => ReferenceLayerViewModel;
 
 
@@ -172,6 +172,8 @@ internal partial class DocumentViewModel : ObservableObject, IDocument
         EventInlet = new DocumentEventsModule(this, Internals);
         EventInlet = new DocumentEventsModule(this, Internals);
         Operations = new DocumentOperationsModule(this, Internals);
         Operations = new DocumentOperationsModule(this, Internals);
 
 
+        LayerHandlerFactory = new LayerHandlerFactory(this);
+
         StructureRoot = new FolderViewModel(this, Internals, Internals.Tracker.Document.StructureRoot.GuidValue);
         StructureRoot = new FolderViewModel(this, Internals, Internals.Tracker.Document.StructureRoot.GuidValue);
 
 
         TransformViewModel = new(this);
         TransformViewModel = new(this);
@@ -514,10 +516,8 @@ internal partial class DocumentViewModel : ObservableObject, IDocument
         OnPropertyChanged(nameof(VerticalSymmetryAxisXBindable));
         OnPropertyChanged(nameof(VerticalSymmetryAxisXBindable));
     }
     }
 
 
-    public void SetSelectedMember(IStructureMemberHandler member)
-    {
-        throw new NotImplementedException();
-    }
+    public void SetSelectedMember(IStructureMemberHandler member) =>
+        SetSelectedMember((StructureMemberViewModel)member);
 
 
     public void SetHorizontalSymmetryAxisY(double horizontalSymmetryAxisY)
     public void SetHorizontalSymmetryAxisY(double horizontalSymmetryAxisY)
     {
     {
@@ -552,12 +552,7 @@ internal partial class DocumentViewModel : ObservableObject, IDocument
     }
     }
 
 
     public void ClearSoftSelectedMembers() => softSelectedStructureMembers.Clear();
     public void ClearSoftSelectedMembers() => softSelectedStructureMembers.Clear();
-    public void AddSoftSelectedMember(IStructureMemberHandler member)
-    {
-        throw new NotImplementedException();
-    }
-
-    public void AddSoftSelectedMember(StructureMemberViewModel member) => softSelectedStructureMembers.Add(member);
+    public void AddSoftSelectedMember(IStructureMemberHandler member) => softSelectedStructureMembers.Add((StructureMemberViewModel)member);
     public void RemoveSoftSelectedMember(StructureMemberViewModel member) => softSelectedStructureMembers.Remove(member);
     public void RemoveSoftSelectedMember(StructureMemberViewModel member) => softSelectedStructureMembers.Remove(member);
     #endregion
     #endregion
 
 

+ 21 - 0
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/Document/LayerHandlerFactory.cs

@@ -0,0 +1,21 @@
+using PixiEditor.AvaloniaUI.Helpers;
+using PixiEditor.AvaloniaUI.Models.DocumentModels;
+using PixiEditor.AvaloniaUI.Models.Handlers;
+
+namespace PixiEditor.AvaloniaUI.ViewModels.Document;
+
+internal class LayerHandlerFactory : ILayerHandlerFactory
+{
+    public DocumentViewModel Document { get; }
+    IDocument ILayerHandlerFactory.Document { get; }
+
+    public LayerHandlerFactory(DocumentViewModel document)
+    {
+        Document = document;
+    }
+
+    public ILayerHandler CreateLayerHandler(DocumentInternalParts helper, Guid infoGuidValue)
+    {
+        return new LayerViewModel(Document, helper, infoGuidValue);
+    }
+}

+ 2 - 1
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/Document/TransformOverlays/DocumentTransformViewModel.cs

@@ -3,6 +3,7 @@ using ChunkyImageLib.DataHolders;
 using CommunityToolkit.Mvvm.ComponentModel;
 using CommunityToolkit.Mvvm.ComponentModel;
 using CommunityToolkit.Mvvm.Input;
 using CommunityToolkit.Mvvm.Input;
 using PixiEditor.AvaloniaUI.Models.DocumentModels;
 using PixiEditor.AvaloniaUI.Models.DocumentModels;
+using PixiEditor.AvaloniaUI.Models.Handlers;
 using PixiEditor.AvaloniaUI.Views.Overlays.TransformOverlay;
 using PixiEditor.AvaloniaUI.Views.Overlays.TransformOverlay;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Extensions.Common.Localization;
@@ -10,7 +11,7 @@ using PixiEditor.Extensions.Helpers;
 
 
 namespace PixiEditor.AvaloniaUI.ViewModels.Document.TransformOverlays;
 namespace PixiEditor.AvaloniaUI.ViewModels.Document.TransformOverlays;
 #nullable enable
 #nullable enable
-internal class DocumentTransformViewModel : ObservableObject
+internal class DocumentTransformViewModel : ObservableObject, ITransformHandler
 {
 {
     private DocumentViewModel document;
     private DocumentViewModel document;
     
     

+ 7 - 7
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/SubViewModels/ToolsViewModel.cs

@@ -23,7 +23,7 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
     private RightClickMode rightClickMode;
     private RightClickMode rightClickMode;
     public ZoomToolViewModel? ZoomTool => GetTool<ZoomToolViewModel>();
     public ZoomToolViewModel? ZoomTool => GetTool<ZoomToolViewModel>();
 
 
-    public ToolViewModel? LastActionTool { get; private set; }
+    public IToolHandler? LastActionTool { get; private set; }
 
 
     public RightClickMode RightClickMode
     public RightClickMode RightClickMode
     {
     {
@@ -64,8 +64,8 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
         get => ActiveTool?.Toolbar as BasicToolbar;
         get => ActiveTool?.Toolbar as BasicToolbar;
     }
     }
 
 
-    private ToolViewModel? activeTool;
-    public ToolViewModel? ActiveTool
+    private IToolHandler? activeTool;
+    public IToolHandler? ActiveTool
     {
     {
         get => activeTool;
         get => activeTool;
         private set
         private set
@@ -75,7 +75,7 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
         }
         }
     }
     }
 
 
-    public List<ToolViewModel>? ToolSet { get; private set; }
+    public List<IToolHandler>? ToolSet { get; private set; }
 
 
     public event EventHandler<SelectedToolEventArgs>? SelectedToolChanged;
     public event EventHandler<SelectedToolEventArgs>? SelectedToolChanged;
 
 
@@ -94,7 +94,7 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
 
 
     public void SetupTools(IServiceProvider services)
     public void SetupTools(IServiceProvider services)
     {
     {
-        ToolSet = services.GetServices<ToolViewModel>().ToList();
+        ToolSet = services.GetServices<IToolHandler>().ToList();
     }
     }
 
 
     public void SetupToolsTooltipShortcuts(IServiceProvider services)
     public void SetupToolsTooltipShortcuts(IServiceProvider services)
@@ -132,7 +132,7 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
         SetActiveTool(tool, false);
         SetActiveTool(tool, false);
     }
     }
 
 
-    public void SetActiveTool(ToolViewModel tool, bool transient)
+    public void SetActiveTool(IToolHandler tool, bool transient)
     {
     {
         if (ActiveTool == tool)
         if (ActiveTool == tool)
         {
         {
@@ -215,7 +215,7 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
     {
     {
         if (!typeof(ToolViewModel).IsAssignableFrom(toolType))
         if (!typeof(ToolViewModel).IsAssignableFrom(toolType))
             throw new ArgumentException($"'{toolType}' does not inherit from {typeof(ToolViewModel)}");
             throw new ArgumentException($"'{toolType}' does not inherit from {typeof(ToolViewModel)}");
-        ToolViewModel foundTool = ToolSet!.First(x => x.GetType() == toolType);
+        IToolHandler foundTool = ToolSet!.First(x => x.GetType() == toolType);
         SetActiveTool(foundTool, transient);
         SetActiveTool(foundTool, transient);
     }
     }
     
     

+ 6 - 4
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/Tools/SelectedToolEventArgs.cs

@@ -1,14 +1,16 @@
-namespace PixiEditor.AvaloniaUI.ViewModels.Tools;
+using PixiEditor.AvaloniaUI.Models.Handlers;
+
+namespace PixiEditor.AvaloniaUI.ViewModels.Tools;
 
 
 internal class SelectedToolEventArgs
 internal class SelectedToolEventArgs
 {
 {
-    public SelectedToolEventArgs(ToolViewModel oldTool, ToolViewModel newTool)
+    public SelectedToolEventArgs(IToolHandler oldTool, IToolHandler newTool)
     {
     {
         OldTool = oldTool;
         OldTool = oldTool;
         NewTool = newTool;
         NewTool = newTool;
     }
     }
 
 
-    public ToolViewModel OldTool { get; set; }
+    public IToolHandler OldTool { get; set; }
 
 
-    public ToolViewModel NewTool { get; set; }
+    public IToolHandler NewTool { get; set; }
 }
 }

+ 2 - 2
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/ViewModels/ViewModelMain.cs

@@ -177,8 +177,8 @@ internal partial class ViewModelMain : ViewModelBase
     private void ToolsSubViewModel_SelectedToolChanged(object sender, SelectedToolEventArgs e)
     private void ToolsSubViewModel_SelectedToolChanged(object sender, SelectedToolEventArgs e)
     {
     {
         if (e.OldTool != null)
         if (e.OldTool != null)
-            e.OldTool.PropertyChanged -= SelectedTool_PropertyChanged;
-        e.NewTool.PropertyChanged += SelectedTool_PropertyChanged;
+            ((ToolViewModel)e.OldTool).PropertyChanged -= SelectedTool_PropertyChanged;
+        ((ToolViewModel)e.NewTool).PropertyChanged += SelectedTool_PropertyChanged;
 
 
         NotifyToolActionDisplayChanged();
         NotifyToolActionDisplayChanged();
     }
     }

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Decorators/Chip.axaml

@@ -6,7 +6,7 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              mc:Ignorable="d" x:Name="chip"
              mc:Ignorable="d" x:Name="chip"
              d:DesignHeight="30" d:DesignWidth="60">
              d:DesignHeight="30" d:DesignWidth="60">
-    <Border VerticalAlignment="Center" Background="{StaticResource GlyphBrush}" BorderThickness="1"
+    <Border VerticalAlignment="Center" Background="{DynamicResource GlyphBrush}" BorderThickness="1"
             BorderBrush="{Binding ElementName=chip, Path=OutlineColor}"
             BorderBrush="{Binding ElementName=chip, Path=OutlineColor}"
             Padding="5 2.5" CornerRadius="2.5">
             Padding="5 2.5" CornerRadius="2.5">
         <TextBlock Text="{Binding ElementName=chip, Path=Text}" Foreground="White"/>
         <TextBlock Text="{Binding ElementName=chip, Path=Text}" Foreground="White"/>

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Dialogs/ConfirmationPopup.axaml

@@ -14,7 +14,7 @@
         mc:Ignorable="d" d:Title="Unsaved changes"
         mc:Ignorable="d" d:Title="Unsaved changes"
         Name="popup" WindowStartupLocation="CenterScreen" 
         Name="popup" WindowStartupLocation="CenterScreen" 
         Height="180" Width="400" MinHeight="180" MinWidth="400"
         Height="180" Width="400" MinHeight="180" MinWidth="400"
-        ui:Translator.Key="{Binding ElementName=popup, Path=Title}"
+        ui:Translator.Key="{Binding ElementName=popup, Path=Title, Mode=OneTime}"
         FlowDirection="{markupExtensions:Localization FlowDirection}">
         FlowDirection="{markupExtensions:Localization FlowDirection}">
 
 
     <!--
     <!--

+ 4 - 4
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Input/SizeInput.axaml

@@ -17,14 +17,14 @@
             PointerWheelChanged="Border_MouseWheel">
             PointerWheelChanged="Border_MouseWheel">
         <Border.Styles>
         <Border.Styles>
             <!--TODO: Handle these colors-->
             <!--TODO: Handle these colors-->
-            <Style Selector="Border">
-                <Setter Property="Background" Value="{StaticResource DarkerAccentColor}"/>
+            <!--<Style Selector="Border">
+                <Setter Property="Background" Value="{DynamicResource DarkerAccentColor}"/>
                 <Setter Property="BorderBrush" Value="{StaticResource AlmostLightModeAccentColor}"/>
                 <Setter Property="BorderBrush" Value="{StaticResource AlmostLightModeAccentColor}"/>
             </Style>
             </Style>
             <Style Selector="Border:hover">
             <Style Selector="Border:hover">
                 <Setter Property="Background" Value="{StaticResource AccentColor}"/>
                 <Setter Property="Background" Value="{StaticResource AccentColor}"/>
                 <Setter Property="BorderBrush" Value="{StaticResource BrighterAccentColor}"/>
                 <Setter Property="BorderBrush" Value="{StaticResource BrighterAccentColor}"/>
-            </Style>
+            </Style>-->
         </Border.Styles>
         </Border.Styles>
         <Grid>
         <Grid>
             <Grid.ColumnDefinitions>
             <Grid.ColumnDefinitions>
@@ -34,7 +34,7 @@
             </Grid.ColumnDefinitions>
             </Grid.ColumnDefinitions>
             <TextBox IsEnabled="{Binding IsEnabled, ElementName=uc}" HorizontalContentAlignment="Right"
             <TextBox IsEnabled="{Binding IsEnabled, ElementName=uc}" HorizontalContentAlignment="Right"
                      BorderThickness="0" Background="Transparent"
                      BorderThickness="0" Background="Transparent"
-                     SelectionBrush="{StaticResource SelectionColor}"
+                     SelectionBrush="{DynamicResource ThemeControlHighlightColor}"
                      Foreground="{Binding Foreground, ElementName=uc}" Focusable="True" CaretBrush="{Binding Foreground, ElementName=uc}"
                      Foreground="{Binding Foreground, ElementName=uc}" Focusable="True" CaretBrush="{Binding Foreground, ElementName=uc}"
                      Margin="0,0,5,0" VerticalAlignment="Center"
                      Margin="0,0,5,0" VerticalAlignment="Center"
                      x:Name="textBox"
                      x:Name="textBox"

+ 2 - 2
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Palettes/PaletteItem.axaml

@@ -23,7 +23,7 @@
             <RowDefinition Height="60*" MinHeight="45"/>
             <RowDefinition Height="60*" MinHeight="45"/>
         </Grid.RowDefinitions>
         </Grid.RowDefinitions>
         <StackPanel Orientation="Vertical" Grid.RowSpan="2" Grid.ColumnSpan="2">
         <StackPanel Orientation="Vertical" Grid.RowSpan="2" Grid.ColumnSpan="2">
-            <Separator Background="{StaticResource MainColor}" />
+            <Separator Background="{DynamicResource ThemeBackgroundBrush}" />
             <DockPanel>
             <DockPanel>
                 <StackPanel Orientation="Horizontal" DockPanel.Dock="Left">
                 <StackPanel Orientation="Horizontal" DockPanel.Dock="Left">
                     <input:EditableTextBlock x:Name="titleTextBlock" OnSubmit="EditableTextBlock_OnSubmit"
                     <input:EditableTextBlock x:Name="titleTextBlock" OnSubmit="EditableTextBlock_OnSubmit"
@@ -48,7 +48,7 @@
         <ItemsControl Margin="0 -20 0 10" Grid.Row="1" Grid.Column="0" ItemsSource="{Binding ElementName=paletteItem, Path=Palette.Colors}">
         <ItemsControl Margin="0 -20 0 10" Grid.Row="1" Grid.Column="0" ItemsSource="{Binding ElementName=paletteItem, Path=Palette.Colors}">
             <ItemsControl.ItemsPanel>
             <ItemsControl.ItemsPanel>
                 <ItemsPanelTemplate>
                 <ItemsPanelTemplate>
-                    <WrapPanel Orientation="Horizontal" IsItemsHost="True"/>
+                    <WrapPanel Orientation="Horizontal" />
                 </ItemsPanelTemplate>
                 </ItemsPanelTemplate>
             </ItemsControl.ItemsPanel>
             </ItemsControl.ItemsPanel>
             <ItemsControl.ItemTemplate>
             <ItemsControl.ItemTemplate>

+ 1 - 0
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Windows/HelloTherePopup.axaml.cs

@@ -196,6 +196,7 @@ internal partial class HelloTherePopup : Window
 
 
     private async void HelloTherePopup_OnLoaded(object sender, RoutedEventArgs e)
     private async void HelloTherePopup_OnLoaded(object sender, RoutedEventArgs e)
     {
     {
+        return;
         if(_newsDisabled) return;
         if(_newsDisabled) return;
 
 
         try
         try

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.AvaloniaUI/Views/Windows/PalettesBrowser.axaml

@@ -35,7 +35,7 @@
 
 
         <dialogs:DialogTitleBar TitleKey="PALETTE_BROWSER" CloseCommand="{x:Static viewModels:SystemCommands.CloseWindowCommand}"/>
         <dialogs:DialogTitleBar TitleKey="PALETTE_BROWSER" CloseCommand="{x:Static viewModels:SystemCommands.CloseWindowCommand}"/>
 
 
-        <DockPanel Background="{StaticResource MainColor}" Grid.Row="1">
+        <DockPanel Background="{DynamicResource ThemeBackgroundBrush}" Grid.Row="1">
             <StackPanel HorizontalAlignment="Left" Margin="10" Orientation="Horizontal" VerticalAlignment="Center">
             <StackPanel HorizontalAlignment="Left" Margin="10" Orientation="Horizontal" VerticalAlignment="Center">
                 <Label ui:Translator.Key="SORT_BY" VerticalAlignment="Center"/>
                 <Label ui:Translator.Key="SORT_BY" VerticalAlignment="Center"/>
                 <ComboBox x:Name="sortingComboBox" VerticalAlignment="Center" SelectionChanged="SortingComboBox_SelectionChanged">
                 <ComboBox x:Name="sortingComboBox" VerticalAlignment="Center" SelectionChanged="SortingComboBox_SelectionChanged">

+ 3 - 0
src/PixiEditor.UI.Common/Accents/Base.axaml

@@ -27,6 +27,8 @@
 
 
             <Color x:Key="ErrorColor">#B00020</Color>
             <Color x:Key="ErrorColor">#B00020</Color>
 
 
+            <Color x:Key="GlyphColor">#444</Color>
+
             <Color x:Key="NotificationCardBackgroundColor">#303030</Color>
             <Color x:Key="NotificationCardBackgroundColor">#303030</Color>
 
 
             <system:Double x:Key="ThemeDisabledOpacity">0.4</system:Double>
             <system:Double x:Key="ThemeDisabledOpacity">0.4</system:Double>
@@ -54,6 +56,7 @@
             <SolidColorBrush x:Key="NotificationCardBackgroundBrush" Color="{StaticResource NotificationCardBackgroundColor}" />
             <SolidColorBrush x:Key="NotificationCardBackgroundBrush" Color="{StaticResource NotificationCardBackgroundColor}" />
 
 
             <SolidColorBrush x:Key="ErrorBrush" Color="{StaticResource ErrorColor}" />
             <SolidColorBrush x:Key="ErrorBrush" Color="{StaticResource ErrorColor}" />
+            <SolidColorBrush x:Key="GlyphBrush" Color="{StaticResource GlyphColor}"/>
 
 
             <CornerRadius x:Key="ControlCornerRadius">5</CornerRadius>
             <CornerRadius x:Key="ControlCornerRadius">5</CornerRadius>
             <system:Double x:Key="ControlCornerRadiusValue">5</system:Double>
             <system:Double x:Key="ControlCornerRadiusValue">5</system:Double>