Browse Source

Added Stylus Eraser Support

CPKreuz 4 years ago
parent
commit
2927324fbe

+ 45 - 0
PixiEditor/ViewModels/SubViewModels/Main/StylusViewModel.cs

@@ -0,0 +1,45 @@
+using System.Windows;
+using System.Windows.Input;
+using PixiEditor.Models.Tools;
+using PixiEditor.Models.Tools.Tools;
+
+namespace PixiEditor.ViewModels.SubViewModels.Main
+{
+    public class StylusViewModel : SubViewModel<ViewModelMain>
+    {
+        public bool ToolSetByStylus { get; set; }
+
+        private Tool PreviousTool { get; set; }
+
+        public StylusViewModel(ViewModelMain owner)
+            : base(owner)
+        {
+            Window mw = Application.Current.MainWindow;
+
+            mw.PreviewStylusButtonDown += Mw_StylusButtonDown;
+            mw.PreviewStylusButtonUp += Mw_StylusButtonUp;
+        }
+
+        private void Mw_StylusButtonDown(object sender, StylusButtonEventArgs e)
+        {
+            e.Handled = true;
+
+            if (e.StylusButton.Guid == StylusPointProperties.TipButton.Id && e.Inverted)
+            {
+                PreviousTool = Owner.BitmapManager.SelectedTool;
+                Owner.ToolsSubViewModel.SetActiveTool<EraserTool>();
+                ToolSetByStylus = true;
+            }
+        }
+
+        private void Mw_StylusButtonUp(object sender, StylusButtonEventArgs e)
+        {
+            e.Handled = true;
+
+            if (ToolSetByStylus && e.StylusButton.Guid == StylusPointProperties.TipButton.Id && e.Inverted)
+            {
+                Owner.ToolsSubViewModel.SetActiveTool(PreviousTool);
+            }
+        }
+    }
+}

+ 5 - 0
PixiEditor/ViewModels/SubViewModels/Main/ToolsViewModel.cs

@@ -63,6 +63,11 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
             LastActionTool = Owner.BitmapManager.SelectedTool;
             LastActionTool = Owner.BitmapManager.SelectedTool;
             Owner.BitmapManager.SetActiveTool(tool);
             Owner.BitmapManager.SetActiveTool(tool);
             SetToolCursor(tool.GetType());
             SetToolCursor(tool.GetType());
+
+            if (Owner.StylusSubViewModel != null)
+            {
+                Owner.StylusSubViewModel.ToolSetByStylus = false;
+            }
         }
         }
 
 
         public void SetTool(object parameter)
         public void SetTool(object parameter)

+ 3 - 0
PixiEditor/ViewModels/ViewModelMain.cs

@@ -68,6 +68,8 @@ namespace PixiEditor.ViewModels
 
 
         public ShortcutController ShortcutController { get; set; }
         public ShortcutController ShortcutController { get; set; }
 
 
+        public StylusViewModel StylusSubViewModel { get; set; }
+
         public IPreferences Preferences { get; set; }
         public IPreferences Preferences { get; set; }
 
 
         public bool IsDebug
         public bool IsDebug
@@ -110,6 +112,7 @@ namespace PixiEditor.ViewModels
             DocumentSubViewModel = new DocumentViewModel(this);
             DocumentSubViewModel = new DocumentViewModel(this);
             DiscordViewModel = new DiscordViewModel(this, "764168193685979138");
             DiscordViewModel = new DiscordViewModel(this, "764168193685979138");
             UpdateSubViewModel = new UpdateViewModel(this);
             UpdateSubViewModel = new UpdateViewModel(this);
+            StylusSubViewModel = new StylusViewModel(this);
 
 
             AddDebugOnlyViewModels();
             AddDebugOnlyViewModels();
             AddReleaseOnlyViewModels();
             AddReleaseOnlyViewModels();