Разработка Действия Automator

Разработать конкретную программу действий Automator легко. Поскольку действие это загружаемый bundle-пакет, его возможности ограничены и, следовательно, объем кода, который вам нужно написать ограничен. Apple также облегчает путь программирования действия, потому что все ресурсы, предоставлены в ваше распоряжение. При создании проекта действия, среда разработки Xcode предоставляет вам все необходимые файлы и настройки, чтобы собирать действие. Вам просто нужно соблюдать определенные шаги описанные в этом разделе, чтобы собрать конечный продукт.

Шаги по разработке действия не обязательно должны происходить в указанном ниже порядке. Например, вы можете написать описание действия в любое время и вы можете указать свойства Automator в любое время.

Создание проекта Automator действия

Для создания проекта Automator действия, запустите приложение Xcode и выберите New Project из меню File. В первом окне нового ассистента проекта, выберите один из видов проектов Automator действия, в зависимости от вашего выбора языка:

  • AppleScript Automator Action
  • Cocoa Automator Action
  • Shell Script Automator Action
Automator new project cocoa plug-in

В оставшемся окне ассистента нового проекта, как обычно-укажите имя файла, местоположение проекта. Когда вы закончите, Xcode отобразит окно похожее на то, что на рисунке ниже:

Automator xcode

Создание пользовательского интерфейса

В браузере проекта Xcode, выделите main.nib, чтобы открыть nib файл действия в Interface Builder. nib файл содержит File’s Owner и First Responder, но он также содержит два других пункта, касающихся действия:

  • Пустой объект NSView (известный как вид контента действия, или просто, вид действия), на которой вы установите элементы управления, текстовые поля и другие элементы пользовательского интерфейса для настройки параметров действия.
  • Экземпляр класса NSObjectController названный Parameters. Parameters, используется для создания bindings-связи между объектами на пользовательском интерфейсе, и экземпляром действия.
  • Для действий на основе AppleScript, AppleScript Info экземпляр, который используется AppleScript Studio для использования содержимых имен и обработчиков событий для объектов в nib файле.
Примечание: Некоторые действия, такие как Connect to Server, не имеют пользовательского интерфейса, потому что нет никаких возможных настроек, которы может сделатье пользователь. Однако эти действия все еще появляются в рабочем процессе с указанием их названий и принимают и предоставляют типовые данные. Если ваши действия не должны иметь пользовательский интерфейс, удалите экземпляр вида действия из окна nib файла или удалите main.nib из проекта.

В панели с элементами управления выберите "Automator", чтобы активизировать палитру элементов управления для Automator.

automator interface builder

Создание пользовательского интерфейса действия происходит так же, как для любого пользовательского вида в Interface Builder. Однако, имейте в виду, что, поскольку, действия разделяют пространство в рабочем процессе Automator с другими действиями, то они должны быть компактными, даже минимальными. Установите только те элементы управления, текстовые поля и другие объекты пользовательского интерфейса, которые абсолютно необходимы. И старайтесь быть консервативным в Вашем использовании вертикального пространства, например, предпочитайте всплывающие меню, радио кнопкам для представления пользователям выбора между несколькими вариантами.

Важной характеристикой действия Automator это Show When Run (показ при запуске). Эта функция позволяет пользователям рабочих процессов (в отличие от написания процессов), установить параметры действия, когда они запускают рабочий процесс как приложение. По умолчанию, действия имеют кнопку раскрытия Options в их нижнем левом углу, которая при активизиции, предоставляет дополнительные элементы управления, эти элементы управления позволяют разработчику рабочего процесса, выбрать компоненты вида действия, которые представлены пользователям, когда рабочий процесс выполняется. Разработчики могут настраивать функцию Show When Run.

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

Определение свойств действия

Приложение Automator использует специальные свойства в информационном списке свойств (Info.plist), чтобы получить различные части информации, необходимой для представления и обработки действий. Эта информация включает в себя:

  • Наименование действия
  • Иконка действия
  • Приложение, категории и ключевые слова для действия
  • Типы данных, которые действие принимает и типы данных, которые оно предоставляет
  • Описание действия

Automator свойства имеют префикс "AM". Шаблон проекта для действий включает в себя почти все свойства, которые вам нужны (или, возможно, потребуются). Шаблон содержит полезные комментарии в качестве заполнителей для ключей. При создании действия, необходимо поставить реальные значения для этих ключей. "Справочник свойств действия" описывает свойства Automator, включая их назначение, типы значений и образец значения.

