Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Написание скриптов. Пользовательский интерфейс(26.12.2010).rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
55.78 Mб
Скачать

Изменение размера окна

Перемещать окно очень просто — берешь мышкой за полоску с названием и тащишь. Это полезно в случае, если одно окно закрывает другое. Полезно иметь возможность изменять размер созданного скриптом окна, но это требует дополнительных действий.

Следующий скрипт позволяет изменять размер окна. Это окно содержит поле ввода текста и группу из трех кнопок. Для измен5еия окра надо мышкой взять угол или сторону окна и потащить. Размер группы останется прежним, а размер поля ввода будет изменяться.

Действия, которые надо сделать, чтобы сделать окно с изменяемым размером, во-первых, добавить в свойства окна строку {resizeable: true}; во-вторых, скрипт использует отклик на событие onResizing, отслеживающий, изменялся размер окнка или нет. При обнаружении изменения размера окно перерисовывается.

w = new Window ("dialog", "Resize", undefined, {resizeable: true});

w.orientation = "row";

e = w.add ("edittext");

e.alignment = ["fill", "fill"];

e.minimumSize.width = 300;

e.minimumSize.height = 200;

g = w.add ("group");

g.alignment = ["right", "top"];

g.orientation = "column";

g.alignChildren = "fill";

g.add ("button", undefined, "This");

g.add ("button", undefined, "That");

g.add ("button", undefined, "And the other");

w.onResizing = function () {this.layout.resize ()}

w.onShow = function ()

{

w.layout.layout();

w.minimumSize = w.preferredSize;

}

w.show ();

И наконец, в функции onShow есть две таинственных команды. Этот отклик на событие вызывается один раз, а именно, при первом рисовании окна. В этой функции команда w.layout.layout() выводит окно на экран, поэтому (наряду с другими действиями) вычисляются все размеры. Следующая строка w.minimumSize = w.preferredSize устанавливает минимальный размер окна для первого отображения окна.

Шрифты

Стандартный размер шрифта обычно очень мал, и хочется сделать его чуть крупнее. Используемый шрифт обычно Tahoma или что-то похожее на неё. Самый простой способ управления размером — определить его при указании гарнитуры:

var w = new Window ("dialog");

button1 = w.add ("button", undefined, "Default");

button2 = w.add ("button", undefined, "Bigger");

button2.graphics.font = "dialog:18";

//button2.graphics.font = "Tahoma:18";

w.show ();

Скрипт устанавливает размер шрифта второй кнопки 18 пт, для отображения используется стандартный шрифт диалогов окна ("dialog:18").

В строке var w = new Window ("dialog"); вместо "dialog" можно использовать инструкции "palette" и "window". Изменить используемый шрифт можно так:

button2.graphics.font = "Tahoma:18";

Эти записи, однако, не позволяют изменить начертание шрифта. Для этого предусмотрено другое решение:

button2.graphics.font = ScriptUI.newFont ("dialog", "Bold", 18);

Можно определить одновременно гарнитуру, начертание и кегль:

button2.graphics.font = ScriptUI.newFont ("Tahoma", "Bold", 18);

Для изменения только гарнитуры годится любая из следующих конструкций:

button2.graphics.font = "Verdana";

button2.graphics.font = ScriptUI.newFont ("Verdana");

Замечание. Для имени гарнитуры надо использовать PostScript-имя шрифта, которое необязательно совпадает с именем в пользовательском интерфейсе программы. Если при указании имени возникает ошибка, велика вероятность того, что истинное имя шрифта расходится с тем, что выводится в меню шрифтов. Например, для шрифта Gill Sans PostScript-имя будет GillSans. Чтобы узнать PostScript-имя шрифта, используйте следующий однострочный скрипт:

app.fonts.item ("Gill Sans").postscriptName;

Замечание. Интерфейс ScriptUI понимает только четыре варианта начертания: Regular, Italic, Bold и Bold-Italic. Вместо названий начертаний можно использовать числа: 0 для Regular, 4 для Italic, 1 для Bold и 3 для Bold-Italic. Нельзя использовать шрифт, использующий другие названия начертаний.

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

function set_font (control, font)

{

for (var i = 0; i < control.children.length; i++)

{

if ("GroupPanel".indexOf (control.children[i].constructor.name) > -1)

set_font (control.children[i], font);

else

control.children[i].graphics.font = font;

}

}

