@@ -58,6 +58,7 @@ def __init__(self, parent: Any = None):
5858 "posterize" ,
5959 "rasterize" ,
6060 "unlink" ,
61+ "convertToSmartObject" ,
6162 )
6263
6364 @property
@@ -149,30 +150,17 @@ def kind(self):
149150 LayerKind: The kind of this layer.
150151 """
151152 try :
152- js_code = f"""
153- function getLayerKindByIndex(index) {{
154- var ref = new ActionReference();
155- ref.putIndex(charIDToTypeID('Lyr '), index);
156- var desc = executeActionGet(ref);
157-
158- if (desc.hasKey(stringIDToTypeID('artboard'))) {{
159- return 25; // ArtboardLayer
160- }}
161-
162- if (desc.hasKey(stringIDToTypeID('textKey'))) {{
163- return 2; // TextLayer
164- }}
165-
166- return 1; // NormalLayer
167- }}
168- getLayerKindByIndex({ self .itemIndex } );
153+ js = """
154+ var ref = new ActionReference();
155+ ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
156+ var desc = executeActionGet(ref);
157+ var layerType = desc.getInteger(stringIDToTypeID("layerKind"));
158+ layerType;
169159 """
170- result = self .eval_javascript (js_code )
171- print (f"Layer kind result for { self .name } : { result } " )
172- return LayerKind (int (result ))
160+ return int (self .eval_javascript (js ))
173161 except Exception as e :
174- print (f"Error getting layer kind for { self . name } : { str (e )} " )
175- return LayerKind . NormalLayer
162+ print (f"Error getting layer kind: { str (e )} " )
163+ return None
176164
177165 @kind .setter
178166 def kind (self , layer_type ):
@@ -552,4 +540,30 @@ def invert(self):
552540 self .app .invert ()
553541
554542 def duplicate (self , relativeObject = None , insertionLocation = None ):
555- return ArtLayer (self .app .duplicate (relativeObject , insertionLocation ))
543+ """Duplicates the layer.
544+
545+ Args:
546+ relativeObject: Layer or LayerSet.
547+ insertionLocation: The location to insert the layer.
548+
549+ Returns:
550+ ArtLayer: The duplicated layer.
551+
552+ """
553+ dup = self .app .duplicate (relativeObject , insertionLocation )
554+ return ArtLayer (dup )
555+
556+ def convertToSmartObject (self ):
557+ """Converts the layer to a smart object.
558+
559+ Returns:
560+ ArtLayer: The converted smart object layer.
561+
562+ """
563+ # Convert layer to smart object using JavaScript
564+ js = """
565+ var idnewPlacedLayer = stringIDToTypeID("newPlacedLayer");
566+ executeAction(idnewPlacedLayer, undefined, DialogModes.NO);
567+ """
568+ self .eval_javascript (js )
569+ return self
0 commit comments