Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2021-05-27 | 26 |
5.00
из
|
Заказать работу |
|
|
Имеющееся в 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
|
|
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!