Подготовка файла определения сценариев

В этой главе описываются шаги, которые Вы предпринимаете, чтобы создать новый файл определения сценариев и добавить scriptability информацию для Вашего приложения Какао.

Эта глава использует примеры от sdef файла Sketch.sdef от примера приложения Эскиза, доступного от Apple.

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

Структура файла определения сценариев

Файл определения сценариев обеспечивает статически сохраненное представление ряда scriptability условия и классы, константы, и другая информация раньше поддерживала scriptability приложения. Вот другой взгляд на организацию основных структур XML, используемых в формате sdef. Все допустимые sdef файлы следуют за этой структурой, отличаясь прежде всего по содержанию специализированного suite элементы.

  Структура рисунка 4-1 sdef файла, пересмотренного
Structure of an sdef file

Кодовые константы, используемые в информации Scriptability

Четыре кодов символов (или коды события Apple, или просто кодирует), используются всюду по AppleScript для идентификации различных видов информации. Четыре кода символа - всего четыре байта данных, которые могут быть выражены как строка четырех символов в римском кодировании Mac OS. Например, 'docu' код, указывающий document класс. Коды, определенные Apple и заголовочными файлами, в которых они определяются, описаны в “Константах События Apple” в Создании События Apple в Руководстве по программированию Событий Apple. Они также документируются в Терминологию Ссылки и AppleScript менеджера по корпоративным мероприятиям Apple и Ссылку Кодов события Apple.

Вы используете коды в своем sdef файле для идентификации scriptable команд, классов, свойств, элементов и других элементов поддержка приложений. При выборе кода используйте существующий код от одного из заголовков Apple для стандартного объекта — например, используйте 'capp' для объекта приложения. Если необходимо обратиться к значению в коде, можно использовать соответствующий постоянный Apple cApplication, но в sdef Вы просто используете строковый литерал ('capp'). Для новых кодов Вы определяете, можно определить соответствующую константу, при необходимости.

Необходимо всегда использовать данный код с тем же сроком, и наоборот. В то время как возможно использовать пару кода срока для различных элементов (например, для имения свойства с тем же именем как класс), это не будет работать на все элементы, и можно хотеть избежать такого повторного использования. Ваши коды не должны быть уникальными относительно используемых в других приложениях; фактически, как отмечено выше, рекомендуется использовать определенные Apple значения для стандартных товаров.

Функции, характерные для многих элементов файла определения сценариев

За исключением dictionary элемент (описанный ниже), большинство элементов XML в sdef имеет имя, код (или пара кодов), и описание. Они могут также включать информация о реализации и документация. Элементы XML с cocoa тег (описанный в Элементах Какао) содержит определенный вид информации о реализации для сценариев Какао. Некоторые элементы могут быть отмечены, как скрытый, означая, что они не будут выведены на экран, когда словарь будет просмотрен в Редакторе сценариев или XCode, несмотря на то, что они будут реализованы. Элементы могут также включать синонимы, определяющие альтернативный срок или код для основного элемента.

Элемент XML в sdef может относиться к любому другому элементу в sdef, независимо от того, определяются ли они в том же suite элемент. Например, word класс, определенный в текстовом комплекте, может быть упомянут в любых других элементах XML в любых других комплектах в том же sdef файле.

Высокоуровневые элементы XML

Все sdef файлы, используемые для предоставления Какао scriptability информация, содержат высокоуровневые элементы XML, описанные в следующих разделах.

Версия XML и определение типа документа

Первые две строки sdef файла, показанного в следующем перечислении, указывают версию XML и DTD (определение типа документа) файл для формата sdef. Вы не изменяете эти строки.

  Тип версии перечисления 4-1 и тип документа в sdef файле

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">

Элемент словаря

Корневой элемент XML в sdef файле является a dictionary элемент. Словарь определяет всю scriptability информацию для одного приложения. Каждый sdef файл, который Вы создаете, должен содержать одно словарное определение. Вы обычно называете словарь в честь приложения.

