# 3.2 `aetools` -- OSA クライアントのサポート

利用可能な条件: Macintosh.

`aetools` モジュールは Python で AppleScript クライアントとして の機能をサポートするアプリケーションを構築するための基本的な機能を含ん でいます。さらに、このモジュールは、 `aetypes` および `aepack` モジュールの中核機能をインポートし再 エクスポートします。 `gensuitemodule` によって生成されたスタブパッケージは `aetools` のかなり適切な部分をインポートするので、通常はそれを 明示的にインポートする必要はありません。生成されたパッケージ群を使用す ることができない場合と、スクリプト対応のためにより低いレベルのアクセス を必要としている場合、例外が発生します。

`aetools` モジュールはそれ自身、`Carbon.AE` モジュールに よって提供される AppleEvent サポートを利用します。このモジュールにはウィ ンドウマネージャへのアクセスを必要とするという1つの欠点があります。詳 細は第 1.1.2 章を見てください。この制限は将来のリリー スで撤廃されるかもしれません。

`aetools` モジュールは下記の関数を定義しています。

`packevent`( | ae, parameters, attributes)

  あらかじめ作成された `Carbon.AE.AEDesc` オブジェクト中のパラメー ターおよび属性を保存します。`parameters` と `attributes` は Python オブジェクトの4文字の OSA パラメータのキーを写像した辞書です。 このオブジェクトをパックするには `aepack.pack()` を使います。

`unpackevent`( | ae[, formodulename])

  再帰的に、`Carbon.AE.AEDesc` イベントをPython オブジェクトへアン パックします。関数は引数の辞書および属性の辞書を返します。 `formodulename` 引数は AppleScript クラスをどこに捜しに行くか制御 するために、生成されたスタブパッケージにより使用されます。

`keysubst`( | arguments, keydict)

  Python キーワード引数辞書 `arguments` を、写像による4文字の OSA キーとして `keydict` の中で指定されたPython 識別子であるキーの交 換により `packevent` によって要求されるフォーマットへ変換します。 生成されたパッケージ群によって使用されます。

`enumsubst`( | arguments, key, edict)

  `arguments` 辞書が `key` へのエントリーを含んでいる場合、辞 書 `edict` のエントリーに見合う値に変換します。これは人間に判読可 能なように Python 列挙名を OSA 4文字のコードに変換します。生成されたパッ ケージ群によって使用されます。

`aetools` モジュールは次のクラスを定義しています。

class `TalkTo`( | [signature=None, start=0, timeout=0])

  アプリケーションとの対話に利用する代理の基底クラスです。 `signature` はクラス属性 `_signature` (サブクラスによって通 常設定される)を上書きした、対話するアプリケーションを定義する4文字クリ エートコードです。`start` にはクラスインスタンス上でアプリケーショ ンを実行することを可能にするために、真を設定する事ができます。 `timeout` を明示的に設定する事で、 AppleEvent の返答を待つデフォ ルトのタイムアウト時間を変更する事ができます。

`_start`( | )

  アプリケーションが起動していてるか確認し、起動していなければ起動しよう とします。

`send`( | code, subcode[, parameters, attributes])

  OSA指示子 `code, subcode` (いずれも通常4文字の文字列です)を持った 変数のために、`parameters` をパックし、`attributes`に戻し、 目標アプリケーションにそれを送って、返答を待ち、`unpackevent` を 含んだ返答をアンパックし、AppleEvent の返答を返し、辞書としてアンパッ クした値と属性を返して、AppleEvent `Carbon.AE.AEDesc` を作成しま す。