libreflow.extensions.sk.export-psd-layers 1.0.0__tar.gz → 1.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/CHANGELOG.md +6 -0
  2. {libreflow_extensions_sk_export_psd_layers-1.0.0/src/libreflow.extensions.sk.export_psd_layers.egg-info → libreflow_extensions_sk_export_psd_layers-1.0.1}/PKG-INFO +7 -1
  3. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/setup.py +2 -1
  4. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/extensions/sk/export_psd_layers/_version.py +3 -3
  5. libreflow_extensions_sk_export_psd_layers-1.0.1/src/libreflow/extensions/sk/export_psd_layers/scripts/LFS_PSD_export_to_PNG.jsx +212 -0
  6. libreflow_extensions_sk_export_psd_layers-1.0.1/src/libreflow/extensions/sk/export_psd_layers/scripts/__init__.py +0 -0
  7. libreflow_extensions_sk_export_psd_layers-1.0.1/src/libreflow/extensions/sk/export_psd_layers/scripts/json.jsx +1399 -0
  8. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1/src/libreflow.extensions.sk.export_psd_layers.egg-info}/PKG-INFO +7 -1
  9. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow.extensions.sk.export_psd_layers.egg-info/SOURCES.txt +4 -1
  10. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/MANIFEST.in +0 -0
  11. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/README.md +0 -0
  12. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/setup.cfg +0 -0
  13. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/__init__.py +0 -0
  14. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/extensions/__init__.py +0 -0
  15. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/extensions/sk/__init__.py +0 -0
  16. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow/extensions/sk/export_psd_layers/__init__.py +0 -0
  17. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow.extensions.sk.export_psd_layers.egg-info/dependency_links.txt +0 -0
  18. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/src/libreflow.extensions.sk.export_psd_layers.egg-info/top_level.txt +0 -0
  19. {libreflow_extensions_sk_export_psd_layers-1.0.0 → libreflow_extensions_sk_export_psd_layers-1.0.1}/versioneer.py +0 -0
@@ -19,6 +19,12 @@ Types of changes
19
19
 
20
20
  ## [Unreleased]
21
21
 
22
+ ## [1.0.1] - 2025-04-04
23
+
24
+ ### Fixed
25
+
26
+ * including .jsx files in setup.py
27
+
22
28
  ## [1.0.0] - 2025-03-27
23
29
 
24
30
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: libreflow.extensions.sk.export_psd_layers
3
- Version: 1.0.0
3
+ Version: 1.0.1
4
4
  Home-page: https://gitlab.com/lfs.coop/libreflow/libreflow_launcher
5
5
  Author: Thomas Thiebaut
6
6
  Author-email: autor@les-fees-speciales.coop
@@ -48,6 +48,12 @@ Types of changes
48
48
 
49
49
  ## [Unreleased]
50
50
 
51
+ ## [1.0.1] - 2025-04-04
52
+
53
+ ### Fixed
54
+
55
+ * including .jsx files in setup.py
56
+
51
57
  ## [1.0.0] - 2025-03-27
52
58
 
53
59
  ### Added