A dictionary элемент содержит один или больше suite элементы. Большинство приложений Какао включает комплекты Какао по умолчанию (Стандарт и текстовые комплекты), а также один или несколько комплектов собственная scriptability информация.

Следующее перечисление показывает формат для a dictionary элемент.

Перечисление 4-2  элемент словаря от sdef файла

<dictionary title="Sketch Terminology">
    <!--
        Contains one or more suite XML elements.
    -->
</dictionary>

Элементы комплекта

Комплект является набором связанной scriptability информации. Например, Стандартный комплект Какао содержит команды по умолчанию, перечисления, и другая информация, вместе с Какао scriptability информация раньше реализовывала поддержку стандартных команд AppleScript. Какао также реализует текстовый комплект.

Ваше приложение предоставляет свою собственную scriptability информацию в один или больше suite Элементы XML. Например, если Ваше приложение предоставляет поддержку сценариев для связанных с графикой функций и связанных с базой данных функций, можно обеспечить отдельную графику и комплекты базы данных.

Для большинства приложений sdef должен также включать a suite элемент для Стандартного комплекта и возможно текстового комплекта также. Можно скопировать эти комплекты с sdef файла Эскиза, затем удалить определения XML для команд, классов и других элементов, не поддерживаемых приложением, таким образом, они не будут выведены на экран в словаре. Например, если Ваше приложение не поддерживает печать, необходимо удалить элементы для print команда и print settings тип записи. Иначе, пользователи будут видеть те условия, когда они просмотрят Вашу терминологию приложения и будут ожидать, что приложение будет поддерживать их.

A suite элемент содержит один или больше следующих элементов: class, command, enumeration, record-type, и value-type. Эти элементы описаны в, Добавляет информация к Файлу Определения Сценариев.

Следующее перечисление (от sdef файла Эскиза) показывает формат XML для a suite элемент.

Перечисление 4-3  элемент комплекта для комплекта Эскиза

<suite name="Sketch Suite" code="sktc"
        description="Sketch specific classes.">
    <!--
        Contains one or more of the following sdef elements:
            class, command, enumeration, record-type, and value-type
    -->
</suite>

Создайте файл определения сценариев

Одна опция для создания sdef файла состоит в том, чтобы просто взять существующий sdef, такой как тот, распределенный с приложением Эскиза, и изменить его для Вашего приложения. Можно сделать это со следующими шагами:

  1. Скопируйте файл Sketch.sdef и переименуйте его для своего приложения (например, MyApplication.sdef).

  2. Отредактируйте sdef файл в текстовом редакторе (в XCode, выберите файл и выберите File> Open As> Plain Text File для открытия sdef как простого текста). Переименуйте Эскиз dictionary элемент, таким образом, это смотрит что-то как следующее:

    <dictionary title="MyApplication Terminology">
  3. Переименуйте эскиз suite элемент и изменение его код, так, чтобы это посмотрело что-то как следующее:

    <suite name="MyApplication Suite" code="MyAp"
        description="MyApplication information.">
  4. Замените scriptability информацию в переименованном suite элемент с информацией для Вашего приложения, как описано в Добавляют информацию к Файлу Определения Сценариев.

Создание sdef файла с нуля довольно подобно, и также включает копирование информации для текстовых комплектов и Стандарта. Создать новый sdef файл:

  1. Создайте файл простого текста с расширением .sdef (например, MyApplication.sdef).

  2. Добавьте информацию о типе версии и типе документа XML. (Все sdef файлы запускаются с этой информации.)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
  3. Ваш sdef должен содержать a dictionary элемент как корневой элемент. Словарь обычно называют в честь Вашего приложения, как показано на предыдущих шагах. Полное dictionary элемент из Эскиза показан в Элементе Словаря.

  4. Если Ваша поддержка приложений какая-либо из команд, классов или другой scriptability информации, определенной в Стандарте и текстовых комплектах, необходимо скопировать, как большинство делает suite элементы для тех комплектов в Ваш sdef от существующего sdef файла, такой как Sketch.sdef.

    Для получения дополнительной информации посмотрите Элементы Комплекта.

  5. Добавьте один или больше suite элементы для scriptability информации Вашего приложения.

  6. Заполните scriptability информацию в suite элемент (или элементы) для Вашего приложения путем добавления, какой бы ни из следующих видов элементов XML использование приложения:

    1. Классы (см. элементы класса),

    2. Команды (см. элементы команды),

    3. Перечисления (см. элементы перечисления),

    4. Простые структуры (см. Элементы Типа записи),

    5. Простые типы (см. Элементы Типа значения),

    Ваши элементы комплекта могут обратиться к определениям от Стандарта или текстовых комплектов, которые Вы скопировали в свой sdef.