Используйте эту функцию для назначения шрифта всем элементам окна:

var w = new Window ("dialog");

var group1 = w.add ("group");

var button1 = group1.add ("button", undefined, "B1");

var button2 = group1.add ("button", undefined, "B2");

var group2 = w.add ("group");

var button1 = group2.add ("button", undefined, "B3");

var button2 = group2.add ("button", undefined, "B4");

set_font (w, "Tahoma:18");

w.show();

Можно просто назначить шрифт группе:

set_font (group1, "Tahoma:18");

Замечание: в Windows невозможно управлять размером шрифта в заголовке окна.

Цвета

Цвета, как и шрифты, — это часть управления графикой ScriptUI. Но если шрифтами управлять легко, то о цвете, кистях и других особенностях графики этого не скажешь. И не особо помогает почти полное отсутствие каких-либо толковых примеров как использовать эти графические элементы. InDesign/ESTK имеет два скрипта, где есть примеры, как устанавливать цвета переднего плана и фона, и это всё, что есть о цвете.

В приводимых ниже примерах показано, как управлять шрифтом, его размером и начертанием, а также цветами переднего и заднего планов. Цвет определен как матрица из трех чисел в диапазоне от 0 до 1 (т.е. это RGB-цвета)/

{/ В первой версии документа Карел объяснял, что есть и четвертый параметр описания цвета — прозрачность: «и дополнительно числом в диапазоне от 0 до 1 можно определять прозрачность (0 — полностью прозрачен, 1 — абсолютно непрозрачен, но эта опция в Windows не работает)» (опыты показали, что по крайней мере в версии CS4 на маке эта опция тоже не работает), но в версии 1.2 упоминание о прозрачности исключено как из документа, так и из примеров. В переводе оставлено первое, четырехкомпонентное описание цвета. Можете сами убедиться, что четвертое число не влияет на вид картинки. /}

Пример ниже скомпонован из тех двух скриптов из комплекта поставки, ColorSelector.jsx и ColorPicker.jsx. (также интересен ресурс rapid ScriptUI, см. http://www.scriptui.com/ )

var w = new Window ("dialog");

var s = w.add ("statictext", undefined, "Static");

var e = w.add ("edittext", undefined, "Edit");

var b = w.add ("button", undefined, "Button");

// Фон окна

w.graphics.backgroundColor = w.graphics.newBrush (w.graphics.BrushType.SOLID_COLOR, [0.5, 0.0, 0.0, .2], 1);

// Шрифт и цвет первой строки, statictext

s.graphics.font = ScriptUI.newFont ("Helvetica", "Bold", 30);

s.graphics.foregroundColor = s.graphics.newPen (w.graphics.PenType.SOLID_COLOR, [0.7, 0.7, 0.7, 1], 1);

// Шрифт и цвет второй строки, edittext

e.graphics.font = ScriptUI.newFont ("Letter Gothic Std", "Bold", 30);

e.graphics.foregroundColor = e.graphics.newPen (e.graphics.PenType.SOLID_COLOR, [1, 0, 0, 1], 1);

e.graphics.backgroundColor = e.graphics.newBrush (e.graphics.BrushType.SOLID_COLOR, [0.5, 0.5, 0.5, 1], 1);

// Шрифт и цвет третьей строки. Это кнопка, для неё установки цвета нет.

b.graphics.font = ScriptUI.newFont ("Minion Pro", "Italic", 30);

w.show ();

Метод определения цвета фона — newBrush() — имеет два параметра: 1) тип цвета, обычно это SOLID_COLOR, имеющийся в модели JavaScript тип THEME_COLOR в InDesign не работает, 2) матрица описания цвета в формате RGB. Метод описания цвета объекта — newPen() — дополнительно к упомянутым параметрам имеет еще указатель толщины линии, но т.к. в нашем примере объект — это буквы, этот параметр не используется.

Похоже, есть трудности в назначении цвета кнопкам, это обсуждалось на форуме Adobe

http://forums.adobe.com/message/2335096#2335096

где Дирк Бекер предложил вариант решения этой проблемы.

Линии

Есть два способа нарисовать линию. Можно использовать графический объект ScriptUI, это весьма замороченный инструмент, но с его помощью можно делать узкие панели, имитирующие вертикальные и горизонтальные линии. Можно проводить линии, начиная с определенной точки, как в этом примере:

var w = new Window ("dialog");

