Определение собственных типов данных

Следующие разделы предлагают инструкции для того, когда определить пользовательский тип данных, описать процедуру для создания пакета определения, объясните, как указать defined_types свойство, и суммирует процедуру для обеспечения локализаций.

Когда определить тип данных

Apple определяет десятки специальных типов данных для действий Automator, каждого с его собственным уникальным Uniform Type Identifier (UTI). Вы используете эти UTIs в информационном списке свойств действия для указания видов данных, которые действие принимает и обеспечивает. Специальные типы данных, определенные Apple, определяют такие вещи как универсальные объекты AppleScript, отслеживаемые объекты iTunes и строки Какао. Они описаны в «Идентификаторах типов», вместе с поддерживаемым общедоступным UTIs.

Могли бы быть времена, однако, когда ни один из этих типов данных Automator по умолчанию не может соответственно описать данные, с которыми должно иметь дело Ваше действие. Общий падеж был бы scriptable приложением, которое Ваше действие передает с командами AppleScript. Если, например, это - приложение для обработки электронных таблиц, и оно имеет объекты данных, представляющие такие объекты как рабочие листы и графики, ни один из определенных типов данных Apple не мог точно представлять эти элементы данных. В случаях, таких как это можно определить собственные типы данных для Automator.

Однако Вы не обязаны определять пользовательский тип данных в этих ситуациях. Можно всегда использовать один из более универсальных типов — например, с помощью универсального типа объекта AppleScript для представления объекта электронной таблицы. Если только одно действие включается, это - особенно истина. Когда Вы создаете ряд действий, который использует специализированные данные, тогда Вы могли бы рассмотреть определение пользовательского типа для тех данных. Automator может тогда обеспечить больше руководства пользователям, о которых действия работают хорошо друг с другом.

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

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

Вы указываете пользовательские типы данных в пакете определения, который является codeless загружаемым пакетом с расширением .definition. Таким образом, например, при определении типов собственного компонента данных (вымышленного) Превосходного приложения Вы могли бы назвать пакет определения Excellent.definition.

Тип данных по существу определяется в списке свойств XML. Но если это верно, почему бы не простой файл для списка свойств вместо пакета? Причина помещения определений типа данных в пакете состоит в том, что пакеты поддерживают интернационализацию. Определение включает строки, идентифицирующие данные, принятые и предоставленные в пользовательском интерфейсе действия (см., окружил область на рисунке 1). Эти строки должны быть локализованы для всех поддерживаемых языков и локалей.

Рисунок 1  имена ввода и вывода действия
The names of action input and output

Можно понять внутреннюю структуру пакета определения путем рассмотрения любого такого пакета, установленного в /System/Library/Automator. Рисунок 2 показывает что iCal.definition пакет похож в его непрозрачном пакете. (Чтобы посмотреть в пакете, Щелчок управления это в Средстве поиска и выбрать Show Package Contents из контекстного меню.)

Рисунок 2  содержание iCal.definition
The contents of iCal.definition

Этот пакет определения поддерживает локализации на пяти языках. Пример показывает что definition.plist файл, содержащий список свойств, определяющий типы данных, хранится только под пакетом Resources папка. Добавление Локализации» обсуждает локализации в пакетах определения более подробно.

Для создания пакета определения в XCode запустите путем выбора New Project из меню File. В Новом окне Помощника проектного менеджера выберите тип проекта Пакета Какао под Пакетом (см. рисунок 3). Нажмите Далее и в последующем окне помощника обеспечивают название и местоположение для Вашего проекта; нажмите Далее снова для имения дисплея XCode окно проекта.

  Выбор рисунка 3 универсальный тип проекта пакета Какао
Select the generic Cocoa bundle project type

От этой точки это предпринимает четыре шага для создания пакета определения:

  1. Укажите расширение пакета.

  2. Добавьте файл списка свойств к проекту.

  3. Укажите свойства типов данных в файле списка свойств.

  4. Добавьте локализации к пакету определения.

Для изменения расширения пакета дважды щелкните по целевому значку в списке Групп и Файлов в XCode. Это действие открывает окно Info для цели. Выберите область Build этого окна и прокрутите таблицу вниз настроек, пока Вы не найдете установку сборки Расширения Обертки. Дважды щелкните по ячейке под Значением для этой установки и измените значение на «определение» (см. рисунок 4 для примера).

Рисунок 4  , Изменяющий расширение пакета
Changing the bundle extension

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

  1. Выберите папку Resources проекта в списке Групп и Файлов.

  2. Выберите New File из меню File.

  3. В Новом ассистенте Файла выберите Empty File in Project из списка типов файлов.

  4. В следующем окне ассистента (Новый Пустой Файл в Проекте), введите «definition.plist» в поле File Name.

  5. Удостоверьтесь, что корректное расположение проекта, название проекта и цель выбраны и нажимают Finish.

