- Сообщения
- 28
- Реакции
- 40
Поставил себе такую простую задачу: при клике на пустом TextFrame в нем должен появиться текст Hello World!
Судя из обектной модели индизайна (CS5) обрабатывать события могут следующие объекты:
Application
Document
MenuAction
ScriptMenuAction
Menu
Submenu
Все они имеют соответствующие свойства и методы для обработки событий.
Некоторые примеры, где обрабатываются события меню, я нашел. Например в теме "Скрипт в одну строку", автор Eugenyus, приводит следующий код:
Погуглив еще, удалось узнать, что для MenuAction существуют следующие стандартные типы событий (eventType): beforeDisplay, beforeInvoke, onInvoke, afterInvoke.
К сожалению в объектной модели индизайна я не нашел перечня типов событий, которые могут обрабатывать объекты индизайна.
По аналогии с MenuAction, методом перебора, удалось определить, что Document обрабатывает такие стандартные события как beforeOpen, afterOpen, beforeClose, afterClose, beforePlace, afterPlace.
Следующая заготовка скрипта, если ее положить в папку startup scripts и перегрузить индизайн, позволяет сразу после заливки материала неявно применить к нему GREP запрос.
Теперь возвращаясь к поставленной задаче.
Как получить событие соответствующее выделению объекта в индизайне?
Как создать собственное (нестандартное событие), если это возможно?
Как перехватывать события мышки или клавиатуры?
Как эмулировать события клавиатуры?
Судя из обектной модели индизайна (CS5) обрабатывать события могут следующие объекты:
Application
Document
MenuAction
ScriptMenuAction
Menu
Submenu
Все они имеют соответствующие свойства и методы для обработки событий.
Некоторые примеры, где обрабатываются события меню, я нашел. Например в теме "Скрипт в одну строку", автор Eugenyus, приводит следующий код:
Код:
#targetengine "breakPars"; //Это обязательно первая строка. В кавычках записать любое сочетание символов, но чтобы точно избежать совпадений с другими скриптами
var menuName = "Разбить абзацы на фреймы"; //Так будет назван пункт в меню
var myMenuItem = app.scriptMenuActions.add(menuName);
myMenuItem.addEventListener('onInvoke', function(){main();});
var mnu = app.menus.item("$ID/Main").submenus.item("$ID/Type"); //Пункт меню будет создан в меню Type
mnu.menuItems.add(myMenuItem);
function main(){ //"оборачиваем" скрипт в эту функцию. Если она в скрипте уже есть, оставляем как есть.
//основной код
}//"закрываем" функцию
Погуглив еще, удалось узнать, что для MenuAction существуют следующие стандартные типы событий (eventType): beforeDisplay, beforeInvoke, onInvoke, afterInvoke.
К сожалению в объектной модели индизайна я не нашел перечня типов событий, которые могут обрабатывать объекты индизайна.
По аналогии с MenuAction, методом перебора, удалось определить, что Document обрабатывает такие стандартные события как beforeOpen, afterOpen, beforeClose, afterClose, beforePlace, afterPlace.
Следующая заготовка скрипта, если ее положить в папку startup scripts и перегрузить индизайн, позволяет сразу после заливки материала неявно применить к нему GREP запрос.
Код:
#targetengine 'myPlace'
var myEventHandler = function(ev)
{
app.loadFindChangeQuery ("Dash to En-dash", SearchModes.GREP_SEARCH); //Тире на коротке тире
alert("Сделано " + app.activeDocument.selection[0].parentStory.changeGrep ().length + " замен");
};
app.activeDocument.
addEventListener('afterPlace', myEventHandler);
Теперь возвращаясь к поставленной задаче.
Как получить событие соответствующее выделению объекта в индизайне?
Как создать собственное (нестандартное событие), если это возможно?
Как перехватывать события мышки или клавиатуры?
Как эмулировать события клавиатуры?