)

if (myImagesCheckbox.checkedState=true) { myObjectTypes.push("images");

)

if (myPDFsCheckbox.checkedState=true) { myObj ectTypes.push("pdfs");

)

if(myEPSsCheckbox.checkedState==true){ myObjectTypes.push("epss");

}

// Очистка памяти от диалога

myDialog.destroy();

11 Вызов следующей функции - она занимается основной работой,

//т. е. выбором указанных типов объектов mySelectObjects();

}

else{

// Если была нажата кнопка Cancel, никакие дальнейшие действия // не происходят myDialog.destroy();

}

}

С первой функцией, выполняющей вывод на экран и сбор введенных пользователем значений, мы закончили. Переходим к главной операции - собственно выбору заданных пользователем типов объектов.

function mySelectObjects(){

var myObjectsToSelect = new Array; with(app.activewindow.activeSpread){

Поскольку myObjectTypes- пользовательский объект, имеющий тип Array (массив), он не имеет никаких свойств, кроме единственного - длины массива. Это обстоятельство можно использовать для повышения читабельности кода вместо традиционной конструкции для перебора значений

(for(i =0; i < myObjectTypes.length; i++)):

for(i in myObjectTypes){

Дальнейшие действия будут происходить по-разному- в зависимости от того, что выбрал пользователь. Предположим, им был выбран графический тип объектов (изображения типа EPS, PDF или любое растровое). Как мы знаем, InDesign не позволяет выбирать одновременно несколько объектов таких типов (самих изображений, а не содержащих их объектов-фреймов) - поэтому если решать вопрос "в лоб", мы значительно сузим функциональность скрипта. Чтобы такого не допустить, предпримем такой обходной маневр: в случае выбора пользователем графики будем выбирать не ее непосредственно, а контейнеры, ее содержащие. При этом обойдем ограничение InDesign - ведь выбирать контейнеры можно без каких-либо ограничений.

Таким образом, для графики имеем:

if ( (myObjectTypes [i] != "images") &&

(myObjectTypes[i] != "epss")&&(myObjectTypes[i] != "pdfs")){

myPageltems = eval(myObjectTypes[i]); if (myPageltems.length != 0){

for(ii = 0; ii < myPageltems.length; ii ++){ myObjectsToSelect.push(myPageltems[ii]);

)

}

}

}

for(j = 0; j < pageltems.length; j++){ myPageltem = pageltems[j]; try{

if (mylsInArray("images", myObjectTypes) && 4>

(myPageltem. images. length == 1)) | I (mylsInArray("epss", myObjectTypes) &&

(myPageItem.epss. length == 1)) | |

(mylsInArray("pdfs”, myObjectTypes) &&

(myPageltem.pdfs.length == 1))){

// Проверяем, не находится ли объект уже в списке на выделение mylD = myPageltem.id; myltemExists = false;

for(k =0; k < myObjectsToSelect.length; k++){ if (myObjectsToSelect[k] .id == mylD){ myltemExists = true; break;

)

)

// Если да, то исключаем его из обработки if (myltemExists = false)(

myObjectsToSelect.push(myPageltem) ;

}

)

}

catch(myError){}

)

// Вместо выделения каждого изображения // выделяем содержащий его контейнер


⇐ вернуться назад | | далее ⇒