@@ -39,7 +39,8 @@ setuptools.setup(
39
39
  package_data={
40
40
  '': [
41
41
  "*.css",
42
- '*.png'
42
+ '*.png',
43
+ '*.jsx'
43
44
  ],
44
45
  },
45
46
 
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-03-27T12:06:44+0100",
11
+ "date": "2025-04-04T15:24:34+0200",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "14117b39d39bffa801addc037065b58ad52037c8",
15
- "version": "1.0.0"
14
+ "full-revisionid": "546efb457d10e00353213d9fe7120df41ce6af6f",
15
+ "version": "1.0.1"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -0,0 +1,212 @@
1
+ // Including JSON object for JSON file creation
2
+ #include "json.jsx";
3
+ // --------------------------------------
4
+ // Main function who export layers to PNG
5
+ // --------------------------------------
6
+ function _LFS_exportPSDLayersToPNG()
7
+ {
8
+ var theDoc = app.activeDocument; // Get the active document name
9
+ var folderName = theDoc.name.replace(/\..+$/, '') // Remove the *.psd extension from the active document name
10
+
11
+ $.writeln(folderName)
12
+
13
+ var pathToTheFile = app.activeDocument.path+'/'+folderName;
14
+ pathToTheFile = pathToTheFile.replace("_psb","_render")
15
+ $.writeln(pathToTheFile)
16
+
17
+ //~
18
+ var layersPrefix = folderName+"-"; // Add a dash after the name of the document
19
+
20
+ var data = {
21
+ from : theDoc.name,
22
+ layers : [],
23
+ hidden_layers : [],
24
+ };
25
+
26
+ var allLayersList = createLayersTree(theDoc, data); // Collect all layers name
27
+ var layerCount = allLayersList.length; // Number of Layer in PSD file
28
+ var windowsContent = ""; // Placeholder for the UI content
29
+
30
+ windowsContent = "window{text:'Exporting each layer to PNG images',bounds:[100,100,800,160],"
31
+ windowsContent += "bar:Progressbar{bounds:[20,10,680,50] , value:0,maxvalue:100}";
32
+ windowsContent += "};" // Filling the UI;
33
+
34
+ hideAllLayers(allLayersList);
35
+
36
+ var win = new Window(windowsContent); // Creation of the main window with a simple progress bar
37
+
38
+ win.center();
39
+ win.show();
40
+
41
+ for (var i = 0; i < layerCount; i++)
42
+ {
43
+ allLayersList[i].visible = 1; // Show one layer
44
+ savePNGImage(layersPrefix+allLayersList[i].name,pathToTheFile); // Save it PNG
45
+ win.bar.value = (i+1)*(100/layerCount); // Update the progress bar
46
+ win.text = 'Exporting layer "'+allLayersList[i].name+'" to PNG image ('+(i+1)+'/'+layerCount+'). In progress ... please wait.'; // Update title of the window
47
+ app.refresh(); // Force the refresh of photoshop interface
48
+ allLayersList[i].visible = 0; // hide on layer
49
+ }
50
+
51
+ createJSONFile(data, pathToTheFile);
52
+
53
+ showAllLayers();
54
+ win.close();
55
+ theDoc.save()
56
+ executeAction(app.charIDToTypeID('quit'), undefined, DialogModes.NO);
57
+ }
58
+
59
+
60
+ // ---------------------------------
61
+ // Get render path
62
+ // ---------------------------------
63
+
64
+
65
+
66
+ // ---------------------------------
67
+ // List all 'ArtLayers' in the stack
68
+ // ---------------------------------
69
+ function createLayersTree(document, data)
70
+ {
71
+ var list = []; //Create an array to store each object
72
+
73
+ for (var i = 0; i < document.layers.length; i++)
74
+ {
75
+ if (document.layers[i].typename == 'ArtLayer' || 'LayerSet') //Filter to only list layers of "ArtLayer" or "LayerSet" type;
76
+ {
77
+ list.push (document.layers[i]); // Fill the list
78
+ data["layers"].push(document.layers[i].name)
79
+ if (document.layers[i].visible == false)
80
+ {
81
+ data["hidden_layers"].push(document.layers[i].name)
82
+ }
83
+ }
84
+ //~ else if (obj[i].typename == 'LayerSet')
85
+ //~ {
86
+ //~ $.writeln(list)
87
+ //~ loopLayers(obj[i].layers,list);
88
+ //~ $.writeln(list)
89
+ //~ }
90
+ }
91
+ return list; // Return the array
92
+ }
93
+
94
+
95
+ // ---------------------------------------------------------------------------------
96
+ // Switch visibility of all layers to "On" using "actions" (to speed up the process)
97
+ // ---------------------------------------------------------------------------------
98
+ function showAllLayers()
99
+ {
100
+ var doc = activeDocument;
101
+
102
+ var ref = new ActionReference();
103
+ ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
104
+ var desc = new ActionDescriptor();
105
+ desc.putReference(cTID('null'), ref);
106
+ executeAction(sTID('selectAllLayers'), desc, DialogModes.NO);
107
+
108
+ var ref = new ActionReference();
109
+ ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
110
+ var list = new ActionList();
111
+ list.putReference(ref);
112
+ var desc = new ActionDescriptor();
113
+ desc.putList(cTID('null'), list);
114
+ executeAction(cTID('Shw '), desc, DialogModes.NO);
115
+
116
+ var background = doc.layers[doc.layers.length -1];
117
+ if (background.isBackgroundLayer)
118
+ {
119
+ background.visible = true;
120
+ }
121
+ }
122
+
123
+
124
+ // ---------------------------------------------------------------------------------
125
+ // Switch visibility of all layers to "Off" using "actions" (to speed up the process)
126
+ // ---------------------------------------------------------------------------------
127
+ function hideAllLayers(layers) {
128
+ //~ var doc = app.activeDocument;
129
+ //~
130
+ //~ var ref = new ActionReference();
131
+ //~ ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
132
+ //~ var desc = new ActionDescriptor();
133
+ //~ desc.putReference(cTID('null'), ref);
134
+ //~ executeAction(sTID('selectAllLayers'), desc, DialogModes.NO);
135
+ //~
136
+ //~ var ref = new ActionReference();
137
+ //~ ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
138
+ //~ var list = new ActionList();
139
+ //~ list.putReference(ref);
140
+ //~ var desc = new ActionDescriptor();
141
+ //~ desc.putList(cTID('null'), list);
142
+ //~ executeAction(cTID('Hd '), desc, DialogModes.NO);
143
+
144
+
145
+ var layerCount = layers.length;
146
+ for (var i = 0; i < layerCount; i++)
147
+ {
148
+ layers[i].visible = 0;
149
+ }
150
+
151
+
152
+ var background = layers[layers.length -1];
153
+ if (background.isBackgroundLayer) {
154
+ background.visible = false;
155
+ }
156
+ }
157
+
158
+ // ------------------------------------
159
+ // Save the document to a new PNG image
160
+ // ------------------------------------
161
+ function savePNGImage(nameOfFile,pathToTheFile)
162
+ {
163
+ var folderToCreate = Folder(pathToTheFile); // Define the path to the new folder
164
+ var theFullAbsolutePath = pathToTheFile+"/"+nameOfFile+".png"; // Define the full path to the new PNG file
165
+ var opts; // Prepare export options
166
+
167
+ if(!folderToCreate.exists)
168
+ {
169
+ folderToCreate.create(); // Create the folder if not existing
170
+ }
171
+
172
+ opts = new ExportOptionsSaveForWeb();
173
+ opts.format = SaveDocumentType.PNG; // Define type "PNG"
174
+ opts.PNG8 = false; // Because we want a "PNG24" (in fact "PNG32" because we want to keep the Alpha channel)
175
+ opts.transparency = true; // True by default but ... just to be sure
176
+
177
+ pngFile = new File(theFullAbsolutePath); // Define a new file object
178
+ app.activeDocument.exportDocument(pngFile, ExportType.SAVEFORWEB, opts); // Now, it's time to export the PNG for good
179
+ }
180
+
181
+ //------------------------------------------------------
182
+ // Write layer order in .txt file
183
+ //-------------------------------------------------------
184
+
185
+ function createJSONFile(object, path){
186
+
187
+ //define file
188
+ var jsonFile = new File(path+"/layers.json")
189
+ //jsonFile.close();
190
+
191
+ //~ if(jsonFile.exists){
192
+ //~ jsonFile.remove()
193
+ //~ }
194
+ //open file
195
+ jsonFile.open("w")
196
+
197
+ //write to file convert to string
198
+ jsonFile.write(JSON.lave(object));
199
+
200
+ //close file
201
+ jsonFile.close()
202
+
203
+ }
204
+
205
+
206
+ // ---------------------------------------------------------------
207
+ // Photoshop utilities : Convert "charID" to "TypeID" and reversly
208
+ // ---------------------------------------------------------------
209
+ function cTID(s) {return app.charIDToTypeID(s);}
210
+ function sTID(s) {return app.stringIDToTypeID(s);}
211
+
212
+ _LFS_exportPSDLayersToPNG(); // Finaly ... execute the script