Kaynağa Gözat

Added handler interfaces to viewmodels

Krzysztof Krysiński 2 yıl önce
ebeveyn
işleme
53f6050eae
26 değiştirilmiş dosya ile 63 ekleme ve 47 silme
  1. 1 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Toolbars/IBasicToolbar.cs
  2. 5 3
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Toolbars/IToolbar.cs
  3. 2 2
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IBrightnessToolHandler.cs
  4. 3 3
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IColorPickerHandler.cs
  5. 1 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IEllipseToolHandler.cs
  6. 1 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IFloodFillToolHandler.cs
  7. 1 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/ILassoToolHandler.cs
  8. 2 2
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/ILineToolHandler.cs
  9. 2 2
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IMagicWandToolHandler.cs
  10. 2 2
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IMoveToolHandler.cs
  11. 1 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IPenToolHandler.cs
  12. 2 2
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/ISelectToolHandler.cs
  13. 2 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/ShapeTool.cs
  14. 2 3
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/ToolSettings/Settings/FloatSetting.cs
  15. 4 2
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/ToolViewModel.cs
  16. 10 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/BrightnessToolViewModel.cs
  17. 3 5
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/ColorPickerToolViewModel.cs
  18. 2 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/EllipseToolViewModel.cs
  19. 2 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/EraserToolViewModel.cs
  20. 2 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/FloodFillToolViewModel.cs
  21. 3 2
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/LassoToolViewModel.cs
  22. 1 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/LineToolViewModel.cs
  23. 2 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/MagicWandToolViewModel.cs
  24. 3 5
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/MoveToolViewModel.cs
  25. 2 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/PenToolViewModel.cs
  26. 2 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/SelectToolViewModel.cs

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Toolbars/IBasicToolbar.cs

@@ -1,6 +1,6 @@
 namespace PixiEditor.Models.Containers.Toolbars;
 
-public interface IBasicToolbar : IToolbar
+internal interface IBasicToolbar : IToolbar
 {
     public int ToolSize { get; set; }
 }

+ 5 - 3
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Toolbars/IToolbar.cs

@@ -1,6 +1,8 @@
-namespace PixiEditor.Models.Containers.Toolbars;
+using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;
 