Раскройте содержание папки Resources в списке Групп и Файлов для нахождения definition.plist файл Вы только что добавили. Рисунок 5 показывает то, на что он должен быть похожим. (Если definition.plist не находится под Ресурсами, переместите его туда.)

Рисунок 5  definition.plist файл в списке Групп и Файлов
The definition.plist file in the Groups and Files list

Вы могли бы также заметить это definition.plist (как только это добавляется к Ресурсам), также появляется под фазой сборки Ресурсов Пакета Копии под целью в списке Групп и Файлов. Если Вы создаете пакет определения в этой точке и затем смотрите в пакете пакета, Вы видите начальное расположение своего пакета.

  Расположение Начальной буквы рисунка 6 для пакета пакета
Initial layout for a bundle package

Вы готовы теперь указать свойства своих пользовательских типов данных и локализовать человекочитаемые части тех свойств; см. «Указание Определенных Типов» и «Добавление Локализации», соответственно, для релевантной информации.

Как только Вы заканчиваете создавать свой пакет определения, это готово к установке. Вы устанавливаете файлы определения в тех же расположениях, Вы устанавливаете действия: /Library/Automator, /Network/Library/Automator, Library/Automator в корневых каталогах пользователей, или в комплекте приложений. См. «Действия Установки» для получения дополнительной информации.

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

Предоставление файла расширение .plist не делает его файлом списка свойств, уже не говоря об одном для определения типов данных Automator. Список свойств на OS X должен иметь надлежащий заголовок XML. Кроме того, список свойств в пакете определения должен иметь defined_typesсвойство.

Самый быстрый способ начать писать список свойств для Вашего пакета определения состоит в том, чтобы скопировать содержание существующего definition.plist файл и затем изменяет его соответственно. definition.plist файл в /System/Library/Automator/Automator.definition хороший источник для этого. Скопируйте содержание файла и вставьте его в Ваше собственное definition.plist. Список свойств должен быть похожим на пример в Перечислении 1.

Перечисление 1  содержание definition.plist — (Частичный) пакет определения Automator

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>defined_types</key>
    <dict>
        <key>*</key>
        <dict>
            <key>name</key>
            <string></string>
        </dict>
        <key>com.adobe.pdf</key>
        <dict>
            <key>name</key>
            <string>PDF files</string>
        </dict>
        <key>com.apple.applescript.alias-object</key>
        <dict>
            <key>name</key>
            <string>Files/Folders</string>
        </dict>
        <key>com.apple.applescript.alias-object.image</key>
        <dict>
            <key>name</key>
            <string>Image files</string>
        </dict>
        // more defined types here
    </dict>
 </dict>
 </plist>

Замените пары ключ/значение в defined_types словарь с Вашими собственными парами ключ/значение, удаляя неиспользованные. Ключ каждого определения типа данных является Универсальным Идентификатором типа в определенной письменной форме: com.companyName.applicationName.dataTypeName. Значение ключа UTI является другим словарем, содержащим пару ключ/значение, определяющую человекочитаемое имя типа данных.

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

Таким образом, если, например, у Вас есть тип данных Превосходного приложения, которое Вы хотите определить — скажем, рабочий лист электронной таблицы — Вы могли бы определить следующий defined_types свойство (берущий имя компании Высшая точка):

<key>com.acme.excellent.worksheet</key>
<dict>
    <key>name</key>
    <string>Excellent worksheets</string>
</dict>

Более простое и меньше подверженной ошибкам альтернативы редактированию списка свойств в XCode должны отредактировать его в Редакторе Списка свойств приложение — но только после добавления информации заголовка XML. Открываться definition.plist файл в Редакторе Списка свойств, Щелчок управления файл в XCode и выбирает Open In Finder из контекстного меню. (Редактор Списка свойств является приложением по умолчанию для XML-файлов.)

Рисунок 7  Редактируя определенные типы в Редакторе Списка свойств
Editing the defined types in Property List Editor

Добавление локализации

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

В XCode выбирают New File из меню File, выбирают Empty File in Project type и дают файлу имя «Локэлизэбле.стрингс». Переместите файл под папкой проекта Ресурсов в списке Групп и Файлов.

Затем откройтесь Localizable.strings файл в XCode и, для каждого типа данных name свойство, добавляют четыре элемента в формате, показанном в Перечислении 2:

  Содержание перечисления 2 a Localizable.strings файл

/* worksheet */
"worksheet" = "tableau";
/* graph */
"graph" = "graphique";

Затем интернационализируйте Localizable.stringsфайл путем присвоения его определенной папке языка (т.е. один с расширением .lproj Чтобы сделать это, выберите файл в XCode и выберите Get Info из меню FIle. Откройте область General окна Info. Если язык локализации не перечислен в таблице текущих локализаций, нажмите Add Localization и введите или выберите локализацию (французский язык в случае вышеупомянутого примера). Тогда выберите локализацию, перечисленную в таблице.