Поскольку значения некоторых свойств Automator отображаются в пользовательском интерфейсе, вы должны включить их переводы в Infoplist.strings файл для каждого действия локализации. См. "Локализация действий" для получения дополнительной информации.

В дополнение к свойствам, которые являются специфическими для Automator, файл Info.plist действия содержит свойства, которые являются общими для всех bundle-пакетов, в том числе приложений как bundle-пакет действия. Значения большинства из этих общих наборов свойств предоставляются автоматически при создании проекта. Тем не менее, необходимо указать значение свойства CFBundleIdentifier. Automator использует это свойство, чтобы найти действие и его ресурсы. Идентификатор должен быть уникальным, и должен использовать стандартный формат:

com.CompanyName.Automator.ActionIdentifier

Например, если название вашей компании является Acme и ваш действие называется Find Foo Items, подходящие значение CFBundleIdentifier могло бы быть com.Acme.Automator.FindFooItems.

Шаблоны Automator проекта задают два свойства, AMName и идентификатор действия часть CFBundleIdentifier, с замещающим текстом. При создании проекта, название проекта заменяет заполнитель. (Если имя проекта содержит пробелы, Xcode заменяет их символом подчеркивания.)

Использование инспектора свойств Automator

Чтобы избежать ошибок при редактировании Info.plist в Xcode выделите файл проекта - TARGETS и откроется инспектор свойств:

Automator Инспектор свойств Mac OS X

Небольшая, но важная часть разработки действия,- написать описание действия (Description). Automator отображает описание в его нижнем левом углу вида всякий раз, когда пользователь выбирает действие. Описание кратко описывает, что делает действие и рассказывает пользователю что он еще должен знать о действии.

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

Описание состоит из нескольких частей, каждую из которых вы указываете через свойство Automator в информационном списке свойств (Info.plist):

  • Icon Name. 32 х 32 пикселей TIFF изображение отображается в верхнем левом углу описания. Это значок приложения, определяется свойством AMIconName
  • Action Name. Строка, указанная в свойстве AMName
  • Summary. Одно или два предложения, расположенных непосредственно под названием, которое лаконично отмечает, что делает действие.
  • Input и Output. Типы данных, которые действие принимает и выдает. Automator предоставляет значения по умолчанию для этих пунктов, если вы ни один не укажете.
  • Parameters. Обобщает опции конфигурации пользовательского интерфейса в действии пользователя.
  • Alert. Предупреждает пользователя о любых возможных последствиях действия, например, если он удалит календарь.
  • Related actions. Указываются действия, которые связаны с этим, например, действие Import Image может упомянуть действие Export Image.

Написание кода действия

Наиболее важным шагом в создании действий, написание кода на Objective-C или AppleScript (или Objective-C и AppleScript вместе), который реализует логику ваших действий. Шаблон проекта для действий Automator создает файлы шаблонов для осуществления действия:

  • projectName.h и projectName.m файлы для Objective-C действий
  • main.applescript для AppleScript действий
  • main.command для действий сценариев оболочки

Шаблон создает пустую реализацию действия, которую будет необходимо наполнить собственным кодом.

Локализация действий

Локализованные строки

Если ваши действия программно генерирует строки, и вы хотите отображать локализованные версии, необходимо локализовать ваш программный код с использованием методов доступа, которые различны для Objective-C действий и действий на основе сценариев.

Примечание: программно сгенерированные строки имеют свою основу в коде, например сообщение, которое появляется в диалоговом окне ошибки. Они не включают в себя текст, который отображается в пользовательском интерфейсе разархивированный из nib файла. nib файлы локализуются так же, как и другие файлы ресурсов, см. "Локализованные файлы ресурсов" с кратким описанием процедуры.

Оба и Objective-C и AppleScript действия требуют создания для каждой локализации строкового файла, который представляет собой файл с расширением .strings. (Обычной или по умолчанию, имя строкового файла Localizable.strings.) Каждая запись в файле строк содержит ключ и значение; ключ строки в языке разработки и значение переведенной строки. Запись может также иметь комментарий для помощи переводчикам. Используйте точку-запятую для завершения записи. Вот несколько примеров:

/* Title of alert panel which brings up a warning about saving over the same document */

"Are you sure you want to overwrite the document?" =
"Вы действительно хотите перезаписать документ?";


/* Encoding pop-up entry indicating automatic choice of encoding */

"Automatic" = "Автоматически";


/* Button choice allowing user to cancel. */

"Cancel" = "Отмена";

Когда вы закончите Localizable.strings файл локализации, его необходимо интернационализировать, так же, как любой другой файл ресурсов пакета. См. "Локализованные файлы ресурсов".