Для добавления sdef файла к проекту для приложения посмотрите, Добавляет Файл Определения Сценариев к Проекту XCode.

Добавьте информацию к файлу определения сценариев

Следующие разделы предоставляют описания и примеры элементов XML, которые Вы обычно добавите к sdef файлу для Вашего приложения. Эти примеры основываются на sdef файле от примера приложения Эскиза, доступного от Apple.

Поскольку Вы добавляете информацию к своему sdef файлу, можно проверить, что файл все еще допустим на каждом шаге. Позже, при тестировании приложения, можно исследовать информацию, которую сценарии Какао извлекают из sdef файла. Для получения информации о том, как выполнить эти шаги, посмотрите Отладку информация о Scriptability.

Элементы класса

Необходимо будет добавить a class элемент к Вашему sdef файлу для каждого типа scriptable объекта в Вашей объектной модели AppleScript — т.е. для сценаристов объектов может получить доступ в сценариях. A class элемент определяет класс объекта путем перечисления свойств, элементов и поддерживаемых команд для экземпляров того класса. Используя rich text класс от текстового комплекта как пример, вот информация, которую Вы предоставляете в a class элемент:

  • Человекочитаемое имя и описание, которое сценарист может просмотреть в словаре приложения, а также четырех кодах символа для идентификации класса. Это может дополнительно указать множественное написание:

    <class name="rich text" plural="rich text" code="ricT" description="Rich (styled) text">

    Если множественное имя опущено, оно принимает значение по умолчанию к имени класса с 's' добавленный.

  • Какао или класс Objective C приложения, реализующий класс:

    <cocoa class="NSTextStorage"/>
  • Команды класс могут ответить на, перечисленный в a responds-to элемент. rich text класс не содержит отвечание - к элементу, но здесь является примером для прямоугольного класса Эскиза, обрабатывающего rotate команда с rotate: метод:

    <responds-to name="rotate">
        <cocoa method="rotate:"/>
    </responds-to>

    Когда Какао инстанцирует объекта команды для выполнения команды AppleScript (такой как rotate), если команда воздействует на объект (такой как a rectangle) чье определение класса включает a responds-to запись, команда вызывает метод, указанный в той записи (rotate:).

    Класс может реагировать на стандартные команды AppleScript, такой как count, move, delete, и т.д., не перечисляя их в a responds-to элемент. Для получения дополнительной информации см. Обзор Команд Сценария.

  • Класс также указывает свои свойства, элементы, и возможно содержание (описанный в последующих разделах).

Следующее перечисление показывает полное class определение для rich text класс.

Перечисление 4-4  элемент класса для класса обогащенного текста

<class name="rich text" plural="rich text" code="ricT"
        description="Rich (styled) text">
    <cocoa class="NSTextStorage"/>
    <type type="text"/>
    <property name="color" code="colr" type="RGB color"
        description="The color of the first character.">
        <cocoa key="foregroundColor"/>
    </property>
    <property name="font" code="font" type="text"
        description="The name of the font of the first character.">
        <cocoa key="fontName"/>
    </property>
    <property name="size" code="ptsz" type="integer"
        description="The size in points of the first character.">
        <cocoa key="fontSize"/>
    </property>
    <element type="character"/>
    <element type="paragraph"/>
    <element type="word"/>
    <element type="attribute run"/>
    <element type="attachment"/>
