johann преди 5 години
родител
ревизия
643387dbbe
променени са 4 файла, в които са добавени 30 реда и са изтрити 4 реда
  1. 17 4
      lazpaint/image/uimageaction.pas
  2. 3 0
      scripts/lazpaint/image.py
  3. 3 0
      scripts/lazpaint/layer.py
  4. 7 0
      scripts/lazpaint/selection.py

+ 17 - 4
lazpaint/image/uimageaction.pas

@@ -25,6 +25,7 @@ type
     function ScriptLayerFromFile(AVars: TVariableSet): TScriptResult;
     function ScriptLayerSelectId(AVars: TVariableSet): TScriptResult;
     function ScriptLayerAddNew(AVars: TVariableSet): TScriptResult;
+    function ScriptPasteAsNewLayer(AVars: TVariableSet): TScriptResult;
     function ScriptLayerDuplicate(AVars: TVariableSet): TScriptResult;
     function ScriptPutImage(AVars: TVariableSet): TScriptResult;
     function ScriptLayerFill(AVars: TVariableSet): TScriptResult;
@@ -63,7 +64,7 @@ type
     procedure DeleteSelection;
     procedure RemoveSelection;
     procedure Paste;
-    procedure PasteAsNewLayer;
+    function PasteAsNewLayer: integer;
     procedure SelectAll;
     procedure SelectionFit;
     function NewLayer: boolean; overload;
@@ -147,7 +148,7 @@ begin
   Scripting.RegisterScriptFunction('EditCut',@GenericScriptFunction,ARegister);
   Scripting.RegisterScriptFunction('EditDeleteSelection',@GenericScriptFunction,ARegister);
   Scripting.RegisterScriptFunction('EditPaste',@GenericScriptFunction,ARegister);
-  Scripting.RegisterScriptFunction('EditPasteAsNewLayer',@GenericScriptFunction,ARegister);
+  Scripting.RegisterScriptFunction('EditPasteAsNewLayer',@ScriptPasteAsNewLayer,ARegister);
   Scripting.RegisterScriptFunction('EditSelectAll',@GenericScriptFunction,ARegister);
   Scripting.RegisterScriptFunction('EditSelectionFit',@GenericScriptFunction,ARegister);
   Scripting.RegisterScriptFunction('IsSelectionMaskEmpty',@GenericScriptFunction,ARegister);
@@ -226,7 +227,6 @@ begin
   if f = 'EditCut' then CutSelection else
   if f = 'EditDeleteSelection' then DeleteSelection else
   if f = 'EditPaste' then Paste else
-  if f = 'EditPasteAsNewLayer' then PasteAsNewLayer else
   if f = 'EditSelectAll' then SelectAll else
   if f = 'EditSelectionFit' then SelectionFit else
   if f = 'IsSelectionMaskEmpty' then AVars.Booleans['Result'] := Image.SelectionMaskEmpty else
@@ -295,6 +295,17 @@ begin
   end;
 end;
 
+function TImageActions.ScriptPasteAsNewLayer(AVars: TVariableSet
+  ): TScriptResult;
+var
+  id: Integer;
+begin
+  id := PasteAsNewLayer;
+  if id >= 0 then AVars.Integers['Result'] := id
+  else AVars.Remove('Result');
+  result := srOk;
+end;
+
 function TImageActions.ScriptLayerDuplicate(AVars: TVariableSet): TScriptResult;
 begin
   if not DuplicateLayer then result := srException else
@@ -1235,9 +1246,10 @@ begin
   end;
 end;
 
-procedure TImageActions.PasteAsNewLayer;
+function TImageActions.PasteAsNewLayer: integer;
 var partial: TBGRABitmap;
 begin
+  result := -1;
   try
     partial := GetBitmapFromClipboard;
     if partial<>nil then
@@ -1246,6 +1258,7 @@ begin
       begin
         AddLayerFromBitmap(partial,'');
         ChooseTool(ptMoveLayer);
+        result := Image.LayerId[Image.CurrentLayerIndex];
       end
       else
         partial.Free;

+ 3 - 0
scripts/lazpaint/image.py

@@ -28,6 +28,9 @@ ANCHOR_BOTTOM_RIGHT = 'BottomRight'
 def new(width, height, color=colors.TRANSPARENT, ignore_modified=False):
   command.send("FileNew", Width=width, Height=height, BackColor=color, IgnoreModified=ignore_modified)
 
+def paste_as_new():
+  command.send("EditPasteAsNew")
+
 def get_width():
   return command.send("GetImageWidth?")
 

+ 3 - 0
scripts/lazpaint/layer.py

@@ -73,6 +73,9 @@ def set_visible(visible):
 def new():
   return command.send("LayerAddNew?")
 
+def paste_as_new():
+  return command.send("EditPasteAsNewLayer?")
+
 def add_from_file(file_name):
   return command.send("LayerFromFile?", FileName=file_name)
 

+ 7 - 0
scripts/lazpaint/selection.py

@@ -33,3 +33,10 @@ def fit():
 def is_mask_empty():
   return command.send("IsSelectionMaskEmpty?")
 
+def is_layer_empty():
+  return command.send("IsSelectionLayerEmpty?")
+
+def paste():
+  command.send("EditPaste")
+
+