Script for text layer content replace w/ user input dialog
i've been messing around building out script allow users replace content in text layer.
unfortunately, content going different, formatted differently, , not placed in sort of xl or csv file.
i'd able run script select appropriate named text layers , prompt user input various values. script i've been able find along lines on ps-scripts site here:
prompt user textual input - script
anyone come or across falls within interaction parameters?
thanks!
something this? ...
#target photoshop app.bringtofront(); main(); function main(){ if(!documents.length) return; var txtarray = new array(); txtarray = gettxtinfo(); var win = new window( 'dialog', '' ); g = win.graphics; var mybrush = g.newbrush(g.brushtype.solid_color, [0.99, 0.99, 0.99, 1]); g.backgroundcolor = mybrush; win.orientation='stack'; win.p1= win.add("panel", undefined, undefined, {borderstyle:"black"}); win.g1 = win.p1.add('group'); win.g1.orientation = "row"; win.title = win.g1.add('statictext',undefined,'text replacement'); win.title.alignment="fill"; var g = win.title.graphics; g.font = scriptui.newfont("georgia","bolditalic",22); win.g5 =win.p1.add('group'); win.g5.orientation = "row"; win.g5.alignment='left'; win.g5.spacing=10; win.g5.st1 = win.g5.add('statictext',undefined,'layer name'); win.g5.st1.preferredsize=[110,20]; win.g5.dd1 = win.g5.add('dropdownlist'); win.g5.dd1.preferredsize=[300,20]; win.g10 =win.p1.add('group'); win.g10.orientation = "row"; win.g10.alignment='left'; win.g10.st1 = win.g10.add('statictext',undefined,'layer contents'); win.g10.st1.preferredsize=[110,20]; win.g10.et1 = win.g10.add('edittext',undefined,''); win.g10.et1.preferredsize=[300,20]; win.g10.et1.enabled=false; for(var in txtarray){ win.g5.dd1.add('item',txtarray[a][1].tostring()); } win.g5.dd1.selection=0; win.g10.et1.text=txtarray[0][2].tostring(); win.g5.dd1.onchange=function(){ win.g10.et1.text=txtarray[this.selection.index][2].tostring(); } win.g15 =win.p1.add('group'); win.g15.orientation = "row"; win.g15.alignment='fill'; win.g15.st1 = win.g15.add('statictext',undefined,'replace text with:- '); win.g15.st1.preferredsize[150,20]; win.g15.et1 = win.g15.add('edittext',undefined,''); win.g15.et1.preferredsize=[350,20]; win.g20 =win.p1.add('group'); win.g20.orientation = "row"; win.g20.alignchildren='fill'; win.g20.bu1 = win.g20.add('button',undefined,'update text'); win.g20.bu1.preferredsize=[200,35]; win.g20.bu2 = win.g20.add('button',undefined,'cancel'); win.g20.bu2.preferredsize=[200,35]; win.g20.bu1.onclick=function(){ if(win.g15.et1.text == ''){ alert("no replacement text has been entered!"); return; } win.close(0); selectlayerbyid(number(txtarray[win.g5.dd1.selection.index][0])); activedocument.activelayer.textitem.contents=win.g15.et1.text; } win.center(); win.show(); } function gettxtinfo(){ var ref = new actionreference(); ref.putenumerated( charidtotypeid('dcmn'), charidtotypeid('ordn'), charidtotypeid('trgt') ); var count = executeactionget(ref).getinteger(charidtotypeid('nmbl')) +1; var names=[]; try{ activedocument.backgroundlayer; var = 0; }catch(e){ var = 1; }; for(i;i<count;i++){ if(i == 0) continue; ref = new actionreference(); ref.putindex( charidtotypeid( 'lyr ' ), ); var desc = executeactionget(ref); var layername = desc.getstring(charidtotypeid( 'nm ' )); var id = desc.getinteger(stringidtotypeid( 'layerid' )); if(layername.match(/^<\/layer group/) ) continue; var layertype = typeidtostringid(desc.getenumerationvalue( stringidtotypeid( 'layersection' ))); var vis = desc.getboolean(stringidtotypeid( 'visible' )); if( desc.haskey( stringidtotypeid( 'textkey' ) )) { var contents = desc.getobjectvalue(stringidtotypeid('textkey')).getstring( stringidtotypeid('textkey')); if(!vis) continue; //do not select hidden layers names.push([[id],[layername],[contents]]); } } return names; }; function selectlayerbyid(id, add) { add = (add == undefined) ? add = false : add; var ref = new actionreference(); ref.putidentifier(charidtotypeid('lyr '), id); var desc = new actiondescriptor(); desc.putreference(charidtotypeid('null'), ref); if (add) { desc.putenumerated(stringidtotypeid('selectionmodifier'), stringidtotypeid('selectionmodifiertype'), stringidtotypeid('addtoselection')); } desc.putboolean(charidtotypeid('mkvs'), false); executeaction(charidtotypeid('slct'), desc, dialogmodes.no); }
More discussions in Photoshop Scripting
adobe
Comments
Post a Comment