Browse Source

layer names

flabbet 1 year ago
parent
commit
8e6a161d75

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changes/Vectors/SetShapeGeometry_UpdateableChange.cs

@@ -77,7 +77,7 @@ internal class SetShapeGeometry_UpdateableChange : UpdateableChange
         var node = target.FindNode<VectorLayerNode>(TargetId);
         node.ShapeData = originalData;
 
-        AffectedArea affected = default;
+        AffectedArea affected = new AffectedArea();
         
         if (node.ShapeData != null)
         {

+ 4 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -753,5 +753,8 @@
   "SYNC_WITH_PRIMARY_COLOR_LABEL": "Sync with primary color",
   "RASTERIZE": "Rasterize",
   "RASTERIZE_ACTIVE_LAYER": "Rasterize active layer",
-  "RASTERIZE_ACTIVE_LAYER_DESCRIPTIVE": "Convert/Rasterize the active layer into a image (raster) layer."
+  "RASTERIZE_ACTIVE_LAYER_DESCRIPTIVE": "Convert/Rasterize the active layer into a image (raster) layer.",
+  "NEW_ELLIPSE_LAYER_NAME": "Ellipse",
+  "NEW_RECTANGLE_LAYER_NAME": "Rectangle",
+  "NEW_LINE_LAYER_NAME": "Line"
 }

+ 2 - 1
src/PixiEditor/Models/DocumentModels/DocumentStructureHelper.cs

@@ -104,7 +104,8 @@ internal class DocumentStructureHelper
         var selectedMember = doc.SelectedStructureMember;
         
         //put member above the layer
-        INodeHandler parent = doc.StructureHelper.GetFirstForwardNode(selectedMember);
+        INodeHandler parent = selectedMember != null ? doc.StructureHelper.GetFirstForwardNode(selectedMember)
+                : doc.NodeGraphHandler.OutputNode;
         if (parent is null)
             parent = doc.NodeGraphHandler.OutputNode;
 

+ 2 - 0
src/PixiEditor/Models/Handlers/IToolHandler.cs

@@ -54,6 +54,8 @@ internal interface IToolHandler : IHandler
     /// </summary>
     public Type LayerTypeToCreateOnEmptyUse { get; }
 
+    public virtual string? DefaultNewLayerName => null;
+
     public void ModifierKeyChanged(bool ctrlIsDown, bool shiftIsDown, bool altIsDown);
     public void UseTool(VecD pos);
     public void OnSelected();

+ 2 - 1
src/PixiEditor/ViewModels/SubViewModels/ToolsViewModel.cs

@@ -373,7 +373,8 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
 
         if (ActiveTool is not { CanBeUsedOnActiveLayer: true })
         {
-            Guid? createdLayer = Owner.LayersSubViewModel.NewLayer(ActiveTool.LayerTypeToCreateOnEmptyUse);
+            Guid? createdLayer = Owner.LayersSubViewModel.NewLayer(ActiveTool.LayerTypeToCreateOnEmptyUse, 
+                ActiveTool.DefaultNewLayerName);
             if (createdLayer is not null)
             {
                 Owner.DocumentManagerSubViewModel.ActiveDocument.Operations.SetSelectedMember(createdLayer.Value);

+ 2 - 0
src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs

@@ -29,6 +29,8 @@ internal class VectorEllipseToolViewModel : ShapeTool, IVectorEllipseToolHandler
 
     public override Type LayerTypeToCreateOnEmptyUse { get; } = typeof(VectorLayerNode);
 
+    public string? DefaultNewLayerName { get; } = new LocalizedString("NEW_ELLIPSE_LAYER_NAME"); 
+
     public override void UseTool(VecD pos)
     {
         ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.Tools.UseVectorEllipseTool();

+ 1 - 0
src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs

@@ -28,6 +28,7 @@ internal class VectorLineToolViewModel : ShapeTool, IVectorLineToolHandler
 
     public override string Icon => PixiPerfectIcons.Line;
     public override Type[]? SupportedLayerTypes { get; } = [];
+    public string? DefaultNewLayerName { get; } = new LocalizedString("NEW_LINE_LAYER_NAME"); 
 
     [Settings.Inherited]
     public int ToolSize => GetValue<int>();

+ 1 - 0
src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs

@@ -27,6 +27,7 @@ internal class VectorRectangleToolViewModel : ShapeTool, IVectorRectangleToolHan
     public override string Icon => PixiPerfectIcons.Square;
 
     public override Type LayerTypeToCreateOnEmptyUse { get; } = typeof(VectorLayerNode);
+    public string? DefaultNewLayerName { get; } = new LocalizedString("NEW_RECTANGLE_LAYER_NAME");
 
     public override void ModifierKeyChanged(bool ctrlIsDown, bool shiftIsDown, bool altIsDown)
     {