Для Objective-C кода, используйте NSLocalizedStringmacro или один из NSLocalizedString... макросов локализации. Ниже приводится пример, который демонстрирует использование NSLocalizedString в сочетании с NSString методом stringWithFormat:.

- (NSString *)displayName
{
    int cnt = [pdfView pageCount];
    NSString *name;

    if (cnt == 1) {
        NSString *format = NSLocalizedString(@"%@ (1 page)",
            @"Window title for a document with a single page");
        name = [NSString stringWithFormat:format, fileName];
    } else {
        NSString *format = NSLocalizedString(@"%@ (%d pages)",
            @"Window title for a document with multiple pages");
        name = [NSString stringWithFormat:format, fileName, cnt];
    }

    return name;
}

Для сценариев AppleScript командой эквивалентной NSLocalizedString является localized string. Одно из преимуществ подхода заключается в том, что подпрограмма берет строку для локализации в качестве параметра и использует командную строку локализованную для нее, как показано в:

on localized_string(key_string)

return localized string key_string in bundle with identifier "com.apple.Automator.myAction"

end localized_string

В другом месте в main.applescript и в других сценариях для действия, вызывают эту подпрограмму, когда вам нужно получить строку в текущей локализации:

if the calendar_name is my localized_string("No Calendars") then
        error my localized_string("The copy of iCal on this computer contains no calendars to clear.")

Локализация свойств Automator

Стандартный вариант строкового файла для проектов Infoplist.strings. В этом файле вы назначаете локализованные строки (то есть, переводы) к ключам, которые появляются в Info.plist файле. Для Automator, он включает в себя не только свойства верхнего уровня, такие как AMName но и подсвойства свойства Automator. Например, следующий отрывок из Infoplist.strings файла для действия Crop Images:

AMName = "Crop Images";

ApplyButton = "Add";

IgnoreButton = "Don't Add";

Message = "This action will change the image files passed into it.  Would you like to add a Copy Files action so
 that the copies are changed and your originals are preserved?";

Пары ключ-значение в этом примере включают в себя не только локализованное значение на английском для свойства AMName но локализованные строки для подсвойств AMWarning.

Локализованные файлы ресурсов

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

  • Nib файлы
  • Файлы изображений
  • Строковые файлы (Localizable.strings)
  • Infoplist.strings

Интернационализация файла ресурса просто влечет за собой назначение языка или языка в файл. При построении действия проекта Xcode автоматически переводит ресурс в подкаталог локализации каталога Resources bundle-пакета. Подкаталоги локализации имеют расширение .lproj (например, French.lproj).

Для интернационализации файла ресурсов, выполните следующие действия:

  • Выберите папку Resources в Xcode.
  • Добавьте файл в проект (Project > Add Files).
  • В инспекторе свойств проекта добавьте локализации Локализация проекта Automator
  • Можете выделить сам файл и выбрать какие локализации должны иметь свой вариант выбранного файла в инспекторе свойств.
  • Тестирование, отладка и инсталяция действия

    Чтобы запустить действие из Xcode необходимо отредактировать схему запуска:

    Automator Edit Schema

    Появится диалог, в котором необходимо выбрать приложение Automator.app, в котором будет запускаться наш bundle-пакет.

    Automator select .app in Xcode

    Чтобы указать приложению Automator, о необходимости загрузки Вашего bundle-пакета, перейдите во вкладку Arguments и добавьте аргумент -action "полный путь к скомпилированному bundle-пакету", как показано на рисунке ниже:

    Automator аргумент -action

    Далее можете запустить проект, Xcode автоматически запустит Automator и если вы правильно указали путь к тестируемому пакету, загрузит его в установленную Вами категорию. Если у Вас проект на Objective-C, то можете отлаживать его как обычное Cocoa приложение, создавая точки останова по мере необходимости.

    Инсталяция действия

    Когда ваши действия были тщательно отлажены и протестированы, постройте развертываемую версию пакета (используя соответствующии оптимизации). Затем создайте инсталляционный пакет для действия (или добавьте действие к пакету установки приложения). Установщик должен копировать действия в /Library/Automator или ~/Library/Automator, в зависимости от того, доступ к действию должен быть.

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

    Bundle-пакеты действий должны храниться внутри пакета приложения Contents/Library/Automator. Таким образом, если ваше действие MyAction.action и ваше приложение MyApp.app, путь внутри пакета приложения будет выглядеть так:

    MyApp.app/Contents/Library/Automator/MyAction.action
     
     
    homeЗаметили ошибкукарта сайта 
       Made on a Mac