w.add ("panel", [0,0,200,3]);

w.add ("panel", [0,20,200,23]);

w.add ("panel", [100,0,103,50]);

w.show();

Первая линия [0,0,200,3] длиной 200 пикселей и толщиной 3 пикселя. {/Вторая линия выглядит точно так же как первая, но только расположена ниже. Это обусловлено тем, что формат координат линии такой: [X1, Y1, X2, Y2]./} Третья линия вертикальная, длиной 50 пикселей и толщиной 3 пикселя. {/В описании линии заданы координаты точек начала и конца линии, но за счет того, что по умолчанию все объекты окна выравниваются по центру, эта линия размещена по центру окна. Если задать линию с координатами [10, 0, 13, 50], то на экране она будет размещена точно так же, как линия из кода программы с координатами [100, 0, 103, 50]./}

Узкие панели используются для создания линеек и пустых панелей, как вертикальных, так и горизонтальных.

Неудобство описания линий указанием абсолютных значений координат её начальной и конечной точек состоит в том, что при изменении окна всегда приходится работать с линиями, и это может быть очень кропотливым занятием. Чтобы избежать этого, вы можете использовать менеджер макетов программы ScriptUI, — это самый оптимальный метод — используйте атрибут выравнивания fill, тогда размеры линий будут выравниваться со смежными панелями. Сделав это однажды, вы получите гибкую систему. Вот схематический пример такого подхода:

var w = new Window ("dialog");

w.alignChildren = ["fill","fill"];

var g1 = w.add ("group");

g1.alignChildren = ["fill","fill"];

var p1 = g1.add ("panel");

p1.preferredSize = [100, 50]; // Чтобы понять разницу, используйте [100,100] для второго варианта окна

g1.separator = g1.add ("panel"); // Помещаем на экран вертикальную линию

// Это ширина линии:

g1.separator.minimumSize.width = g1.separator.maximumSize.width = 3;

var p2 = g1.add ("panel");

p2.preferredSize = [100, 50];

w.separator = w.add ("panel"); // Помещаем на экран горизонтальную линию

// Для программы этот параметр высота, но по сути это ширина линии!

w.separator.minimumSize.height = w.separator.maximumSize.height = 3;

var g2 = w.add ("group");

g2.alignChildren = ["fill","fill"];

var p3 = g2.add ("panel");

p3.preferredSize = [100, 50]; // Чтобы понять разницу, используйте [200,50] для второго варианта окна

g2.separator = g2.add ("panel"); // Помещаем на экран вертикальную линию

g2.separator.minimumSize.width = g2.separator.maximumSize.width = 3;

var p4 = g2.add ("panel");

p4.preferredSize = [100, 50];

w.show ();

Поскольку для окна и двух групп используется выравнивание fill, при изменении объектов в группе длина линий тоже изменяется. Чтобы увидеть это, измените строку p1.preferredSize = [100, 50] на p1.preferredSize = [100, 100], а строку p3.preferredSize = [100, 50] на p3.preferredSize = [200, 50], чтобы получить другой вариант оформления окна:

(Замечание. замороченный на первый взгляд оператор w.separator.minimumSize.height = w.separator.maximumSize.height необходим, т.к. объекты в ScriptUI не имеют отдельной ширины и высоты, которые могли бы быть заданы. Поэтому мы говорим, что линии должны быть не менее и не более 3 пикселей, т.е. точно 3 пикселя.)

Callbacks (отклики на события)

Отклики на события — это встроенные методы, отслеживающие события в диалогах: нажатие кнопки, выбор строки в списке, завершение редактирования, и т.д. В руководстве Tools Guide для версии CS5 перечень откликов приведен на страницах 83 и 147. Видимо, наиболее часто используется отклик onClick, демонстрирующийся в следующем скрипте:

var w = new Window ("dialog");

var b1 = w.add ("button", undefined, "Show this");

var b2 = w.add ("button", undefined, "Show that");

b1.onClick = function () {$.writeln (this.text + " clicked.")}

b2.onClick = function () {$.writeln (this.text + " clicked.")}

w.show ();

Выше показаны окно и консоль после нажатия обеих кнопок. Нажатие на кнопку выводит на консоль её имя.

