Quantcast
Channel: Adobe Community: Message List
Viewing all articles
Browse latest Browse all 92406

Conflict to UndoModes.FAST_ENTIRE_SCRIPT

$
0
0

Hi, everyone

 

I joint some scripts together, but some are conflict to the UndoModes.FAST_ENTIRE_SCRIPT:

 

app.doScript('(mySelection.selectedIndex == 3)', ScriptLanguage.JAVASCRIPT, undefined, UndoModes.FAST_ENTIRE_SCRIPT, "multi tasking not at same time"); 

 

Is that possible only add an undo function to specify script or two scripts?

 

the first one has conflict with the UndoModes.FAST_ENTIRE_SCRIPT function.

 

//---------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------

var

  mySelected = Number( app.extractLabel("mDialog") ),

  myDialog = app.dialogs.add({name:"Multi Tasking Wizard",canCancel:true});

  with(myDialog){

       with(dialogColumns.add()){

            with(dialogRows.add()){

                 var

                 mySelection = dropdowns.add({stringList:["01   Batch import styles from source document", "02   Gen Revised-PDF", "03   Joint text fame together"], selectedIndex: 0});

            }

       }

  }

 

if (myDialog.show() == true)

 

app.doScript('(mySelection.selectedIndex == 3)', ScriptLanguage.JAVASCRIPT, undefined, UndoModes.FAST_ENTIRE_SCRIPT, "multi tasking not at same time"); 

function main(){

      colse_file();

}

 

