Browse Source

Multiple layers editing wip

flabbet 4 years ago
parent
commit
a7f28f32d3

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

@@ -200,7 +200,7 @@ namespace PixiEditor.Models.DataHolders
 
         private void MergeLayersProcess(object[] args)
         {
-            if (args.Length > 0 
+            if (args.Length > 0
                 && args[0] is int firstIndex
                 && args[1] is int secondIndex
                 && args[2] is bool nameOfSecond

+ 2 - 1
PixiEditor/Models/Tools/Tools/MoveTool.cs

@@ -121,7 +121,8 @@ namespace PixiEditor.Models.Tools.Tools
                 }
                 else
                 {
-                    affectedLayers = new[] { layer };
+                    affectedLayers = ViewModelMain.Current.BitmapManager.ActiveDocument
+                        .Layers.Where(x => x.IsActive && x.IsVisible).ToArray();
                 }
 
                 startSelection = currentSelection;

+ 1 - 1
PixiEditor/Styles/ComboBoxDarkStyle.xaml

@@ -2,7 +2,7 @@
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2">
 
-    <SolidColorBrush x:Key="ComboBox.Static.Background" Color="#333333" />
+    <SolidColorBrush x:Key="ComboBox.Static.Background" Color="#252525" />
     <SolidColorBrush x:Key="ComboBox.Static.Border" Color="#2F2F37" />
     <SolidColorBrush x:Key="ComboBox.Static.Glyph" Color="#FF606060" />
     <SolidColorBrush x:Key="ComboBox.Static.Editable.Background" Color="#333333" />

+ 1 - 1
PixiEditor/ViewModels/SubViewModels/Main/ClipboardViewModel.cs

@@ -56,7 +56,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
         private void Copy(object parameter)
         {
             ClipboardController.CopyToClipboard(
-                new[] { Owner.BitmapManager.ActiveDocument.ActiveLayer },
+                Owner.BitmapManager.ActiveDocument.Layers.Where(x => x.IsActive && x.IsVisible).ToArray(),
                 Owner.BitmapManager.ActiveDocument.ActiveSelection.SelectedPoints.ToArray(),
                 Owner.BitmapManager.ActiveDocument.Width,
                 Owner.BitmapManager.ActiveDocument.Height);

+ 1 - 1
PixiEditor/ViewModels/SubViewModels/Main/DocumentViewModel.cs

@@ -53,7 +53,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
         private void DeletePixels(object parameter)
         {
             Owner.BitmapManager.BitmapOperations.DeletePixels(
-                new[] { Owner.BitmapManager.ActiveLayer },
+                Owner.BitmapManager.ActiveDocument.Layers.Where(x => x.IsActive && x.IsVisible).ToArray(),
                 Owner.BitmapManager.ActiveDocument.ActiveSelection.SelectedPoints.ToArray());
         }
 

+ 11 - 1
PixiEditor/ViewModels/SubViewModels/Main/LayersViewModel.cs

@@ -1,4 +1,6 @@
 using PixiEditor.Helpers;
+using PixiEditor.Models.Layers;
+using System.Windows.Input;
 
 namespace PixiEditor.ViewModels.SubViewModels.Main
 {
@@ -45,7 +47,15 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
 
         public void SetActiveLayer(object parameter)
         {
-            Owner.BitmapManager.ActiveDocument.SetActiveLayer((int)parameter);
+            if (Keyboard.IsKeyDown(Key.LeftShift))
+            {
+                Layer layer = Owner.BitmapManager.ActiveDocument.Layers[(int)parameter];
+                layer.IsActive = !layer.IsActive;
+            }
+            else
+            {
+                Owner.BitmapManager.ActiveDocument.SetActiveLayer((int)parameter);
+            }
         }
 
         public void DeleteLayer(object parameter)

+ 1 - 1
PixiEditor/ViewModels/SubViewModels/Main/ToolsViewModel.cs

@@ -42,7 +42,7 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
                 new CircleTool(), new RectangleTool(), new EraserTool(), new ColorPickerTool(), new BrightnessTool(),
                 new ZoomTool()
             };
-            SetActiveTool(typeof(MoveTool));
+            SetActiveTool(typeof(MoveViewportTool));
         }
 
         public void SetActiveTool<T>()