var myDialog = app.dialogs.add({ name: "Modifica Tabelle", canCancel: true }); var doc = app.activeDocument; var swatchlist = doc.swatches.everyItem().name; with(myDialog.dialogColumns.add()) { with(borderPanels.add()) { staticTexts.add({staticLabel: "TROVA"}); staticTexts.add({staticLabel: "Colore da trovare:"}); var swf = dropdowns.add({ stringList: swatchlist, selectedIndex: 0, minWidth: 200 }); staticTexts.add({staticLabel: "Tinta attuale (%):"}); var tbf = percentEditboxes.add({ editValue: 100, minimumValue: 0, maximumValue: 100 }); staticTexts.add({staticLabel: "Spessore attuale (pt):"}); var findWeight = measurementEditboxes.add({ editValue: 1, editUnits: MeasurementUnits.POINTS }); var fAll = checkboxControls.add({ staticLabel: "Tutti gli spessori", checkedState: false }); } with(borderPanels.add()) { staticTexts.add({staticLabel: "SOSTITUISCI"}); staticTexts.add({staticLabel: "Nuovo colore:"}); var swr = dropdowns.add({ stringList: swatchlist, selectedIndex: 0, minWidth: 200 }); staticTexts.add({staticLabel: "Nuova tinta (%):"}); var tbr = percentEditboxes.add({ editValue: 100, minimumValue: 0, maximumValue: 100 }); staticTexts.add({staticLabel: "Nuovo spessore (pt):"}); var changeWeight = measurementEditboxes.add({ editValue: 0.5, editUnits: MeasurementUnits.POINTS }); } with(borderPanels.add()) { staticTexts.add({staticLabel: "OPZIONI"}); var aHor = checkboxControls.add({ staticLabel: "Linee orizzontali", checkedState: true }); var aVer = checkboxControls.add({ staticLabel: "Linee verticali", checkedState: true }); var dofills = checkboxControls.add({ staticLabel: "Modifica riempimenti", checkedState: true }); } } if(myDialog.show()) { try { app.doScript(function() { var findSwatchName = swatchlist[swf.selectedIndex]; var replaceSwatchName = swatchlist[swr.selectedIndex]; var findTint = tbf.editValue; var replaceTint = tbr.editValue; var fw = Number(findWeight.editValue); var cw = Number(changeWeight.editValue); var fillCount = 0; var strokeCount = 0; var tableCount = 0; // Costruisci la stringa di script per la modifica dei bordi var str = ""; if (aHor.checkedState) { str += "if (cell.topEdgeStrokeWeight == "+fw+") {cell.topEdgeStrokeWeight = "+cw+";modified=true;}\r"; str += "if (cell.bottomEdgeStrokeWeight == "+fw+") {cell.bottomEdgeStrokeWeight = "+cw+";modified=true;}\r"; } if (aVer.checkedState) { str += "if (cell.leftEdgeStrokeWeight == "+fw+") {cell.leftEdgeStrokeWeight = "+cw+";modified=true;}\r"; str += "if (cell.rightEdgeStrokeWeight == "+fw+") {cell.rightEdgeStrokeWeight = "+cw+";modified=true;}\r"; } if (fAll.checkedState) { str = str.replace(/(.+?\{)(.+?)(\})/g, "$2"); } // Processa tutte le storie nel documento var allStories = doc.stories.everyItem().getElements(); for(var s = 0; s < allStories.length; s++) { var tables = allStories[s].tables.everyItem().getElements(); for(var t = 0; t < tables.length; t++) { tableCount++; var cells = tables[t].cells.everyItem().getElements(); for(var c = 0; c < cells.length; c++) { var cell = cells[c]; var modified = false; // Modifica riempimento if(dofills.checkedState) { try { if(cell.fillColor.name == findSwatchName) { cell.fillColor = doc.swatches.itemByName(replaceSwatchName); cell.fillTint = replaceTint; fillCount++; } } catch(e) {} } // Modifica bordi usando la stringa di script try { eval(str); if(modified) strokeCount++; } catch(e) {} } } } var msg = "Elaborazione completata:\n\n"; msg += "Tabelle elaborate: " + tableCount + "\n"; if(fillCount > 0) { msg += "Riempimenti modificati: " + fillCount + "\n"; } if(strokeCount > 0) { msg += "Bordi modificati: " + strokeCount + "\n"; } if(fillCount === 0 && strokeCount === 0) { msg += "Nessuna modifica effettuata"; } alert(msg); }, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT); } catch(e) { alert("Errore durante l'esecuzione:\n" + e.message); } } myDialog.destroy();