-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathToggle Locked Layers.sketchplugin
46 lines (40 loc) · 1.33 KB
/
Toggle Locked Layers.sketchplugin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Locks layers that were previously locked (command control l)
#import 'sandbox.js'
// Get all pages in the document
var currentPage = doc.currentPage()
var currentArtboard = currentPage.currentArtboard()
var lockedKey = ' 🔓'
toggleLockAllLayers( currentArtboard.layers() )
// Recursively traverses and unlocks a tree of layers, since layers can be nested
// in groups
function toggleLockAllLayers(layers) {
processAllLayers(layers, function(layer) {
if ( layer.isLocked() ) {
layer.setName( layer.name() + lockedKey )
toggleLock( layer )
} else {
if ( layer.name().match( lockedKey ) ) {
layer.setName( layer.name().replace( lockedKey, '' ) )
toggleLock( layer )
}
}
} )
}
function toggleLock( layer ) {
layer.setIsLocked( !layer.isLocked() )
}
// Thanks to https://github.com/alssndro/sandros-sketch-plugins/blob/master/alessndro_library.js
function processAllLayers(layers, callback) {
for (var i = 0; i < [layers count]; i++) {
var layer = [layers objectAtIndex:i];
log(layer)
if ([layer isMemberOfClass:[MSLayerGroup class]]) {
callback(layer);
// Also process child layers/groups
processAllLayers([layer layers], callback);
}
else {
callback(layer);
}
}
}