Сама кнопка - это типичное окно:
myButton = window.add("button", undefined, localize (btnText) )
Если включена автоматическая установка необходимой языковой версии:
$.localization = true тогда достаточно написать так:
myButton = window.add("button", undefined, btnText)
Кроме того, предусмотрено использование переменных, что расширяет наши возможности. Переменные представляют собой ссылки на результат, возвращаемый функцией localize(), при этом %1 дает ссылку на первое возвращаемое значение, %2 - на второе и т. д. (листинг 3.8).
; v ......ч ................. ,-«• v-I .
: Листинг 3.8. Пример использования функции; localize Q '
Today = {
en: "Today is %l/%2", de: "Heute ist der %2.%1"
} '
myDate = new Date();
window.alert(localize (today, d.getMonth()+1, d.getDateO ) ); В английском варианте получим:
Today is 6/1
В немецком:
Heute ist der 1.6
3.4. Новое в Creative Suite 3
InDesign CS3 значительно прибавил в возможностях по созданию элементов интерфейса благодаря включению компонента ScriptUl, который позволяет создавать пользовательские плавающие палитры, индикаторы выполнения и даже собственные контекстно-зависимые меню.
Принцип работы при создании индикатора выполнения следующий:
1. Создание нового окна.
2. Создание в окне элемента "полоса прогресса".
3. Вывод индикатора выполнения на экран.
4. Отображение результата.
5. При достижении 100% - сокрытие индикатора выполнения.
Код, реализующий эту последовательность действий, представлен в листинге 3.9.
! Листинг 31э. Создание индикатора выполнения раёоты при добавлении [ в документ 100 страниц
// Создание окна (панели)
myProgressPanel = new Window('window', ’Progress');
// Необходимые параметры var myMaximumValue = 100; var myProgressBarWidth = 100 var myProgressBarHeight = 20
// Шаг индикатора var myStep = 1;
// Задание координат для окна индикатора (в массиве),
// начального и конечного значений
myProgressPanel.myProgressBar = add('progressbar', [12, 12,
myProgressBarWidth, myProgressBarHeight], 0, myMaximumValue);
// Вывод на экран
myProgressPanel.show();
for (var i = 0; i < 101; i ++) {
// Отображение процесса выполнения myProgressPanel.myProgressBar.value = i/ myStep;
// Сам процесс, для которого выводится индикатор:
// добавление страницы в цикле 100 раз арр.documents[0].pages.add(); if(i == 100){
// Если выведены все 100 страниц myProgressPanel.hide();
}
}
Такой подход оптимален при разовом выводе индикатора в процессе работы скрипта. Однако зачастую лучше разделить процесс на две фазы:
инициализация окна с индикатором;
вывод на экран, реализация динамики прогресса и по окончании - закрытие окна.
Такое разнесение процессов позволит единожды создать окно с индикатором состояния и потом, по мере необходимости, вызывать его для отображения степени выполнения скриптом различных операций. В таком случае реализация индикатора будет немного отличаться.