-public interface IToolbar : IHandler
-{
+namespace PixiEditor.Models.Containers.Toolbars;
 
+internal interface IToolbar : IHandler
+{
+    public Setting GetSetting(string name);
 }

+ 2 - 2
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IBrightnessToolHandler.cs

@@ -7,7 +7,7 @@ internal interface IBrightnessToolHandler : IToolHandler
 {
     public BrightnessMode BrightnessMode { get; set; }
     public int ToolSize { get; set; }
-    public bool Darken { get; set; }
+    public bool Darken { get; }
     public MouseButton UsedWith { get; set; }
-    public int CorrectionFactor { get; set; }
+    public int CorrectionFactor { get; }
 }

+ 3 - 3
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IColorPickerHandler.cs

@@ -4,7 +4,7 @@ namespace PixiEditor.Models.Containers.Tools;
 
 internal interface IColorPickerHandler : IToolHandler
 {
-    public DocumentScope Mode { get; set; }
-    public bool PickFromReferenceLayer { get; set; }
-    public bool PickFromCanvas { get; set; }
+    public DocumentScope Mode { get; }
+    public bool PickFromReferenceLayer { get; }
+    public bool PickFromCanvas { get; }
 }

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IEllipseToolHandler.cs

@@ -2,5 +2,5 @@
 
 internal interface IEllipseToolHandler : IShapeToolHandler
 {
-    public bool DrawCircle { get; set; }
+    public bool DrawCircle { get; }
 }

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IFloodFillToolHandler.cs

@@ -2,5 +2,5 @@
 
 internal interface IFloodFillToolHandler : IToolHandler
 {
-    public bool ConsiderAllLayers { get; set; }
+    public bool ConsiderAllLayers { get; }
 }

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/ILassoToolHandler.cs

@@ -4,5 +4,5 @@ namespace PixiEditor.Models.Containers.Tools;
 
 internal interface ILassoToolHandler : IToolHandler
 {
-    public SelectionMode? ResultingSelectionMode { get; set; }
+    public SelectionMode? ResultingSelectionMode { get; }
 }

+ 2 - 2
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/ILineToolHandler.cs

@@ -2,6 +2,6 @@
 
 internal interface ILineToolHandler : IToolHandler
 {
-    public int ToolSize { get; set; }
-    public bool Snap { get; set; }
+    public int ToolSize { get; }
+    public bool Snap { get; }
 }

+ 2 - 2
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IMagicWandToolHandler.cs

@@ -5,6 +5,6 @@ namespace PixiEditor.Models.Containers.Tools;
 
 internal interface IMagicWandToolHandler : IToolHandler
 {
-    public SelectionMode SelectMode { get; set; }
-    public DocumentScope DocumentScope { get; set; }
+    public SelectionMode SelectMode { get; }
+    public DocumentScope DocumentScope { get; }
 }

+ 2 - 2
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IMoveToolHandler.cs

@@ -2,7 +2,7 @@
 
 internal interface IMoveToolHandler : IToolHandler
 {
-    public bool MoveAllLayers { get; set; }
-    public bool KeepOriginalImage { get; set; }
+    public bool MoveAllLayers { get; }
+    public bool KeepOriginalImage { get; }
     public bool TransformingSelectedArea { get; set; }
 }

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/IPenToolHandler.cs

@@ -2,5 +2,5 @@
 
 internal interface IPenToolHandler : IToolHandler
 {
-    public bool PixelPerfectEnabled { get; set; }
+    public bool PixelPerfectEnabled { get; }
 }

+ 2 - 2
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Handlers/Tools/ISelectToolHandler.cs

@@ -5,6 +5,6 @@ namespace PixiEditor.Models.Containers.Tools;
 
 internal interface ISelectToolHandler : IToolHandler
 {
-    public SelectionShape SelectShape { get; set; }
-    public SelectionMode ResultingSelectionMode { get; set; }
+    public SelectionShape SelectShape { get; }
+    public SelectionMode ResultingSelectionMode { get; }
 }

+ 2 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/ShapeTool.cs

@@ -1,11 +1,12 @@
 using System.Windows.Input;
 using Avalonia.Input;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools;
 
-internal abstract class ShapeTool : ToolViewModel
+internal abstract class ShapeTool : ToolViewModel, IShapeToolHandler
 {
     public override BrushShape BrushShape => BrushShape.Pixel;
 

+ 2 - 3
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/ToolSettings/Settings/FloatSetting.cs

@@ -1,5 +1,4 @@
-using System.Windows.Controls;
-using System.Windows.Data;
+using Avalonia;
 using Avalonia.Controls;
 using Avalonia.Data;
 using PixiEditor.Views.UserControls;
@@ -39,7 +38,7 @@ internal sealed class FloatSetting : Setting<float>
         {
             Mode = BindingMode.TwoWay
         };
-        numbrInput.SetBinding(NumberInput.ValueProperty, binding);
+        numbrInput.Bind(NumberInput.ValueProperty, binding);
         return numbrInput;
     }
 

+ 4 - 2
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/ToolViewModel.cs

@@ -5,13 +5,15 @@ using CommunityToolkit.Mvvm.ComponentModel;
 using PixiEditor.Avalonia.ViewModels;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Models.Containers;
+using PixiEditor.Models.Containers.Toolbars;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools;
 
-internal abstract class ToolViewModel : ObservableObject
+internal abstract class ToolViewModel : ObservableObject, IToolHandler
 {
     public bool IsTransient { get; set; } = false;
     public KeyCombination Shortcut { get; set; }
@@ -68,7 +70,7 @@ internal abstract class ToolViewModel : ObservableObject
 
     public Cursor Cursor { get; set; } = new Cursor(StandardCursorType.Arrow);
 
-    public Toolbar Toolbar { get; set; } = new EmptyToolbar();
+    public IToolbar Toolbar { get; set; } = new EmptyToolbar();
 
     internal ToolViewModel()
     {

+ 10 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/BrightnessToolViewModel.cs

@@ -5,6 +5,8 @@ using PixiEditor.Avalonia.ViewModels;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Toolbars;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;
@@ -14,9 +16,10 @@ using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.U)]
-internal class BrightnessToolViewModel : ToolViewModel
+internal class BrightnessToolViewModel : ToolViewModel, IBrightnessToolHandler
 {
     private readonly string defaultActionDisplay = "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT";
+    private int _correctionFactor;
     public override string ToolNameLocalizationKey => "BRIGHTNESS_TOOL";
 
     public BrightnessToolViewModel()
@@ -27,10 +30,14 @@ internal class BrightnessToolViewModel : ToolViewModel
 
     public override bool IsErasable => true;
 
+    public IToolbar Toolbar { get; set; }
     public override LocalizedString Tooltip => new LocalizedString("BRIGHTNESS_TOOL_TOOLTIP", Shortcut);
 
     public override BrushShape BrushShape => BrushShape.Circle;
 
+    BrightnessMode IBrightnessToolHandler.BrightnessMode { get; set; }
+    int IBrightnessToolHandler.ToolSize { get; set; }
+
     [Settings.Inherited]
     public int ToolSize => GetValue<int>();
     
@@ -42,6 +49,8 @@ internal class BrightnessToolViewModel : ToolViewModel
     
     public bool Darken { get; private set; } = false;
 
+    int IBrightnessToolHandler.CorrectionFactor => (int)CorrectionFactor;
+
     public override void ModifierKeyChanged(bool ctrlIsDown, bool shiftIsDown, bool altIsDown)
     {
         if (!ctrlIsDown)

+ 3 - 5
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/ColorPickerToolViewModel.cs

@@ -1,15 +1,13 @@
 using System.ComponentModel;
-using System.Windows.Input;
-using Avalonia.Controls;
 using Avalonia.Input;
 using Hardware.Info;
-using PixiEditor.Avalonia.ViewModels;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Toolbars;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Events;
-using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Document;
 using PixiEditor.ViewModels.SubViewModels.Document.TransformOverlays;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
@@ -18,7 +16,7 @@ using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.O, Transient = Key.LeftAlt)]
-internal class ColorPickerToolViewModel : ToolViewModel
+internal class ColorPickerToolViewModel : ToolViewModel, IColorPickerHandler
 {
     private readonly string defaultReferenceActionDisplay = "COLOR_PICKER_ACTION_DISPLAY_DEFAULT";
     

+ 2 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/EllipseToolViewModel.cs

@@ -5,12 +5,13 @@ using PixiEditor.Avalonia.ViewModels;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Localization;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.C)]
-internal class EllipseToolViewModel : ShapeTool
+internal class EllipseToolViewModel : ShapeTool, IEllipseToolHandler
 {
     private string defaultActionDisplay = "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT";
     public override string ToolNameLocalizationKey => "ELLIPSE_TOOL";

+ 2 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/EraserToolViewModel.cs

@@ -5,6 +5,7 @@ using PixiEditor.Avalonia.ViewModels;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
@@ -12,7 +13,7 @@ using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.E)]
-internal class EraserToolViewModel : ToolViewModel
+internal class EraserToolViewModel : ToolViewModel, IEraserToolHandler
 {
     public EraserToolViewModel()
     {

+ 2 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/FloodFillToolViewModel.cs

@@ -4,13 +4,14 @@ using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Localization;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.G)]
-internal class FloodFillToolViewModel : ToolViewModel
+internal class FloodFillToolViewModel : ToolViewModel, IFloodFillToolHandler
 {
     private readonly string defaultActionDisplay = "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT";
 

+ 3 - 2
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/LassoToolViewModel.cs

@@ -4,6 +4,7 @@ using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
@@ -11,7 +12,7 @@ using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.ToolAttribute(Key = Key.Q)]
-internal class LassoToolViewModel : ToolViewModel
+internal class LassoToolViewModel : ToolViewModel, ILassoToolHandler
 {
     private string defaultActionDisplay = "LASSO_TOOL_ACTION_DISPLAY_DEFAULT";
 
@@ -22,7 +23,7 @@ internal class LassoToolViewModel : ToolViewModel
     }
 
     private SelectionMode KeyModifierselectionMode = SelectionMode.New;