</class>

Элементы свойства

Для каждого class элемент в Вашем sdef файле, необходимо будет добавить a property элемент для каждого доступного свойства того класса. Свойство является уникальным элементом данных объекта — это синонимично с атрибутом или к - одно отношение. (A property элемент может также появиться в a record-type элемент; посмотрите Элементы Типа записи для получения дополнительной информации.)

Используя color свойство rich text класс как пример, вот информация, которую Вы предоставляете в a property элемент:

  • Человекочитаемое имя и описание, которое сценарист может просмотреть в словаре приложения, вместе с четырьмя кодами символа для идентификации свойства и записи для определения ее типа. Основные типы AppleScript, такой как boolean, integer, и text, перечислены в Таблице 1-1. Можно также использовать типы, объявленные в комплектах, предоставленных Какао (такой как color), а также типы Вы определили с помощью a value-type элемент (описанный в Элементах Типа значения):

        <property name="color" code="colr" type="RGB color"
            description="The color of the first character.">
  • Ключ KVC, который будет использоваться сценариями Какао для доступа к свойству. По умолчанию имя свойства служит ключом. Однако можно предоставить ключу замены a cocoa key запись:

    <cocoa key="foregroundColor"/>

    Когда сценарий просит, обеспечение этой ключевой спецификации означает это color свойство a rich text объект, сценарии Какао будут использовать ключ "foregroundColor" получить доступ к свойству от экземпляра NSTextStorage это реализует rich text объект. Если бы Вы не обеспечивали этот ключ, то сценарии Какао использовали бы "color" для ключа.

    Для получения дополнительной информации об именовании и ключах, посмотрите Элементы Какао.

  • Дополнительная запись, указывающая доступ к свойству. Свойство может быть только для чтения (access="r"), только для записи (access="w"), или чтение-запись (access="rw"), который является значением по умолчанию. (При отображении sdef в средстве просмотра словаря доступ только для чтения показан как (r/o) и только для записи как (w/o). Доступ для чтения-записи, значение по умолчанию, не показан.)

    color свойство rich text класс не содержит запись доступа (значение, что доступ является чтением-записью, значением по умолчанию), но name свойство window класс от Стандартного комплекта показывает, как указать доступ только для чтения:

    <property name="name" code="pnam" type="text" access="r"
        description="The full title of the window.">
        <cocoa key="title"/>
    </property>

    Это свойство определяет ключевой атрибут <cocoa key="title"/>. Таким образом, когда сценарий просит name свойство a window объект, сценарии Какао используют "title" ключ для получения надлежащей информации из окна.

Элементы элемента

Для каждого class элемент в Вашем sdef файле, необходимо будет добавить element элемент для каждого доступного элемента того класса. Элемент определяет класс объектов, содержавшихся в другом объекте, и представляет - многие отношение. Для каждого из его определенных элементов объект может сослаться на нуль или больше элементов того типа. Например, a rich text объект может иметь любое число character элементы, включая ни один. Определения элемента определяют часть объектной модели для приложения.

Когда Вы выводите на экран sdef в средстве просмотра словаря, element элемент обнаруживается как ссылка к классу для его типа. Например, элемент, имеющий тип класса window обнаружится как ссылка к window класс.

element элементы, показанные в Перечислении 4-4 для rich text класс (такой как <element type="character"/>) все простые, принимающие значение по умолчанию для доступа (чтение-запись) и ключ (например, "characters"), как описано в Элементах Какао.

Используя document элемент от application класс в Стандартном комплекте, вот немного более интересный пример информации, которую можно предоставить для element элемент:

  • Тип класса и дополнительная запись доступа. Значения доступа совпадают с описанными ранее для property элементы (только для чтения, только для записи, или чтение-запись, которое является значением по умолчанию):

    <element type="document" access="r">
  • Дополнительный ключ KVC, который будет использоваться сценариями Какао для доступа к элементу. По умолчанию, множественное число element type имя служит ключом, но можно обеспечить замену:

        <cocoa key="orderedDocuments"/>

    В этом случае, application класс (реализованный NSApplication) обеспечивает доступ к document объекты упорядоченным способом, ожидаемым сценарием AppleScript с помощью ключа orderedDocuments. Это переопределяет именование значения по умолчанию для доступа кодирования значения ключа к этому элементу, который использовал бы ключ documents (сделанный путем генерации множественного числа имени элемента, document).

