Последняя настройка - задание разделителя (для третьего случая): по умолчанию выберем первый элемент массива div -
with (dialogRows.add()) {
staticTexts.add({staticLabel: "Разделитель подразделов:"}); var DLG_div = dropdowns.add({stringList: div, selectedlndex: 0});
}}}
Выводим окно на экран:
var myResult = DLG.show(); Напомню, что поиск/замену текста в публикации можно выполнять как средствами JavaScript, так и встроенными функциями InDesign. При выборе того или иного механизма нужно учитывать, что JavaScript форматирование не сохраняет, поэтому он годится фактически только для поиска/замены одних текстовых символов на другие (правда, может делать это виртуозно). В отли чие от него, InDesign более прямолинеен, зато проводит поиск/замену с учетом форматирования. Для удобства эти возможности реализованы через отдельные объекты findPreferences И changePreferences (несколько непривыч-но, но, как вы заметили, в основе любой манипуляции как JavaScript, так и InDesign лежит объект, именно поэтому такое программирование называется объектно-ориентированным - ООП).
Первым шагом будет сброс всех настроек в полях поиска и замены во избежание случайного использования оставшихся от предыдущих операций. Поскольку эти настройки глобальны (не привязаны к конкретному документу), то родительским для таких объектов будет объект арр, т. е. сам InDesign (как вы помните, для доступа к любому объекту необходимо указать полностью всю вышестоящую иерархию): арр.findPreferences = null; арр.changePreferences = null; Здесь null - специальное слово, означающее отсутствие значения.
Свойства объекта findPreferences полностью покрывают все возможности, доступные в окне Fiiid/Change, нас же интересуют только относящиеся к поиску определенного стиля (свойство appiiedParagraphstyle). В качестве параметра задаем порядковый номер стиля, выбранный пользователем в диалоговом окне, после чего выполняем сам поиск (метод search о): арр. findPreferences.appiiedParagraphstyle =
myParagraphStyles[DLG_myParagraphStyles.selectedlndex]; do{
Дня каждого текстового фрейма имеем:
mySearch = mySelection.search()
Обратите внимание на то, что мы использовали метод из арсенала InDesign, а не JavaScript, поэтому результат будет отличен от привычного по Web-программированию: мы получим набор строк, хранящихся в массиве. Переменную mySearch как массив можно не определять, поскольку результат этого метода записывается автоматически.
Рассмотрим варианты дальнейших действий при различных результатах поиска.
Если пользователем был выбран вариант переноса в колонтитул только первого найденного на странице текста, то им будет первый элемент массива найденных строк mySearch- mySearch [0], если последний - mySearch [mySearch. length-i], В том случае, если же новый кандидат в колонтитулы не найден (mySearch.iength==0), колонтитул должен оставаться предыдущим, т. е. замена происходить не должна:
do{
if (mySearch. length-0) (break()} // Переход к следующей странице switch(myRadioButtons.selectedButton){ case 0:
// Запоминаем первый найденный текст mySearchCorrtents = mySearch [0] . contents break() ; case 1: