Ghoulfool, I gave this a go… Ran a few basic tests and I think I got it right? Do let me know… Quite possibly not the most efficient way… But there you go… #target photoshop
function layerNamer() {
var opts = new Object();
var win = new Window('dialog','Rename Layers…');
win.preferredSize = [200,undefined];
win.opacity = 0.95;
var red = 0, green = (1/256)*102, blue = (1/256)*153;
win.graphics.backgroundColor = win.graphics.newBrush
(win.graphics.BrushType.SOLID_COLOR, [red, green, blue]);
var grp1 = win.add('group');
grp1.orientation = 'column';
var opText = grp1.add('statictext',undefined,'Options: ');
opText.graphics.font = ScriptUI.newFont('Helvetica', 'Bold', 12);
opText.graphics.foregroundColor = opText.graphics.newPen
(opText.graphics.PenType.SOLID_COLOR, [1.0, 1.0, 1.0], 1);
grp1.add('statictext', [5,15,195,37], 'Find String/Expression:');
var findEdit = grp1.add('edittext', [5,45,195,67], '');
findEdit.graphics.backgroundColor = findEdit.graphics.newBrush
(findEdit.graphics.BrushType.SOLID_COLOR, [1.0, 1.0, 1.0], 1);
findEdit.active = true;
grp1.add('statictext', [5,75,195,97], 'Replacement String:');
var repEdit = grp1.add('edittext', [5,105,195,127], '');
repEdit.graphics.backgroundColor = repEdit.graphics.newBrush
(repEdit.graphics.BrushType.SOLID_COLOR, [1.0, 1.0, 1.0], 1);
var chkboxA = grp1.add('checkbox', [5,135,195,157], 'Case Sensitive');
var chkboxB = grp1.add('checkbox', [5,165,195,187], 'Global');
var chkboxC = grp1.add('checkbox', [5,195,195,217], 'Include Text Layers');
var grp2 = win.add('group');
grp2.cancelBtn = grp2.add('button',undefined,'Cancel',{name:'cancel'});
grp2.okBtn = grp2.add('button',undefined,'OK',{name:'ok'});
grp2.okBtn.onClick = function() {
opts.find = findEdit.text;
opts.replace = repEdit.text;
opts.ignore = chkboxA.value;
opts.global = chkboxB.value;
opts.txtLay = chkboxC.value;
processDoc(opts);
win.close(0);
};
win.center();
win.show();
};
if ( app.documents.length > 0) { layerNamer(); }
function processDoc(opts) {
var find;
if ( opts.global && !opts.ignore ) { find = new RegExp(opts.find,'gi'); }
if ( opts.global && opts.ignore ) { find = new RegExp(opts.find,'g'); }
if ( !opts.global && !opts.ignore ) { find = new RegExp(opts.find,'i'); }
if ( !opts.global && opts.ignore ) { find = new RegExp(opts.find); }
var doc = app.activeDocument;
recurseLayers(doc.layers);
function recurseLayers(layObj) {
for ( var i = 0; i < layObj.length; i++ ) {
if ( find.test(layObj.name) )
{
if (layObj.kind == LayerKind.TEXT && !opts.txtLay) { continue; }
layObj.name = layObj.name.replace(find,opts.replace);
}
if ( layObj.typename == 'LayerSet' )
{ recurseLayers(layObj.layers); }
}
}
};
... View more