Элементы содержания

Для некоторых классов можно хотеть определить a contents элемент. A contents элемент подобен a property элемент, за исключением того, что имя и код являются дополнительными. Если Вы опускаете их, они принимают значение по умолчанию к "contents" и "pcnt", соответственно.

Сценарии какао обрабатывают contents свойство как подразумеваемый контейнер для его класса. Сценарии могут относиться к элементам свойства содержания, как будто они были элементами класса. Например, документы TextEdit имеют a text свойство содержания. Технически, первое слово первого документа word 1 of text of document 1 но, потому что text подразумеваемый контейнер, в сценарии может также быть сказано word 1 of document 1.

Для соответствующей информации посмотрите Неявно Указанные Подконтейнеры.

Элементы команды

A command элемент представляет действие или «глагол» такой как close это указывает работу, которая будет выполняться. Необходимо будет добавить a command элемент к Вашему sdef файлу для каждой scriptable работы Ваша поддержка приложений, включая определенных в Стандартном комплекте и реализованный NSScriptCommand и его подклассы. Для команд, предоставленных Какао, можно получить информацию для sdef, как описано в, Создают Файл Определения Сценариев.

Некоторые команды могут быть отправлены непосредственно в объекты, на которые они воздействуют, и некоторые не могут. Для получения дополнительной информации о различных видах команд и как работать с ними, посмотрите Объект сначала По сравнению с Глаголом первые Команды Сценария.

Используя команды от Стандартного комплекта как примеры, вот информация, которую Вы предоставляете в a command элемент:

  • Человекочитаемое имя и описание, которое сценарист может просмотреть в словаре приложения, вместе с двумя четырьмя кодами символов для идентификации команды. Следующее от quit команда:

    <command name="quit" code="aevtquit" description="Quit the application.">
  • Класс Objective C, определенный Какао или приложением, которого сценарии Какао должны инстанцировать для обработки команды:

    <cocoa class="NSQuitCommand"/>

    Если команда не указывает класс команды, значение по умолчанию NSScriptCommand класс. NSQuitCommand класс является подклассом NSScriptCommand, и любой класс сценариев, который Вы определяете, должен также быть подклассом NSScriptCommand или один из его подклассов. Классы команды, определенные Какао, описаны в Подклассах для Стандарта Команды AppleScript.

  • Дополнительное direct parameter определение элемента. Прямой параметр является особым случаем a parameter элемент (описал затем), который не включает имя или идентификационный код и не может быть скрыт. Если прямой параметр является классом, то он указывает объект, в который отправляется сообщение. Иначе, сообщение отправляется в application объект, со значением прямого параметра, интерпретируемым как нормальный параметр, когда это обычно указывает объекты, на которые должна воздействовать команда.

    Вот direct parameter элемент от open documents команда, указывающая список документов, которые будут открыты объектом приложения:

    <direct-parameter description="The file(s) to be opened.">
        <type type="file" list="yes"/>
    </direct-parameter>

    Это определение содержит текстовое описание и объявление типа данных. Данные для прямого параметра являются списком (list="yes"; значение по умолчанию "no") из файлов, которые будут открыты.

    (Для получения информации о том, как приложения Какао обрабатывают open команда, посмотрите Как Дескриптор Приложений Какао События Apple.)

  • Дополнительный parameter определения элемента для команды. Эти параметры являются дополнительными в том смысле, что Вы не должны определять параметры вообще. Однако при определении параметра можно также указать, что это является дополнительным (значение по умолчанию "no", указание параметра требуется). Если сценарий опускает дополнительный параметр, команда должна выполнить свою работу по умолчанию относительно того параметра.

    A parameter элемент содержит человекочитаемое имя и текстовое описание, четыре кода символа и описание типа для типа данных параметра.

    quit команда включает это parameter элемент, указывающий, как обработать сохранение измененных документов:

        <parameter name="saving" code="savo" type="save options" optional="yes"
            description="Whether changed documents should be saved before closing.">
            <cocoa key="SaveOptions"/>
        </parameter>

    A parameter элемент также содержит ключ словаря, используемый сценариями Какао. В этом случае, строка <cocoa key="SaveOptions"/> указывает ключ словаря для идентификации записи в NSQuitCommand словарь параметра, значение которого saving параметр. Тип (type="save options") указывает что поддерживаемые значения для saving параметр прибывает из save options перечисление, определенное в Стандартном комплекте.

  • Дополнительное result type определение элемента для команды, указывающей тип имеющий значение, сгенерированный, когда выполняется команда. Результатом является особый случай определения параметра, имеющего только type и description атрибуты и не могут быть скрытыми или не дополнительными. Если команда не имеет никакого результата, опустите этот элемент.

    Когда Вы пишете код Objective C для обработки команды, он должен возвратить информацию типа, указанного result type элемент. Если нет никакого указанного типа результата, возвратиться nil.

    Вот определение результата для count команда, возвращающая целочисленное значение для количества.

    <result type="integer" description="the number of elements"/>

