Wolfgang,
das Skript ist zusammengebastellt (das sieht man ihm an) und funktioniert möglicherweise nicht unter jeder Bedingung ganz hasenrein. Ich werde die nächsten Tage aber nicht dazu kommen, es intensiver zu prüfen und umzubasteln. Deswegen werfe ich Dir (oder Euch) die grüne Banane hin, um mögliche Fehler rückgemeldet zu bekommen. Ok?
//KerningOrNoBreak.js
//DESCRIPTION: Weist definierten Zeichenfolgen das Attribut "optisches Kerning" oder "kein Umbruch" zu. Der zu bearbeitende Bereich kann eingeschränkt werden.
//
var myObject;
var myCheckSelection = false;
if(app.documents.length != 0){
if(app.activeDocument.stories.length != 0){
var myArray = myDisplayDialog();
myChoice = myArray[0];
myObject = myArray[1];
myCheckSelection = myArray[2];
if(myObject != "None"){
doIt(myChoice, myObject);
}
}
else{
alert("The current document contains no text. Please open a document containing text and try again.");
}
}
else{
alert("No documents are open. Please open a document and try again.");
}
function myDisplayDialog(){
var myCheckSelection = false;
var myDialog = app.dialogs.add({name:"Modify Pairs"});
with(myDialog.dialogColumns.add()){
if(app.selection.length != 0){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Suchbereich", minWidth:100});
}
var myRangeButtons = radiobuttonGroups.add();
with(myRangeButtons){
radiobuttonControls.add({staticLabel:"Ausgewählter Textfluß", checkedState:true});
radiobuttonControls.add({staticLabel:"Dokument"});
if(app.selection[0].contents != ""){
radiobuttonControls.add({staticLabel:"Auswahl"});
}
}
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"----------------------------------"});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Auswahl", minWidth:100});
}
var myChoiceButtons = radiobuttonGroups.add();
with(myChoiceButtons){
radiobuttonControls.add({staticLabel:"Kerning", checkedState:true});
radiobuttonControls.add({staticLabel:"Kein Umbruch"});
}
}
}
var myResult = myDialog.show();
var aChoice = myChoiceButtons.selectedButton;
if (myResult == true){
var myObject = app.documents[0];
if(app.selection.length != 0){
switch(myRangeButtons.selectedButton){
case 0:
switch(app.selection[0].constructor.name){
case "InsertionPoint":
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
myObject = app.selection[0].parentStory;
break;
default:
myObject = "None";
break;
}
break;
case 1:
myObject = app.activeDocument;
break;
case 2:
switch(app.selection[0].constructor.name){
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
if(app.selection[0].contents != ""){
myObject = app.selection[0].texts.item(0);
myCheckSelection = true;
}
else{
myObject = "None";
}
break;
default:
myObject = "None";
break;
}
break;
}
}
}
else{
myObject = "None";
}
myDialog.destroy();
return [aChoice, myObject, myCheckSelection];
}
function doIt(aChoice, aObject){
var myWords = [""];
var myCounter=0;
var KerningTextFileName="KernPairsOptical.txt"
var noBreakTextFileName="noBreak.txt"
var noBreakColor="noBreak";
if (aChoice == 0) {
TextFileName=KerningTextFileName;
myChangeFormat= {kerningMethod:"optical"};
}
// no Break
else if (aChoice == 1) {
TextFileName=noBreakTextFileName;
//myChangeFormat= {noBreak:true, fillColor:noBreakColor};
myChangeFormat= {noBreak:true};
//checkColor(noBreakColor);
}
var myScriptFileName = app.activeScript;
var myScriptFile = File(myScriptFileName);
var myFolder = myScriptFile.parent;
var myFindChangeFileName = myFolder + "/" + TextFileName;
var myFindChangeFile = File(myFindChangeFileName);
var myFileOpen = myFindChangeFile.open("r", undefined, undefined);
if (myFileOpen == false){
myFindChangeFile = File.openDialog("Wähle die Datei mit der Liste der Zeichenfolgen:")
myFileOpen = myFindChangeFile.open("r", undefined, undefined);
}
do{
myLine = myFindChangeFile.readln();
myFindChangeArray = myLine.split("#*#");
if (myFindChangeArray[0].length > 1){
myWords[myCounter] = myFindChangeArray[0];
myCounter+=1;
}
} while(myFindChangeFile.eof == false);
myFindChangeFile.close();
app.findPreferences = null;
app.changePreferences = null;
for (k=0; k < myWords.length; k++){
myChanging(aObject, myWords[k]);
}
function myChanging(oneRange,oneWord) {
if (oneWord.length>0 && oneWord !=" ") {
myResults = oneRange.search(oneWord,false,true,undefined, undefined, myChangeFormat);
}
}
}
function checkColor(oneColor) {
try{
mySwatch = app.documents[0].colors.add({name:oneColor,space:ColorSpace.rgb,colorValue:Array(250,0,0)});
}
catch (myError){
mySwatch = app.documents[0].colors.item(oneColor);
}
}