Przeglądaj źródła

Made a full use of StorageBasedUndo in AddLayer

flabbet 4 lat temu
rodzic
commit
d956da2fbb

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

@@ -342,8 +342,7 @@ namespace PixiEditor.Models.DataHolders
                     storageChange.ToChange(
                     storageChange.ToChange(
                         RemoveLayerProcess,
                         RemoveLayerProcess,
                         new object[] { Layers[^1].LayerGuid },
                         new object[] { Layers[^1].LayerGuid },
-                        RestoreLayerProcess,
-                        new object[] { new Layer[] { Layers[^1] }, storageChange.StoredLayers },
+                        RestoreLayersProcess,
                         "Add layer"));
                         "Add layer"));
             }
             }
 
 
@@ -482,11 +481,6 @@ namespace PixiEditor.Models.DataHolders
             MoveLayerIndexBy(layerIndex, amount);
             MoveLayerIndexBy(layerIndex, amount);
         }
         }
 
 
-        private void RestoreLayerProcess(object[] parameters)
-        {
-            RestoreLayersProcess((Layer[])parameters[0], (UndoLayer[])parameters[1]);
-        }
-
         private void RestoreLayersProcess(Layer[] layers, UndoLayer[] layersData)
         private void RestoreLayersProcess(Layer[] layers, UndoLayer[] layersData)
         {
         {
             for (int i = 0; i < layers.Length; i++)
             for (int i = 0; i < layers.Length; i++)

+ 6 - 6
PixiEditor/Models/Undo/StorageBasedChange.cs

@@ -107,21 +107,21 @@ namespace PixiEditor.Models.Undo
             return new Change(finalUndoProcess, null, fianlRedoProcess, redoProcessParameters, description);
             return new Change(finalUndoProcess, null, fianlRedoProcess, redoProcessParameters, description);
         }
         }
 
 
-        public Change ToChange(Action<object[]> undoProcess, object[] undoProcessParameters, Action<object[]> redoProcess, object[] redoProcessParameters, string description = "")
+        public Change ToChange(Action<object[]> undoProcess, object[] undoProcessParameters, Action<Layer[], UndoLayer[]> redoProcess, string description = "")
         {
         {
             Action<object[]> finalUndoProcess = parameters =>
             Action<object[]> finalUndoProcess = parameters =>
             {
             {
-                Layer[] layers = LoadLayersFromDevice();
-                undoProcess(parameters.Concat(new object[] { layers, StoredLayers }).ToArray());
+                SaveLayersOnDevice();
+                undoProcess(parameters);
             };
             };
 
 
             Action<object[]> fianlRedoProcess = parameters =>
             Action<object[]> fianlRedoProcess = parameters =>
             {
             {
-                SaveLayersOnDevice();
-                redoProcess(parameters);
+                Layer[] layers = LoadLayersFromDevice();
+                redoProcess(layers, StoredLayers);
             };
             };
 
 
-            return new Change(finalUndoProcess, undoProcessParameters, fianlRedoProcess, redoProcessParameters, description);
+            return new Change(finalUndoProcess, undoProcessParameters, fianlRedoProcess, null, description);
         }
         }
 
 
         private void GenerateUndoLayers()
         private void GenerateUndoLayers()

+ 0 - 2
PixiEditorTests/ModelsTests/DataHoldersTests/DocumentTests.cs

@@ -1,11 +1,9 @@
 using System;
 using System;
-using System.IO;
 using System.Windows.Media;
 using System.Windows.Media;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Position;
 using PixiEditor.Models.Position;
-using PixiEditor.Models.Undo;
 using Xunit;
 using Xunit;
 
 
 namespace PixiEditorTests.ModelsTests.DataHoldersTests
 namespace PixiEditorTests.ModelsTests.DataHoldersTests