From 2d35ce31f5e949e9ca0ff4a025754d5527e2c341 Mon Sep 17 00:00:00 2001 From: Jorge Vasquez Perez Date: Thu, 15 Jul 2021 23:01:28 -0700 Subject: [PATCH] fixed undo mistmach issue --- yScripts/y_flattenSelectedFolderContents.jsx | 146 ++++++++++++++++++- 1 file changed, 145 insertions(+), 1 deletion(-) diff --git a/yScripts/y_flattenSelectedFolderContents.jsx b/yScripts/y_flattenSelectedFolderContents.jsx index 5635ae7..1d09b0f 100644 --- a/yScripts/y_flattenSelectedFolderContents.jsx +++ b/yScripts/y_flattenSelectedFolderContents.jsx @@ -1 +1,145 @@ -#include "../yScripts/y_JSExtensions.jsx"; function yFlattenSelectedFolderContentsTool() { this.info = { name : "yFlatten", version : 0.11, stage : "alpha", description : "Set the Folder Structure for a new Project", url : "yorchnet.com" }; this.appearence = { buttonHeight : 30, buttonWidth : 126 }; this.resources = { icon : new File('yNet.png'), }; this.init = function init() { //alert("my name is:" + this.info.name); 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() { this.window = new Window ( this.res ); this.window.show() ; } this.getSelectedProjectItems = function getSelectedProjectItems (){ 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); } } return items; } this.getAllItems = function getAllItems( folderItem ){ var items = []; var folders = []; for ( var i = 1 ; i <= folderItem.numItems ; i ++ ){ var item = folderItem.item(i); if ( (item.typeName != "Folder") ){ //if ( (isInArray( items ,item )) == false ){ items.push( item ); //} }else{ var new_items = yFlattenSelectedFolderContentsTool().getAllItems(item); for ( var j = 0 ; j < new_items.length ; j ++ ){ new_item = new_items[j]; //if ( (isInArray ( new_item )) == false ){ items.push ( new_item ); //} } } } return items } this.flatten = function flatten( items, root ){ app.beginUndoGroup("Flatten Selected Folder Contents") for ( var i = 0; i < items.length ; i ++){ item = items[i]; item.parentFolder = root; } app.endUndoGroup() purgeEmptyFolders(); return } this.purgeEmptyFolders = function purgeEmptyFolders(){ app.beginUndoGroup("Purge Empty Folders") var emptyFolders = []; var p = app.project; for ( var i = p.numItems ; i >= 1 ; i -- ){ item = p.item(i); if ( item.typeName == "Folder" ){ if ( item.numItems <= 0 ){ item.remove(); } } } app.endUndoGroup() } this.yFlattenSelectedFolderContents = function yFlattenSelectedFolderContents() { //alert("is this working"); app.beginUndoGroup(yFlattenSelectedFolderContentsTool().info.description); yFlattenSelectedFolderContentsTool().flatten( yFlattenSelectedFolderContentsTool().getAllItems( yFlattenSelectedFolderContentsTool().getSelectedProjectItems()[0] ) , yFlattenSelectedFolderContentsTool().getSelectedProjectItems()[0] ); app.endUndoGroup(); } this.activate = this.yFlattenSelectedFolderContents; 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') { yFlattenSelectedFolderContentsTool = new yFlattenSelectedFolderContentsTool(); yFlattenSelectedFolderContentsTool.activate(); } else { yFlattenSelectedFolderContentsTool = YTB.addTool(new yFlattenSelectedFolderContentsTool()); } \ No newline at end of file +#include "../yScripts/y_JSExtensions.jsx"; +function yFlattenSelectedFolderContentsTool() +{ + this.info = + { + name : "yFlatten", + version : 0.11, + stage : "alpha", + description : "Set the Folder Structure for a new Project", + url : "yorchnet.com" + }; + this.appearence = + { + buttonHeight : 30, + buttonWidth : 126 + }; + this.resources = + { + icon : new File('yNet.png'), + }; + this.init = function init() + { + //alert("my name is:" + this.info.name); + 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() + { + + + this.window = new Window ( this.res ); + this.window.show() ; + } + + this.getSelectedProjectItems = function getSelectedProjectItems (){ + 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); + } + } + return items; + } + this.getAllItems = function getAllItems( folderItem ){ + + var items = []; + var folders = []; + + for ( var i = 1 ; i <= folderItem.numItems ; i ++ ){ + var item = folderItem.item(i); + + if ( (item.typeName != "Folder") ){ + //if ( (isInArray( items ,item )) == false ){ + items.push( item ); + //} + }else{ + var new_items = yFlattenSelectedFolderContentsTool().getAllItems(item); + for ( var j = 0 ; j < new_items.length ; j ++ ){ + new_item = new_items[j]; + //if ( (isInArray ( new_item )) == false ){ + items.push ( new_item ); + //} + } + } + } + return items + } + this.flatten = function flatten( items, root ){ + app.beginUndoGroup("Flatten Selected Folder Contents") + for ( var i = 0; i < items.length ; i ++){ + item = items[i]; + item.parentFolder = root; + } + app.endUndoGroup() + purgeEmptyFolders(); + return + } + this.purgeEmptyFolders = function purgeEmptyFolders(){ + //app.beginUndoGroup("Purge Empty Folders") + var emptyFolders = []; + + var p = app.project; + for ( var i = p.numItems ; i >= 1 ; i -- ){ + item = p.item(i); + if ( item.typeName == "Folder" ){ + if ( item.numItems <= 0 ){ + item.remove(); + } + } + } + + //app.endUndoGroup() + } + this.yFlattenSelectedFolderContents = function yFlattenSelectedFolderContents() + { + //alert("is this working"); + //app.beginUndoGroup(yFlattenSelectedFolderContentsTool().info.description); + yFlattenSelectedFolderContentsTool().flatten( yFlattenSelectedFolderContentsTool().getAllItems( yFlattenSelectedFolderContentsTool().getSelectedProjectItems()[0] ) , yFlattenSelectedFolderContentsTool().getSelectedProjectItems()[0] ); + //app.endUndoGroup(); + } + + this.activate = this.yFlattenSelectedFolderContents; + + 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') +{ + yFlattenSelectedFolderContentsTool = new yFlattenSelectedFolderContentsTool(); + yFlattenSelectedFolderContentsTool.activate(); +} +else +{ + yFlattenSelectedFolderContentsTool = YTB.addTool(new yFlattenSelectedFolderContentsTool()); +}