function colse_file(){

   if (mySelection.selectedIndex == 0){

          var MyFolderWithFiles = Folder.selectDialog ("Choose a folder");

          var sourceFile = File.openDialog("Choose the styles source");

          var myFiles = MyFolderWithFiles.getFiles("*.indd");

 

          for(i = 0; i < myFiles.length; i++) {

              theFile = myFiles[i];

              app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;

              var targetDoc = app.open(theFile, true);

              app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;

              targetDoc.importStyles(ImportFormat.CHARACTER_STYLES_FORMAT, sourceFile, GlobalClashResolutionStrategy.LOAD_ALL_WITH_OVERWRITE);

              targetDoc.importStyles(ImportFormat.PARAGRAPH_STYLES_FORMAT, sourceFile, GlobalClashResolutionStrategy.LOAD_ALL_WITH_OVERWRITE);

              targetDoc.close(SaveOptions.YES);

          }

     }

 

   if (mySelection.selectedIndex == 1){

 

        var f = new Folder("~/Desktop/Revised_PDF put in here/"); 

        f.create();

 

        var doc = app.documents; 

        app.findTextPreferences = null; 

        app.findTextPreferences.underline = true; 

        for(var i=0;i<doc.length;i++) 

        { 

                var found = doc[i].findText(); 

                var _pages = []; 

                for(var j=0;j<found.length;j++) 

                { 

                        var txfms = found[j].texts[0].parentTextFrames; 

                        for(var k=0;k<txfms.length;k++) 

                        { 

                                _pages.push(txfms[k].parentPage.name); 

                            } 

                    } 

                for(var j=0;j<_pages.length;j++) 

                { 

                        if(_pages[j] === _pages[j-1]) 

                        { 

                                _pages.splice(j,1); 

                            } 

                    } 

                if(_pages.length != 0) 

                { 

                        app.pdfExportPreferences.pageRange = _pages.toString(); 

                        doc[i].exportFile(ExportFormat.PDF_TYPE, new File("~/Desktop/Revised_PDF put in here/" + doc[i].name.replace(/\.indd$/i,".pdf")), false);

                    } 

                _pages = []; 

            } 

        app.findTextPreferences = null;

 

        var f = Folder("~/Desktop/Revised_PDF put in here/" ); 

        f.execute(); 

 

     }

 

   if (mySelection.selectedIndex == 3){

//---------------------------------------------------------------------------------------- -----------------------------------------------------------

var D_MARGIN = 6;

var D_CONTROLHEIGHT = 20;

var D_BUTTONWIDTH = 100;

var D_CONTROLLABELWIDTH = 160;

var D_CONTROLWIDTH = 150;

var D_DIALOG_WIDTH = 400;

 

var S2 = 1.41421356237309504880;

 

function _odControlShared(label,name) {

    dialog = this;

    var y = dialog.curYPos;

    var itemHeight = D_CONTROLHEIGHT;

    var itemBump = itemHeight + D_MARGIN;

    if(label != "")

        label += ":";

    var labelCtl = dialog.add('statictext',[20,y,20 + D_CONTROLLABELWIDTH,y+itemHeight],label);

    labelCtl.justify = "right";

    var controlBox = new Object();

    controlBox.left = 20 + D_CONTROLLABELWIDTH + 10;

    controlBox.top = y;

    controlBox.right = controlBox.left + D_CONTROLWIDTH;

    controlBox.bottom = controlBox.top + itemHeight;

    dialog.curYPos = controlBox.bottom + D_MARGIN;

    return controlBox;

}

 

function _odControlSharedFinish(control,name,valueFieldName) {

    oD = this;

    oD.items[name] = control;

    oD.itemValueFieldNames[name] = valueFieldName;

    oD.itemNames[oD.itemNames.length] = name;

}

 

function _odNumber(label,name,value) {

    oD = this;

    var controlBox = oD._odControlShared(label,name);

    var control = oD.add('edittext',controlBox,value);

    control.value = value;

    control.onChange = function(){this.value = (this.text) * 1.0; this.text = this.value;};

    oD._odControlSharedFinish(control,name,"text");

    return control;

}

 

function _odText(label,name,value) {

    oD = this;

    var controlBox = oD._odControlShared(label,name);

    var control = oD.add('edittext',controlBox,value);

    control.value = value;

    control.onChange = function(){this.value = this.text; };

    oD._odControlSharedFinish(control,name,"text");

    return control;

}

 

function _setColorFromButton(victim,button) {

    var g = victim.graphics;

    var n = button.value;

    var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, n);

    g.backgroundColor = myBrush;

}

function _odColor(label,name,color) {

    oD = this;

    var controlBox = oD._odControlShared(label,name);

    var swatchBox = [controlBox.left + 40,controlBox.top,controlBox.right,controlBox.bottom];

    var buttonBox = [controlBox.left,controlBox.top,controlBox.left + 30,controlBox.bottom];

    var swatch = oD.add('group',swatchBox);

    var button = oD.add('button',buttonBox);

    button.swatch = swatch;

    button.value = color;

    button.onClick = function(){

            var n = doColorPicker(this.value);

            this.value = n;

            _setColorFromButton(swatch,this);

            };

    _setColorFromButton(swatch,button);

    oD._odControlSharedFinish(button,name,"value");

    return button;

}

 

function _odFileCommon(label,name,path,prompt,extension) {

    var controlBox = oD._odControlShared(label,name);

    var buttonWidth = 80;

    var buttonBox = [controlBox.left,controlBox.top,controlBox.left + buttonWidth,controlBox.bottom];

    var nameBox = [controlBox.left + buttonWidth + 10,controlBox.top,D_DIALOG_WIDTH,controlBox.bottom];

    var f = new File(path);

    var nameCtl = oD.add('statictext',nameBox);

    var button = oD.add('button',buttonBox,'...');

    button.nameCtl = nameCtl;

    nameCtl.text = f.name;

    button.value = f.fsName;

    button.file = f;

    button.filePrompt = prompt;

    button.fileExtension = extension;

    oD._odControlSharedFinish(button,name,"value");

    return button;

}

 

function _odOpenFile(label,name,path,prompt,extension) {

    oD = this;

    var buttonCtl = _odFileCommon(label,name,path,prompt,extension);

    buttonCtl.onClick = function(){

        var f = this.file.openDlg(this.filePrompt);

        if(f) {

            this.file = f;

            this.value = f.fsName;

            this.nameCtl.text = f.name;

        }

    };

    return buttonCtl;

}

 

function _odSaveFile(label,name,path,prompt,extension) {

    oD = this;

    var buttonCtl = _odFileCommon(label,name,path,prompt,extension);

    buttonCtl.onClick = function(){

        var f = this.file.saveDlg(this.filePrompt);

        if(f) {

            this.file = f;

            this.value = f.fsName;

            this.nameCtl.text = f.name;

        }

    };

    return buttonCtl;

}

 

function _odSelectFolder(label,name,path,prompt,extension) {

    oD = this;

    var buttonCtl = _odFileCommon(label,name,path,prompt,extension);

    buttonCtl.folder = new Folder(path);

    buttonCtl.nameCtl.text += "/";

    buttonCtl.onClick = function(){

        var f = this.folder.selectDlg(this.filePrompt);

        if(f) {

            this.folder = f;

            this.value = f.fsName;

            this.nameCtl.text = f.name + "/";

        }

    };

    return buttonCtl;

}

 

function _odCheckbox(label,name,value,checkboxText) {

        oD = this;

        var controlBox = oD._odControlShared(label,name);

        var control = oD.add('checkbox',controlBox,checkboxText);

        control.value = value;

        oD._odControlSharedFinish(control,name,"value");

        return control;

}

 

function _odRadioButtons(label,name,value,radioChoices) {

    var oD = this;

    controlBox = oD ._odControlShared(label,name);

    var itemHeight = controlBox.bottom - controlBox.top;

    result = oD.add('edittext',controlBox,value);

    result.onChange = function(){

        var i;

        this.value = this.text;

        for(i = 0; i < this.buttons.length; i++) {

            var button = this.buttons[i];

            button.value = (button.theChoice == this.text);

        }

    }

    result.hide();

    result.value = value;

    result.buttons = new Array();

 

    var i;

    for(i = 0; i < radioChoices.length; i++) {

        var choice = radioChoices[i];

        if(i > 0) {

            var bump = itemHeight + D_MARGIN;

            controlBox.top += bump;

            controlBox.bottom += bump;

            oD.curYPos += bump;

        }

        var rb = oD .add('radiobutton',controlBox,choice);

        rb.value = choice == value;

        rb.theChoice = choice;

        rb.theGroupErsatzControl = result;

        rb.onClick = function(){this.theGroupErsatzControl.value = this.theChoice;};

        result.buttons[result.buttons.length] = rb;

    }

    oD._odControlSharedFinish(result,name,"text");

    return result;

}

 

function _odMenu(label,name,value,menuChoices) {

    var oD = this;

    controlBox = oD ._odControlShared(label,name);

    var itemHeight = controlBox.bottom - controlBox.top;

    var control = oD.add('dropdownlist',controlBox,menuChoices);

    control.menuChoices = menuChoices;

    control.value = value;

    var index = 0;

    for(var i = 0; i < menuChoices.length; i++) {

        if(value == menuChoices[i])

            index = i;

    }

    control.selection = index;

    control.onChange = function() {

        this.value = this.selection.text;

        } // make them all .value accessible

    oD._odControlSharedFinish(control,name,"value");

}

 

function _odSectionLabel(label) {

    var oD = this;

    var b2 = new Object();

    b2.left = D_MARGIN;

    b2.top = oD.curYPos;

    b2.right = b2.left + D_DIALOG_WIDTH;

    b2.bottom = b2.top + D_CONTROLHEIGHT;

    oD.curYPos += D_CONTROLHEIGHT + D_MARGIN;

    oD.add('statictext',b2,label + ':',{multiline:true});

}

 

function _odBoxedText(lines,text) {

    var oD = this;

    var width = D_DIALOG_WIDTH;

    var height = lines * 16;

    var b2 = new Object();

    var b = new Object();

    b.top = oD.curYPos;

    b.bottom = b.top + height + 2 * D_MARGIN;

    b.left = D_MARGIN;

    b.right = b.left + width;

    oD.curYPos = b.bottom + D_MARGIN;

    var panel = oD.add('panel',b);

    b2.left = D_MARGIN;

    b2.top = D_MARGIN;

    b2.right = b2.left + width - 2 * D_MARGIN;

    b2.bottom = b2.top + height;

    panel.add('statictext',b2,text,{multiline:true});

}

 

function _odSeparator() {

    var oD = this;

    var height = oD.groupGap;

    var barWidth = oD.ominoDialogWidth;

    if(barWidth) {

        var b = new Object();

        b.top = oD.curYPos + height / 2;

        b.bottom = b.top;

        b.left = D_MARGIN;

        b.right = b.left + barWidth;

        var barHeight = 2;

        b.top -= barHeight / 2;

        b.bottom = b.top + barHeight;

        oD.add('panel',b);

    }

    oD.curYPos += height;

}

 

function _odAppendGap() {

    oD = this;

    oD.curYPos += oD.groupGap;

}

 

function appendOKCancel(dialog) {

    var y = dialog.curYPos;

    var cancelRect = new Object();

    var okRect = new Object();

    cancelRect.left = D_MARGIN

    cancelRect.top = y;

    cancelRect.right = cancelRect.left + D_BUTTONWIDTH;

    cancelRect.bottom = cancelRect.top + D_CONTROLHEIGHT;

    okRect.left = cancelRect.right + D_MARGIN + D_MARGIN;

    okRect.top = y;

    okRect.right = okRect.left + D_BUTTONWIDTH;

    okRect.bottom = okRect.top + D_CONTROLHEIGHT;

    var cancelBtn = dialog.add('button',cancelRect,'Cancel',{name:'cancel'});

    var okBtn = dialog.add('button',okRect,'OK',{name:'ok'});

    cancelBtn.theDialog = dialog;

    cancelBtn.onClick = function(){this.theDialog.close(0);};

    okBtn.theDialog = dialog;

    okBtn.onClick = function(){this.theDialog.close(1);};

    dialog.curYPos = okRect.bottom + D_MARGIN;

}

 

function trimDialogBounds(dialog) {

    var xMax = 20;

    var yMax = 20;

    var n = dialog.children.length;

    var i;

    for(i = 0; i < n; i++) {

        var aChild= dialog.children[i];

        var aChildBounds = aChild.bounds;

        if(aChildBounds.right > xMax)

            xMax = aChildBounds.right;

        if(aChildBounds.bottom > yMax)

            yMax = aChildBounds.bottom;

    }

    dialog.bounds.right = dialog.bounds.left + xMax + D_MARGIN;

    dialog.bounds.bottom = dialog.bounds.top + yMax + D_MARGIN;

    dialog.bounds.bottom = dialog.curYPos + dialog.bounds.top;

}

 

function newOminoDialog(name) {

    var oD = new Window('dialog',name,[100,100,500,500]);

    oD.curYPos = 20;

    oD.groupGap = 12;

    oD.itemNames = new Array();

    oD.item

    oD.items = new Array();

    oD.itemValueFieldNames = new Object();

    oD.ominoDialogWidth = D_DIALOG_WIDTH;

    oD.gap = _odAppendGap;

    oD.number = _odNumber;

    oD.string = _odText;

    oD.radioButtons = _odRadioButtons;

    oD.checkbox = _odCheckbox;

    oD.sectionLabel = _odSectionLabel;

    oD.separator = _odSeparator;

    oD.boxedText = _odBoxedText;

    oD.color = _odColor;

    oD.openFile = _odOpenFile;

    oD.selectFolder = _odSelectFolder;

    oD.saveFile = _odSaveFile;

    oD.menu = _odMenu;

    oD.set = _odSet;

    oD.run = _odRun;

    oD.get = _odGet;    oD._odControlShared = _odControlShared;

    oD._odControlSharedFinish = _odControlSharedFinish;

    return oD;

}

 

function _odGet() {

    var values = new Object();

    var name;

    for(name in this.items) {

        var value = this.items[name].value;

        values[name] = value;

    }

    return values;

}

 

function _odSet(values) {

    var oD = this;

    if(!values)

        return;

    for(var p in values) {

        var value = values[p];

        var item = oD.items[p];

        if(!item)

            continue;

        var itemValueFieldName = oD.itemValueFieldNames[p];

        if(!itemValueFieldName)

            continue;

        item[itemValueFieldName] = value;

        item.notify('onChange');

    }

}

 

function _odRun() {

    var oD = this;

    if(!oD.finishingTouches) {

        oD.separator(oD);

        oD.gap();

        appendOKCancel(oD);

        oD.gap();

        trimDialogBounds(oD);

        oD.finishingTouches = true;

    }

    var resultCode = oD.show();

    if(resultCode != 1)

        return null;

 

    var result = oD.get();

    return result;

}

 

    var sortProp             = "top";

    var doc                     = app.activeDocument;

    var sel                      = doc.selection;

    var tfs                      = new Array();

    var separator             = "[><]";

    var fitToContent        = false;

    var fitToSelection     = false;

    var minversion        = 5; //for dialog to run

    var version                = parseInt(app.version.split(".").shift());

    var coordTop            = new Array();

    var coordBottom     = new Array();

    var coordRight        = new Array();

    var coordLeft            = new Array();

    var applyTo             = "selected frames";

    var defaultIgnoreLocked = true;

    var ignoreLocked     = defaultIgnoreLocked;

 

init();

 

function init(){

    if(version >= minversion) runDialog();

    else run();

}

 

function run(){

    if(applyTo == "selected frames") {

            tfs = collectFields(sel);

            if (tfs.length == 1) {

                alert("You must select more than one textframe.");

                return;

            } else if (tfs.length < 1) {

                alert("No textframes selected.");

                return;

            } else {

                tfs = tfs.sort(sortFields);

                assemble(tfs);

            }

    } else if(applyTo == "current page") {

            tfs = collectFields(app.activeWindow.activePage.textFrames);

            if (tfs.length == 1) {

                alert("The current page only has one textframe.");

                return;

            } else  if (tfs.length < 1) {

                alert("The current page does not have any textframes.");

                return;

            } else {

                tfs = tfs.sort(sortFields);

                assemble(tfs);

            }

    } else if(applyTo == "all pages") {

            var storedPage = app.activeWindow.activePage;

            for(var i=0; i < doc.pages.count(); i++){

                app.activeWindow.activePage = doc.pages.item(i);

                tfs = collectFields(doc.pages.item(i).textFrames);

                tfs = tfs.sort(sortFields);

                assemble(tfs);

            }

        app.activeWindow.activePage = storedPage;

    }

}

 

function runDialog()

{

    var omd = newOminoDialog("Merge Textframes");

    omd.menu("Apply to","applyto","selected frames",["selected frames",

    "current page", "all pages"]);

    omd.separator();

    omd.checkbox("Ignore locked layers", "ignorelocked", defaultIgnoreLocked , "(applies to pages)");

    omd.separator();

    omd.radioButtons("Sort by","sort","top",["top","left","bottom","right"]);

    omd.separator();

    omd.string("Separator","separator","");

    omd.boxedText(3,"\\r = hard return, \\n = soft return, \\t = tab \n\nUse hard return(s) if you want to preserve paragraphs styles");

    omd.separator();

    omd.checkbox("Fit Frame to", "afit", fitToContent , "merged content");

    omd.checkbox("", "sfit", fitToSelection , "selection size");

 

    var result = omd.run();

    if(result != null) {

        separator = result.separator;

        separator = replace(separator, "\\r", "\r");

        separator = replace(separator, "\\t", "\t");

        separator = replace(separator, "\\n", "\n");

        sortProp  = result.sort;

        fitToContent  = result.afit;

        fitToSelection = result.sfit;

        applyTo = result.applyto;

        ignoreLocked = result.ignorelocked;

        run();

    }

}

 

function collectFields(selArr) {

    var tArr = new Array();

    selArr = (ignoreLocked) ? getUnlockedLayerItems(selArr) : selArr;

    for(var i=0; i < selArr.length; i++){

        var t = selArr[i];

        if (t == undefined) continue;

        if(t.constructor.name == "TextFrame"){

            tArr.push(t);

            var bounds = t.geometricBounds;

            coordTop.push(bounds[0]);

            coordLeft.push(bounds[1]);

            coordBottom.push(bounds[2]);

            coordRight.push(bounds[3]);

            }

    }

    return tArr;

}

 

function getUnlockedLayerItems(inArr) {

    var outArr = new Array();

    for(var i=0; i < inArr.length; i++){

        if(!inArr[i].itemLayer.locked) outArr.push(inArr[i]);

    }

    return outArr;

}

 

function assemble(inArr){

    var arr = inArr;

    var targFrame = arr[0];

   

    for (var i=arr.length-1; i > 0; i--){

        var storedLayer = arr[i].itemLayer;

        var storedLayerLock = storedLayer.locked;

        if(separator.length > 0)  {

            arr[i-1].textStyleRanges.lastItem().contents += separator;

        }

        arr[i].previousTextFrame = arr[i-1];

        arr[i].itemLayer.locked = false;

        arr[i].locked = false;

        arr[i].remove();

        storedLayer.locked = storedLayerLock;

    }

    targFrame.nextTextFrame = null;

    if(fitToSelection) {

        var selectionBounds = new Array();

        var offsetBounds = [0, 0, 0, 0];

        if(app.activeWindow.activePage.side == PageSideOptions.RIGHT_HAND && applyTo == "all pages") {

            offsetBounds = app.activeWindow.activePage.bounds;

        }

        selectionBounds[0] = coordTop.sort(sortNumbers).shift();

        selectionBounds[1] = coordLeft.sort(sortNumbers).shift() + offsetBounds[3] - offsetBounds[1];

        selectionBounds[2] = coordBottom.sort(sortNumbers).pop();

        selectionBounds[3] = coordRight.sort(sortNumbers).pop();

        targFrame.geometricBounds = selectionBounds;

    }

    if(fitToContent) {

        targFrame.fit(FitOptions.FRAME_TO_CONTENT);

    }

}

 

function sortNumbers(a,b){

        return a-b;

}

 

function sortFields(a,b) {

    var tProp = sortProp;

    var aN = getCoordinateValue(a, tProp);

    var bN = getCoordinateValue(b, tProp);

    var returnVal = aN - bN;

    if(returnVal == 0) {

        if(tProp == "top" || tProp == "bottom") tProp = "left";

        else if(tProp == "left" || tProp == "right") tProp = "top";

        aN = getCoordinateValue(a, tProp);

        bN = getCoordinateValue(b, tProp);

        returnVal = aN - bN;

    }

    if(tProp == "right" || tProp == "bottom") returnVal *= -1;

    return returnVal;

}

 

function getCoordinateValue(obj, type) {

    var returnVal;

    var bounds = obj.geometricBounds;

        switch(type){

                case "left":

                    returnVal = bounds[1];

                    break;

                case "top":

                    returnVal = bounds[0];

                    break;

                case "right":

                    returnVal = bounds[3];

                    break;

                case "bottom":

                    returnVal = bounds[2];

                    break;

        }

    return returnVal;

}

 

function replace(searchStr, findStr, replaceStr){

    var tArr = searchStr.split(findStr);

    var returnStr = tArr.join(replaceStr);

    return returnStr;

}

//---------------------------------------------------------------------------------------- -----------------------------------------------------------

     }

}

 

 

VK


Viewing all articles
Browse latest Browse all 92406

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>