Информация о Scriptability для команды упаковывается в объекте команды, создаваемом для обработки полученного события Apple. Для получения информации о как Ваши работы приложения с той информацией, посмотрите Компоненты Команды Сценария, а также другие разделы в Командах Сценария.

Элементы перечисления

Вы, возможно, должны определить перечислимые константы в своем sdef. Например, можно хотеть обеспечить константы, которые сценарист может использовать для указания информации к команде. Стандартный комплект делает это с save options перечисление, обеспечивающее значения сценарист, может использовать с любым close команда или quit команда, чтобы указать, как обработать несохраненные документы.

enumeration элемент является набором символьных констант, называемых перечислителями. Как показано в следующем перечислении для save options перечисление, Вы обеспечиваете имя и код для перечисления в целом. Вы также обеспечиваете имя, код и описание для каждого перечислителя.

  Определение перечисления 4-5 перечисления опций сохранения

<enumeration name="save options" code="savo">
    <enumerator name="yes" code="yes " description="Save the file."/>
    <enumerator name="no" code="no  " description="Do not save the file."/>
    <enumerator name="ask" code="ask "
        description="Ask the user whether or not to save the file."/>
</enumeration>

Элемент перечисления может дополнительно содержать встроенную запись, указывая, сколько из перечислителей должно быть показано со сроком, использующим перечисление, когда словарь, определенный sdef, выведен на экран. По умолчанию (если Вы не используете встроенный элемент), все перечислители показаны. Если Вы указываете inline="0", просто имя перечисления (save options, в примере выше), выведен на экран. Однако пользователь, просматривающий определение, может щелкнуть по имени перечисления для просмотра фактического определения перечисления.

Следующая строка показывает, как изменить save options определение для ограничения дисплея просто первыми двумя перечислителями (yes/no).

<enumeration name="save options" code="savo" inline="2">

Элементы типа записи

Если необходимо определить простую структуру, а не класс, для sdef, можно добавить a record-type элемент. Например, следующее перечисление показывает record-type определение для print settings от Стандартного комплекта. cocoa key записи в этом определении соответствуют имена это NSPrintInfo использование в его словаре атрибутов.

В дополнение к property name, code, и description, a record-type элемент содержит Элементы Свойства, описанные ранее. Можно использовать record-type элементы Вы определили где угодно Вас, указывают type из element, property, или parameter в Вашем sdef.

  Определение перечисления 4-6 типа записи настроек печати

