Приложения Scriptable
scriptable приложение является тем, идущим вне основ ответа на события Apple, отправленные Mac OS для предоставления доступа к его больше всего важным данным и операциям доступными для сценариев AppleScript или для других приложений. Чтобы сделать это, приложение должно предоставить и терминологию сценаристам для использования и базовый код события Apple для поддержки его. И приложения Углерода и Какао могут быть scriptable, и платформа Какао содержит встроенную поддержку, минимизирующую объем кода, который необходимо записать.
Указание терминологии сценариев
Приложения Scriptable описывают терминологию сценариев, которую они поддерживают путем предоставления словаря сценариев. Словарь указывает команды и возражает поддержке приложений, а также другой информации, использующейся AppleScript или самим приложением, и возможно другими приложениями или сценариями, хотящими использовать в своих интересах scriptability приложения. Для получения информации о разработке терминологии сценариев посмотрите Техническое примечание TN2106, Пишущий сценарий Интерфейсных Инструкций.
Пользователи обычно исследуют словарь на информацию о том, как управлять приложением в их сценариях. Можно вывести на экран словарь для scriptable приложения или дополнения сценариев с Редактором сценариев, как описано в Отображении Словарей Сценариев.
В настоящее время существует три формата словаря:
sdef: «sdef» короток для “сценариев определения”. Этот основанный на XML формат является надмножеством двух форматов, описал затем и поддерживает новые и улучшенные функции. Несмотря на то, что до версии 10.4 OS X, Вы не могли использовать sdef непосредственно в Вашем приложении, Вы могли преобразовать sdef в любой из других форматов с
sdp
инструмент. Запускаясь в OS X v10.4, приложения Какао могут работать исходно с форматом sdef, как описано в Подготовке Файла Определения Сценариев и других глав в Руководстве по созданию сценариев Какао.В OS X v10.5 (Leopard), возможно создать приложения, предоставляющие информацию словаря исключительно в формате sdef, и для приложений Углерода и Какао. Можно читать о дополнительных улучшениях в sdef использование в приложениях Какао для Leopard в разделе Scripting Информации о версии Основы для OS X v10.10.
Для документации относительно формата sdef, включая историю изменений, посмотрите
sdef
(5) страница справочника. Сценарии Интерфейсных Инструкций также включают информацию о работе с sdefs. Для документации относительноsdp
инструмент, см. страницу справочника дляsdp
(1), а также Развитие Какао информация о Scriptability в Руководстве по созданию сценариев Какао. Для примера того, как использовать sdef файл, посмотрите пример приложения Эскиза. Для других примеров см. проекты примера кода, перечисленные в Поддержке Приложений Какао.комплект сценария: Это - исходный формат, используемый приложениями Какао, и он все еще поддерживается для обратной совместимости. Комплект сценария содержит пару информационного списка свойств (plist) файлы, предоставляющие и информацию AppleScript и информацию, используемую приложением. Приложение может содержать многократные комплекты сценария.
Для документации посмотрите Файлы с терминологией Комплекта и Сценария Сценария в Руководстве по созданию сценариев Какао.
aete: Это - исходный формат словаря и все еще используется в приложениях Углерода. Название происходит от типа ресурса Менеджера ресурсов, в котором хранится информация (
'aete'
). aete полезен в 10,4 и ранее, и в приложениях Углерода и в Какао, для обеспечения словаря, который языки сценариев могут использовать, не запуская приложение.
Определение, что сделать Scriptable
В разработке scriptable приложения это - хорошая идея обеспечить доступ ко всем основным функциям приложения, хотя это может быть целесообразно запускаться только с ключевого подмножества. Вы обычно не делаете пользовательский интерфейс своего приложения непосредственно scriptable. Хороший проект позволяет пользователям писать сценарий объектов модели Вашего приложения (которые представляют данные и основные способы поведения), а не его пользовательский интерфейс (который представляет информацию пользователю).
Например, поддержка сценариев приложения получения могла бы позволить сценарию поворачивать изображение, но не выполнять работу пользовательского интерфейса нажатия кнопки Rotate. Некоторые приложения обеспечивают дополнительные возможности через свой интерфейс сценариев, которые не иначе доступны.
Дополнительные сведения см. в “Изучении, Как Подать Заявку Scriptable” в Начале работы с AppleScript и Техническим примечанием TN2106, Пишущий сценарий Интерфейсных Инструкций.
Для получения информации о том, как поддерживать печать в scriptable приложении, посмотрите Улучшенную Печать Событие Apple.
Регистрация для получения событий Apple
scriptable приложение обычно реагирует на ряд общих команд, такой как get data
, set data
, delete
, и save
, а также к другим командам, что операции поддержки, определенные для приложения. Команды представлены в событиях Apple константами, определенными в заголовках приложения или платформе. Для поддержки команды приложение регистрирует подпрограмму обработчика событий в менеджере по корпоративным мероприятиям Apple для обработки событий Apple, которые оно получает, которые указывают ту команду. Менеджер по корпоративным мероприятиям Apple диспетчеризирует полученные события обработчикам, зарегистрированным для них.
Для получения дополнительной информации о создании и регистрации обработчиков событий, посмотрите, что Событие Apple Диспетчеризирует и Отвечает на События Apple в Руководстве по программированию Событий Apple.
Разрешение объектов в приложении
События Apple часто указывают элементы в приложении. Например, a get data
событие могло бы попросить текст абзаца в открытом документе. Отличный элемент в приложении, которое может быть указано в событии Apple, известен как объект-событие Apple. (Термин объект не подразумевает, что элементы должны быть представлены внутренне как объекты на языке объектно-ориентированного программирования.) Все такие объекты считаются содержавшимися в других объектах с самим приложением, служащим окончательным контейнером. Для данного приложения объектная модель AppleScript (также названный моделью объекта-события Apple) указывает классы объектов, с которыми может работать сценарист в сценариях, доступных свойствах тех объектов, и наследовании и отношениях включения для тех объектов.
Структуры в событии Apple, идентифицирующие объекты, упоминаются как объектные спецификаторы. Нахождение объектов-событий Apple, которые они указывают, известно как разрешение объектных спецификаторов. Для разрешения объектных спецификаторов приложение должно включать функции, которые в состоянии найти объекты в их контейнерах. Приложение регистрирует эти функции в менеджере по корпоративным мероприятиям Apple и работает с менеджером по корпоративным мероприятиям Apple для вызова их в подходящее время для получения объектов, которые они указывают.
Для приложений Какао поддержка сценариев Какао выполняет большую часть работы разрешения объектных спецификаторов, но scriptable приложение должно все еще предоставить методы, которые могут определить местоположение объекта в его иерархии вместимости объектной модели.
Для примера объектной модели AppleScript см. Обзор Поддержки Какао Приложений Scriptable; дополнительные сведения, на как объекты решения приложений Какао см. в Объектных Спецификаторах; оба находятся в Руководстве по созданию сценариев Какао.
Запись
Записываемое приложение является тем, отправляющим события Apple в себя, когда пользователь выполняет действия с приложением. Если пользователь включил запись в приложении Редактора сценариев (со Сценарием> Запись), действия, генерирующие события Apple, зарегистрированы в сценарий AppleScript.
Приложения, обычно поддерживающие запись:
Факторный код, реализующий пользовательский интерфейс от кода, фактически выполняющего операции (стандартный подход для приложений, следующих за парадигмой проекта контроллера представления модели).
Отправьте события Apple в приложении для соединения тех двух частей приложения. Менеджер по корпоративным мероприятиям Apple обеспечивает механизм для того, чтобы сделать это с минимумом издержек, описанных в “Обращении События Apple для Прямой Диспетчеризации” в Создании и Отправке Событий Apple в Руководстве по программированию Событий Apple.
Удостоверьтесь, что любое значительное действие или ряд связанных действий в приложении генерируют событие Apple.
Приложение Средства поиска в OS X является записываемым. Запускаясь в версии 10.5 OS X, приложение Automator имеет отдельный Рекордный механизм, позволяющий пользователям записать действия в поток операций Automator.
Создание и отправка событий Apple
Приложение может создать и отправить события Apple непосредственно. Это обычно делается или чтобы отправить внутренние события Apple, как описано в Записи, получить службы из scriptable приложения или связаться непосредственно с другим приложением. Открыть Scripting Architecture обеспечивает различные механизмы для создания и отправки событий Apple.
Запускаясь в версии 10.5 OS X, приложения могут использовать Мост Сценариев для получения служб из scriptable приложений. Сценарии Моста позволяют Вам работать эффективно в высокоуровневом языке (Objective C), не имея необходимость обрабатывать подробные данные отправки и получения событий Apple. (См. также Поддержку Приложений Какао для соответствующей информации.)
Когда действительно необходимо будет отправить событие Apple непосредственно, посмотрите Создание События Apple и Создание и Отправку Событий Apple в Руководстве по программированию Событий Apple.
Выполнение сценариев
Для выполнения сценариев приложение устанавливает соединение с компонентом сценариев AppleScript. Это может тогда:
Используйте стандартные компонентные подпрограммы сценариев для управления сценариями, связанными с любой частью приложения или его документов.
Позвольте пользователям записать и отредактировать сценарии.
Скомпилируйте и выполните сценарии.
Приложение может сохранить и выполнить сценарии независимо от того, scriptable ли это или записываемо. Если приложение scriptable, однако, оно может выполнить сценарии, управляющие его собственным поведением, таким образом действуя и как клиентское приложение и как серверное приложение для соответствующих событий Apple. Для получения дополнительной информации посмотрите, Открывают Scripting Architecture Reference.
В какао, NSAppleScript
класс, описанный в Ссылке класса NSAppleScript, обеспечивает высокоуровневую обертку для выполнения сценариев AppleScript из приложений. Для получения дополнительной информации посмотрите Поддержку Приложений Какао.
Сводка операций в приложении Scriptable
Следующий список подводит итог, как scriptable приложения взаимодействуют с Открыть Scripting Architecture для предоставления доступа к их функциям доступными для сценаристов.
Менеджер по корпоративным мероприятиям Apple определяет структуры данных, использующиеся для построения событий Apple.
Open Scripting Architecture (OSA) обеспечивает транспорт данных и механизм диспетчеризации события для событий Apple, созданных поверх протоколов нижнего уровня.
AppleScript определяет язык сценариев, описанный в Руководстве по Языку AppleScript (и сторонние книги) и реализованный компонентом AppleScript в OS X.
Существует маленький набор событий Apple, отправленных Mac OS, такой как
open application
,quit
, иopen documents
это все приложения должно быть в состоянии ответить на. scriptable приложение реагирует на дополнительные общие события, такой какget data
иset data
, а также к его собственным определенным командам.scriptable приложение обеспечивает терминологию сценариев (или словарь) для операций, которые это поддерживает. Приложение может снова использовать некоторые константы события, определенные OSA, или использовать его собственное для пользовательских событий. (Константы, определенные Apple, многие из которых можно снова использовать в приложениях, описаны в Терминологии AppleScript и Ссылке Кодов события Apple.)
sdef формат файла обеспечивает механизм для создания одного определения терминологии, которое может быть преобразовано для использования в различных средах.
Разработчики разрабатывают свои приложения так, чтобы ключевые операции могли быть вызваны в ответ на полученные события Apple.
scriptable приложение работает с менеджером по корпоративным мероприятиям Apple к:
Обработчики регистра для событий Apple это может обработать.
Информация о выдержке от полученных событий Apple, затем выполните требуемые операции, или возврат запросил данные.
Создайте события Apple для ответов или других целей.
Работа приложений Углерода Scriptable с менеджером по корпоративным мероприятиям Apple непосредственно, но для scriptable приложений Какао, большая часть этой работы обрабатывается автоматически.
Сценаристы пишут сценарии AppleScript, указывающие scriptable приложения и операции для выполнения.
Когда сценарий выполняется, операторы сценария, что целевые приложения переводятся компонентом AppleScript в события Apple, отправляющиеся в те приложения.
Приложения могут также отправить события Apple непосредственно в другие приложения.
Приложение реагирует на события Apple, которые оно получает путем выполнения операций, возврата данных или обоих.
Поддержка OS X создания приложений Scriptable
OS X предоставляет много ресурсов, которые приложения могут использовать, чтобы работать с событиями Apple и поддерживать scriptability, включая API, предоставленный в следующих платформах:
Базовая поддержка в OS X для того, чтобы создать scriptable приложения и работать с событиями Apple предоставлена Открыть Scripting Architecture и описана в Частях Открыть Scripting Architecture.
Платформа Какао (
Cocoa.framework
) включает платформы Набора и Основы Приложения, вместе обеспечивающие стандартные блоки для сложных приложений Mac. Платформа Какао включает большую поддержку того, чтобы создать scriptable приложения.Для определенной документации по сценариям Какао посмотрите Руководство по созданию сценариев Какао.
JAVA-приложения не обычно scriptable, хотя они могут быть сделаны AppleScript-осведомленным использованием механизмов, описанных в Интеграции OS X для Java в Руководстве по Разработке Java для Mac.
Поддержка приложений углерода
Приложения углерода традиционно работали непосредственно с менеджером по корпоративным мероприятиям Apple для создания, отправляют, получают и интерпретируют события Apple. Эти темы описаны подробно в Руководстве по программированию Событий Apple.
Для получения информации о подавании Вашей scriptable заявки Углерода посмотрите предыдущие разделы в этой главе, а также пути изучения в Начале работы с AppleScript.
Приложения углерода могут использовать функции такой как OSACompile
и OSAExecute
от OpenScripting.framework
скомпилировать и выполнить сценарии. Следует иметь в виду, однако, что при выполнении сценария просто для отправки простой команды в другое приложение, более эффективно создать и отправить событие Apple непосредственно.
Если цель для выполнения сценария состоит в том, чтобы только выполнить a do shell script
команда, приложения Углерода могут сделать так более эффективно использование одного из вызовов BSD system(3)
, popen(3)
, или exec(3)
, о котором можно читать в их соответствующих страницах справочника.
Поддержка приложений какао
Платформы Набора Основы и Приложения предоставляют приложениям Какао автоматизированную обработку для определенных событий Apple. Это включает события, которые могут быть отправлены Mac OS, такой как open application
, open documents
, print documents
, и quit
События Apple.
Кроме того, Какао предоставляет существенную поддержку для того, чтобы создать scriptable приложения. Для использования в своих интересах его приложения предоставляют scriptability информацию в одном из форматов, описанных в Указании Терминологии Сценариев. Они также создают KVC-совместимые средства доступа для scriptable свойств в их scriptable классах. (Кодирование значения ключа или KVC, описано в Значении ключа, Кодирующем Руководство по программированию.), Хотя создавание полностью scriptable приложения является нетривиальной задачей, приложение может поддерживать много стандартных команд AppleScript, таких как те для получения и установки свойств объектов приложения, с относительно небольшое количество дополнительных шагов.
Приложения какао могут также использовать любой Открыть Scripting Architecture APIs, доступный приложениям Углерода, и фактически, ссылки Какао с платформой Углерода. Например, Приложение Какао могло бы вызвать функцию менеджера по корпоративным мероприятиям Apple для отправки событие Apple непосредственно (в настоящее время нет никакого Какао API, чтобы сделать это).
Запускаясь в версии 10.5 OS X, технология Моста Сценариев обеспечивает эффективный путь к приложениям Какао для взаимодействия с scriptable приложениями на высоком уровне — т.е. не имея необходимость создавать или анализировать отдельные события Apple.
Какао обеспечивает NSAppleScript
класс для задач, таких как компиляция и выполнение сценариев. Это дает приложениям другой механизм, чтобы управлять scriptable приложениями и использовать в своих интересах услуги, которые они предоставляют. Однако Вы не должны использовать NSAppleScript
выполнить сценарий просто для приведения к отправке события Apple, потому что это намного более дорого, чем использование Моста Сценариев или создание и отправка события Apple непосредственно. И если цель для выполнения сценария состоит в том, чтобы выполнить a do shell script
команда, приложения Какао могут выполнить команды оболочки более эффективно с помощью NSTask
.
Платформа Какао также включает классы такой как NSAppleEventDescriptor
, для работы с базовыми структурами данных о событии Apple, и NSAppleEventManager
, для доступа к определенным функциям менеджера по корпоративным мероприятиям Apple.
Поддержка какао обработки событий Apple и создавания scriptable приложений документируется в Руководство по созданию сценариев Какао. Для соответствующей информации см. “Платформу и Поддержку Языка” в приблизительно Событиях Apple в Руководстве по программированию Событий Apple. Для вводного примера кода посмотрите SimpleScripting, SimpleScriptingProperties, SimpleScriptingObjects и SimpleScriptingVerbs. Для более сложного примера посмотрите пример приложения Эскиза.