/* Wild Card Helper Panel v.0.1 by Jorge Vásquez Pérez yorchWyorchnet.com https://yorchnet.com/ https://github.com/jorgevasquezp Changes 0.2: - None TODO: - Get artist initials in Windows too. */ (function wcHelperPanel (thisObj) { /* Build UI */ function buildUI(thisObj) { var windowTitle = "WC Artist Helper"; var firstButton = "+1"; var secondButton = "own"; var thirdButton = "render"; var fourthButton = "rename"; var win = (thisObj instanceof Panel)? thisObj : new Window('palette', windowTitle); win.spacing = 0; win.margins = 1; var myArtistGroup = win.add ("group"); var artistNameLabel= myArtistGroup.add("statictext"); win.artistName= myArtistGroup.add("statictext"); var artistRoleLabel= myArtistGroup.add("statictext"); win.artistRole= myArtistGroup.add("dropdownlist",undefined,["Offline","Finishing"]) win.artistRole.selection = 0; artistNameLabel.text = "Artist:"; artistRoleLabel.text = "Role:"; //****// win.artistName.text = system.callSystem("whoami"); var myButtonGroup = win.add ("group"); myButtonGroup.spacing = 4; myButtonGroup.margins = 0; myButtonGroup.orientation = "row"; win.checkbox1 = myButtonGroup.add( "checkbox", undefined, "Dupli:") win.checkbox1.value = true; win.button1 = myButtonGroup.add ("button", undefined, firstButton); win.button2 = myButtonGroup.add ("button", undefined, secondButton); win.button3 = myButtonGroup.add ("button", undefined, thirdButton); win.button4 = myButtonGroup.add ("button", undefined, fourthButton); myButtonGroup.alignment = "center"; myButtonGroup.alignChildren = "center"; win.button1.onClick = function(){ btnPlus1(); //versionUpSelectedComps(1); } win.button2.onClick = function(){ btnOwn(); } win.button3.onClick = function(){ btnRender(); } win.button4.onClick = function(){ btnTest(); //alert( getItemByName( getTodayString() )); } win.layout.layout(true); return win } // Show the Panel var w = buildUI(thisObj); if (w.toString() == "[object Panel]") { w; } else { w.show(); } /* General functions */ w.pad = function ( n, i ){ //pad n with zeroes up to i places. if (String(n).length>=i){ return String(n) }else{ var dif = i- (String(n)).length; var padding = ""; for (p=0;p= 0 ; i -- ) { //todo make sure that the folder doesnt exist yet. next_folder = next_folder.items.addFolder(t[i].name); } new_comp = myComp.duplicate(); new_comp.name = myComp.name; versionUpComp( new_comp, inc ); new_comp.parentFolder = next_folder; //myComp.selected = false; //app.project.activeItem = new_comp; myComp.selected = false; new_comp.selected = true; } /* UI Buttons */ function btnPlus1(){ var dupli = w.checkbox1.value == true; if ( dupli ){ versiounUpTodaySelectedComps( 1 ); }else{ versionUpSelectedComps( 1 ); } } function btnOwn(){ var dupli = w.checkbox1.value == true; if ( dupli ){ versiounUpTodaySelectedComps( 0 ); }else{ versionUpSelectedComps( 0 ); } } function btnRender(){ renderSelectedToProjectPath(); } function btnTest(){ compHerder = new CompHerder(); compHerder.activate(); //alert("Nothing to test right now.") } //// function CompHerder(){ 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; } }, insert: function ( position , insert_text ){ compHerder.methods.insertAtSelectedItemsNames(insert_text, position ); }, insertAt: function ( text , insertText, pos ){ var myText = text; var insertText = insertText; var myPos = pos; var newText; if( myPos >= 0 ){ newText= myText.substr(0,myPos)+"_"+insertText+myText.substr(myPos); }else{ newText= myText.substr(0,myText.length+myPos)+insertText+"_"+myText.substr(myText.length+myPos); } return newText }, insertAtSelectedItemsNames: function ( text, pos){ var my_comps = getSelectedProjectItems(); for ( var i = 0; i < my_comps.length ; i ++ ){ var myComp = my_comps[i]; myComp.name = compHerder.methods.insertAt( myComp.name , text , pos); } } } 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'} ,\ }\ },\ insert_tab: Panel {\ type: 'tab',\ text: 'Insert',\ insertGrp: Group {\ alignment: ['fill','fill'], \ alignChildren: ['left','center'], \ orientation: 'row', \ insertStart: EditText {text:'INSERT AT',alignment: ['fill','center']}, \ insertText: EditText {text:'INSERT TEXT',alignment: ['fill','center']}, \ insertBtn: Button {text: 'Insert'} ,\ }\ },\ trim_tab: Panel {\ type: 'tab',\ text: 'Trim',\ trimGrp: Group {\ alignment: ['fill','fill'], \ alignChildren: ['left','center'], \ orientation: 'row', \ trimStartEnabled: Checkbox {alignment: ['fill','center']}, \ trimStart: EditText {text:'TRIM START', enabled : False, alignment: ['fill','center']}, \ trimEndEnabled: Checkbox {alignment: ['fill','center']}, \ trimEnd: EditText {text:'TRIM END', enabled : False, alignment: ['fill','center']}, \ trimBtn: Button {text: 'Trim'} ,\ }\ },\ },\ },\ }"; 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();} //CLEAR FIELDS myUI.window.tabs.search_tab.searchGrp.searchString.onActivate = function(){ myUI.window.tabs.search_tab.searchGrp.searchString.text = ""; } myUI.window.tabs.search_tab.replaceGrp.replaceString.onActivate = function(){ myUI.window.tabs.search_tab.replaceGrp.replaceString.text = ""; } //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.pre.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 ); }; myUI.window.tabs.insert_tab.insertGrp.insertBtn.onClick = function(){ var insert_at = parseInt(myUI.window.tabs.insert_tab.insertGrp.insertStart.text); var insert_text = myUI.window.tabs.insert_tab.insertGrp.insertText.text; myUI.methods.insert( insert_at , insert_text ); // myUI.methods.rename( myUI.methods.getSelectedProjectItems() , new_name ); }; myUI.window.tabs.trim_tab.trimGrp.trimBtn.onClick = function(){ var startTrim = parseInt(myUI.window.tabs.trim_tab.trimGrp.trimStart.text); var endTrim = parseInt(myUI.window.tabs.trim_tab.trimGrp.trimEnd.text); alert( startTrim +","+ endTrim ); // var new_name = myUI.window.tabs.rename_tab.renameGrp.renameString.text; // myUI.methods.rename( myUI.methods.getSelectedProjectItems() , new_name ); }; return(this); } this.activate = function activate() { w = this.createUI(); } this.init(); return this; } })(this);