#include "../yScripts/y_JSExtensions.jsx"; function CompHerder() { this.info = { name : "CompHerder", version : 0.1, stage : "development", description : "Tool to manage project items.", url : "yorchnet.com" }; this.appearence = { buttonHeight : 30, buttonWidth : 126 }; this.resources = { icon : new File('yNet.png'), }; this.methods = { pad : function ( n , pad ) { zeros = ""; for ( i = 0 ; i < pad ; i ++ ) { zeros+="0"; } n = String(n); padded = zeros.substr( 0, pad - n.length ) + String(n) ; return padded }, replace: function( items , string , newString ){ for ( i = 0 ; i < items.length ; i ++ ){ var item = items[i]; item.name = item.name.replace( string , newString ); } return true; }, getSelectedProjectItems: function (){ var items = []; var p = app.project; for ( var i = 1 ; i <= p.numItems ; i ++ ){ var item = p.item(i); if ( item.selected ){ items.push(item); } } //items = items.concat( app.project.activeItem.selectedItems ); return items; }, suffix: function ( items , suffix ){ for ( i = 0 ; i < items.length ; i ++ ){ var item = items[i]; if ( item.name.search( suffix ) != (item.name.length - suffix.length) ){ item.name+= "_"+suffix; } } return true; }, prefix : function( items , prefix ){ for ( i = 0 ; i < items.length ; i ++ ) { var item = items[i]; if ( item.name.search( prefix ) != 0 ){ item.name = prefix + "_" + item.name; } } return true; }, rename: function ( items , new_name ){ for ( i = 0 ; i < items.length ; i ++ ){ var item = items[i]; item.name = new_name + "_" + i; } } } this.init = function init() { this.btnLauyout = "button\ {\ preferredSize: ['" + this.appearence.buttonWidth + "','" + this.appearence.buttonHeight + "'],\ text:'" + this.info.name + "',\ helpTip:'" + this.info.description + "'\ }"; this. res = "window\ {\ type:'palette',\ text:'" + this.info.name + ' ' + this.info.ver + ' ' + this.info.stage + "',\ info: Group \ {\ alignment:['center','bottom'],\ icon: Image \ {\ icon:'" + this.resources.icon.path + '/' + this.resources.icon.name + "',\ preferredSize: [15, 18]\ },\ website: StaticText\ {\ text:'" + this.info.url + "',\ alignment:['fill','center']\ },\ }\ }"; } this.createUI = function createUI( ) { var myUI = this; var res = "window { \ text: 'CompHerder',\ alignment: ['fill','fill'], \ alignChildren: ['center','top'], \ orientation: 'column', \ resizeable: 'true',\ tabs: Panel {\ type: 'tabbedpanel',\ alignment: ['fill','fill'], \ alignChildren: ['center','top'], \ search_tab: Panel {\ type: 'tab',\ text: 'Search & Replace',\ orientation: 'column', \ alignChildren: ['center','top'], \ searchGrp: Group {\ alignment: ['fill','fill'], \ alignChildren: ['center','top'], \ orientation: 'column', \ searchString: EditText {text:'SEARCH FOR TEXT',alignment: ['fill','center']}, \ },\ replaceGrp: Group {\ alignment: ['fill','fill'], \ alignChildren: ['center','center'], \ orientation: 'column', \ replaceString: EditText {text:'REPLACE WITH TEXT',alignment: ['fill','center']}, \ }\ doItBtn: Button {text: 'Replace in selected Comps', alignment: ['center','center']} , \ }\ suprefix: Panel {\ type: 'tab',\ text: 'Suffix / Prefix',\ orientation: 'column', \ suprefixGrp: Group {\ alignment: ['fill','fill'], \ alignChildren: ['left','center'], \ orientation: 'column', \ pre:Group {\ alignment: ['fill','fill'], \ alignChildren: ['left','center'], \ orientation: 'row', \ prefixString: EditText {text:'PREFIX',alignment: ['fill','center']}, \ prefixBtn: Button {text: 'Preffix'} , \ },\ su:Group{\ alignment: ['fill','fill'], \ alignChildren: ['left','center'], \ orientation: 'row', \ sufixString: EditText {text:'SUFIX',alignment: ['fill','center']}, \ sufixBtn: Button {text: 'Sufix'} , \ }\ },\ },\ rename_tab: Panel {\ type: 'tab',\ text: 'Rename',\ renameGrp: Group {\ alignment: ['fill','fill'], \ alignChildren: ['left','center'], \ orientation: 'row', \ renameString: EditText {text:'NEW NAME',alignment: ['fill','center']}, \ renameBtn: Button {text: 'Rename'} ,\ }\ }\ },\ }"; myUI.window = new Window( res ); myUI.window.layout.layout(true); myUI.window.show(); myUI.window.layout.onResizing = myUI.window.layout.onResize = function () { myUI.layout.resize();} //EVENT HANDLERS myUI.window.tabs.search_tab.doItBtn.onClick = function(){ var search_str = myUI.window.tabs.search_tab.searchGrp.searchString.text; var replace_str = myUI.window.tabs.search_tab.replaceGrp.replaceString.text; myUI.methods.replace( myUI.methods.getSelectedProjectItems() , search_str , replace_str ); }; myUI.window.tabs.suprefix.suprefixGrp.pre.prefixBtn.onClick = function(){ var pre = myUI.window.tabs.suprefix.suprefixGrp.su.prefixString.text; myUI.methods.prefix( myUI.methods.getSelectedProjectItems() , pre ); }; myUI.window.tabs.suprefix.suprefixGrp.su.sufixBtn.onClick = function(){ var su = myUI.window.tabs.suprefix.suprefixGrp.su.sufixString.text; myUI.methods.suffix( myUI.methods.getSelectedProjectItems() , su ); }; myUI.window.tabs.rename_tab.renameGrp.renameBtn.onClick = function(){ var new_name = myUI.window.tabs.rename_tab.renameGrp.renameString.text; myUI.methods.rename( myUI.methods.getSelectedProjectItems() , new_name ); }; return(this); } this.replaceInSelectedItems = function(){ var search_string = "GFX"; var replace_string = "VFX"; } this.yMainFunction = function yMainFunction() { w = this.createUI(); } this.activate = function activate() { this.yTool.yMainFunction(); } this.init(); return this; } //CHECKS that the toolbox exists, and if it doesn´t it runs the script on its own. if (typeof(YTB)=='undefined') { CompHerder = new CompHerder(); CompHerder.activate(); } else { YTB.addTool(new CompHerder()); }