-    public SelectionMode ResultingSelectionMode => KeyModifierselectionMode != SelectionMode.New ? KeyModifierselectionMode : SelectMode;
+    public SelectionMode? ResultingSelectionMode => KeyModifierselectionMode != SelectionMode.New ? KeyModifierselectionMode : SelectMode;
 
     public override void ModifierKeyChanged(bool ctrlIsDown, bool shiftIsDown, bool altIsDown)
     {

+ 1 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/LineToolViewModel.cs

@@ -11,7 +11,7 @@ using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.L)]
-internal class LineToolViewModel : ShapeTool
+internal class LineToolViewModel : ShapeTool, ILineToolHandler
 {
     private string defaultActionDisplay = "LINE_TOOL_ACTION_DISPLAY_DEFAULT";
 

+ 2 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/MagicWandToolViewModel.cs

@@ -4,6 +4,7 @@ using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
@@ -12,7 +13,7 @@ using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.W)]
-internal class MagicWandToolViewModel : ToolViewModel
+internal class MagicWandToolViewModel : ToolViewModel, IMagicWandToolHandler
 {
     public override LocalizedString Tooltip => new LocalizedString("MAGIC_WAND_TOOL_TOOLTIP", Shortcut);
 

+ 3 - 5
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/MoveToolViewModel.cs

@@ -1,17 +1,15 @@
-using System.Windows.Input;
-using Avalonia.Input;
-using ChunkyImageLib.DataHolders;
+using Avalonia.Input;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
-using PixiEditor.Models.Localization;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.V)]
-internal class MoveToolViewModel : ToolViewModel
+internal class MoveToolViewModel : ToolViewModel, IMoveToolHandler
 {
     private string defaultActionDisplay = "MOVE_TOOL_ACTION_DISPLAY";
     public override string ToolNameLocalizationKey => "MOVE_TOOL";

+ 2 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/PenToolViewModel.cs

@@ -7,6 +7,7 @@ using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Events;
 using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;
@@ -17,7 +18,7 @@ using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools
 {
     [Command.Tool(Key = Key.B)]
-    internal class PenToolViewModel : ShapeTool
+    internal class PenToolViewModel : ShapeTool, IPenToolHandler
     {
         private int actualToolSize;
 

+ 2 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/ViewModels/Tools/Tools/SelectToolViewModel.cs

@@ -6,6 +6,7 @@ using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Containers.Tools;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
@@ -14,7 +15,7 @@ using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 [Command.Tool(Key = Key.M)]
-internal class SelectToolViewModel : ToolViewModel
+internal class SelectToolViewModel : ToolViewModel, ISelectToolHandler
 {
     private string defaultActionDisplay = "SELECT_TOOL_ACTION_DISPLAY_DEFAULT";
     public override string ToolNameLocalizationKey => "SELECT_TOOL_NAME";