Sfoglia il codice sorgente

Plus/Minus shortcuts

Equbuxu 4 anni fa
parent
commit
83f2dfb8b8

+ 1 - 0
PixiEditor/Models/DataHolders/Document/Document.cs

@@ -95,6 +95,7 @@ namespace PixiEditor.Models.DataHolders
         }
 
         public ExecutionTrigger<EventArgs> CenterViewportTrigger { get; } = new();
+        public ExecutionTrigger<double> ZoomViewportTrigger { get; } = new();
 
         public UndoManager UndoManager { get; set; }
 

+ 1 - 0
PixiEditor/ViewModels/SubViewModels/Main/ViewportViewModel.cs

@@ -35,6 +35,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
         private void ZoomViewport(object parameter)
         {
             double zoom = (int)parameter;
+            Owner.BitmapManager.ActiveDocument.ZoomViewportTrigger.Execute(this, zoom);
         }
     }
 }

+ 2 - 2
PixiEditor/ViewModels/ViewModelMain.cs

@@ -173,8 +173,8 @@ namespace PixiEditor.ViewModels
                         CreateToolShortcut<SelectTool>(Key.M, "Select Select Tool"),
                         CreateToolShortcut<ZoomTool>(Key.Z, "Select Zoom Tool"),
                         CreateToolShortcut<MoveViewportTool>(Key.H, "Select Viewport Move Tool"),
-                        new Shortcut(Key.OemPlus, ViewportSubViewModel.ZoomCommand, "Zoom in", 115),
-                        new Shortcut(Key.OemMinus, ViewportSubViewModel.ZoomCommand, "Zoom out", 85),
+                        new Shortcut(Key.OemPlus, ViewportSubViewModel.ZoomCommand, "Zoom in", 1),
+                        new Shortcut(Key.OemMinus, ViewportSubViewModel.ZoomCommand, "Zoom out", -1),
                         new Shortcut(Key.OemOpenBrackets, ToolsSubViewModel.ChangeToolSizeCommand, "Decrease Tool Size", -1),
                         new Shortcut(Key.OemCloseBrackets, ToolsSubViewModel.ChangeToolSizeCommand, "Increase Tool Size", 1)),
                     new ShortcutGroup(

+ 1 - 0
PixiEditor/Views/MainWindow.xaml

@@ -231,6 +231,7 @@
                                 <DataTemplate DataType="{x:Type dataHolders:Document}">
                                     <usercontrols:DrawingViewPort
                                         CenterViewportTrigger="{Binding CenterViewportTrigger}"
+                                        ZoomViewportTrigger="{Binding ZoomViewportTrigger}"
                                         GridLinesVisible="{Binding XamlAccesibleViewModel.ViewportSubViewModel.GridLinesEnabled}"
                                         Cursor="{Binding XamlAccesibleViewModel.ToolsSubViewModel.ToolCursor}"
                                         MiddleMouseClickedCommand="{Binding XamlAccesibleViewModel.ToolsSubViewModel.SelectToolCommand}"

+ 22 - 2
PixiEditor/Views/UserControls/DrawingViewPort.xaml.cs

@@ -40,6 +40,10 @@ namespace PixiEditor.Views.UserControls
             DependencyProperty.Register(nameof(CenterViewportTrigger), typeof(ExecutionTrigger<EventArgs>), typeof(DrawingViewPort),
                 new PropertyMetadata(default(ExecutionTrigger<EventArgs>), CenterViewportTriggerChanged));
 
+        public static readonly DependencyProperty ZoomViewportTriggerProperty =
+            DependencyProperty.Register(nameof(ZoomViewportTrigger), typeof(ExecutionTrigger<double>), typeof(DrawingViewPort),
+                new PropertyMetadata(default(ExecutionTrigger<double>), ZoomViewportTriggerChanged));
+
         public ICommand MiddleMouseClickedCommand
         {
             get => (ICommand)GetValue(MiddleMouseClickedCommandProperty);
@@ -94,6 +98,12 @@ namespace PixiEditor.Views.UserControls
             set => SetValue(CenterViewportTriggerProperty, value);
         }
 
+        public ExecutionTrigger<double> ZoomViewportTrigger
+        {
+            get => (ExecutionTrigger<double>)GetValue(ZoomViewportTriggerProperty);
+            set => SetValue(ZoomViewportTriggerProperty, value);
+        }
+
         public RelayCommand PreviewMouseDownCommand { get; private set; }
         private static void ToolChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
         {
@@ -110,12 +120,18 @@ namespace PixiEditor.Views.UserControls
         {
             var viewport = (DrawingViewPort)sender;
             if (args.OldValue != null)
-            {
                 ((ExecutionTrigger<EventArgs>)args.OldValue).Triggered -= viewport.CenterZoomboxContent;
-            }
             ((ExecutionTrigger<EventArgs>)args.NewValue).Triggered += viewport.CenterZoomboxContent;
         }
 
+        private static void ZoomViewportTriggerChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
+        {
+            var viewport = (DrawingViewPort)sender;
+            if (args.OldValue != null)
+                ((ExecutionTrigger<double>)args.OldValue).Triggered -= viewport.ZoomZoomboxContent;
+            ((ExecutionTrigger<double>)args.NewValue).Triggered += viewport.ZoomZoomboxContent;
+        }
+
         private bool loaded = false;
 
         public DrawingViewPort()
@@ -128,6 +144,10 @@ namespace PixiEditor.Views.UserControls
         {
             zoombox.CenterContent();
         }
+        private void ZoomZoomboxContent(object sender, double args)
+        {
+            zoombox.ZoomIntoCenter(args);
+        }
 
         private void ProcessMouseDown(object parameter)
         {