<record-type name="print settings" code="pset">
    <property name="copies" code="lwcp" type="integer"
        description="the number of copies of a document to be printed">
        <cocoa key="NSCopies"/>
    </property>
    <property name="collating" code="lwcl" type="boolean"
        description="Should printed copies be collated?">
        <cocoa key="NSMustCollate"/>
    </property>
    <property name="starting page" code="lwfp" type="integer"
        description="the first page of the document to be printed">
        <cocoa key="NSFirstPage"/>
    </property>
    <property name="ending page" code="lwlp" type="integer"
        description="the last page of the document to be printed">
        <cocoa key="NSLastPage"/>
    </property>
    <property name="pages across" code="lwla" type="integer"
        description="number of logical pages laid across a physical page">
        <cocoa key="NSPagesAcross"/>
    </property>
    <property name="pages down" code="lwld" type="integer"
        description="number of logical pages laid out down a physical page">
        <cocoa key="NSPagesDown"/>
    </property>
    <property name="error handling" code="lweh" type="printing error handling"
        description="how errors are handled">
        <cocoa key="NSDetailedErrorReporting"/>
    </property>
    <property name="fax number" code="faxn" type="text"
        description="for fax number">
        <cocoa key="NSFaxNumber"/>
    </property>
    <property name="target printer" code="trpr" type="text"
        description="for target printer">
        <cocoa key="NSPrinterName"/>
    </property>
</record-type>

Элементы типа значения

Если необходимо определить новый основной тип для поддержки сценариев, можно сделать так с a value-type элемент. A value-type элемент определяет простой тип, не имеющий никаких свойств или элементов, доступных посредством сценариев. Следующее перечисление показывает определение типа значения для color от текстового комплекта. В дополнение к имени типа и коду, определения типа значения Какао должны указать соответствующий класс Objective C, такой как NSData или NSNumber (или Ваш класс, поддерживающий Ваш тип значения). Созданные в типах AppleScript, поддерживаемых Какао, перечислены в Таблице 1-1.

Можно использовать value-type элементы Вы определили где угодно Вас, указывают type из элемента, свойства или параметра в Вашем sdef.

  Определение перечисления 4-7 типа значения цвета

<value-type name="RGB color" code="cRGB">
    <cocoa class="NSColor"/>
</value-type>

Элементы какао

Часть информации в Вашем sdef описывает подробные данные реализации из Вашего приложения. Например, имена свойства в sdef служат ключами KVC для доступа к значениям свойств scriptable объектов приложения, как описано в Обеспечивают Ключи для Кодирования Значения ключа и Поддерживают Соответствие KVC. Точно так же Ваш sdef содержит другую информацию, непосредственно идентифицирующую классы или методы, которые являются частью поддержки сценариев Вашего приложения.

Для предоставления этой информации реализации для использования сценариями Какао Вы используете cocoa элементы. A cocoa элемент может содержать следующие атрибуты:

  • class: Указывает имя класса Objective C для class элементы и command элементы.

  • key: Указывает строковый ключ для словаря (NSDictionary) из параметров команды или ключа, который будет использоваться сценариями Какао для доступа к свойству или элементу посредством кодирования значения ключа.

  • method: Указывает имя метода Objective C. Используемый для указания responds-to методы для class элементы.

Посмотрите предыдущие разделы в этой главе для примеров этих атрибутов.

Сценарии какао генерируют ключи по умолчанию для свойства и атрибутов элемента и для команд, если Вы не укажете их. Для свойства это капитализирует каждое слово имени свойства кроме первого слова, затем удаляет любые пробелы. Для элемента это указывает множественное число типа элемента. Для команды значение по умолчанию NSScriptCommand.

Следующая таблица показывает некоторые примеры именования по умолчанию.

Табличное 4-1  Значение по умолчанию, называющее для атрибутов элементов какао

Атрибут

Значение по умолчанию

<property name="current resolution">

currentResolution (ключевое имя)

<element type="monitor">

monitors (pluralized ключевое имя)

<command name="someCommand"...

(без указанного класса команды)

NSScriptCommand (имя класса для команды)