Код функции отклика на примере нажатия кнопки b1 — это просто {alert(this.text+ " clicked. "} может быть сколь угодно сложным. Принцип обработки других откликов точно такой же.

Другой часто использующийся отклик — это onChange, применяемый в нескольких типах управления. Вот пример, отслеживающий ввод текста в редактируемое поле:

var w = new Window ("dialog");

var e1 = w.add ("edittext");

var e2 = w.add ("edittext");

e1.active = true;

e1.characters = e2.characters = 20;

e1.onChange = function () {e2.text = e1.text}

w.show ();

Скрипт отображает два пустых текстовых поля. После набора текста в первом окне и нажатия клавиши перевода строки или клавиши табуляции этот текст будет скопирован во второе поле.

Обратите внимание, что этот оклик не активизируется раньше, чем вы завершите ввод текста.

Для отслеживания событий со время ввода текста надо использовать обработчик событий OnChanging:

var w = new Window ("dialog");

var e1 = w.add ("edittext");

var e2 = w.add ("edittext");

e1.active = true;

e1.characters = e2.characters = 20;

e1.onChanging = function () {e2.text = e1.text}

w.show ();

Теперь вторая строка будет повторять введенный в первое поле текст.

Работа со списками также может отслеживаться. Вот скрипт, отображающий трехстрочный список с выбранной первой строкой. Выбор любой строки в списке будет отображен на консоли.

var w = new Window ("dialog");

var list = w.add ("listbox", undefined, ["ОДИН", "ДВА", "ТРИ"]);

list.selection = 0;

list.onChange = function () {$.writeln (this.selection.text + " ВЫБРАНО.")}

w.show ();

Вот вывод на консоль после щелчка на строке ТРИ.

Event handlers (обработчики событий)

Обработчики событий сходны с откликами на события в том, что они отслеживают события в диалогах. Но они более гибки, хотя эта гибкость оборачивается некоторой сложностью. Обработчики событий обсуждаются на странице 149 руководства Tools Guide для версии CS5. Два примера иллюстрируют обработчики: первый отслеживает работу с мышью, второй — с клавиатурой.

Отслеживание операций с мышью

Вот как контролируются состояния действий с мышью и некоторые состояния программного окружения:

var w = new Window ("dialog");

var b = w.add ("button", undefined, "Qwerty");

b.addEventListener ("mousedown", function (k) {whatsup (k)});

function whatsup (p)

{

if (p.button == 0) {$.writeln ("Нажата левая кнопка.")}

if (p.button == 2) {$.writeln ("Нажата правая кнопка.")}

if (p.altKey) {$.writeln ("При щелчке мышкой нажата клавиша Alt.")}

$.writeln ("X: " + p.clientX);

$.writeln ("Y: " + p.clientY);

}

w.show ();

Здесь mousedown означает «по щелчку» и может трактоваться как отклик onClick с дополнительными возможностями (похожие типы событий — это mouseup /отклик на отпускание кнопки мыши/ и mouseover /отклик на случай, когда курсор проходит над объектом/).

Эти выводимые на консоль свойства — какая кнопка мыши нажата, нажата ли хоть одна из управляющих клавиш — просто отображение сделанного выбора, полный список выводимых свойств этого обработчика событий изложены на странице 153 упомянутого ранее руководства.

В нашем примере значения clientX и clientY отображают координаты курсора в пространстве экранной кнопки (в этом скрипте она называется Qwerty), это можно использовать для определения — в правой или левой половине кнопки был щелчок.

Мониторинг клавиатуры

Для отслеживания работы с клавиатурой определим перехватчик события (event listener) при помощи события keydown. Вот скрипт, демонстрирующий некоторые свойства этого события работы с клавиатурой (скрипт работать не будет, если не будет явного указания, что он исполняется не в ESTK, а в программе InDesign — для объявления этого в тексте скрипта должна строка #target indesign):

#target indesign

var w = new Window ("dialog");

var edit = w.add ("edittext");

edit.active = true;

edit.characters = 30;

w.addEventListener ("keydown", function (kd) {pressed (kd)});

function pressed (k)

{

$.writeln (k.keyName);

$.writeln (k.keyIdentifier);

$.writeln (k.shiftKey ? "Shift pressed" : "Shift not pressed");

$.writeln (k.altKey ? "Alt pressed" : "Alt not pressed");

$.writeln (k.ctrlKey ? "Ctrl pressed" : "Ctrl not pressed");

}

w.show ();

У каждой клавиши есть имя (А, D, Space, Shift, …) и код (шестнадцатеричное значение в формате U+0000 или имя, если это одна из управляющих клавиш), если клавиша нажата одновременно с управляющей клавишей, то выводится информация об этом.

Следующий скрипт отображает список, в котором можно перемещаться с помощью клавиш _ стрелка_вверх/стрелка вниз или PgUp/PgDn. При нажатии на клавишу PgUp выбирается первая строка списка, при нажатии PgDn — последняя.

var w = new Window ("dialog");

var list = w.add ("listbox", undefined, ["one", "two", "three", "four"]);

list.selection = 0;

w.addEventListener ("keydown", function (k) {move_highlight (k.keyName)});

function move_highlight (key)

{

function go_down ()

{

if (list.selection.index < list.items.length-1)

list.selection = list.selection.index+1;

else

list.selection = 0;

} // go_down

function go_up ()

{

if (list.selection.index == 0)

list.selection = list.items.length-1;

else

list.selection = list.selection.index-1;

} // go_up

switch (key)

{

case "Up": go_up (); break;

case "PageUp": list.selection = 0; break;

case "PageDown": list.selection = list.items.length-1; break;

case "Down": go_down (); break;

}

}

w.show ();

Улучшенное управление работы с выпадающим списком

Имеющееся в ScriptUI cтандартное средство управления dropdown можно немного улучшить. В большинстве существующих выпадающих списков при вводе символа в списке выделяется первая позиция, начинающаяся с этой буквы. К сожалению, существующая в Script UI реализация выпадающего списка такой возможности не имеет. Исправить положение можно, добавив в скрипт обработки выпадающего списка обработчик событий, реагирующий на ввод символов, и выбирающий первый объект в списке, начинающийся с введенных букв.

array = ["one", "thirty", "two", "three"];

var w = new Window ("dialog", "Drop-down select");

var e = w.add ("edittext");

var ddown = w.add ("dropdownlist", undefined, array);

ddown.minimumSize.width = 200;

ddown.selection = 0; ddown.active = true;

ddown.addEventListener ("keydown", function (k)

{

k = k.keyName.toLowerCase();

for (var i = 0; i < array.length; i++)

if (array[i].charAt(0).toLowerCase() == k)

{

ddown.selection = i;

break

}

}

)

w.show ();

Так выглядит окно после ввода с клавиатуры буквы t.

{/ Это дело вкуса, и мне не нравится, когда функция обработки события оформлена так, как в последнем скрипте. На мой взгляд, оформление функции в виде отдельного модуля делает текст понятнее. Вот как можно переписать код:

/}

Стили написания скриптов: строка ресурсов (resource string) и на основе кода (code based)

Все приведенные выше скрипты — это примеры программирования на основе кода. С точки зрения П. Карела, это наиболее удобный способ кодирования. Но есть ещё два варианта.

Строка ресурсов

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

var myName = myInput ();

function myInput ()

{

var myWindow = new Window ("dialog", "Form");

var myInputGroup = myWindow.add ("group");

myInputGroup.add ("statictext", undefined, "Name:");

var myText = myInputGroup.add ("edittext", undefined, "John");

myText.characters = 20;

myText.active = true;

var myButtonGroup = myWindow.add ("group");

myButtonGroup.alignment = "right";

myButtonGroup.add ("button", undefined, "OK");

myButtonGroup.add ("button", undefined, "Cancel");

if (myWindow.show () == 1)

return myText.text;

else

exit ();

}

но теперь в виде строки ресурсов:

var myName = myInput ();

function myInput ()

{

var winResource =

"dialog {text: 'Form', \

myInput: Group {\

n: StaticText {text: 'Name:'},\

myText: EditText {text: 'John', characters: 20, active: true}\

},\

myButtonGroup: Group {alignment: 'right',\

b1: Button {text: 'OK'},\

b2: Button {text: 'Cancel'}\

}\

}";

var myWindow = new Window (winResource);

if (myWindow.show () == 1)

return myWindow.myInput.myText.text;

else

exit ();

}

Сторонники этого стиля отмечают, что он приучает программистов отделять описание окна от кода работы с ним. Это видно в приведенном выше примере: ресурсная строка определяет только вид окна, но не несет никакой информации о том, что происходит при нажатии кнопок и вводе текста в поле. Какой из вариантов использовать — это дело вкуса. Реальное преимущество, однако, использования строки ресурсов в том, что в результате получается очень компактный код (хотя этого нельзя ощутить на приведенном выше примере.)

Недостаток этого подхода в то, что программу сложно отладить, если где-то вкралась ошибка. Выдаваемые ScriptUI сообщения малоинформативны. И намного проще изменить оформление окна, если оно сделано на основе кода.

Поскольку строка ресурсов определяет сложный объект, можно обращаться к свойствам любого объекта, как любому свойству JavaScript, как в показано тут:

return myWindow.myInput.myText.text;

Обратите внимание на использование прописных букв в строке ресурсов: используйте Button и StaticText, а не button и statictext — имена контролов и свойств подчиняются другой логике чувствительности к регистру букв, нежели в методе кодирования на основе кода.

Объект на основе кода

Вторая альтернатива, которая названа тут «объектный код» по причине отсутствия лучшего решения — это способ — смесь двух других стилей, тут не используется ресурсный код, но окно всё же определяется как сложный объект. Это иллюстрируется в следующем примере, тут снова повторена программа со страницы 6, но имена переменных сокращены для ускорения работы. И это основная причина неудобства такого подхода — пройдет немного времени, и смысл этих сокращений станет загадкой. Есть и преимущество — для создания окна требуется только одна переменная.

var myName = myInput ();

function myInput ()

{

var win = new Window ("dialog", "Form");

win.inpGrp = win.add ("group");

win.inpGrp.add ("statictext", undefined, "Name:");

win.inpGrp.txt = win.inpGrp.add ("edittext", undefined, "John");

win.inpGrp.txt.characters = 20;

win.inpGrp.active = true;

win.btnGrp = win.add ("group");

win.btnGrp.alignment = "right";

win.btnGrp.add ("button", undefined, "OK");

win.btnGrp.add ("button", undefined, "Cancel");

if (win.show () == 1)

return win.inpGrp.txt.text;

else

exit ();

}

Смешанные стили

Эти два стиля программирования можно смешивать. Вот пример того же скрипта, в текст на базе кода вставлена строка ресурсов:

var myName = myInput ();

function myInput ()

{

var myWindow = new Window ("dialog", "Form");

var myInputGroup = myWindow.add ("group");

myInputGroup.add ("statictext", undefined, 'Name:');

var myText = myInputGroup.add ("edittext {text: 'John', characters: 20, active: true}");

myWindow.btnGrp = myWindow.add ("group");

myWindow.btnGrp.alignment = "right";

myWindow.btnGrp.add ("button", undefined, "OK");

myWindow.btnGrp.add ("button", undefined, "Cancel");

if (myWindow.show () == 1)

return myText.text;

else

exit ();

}

Ресурсы

Фактически настоящим всеобъемлющим информационным ресурсом о ScriptUI является глава в руководстве Tools Guide, которое есть в комплекте файлов ESTK, его можно найти в меню справочника (Help).

Объектную модель ESTK можно просматривать с помощью вьюера. В замечательной коллекции информационных ресурсов Jongware есть информация об объектных моделях разных версий индизайна.

Другой источник информации — коллекция скриптов в составе ESTK, ищите его на своей машине.

Также есть много блогов и форумов, посвященных скриптингу.

Блоги

Marc Autret's Indiscript: http://www.indiscripts.com/

Marijan Tompa's InDesign Snippets: http://indisnip.wordpress.com/

Форумы по отдельным темам

http://forums.adobe.com/community/indesign/indesign_scripting

Изменение цвета кнопок

http://forums.adobe.com/message/2335096#2335096)

Изменение размера окна

http://forums.adobe.com/message/2280793#2280793

http://forums.adobe.com/message/2741942#2741942

Кнопки-пиктограммы

http://forums.adobe.com/message/2326630#2326630

http://forums.adobe.com/message/2899148#2899148

Панели с прокруткой

http://forums.adobe.com/message/2899148#2899148

индикатор выполнения задания

http://forums.adobe.com/message/3152162#3152162

Два интерактивных компоновщика диалоговых окон

Совершенно иной тип ресурсов можно найти на сайтах http://www.scriptui.com/ и http://www.scriptuibuilder.com/ . Эти программы помогут вам создать диалоговые окна, но не дадут знаний об инструментах ScriptUI, если вы, конечно, не займетесь вскрытием кода этих программ.

Перевод:

Михаил Иванюшин

ivanyushin#yandex.ru

2010

46