Spec-Zone.ru › Python 2.7

MacPython OSA Модули

В этом разделе описана текущая реализация архитектуры открытого сценария (OSA, также часто называемая AppleScript) для Python, позволяющая управлять приложениями, поддерживающими сценарии, из вашей программы Python, с довольно питоническим интерфейсом. Разработка этого набора модулей прекращена.

Для описания различных компонентов AppleScript и OSA, а также для понимания архитектуры и терминологии, вам следует обратиться к документации Apple. «Руководство по языку AppleScript» объясняет концептуальную модель и терминологию, а также документирует стандартный набор. Документ «Архитектура открытого сценария» объясняет, как использовать OSA с точки зрения программиста приложений. В Apple Help Viewer эти книги находятся в разделе документации для разработчиков, раздел «Основные технологии».

В качестве примера сценария приложения, следующий фрагмент AppleScript получит имя активного окна Finder и выведет его:

tell application "Finder"
    get name of window 1
end tell

В Python, следующий фрагмент кода сделает то же самое:

import Finder

f = Finder.Finder()
print f.get(f.window(1).name)

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

Для отправки AppleEvents приложению вы должны сначала создать пакет Python, взаимодействующий с терминологией приложения (то, что Script Editor называет «Словарь»). Это можно сделать изнутри PythonIDE или, выполнив модуль gensuitemodule.py как отдельную программу из командной строки.

Сгенерированный результат — это пакет с рядом модулей, по одному на каждый набор, используемый в программе, плюс модуль __init__ для склеивания всего вместе. Граф наследования Python следует за графом наследования AppleScript, поэтому, если словарь программы указывает, что он включает поддержку стандартного набора, но расширяет одну или две глаголы с дополнительными аргументами, то выходной набор будет содержать модуль Standard_Suite, который импортирует и повторно экспортирует всё из StdSuites.Standard_Suite, но переопределяет методы, имеющие дополнительную функциональность. Выход gensuitemodule довольно читабельный и содержит документацию, которая была в исходном словаре AppleScript в строках документации Python, поэтому его чтение является хорошим источником документации.

Выходной пакет реализует главный класс с тем же именем, что и пакет, который содержит все глаголы AppleScript в виде методов, с прямым объектом в качестве первого аргумента и всеми необязательными параметрами в качестве ключевых аргументов. Классы AppleScript также реализованы как классы Python, как и сравнения и все остальные вещи.

Основной класс Python, реализующий глаголы, также позволяет получить доступ к свойствам и элементам, объявленным в классе AppleScript «приложение». В текущей версии это всё, что касается объектно-ориентированного программирования, поэтому в приведённом выше примере нам необходимо использовать f.get(f.window(1).name) вместо более питонического f.window(1).name.get().

Если идентификатор AppleScript не является идентификатором Python, имя искажается в соответствии с небольшим числом правил:

  • пробелы заменяются на подчёркивания
  • другие небуквенно-цифровые символы заменяются на _xx_, где xx — шестнадцатеричное значение символа
  • любое ключевое слово Python получает добавленное подчёркивание

Python также поддерживает создание приложений, поддерживающих сценарии, на Python, но следующие модули важны для поддержки AppleScript в MacPython:

  • 38.1. gensuitemodule — Генерация заглушек OSA пакетов
  • 38.2. aetools — Поддержка клиента OSA
  • 38.3. aepack — Преобразование между переменными Python и контейнерами данных AppleEvent
  • 38.4. aetypes — Объекты AppleEvent
  • 38.5. MiniAEFrame — Поддержка сервера архитектуры открытого сценария
    • 38.5.1. Объекты AEServer

Кроме того, модули поддержки были предварительно сгенерированы для Finder, Terminal, Explorer, Netscape, CodeWarrior, SystemEvents и StdSuites.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/macosa.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API