Browse Source

Added duplicate layer command

CPKreuz 4 years ago
parent
commit
d152058ad4

+ 14 - 0
PixiEditor/ViewModels/SubViewModels/Main/LayersViewModel.cs

@@ -15,6 +15,8 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
 
         public RelayCommand DeleteLayersCommand { get; set; }
 
+        public RelayCommand DuplicateLayerCommand { get; set; }
+
         public RelayCommand RenameLayerCommand { get; set; }
 
         public RelayCommand MoveToBackCommand { get; set; }
@@ -33,6 +35,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
             SetActiveLayerCommand = new RelayCommand(SetActiveLayer);
             NewLayerCommand = new RelayCommand(NewLayer, CanCreateNewLayer);
             DeleteLayersCommand = new RelayCommand(DeleteLayer, CanDeleteLayer);
+            DuplicateLayerCommand = new RelayCommand(DuplicateLayer, CanDuplicateLayer);
             MoveToBackCommand = new RelayCommand(MoveLayerToBack, CanMoveToBack);
             MoveToFrontCommand = new RelayCommand(MoveLayerToFront, CanMoveToFront);
             RenameLayerCommand = new RelayCommand(RenameLayer);
@@ -98,6 +101,17 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
             return Owner.BitmapManager.ActiveDocument != null && Owner.BitmapManager.ActiveDocument.Layers.Count > 1;
         }
 
+        public void DuplicateLayer(object parameter)
+        {
+            Owner.BitmapManager.ActiveDocument.Layers.Insert((int)parameter, Owner.BitmapManager.ActiveDocument.Layers[(int)parameter].Clone(true));
+            Owner.BitmapManager.ActiveDocument.SetActiveLayer((int)parameter);
+        }
+
+        public bool CanDuplicateLayer(object property)
+        {
+            return Owner.BitmapManager.ActiveDocument != null;
+        }
+
         public void RenameLayer(object parameter)
         {
             int? index = (int?)parameter;

+ 5 - 0
PixiEditor/Views/MainWindow.xaml

@@ -354,6 +354,11 @@
                                                                                     RelativeSource={RelativeSource AncestorType=ContextMenu}}"
 
                                                                                   CommandParameter="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
+                                Path=(ItemsControl.AlternationIndex)}" />
+                                                                        <MenuItem Header="Duplicate"
+                                                                                  Command="{Binding PlacementTarget.Tag.LayersSubViewModel.DuplicateLayerCommand,
+                                                                                    RelativeSource={RelativeSource AncestorType=ContextMenu}}"
+                                                                                  CommandParameter="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
                                 Path=(ItemsControl.AlternationIndex)}" />
                                                                         <MenuItem Header="Rename"
                                                                                   Command="{Binding PlacementTarget.Tag.LayersSubViewModel.RenameLayerCommand,