diff options
Diffstat (limited to 'Doc/library/aepack.rst')
-rw-r--r-- | Doc/library/aepack.rst | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/Doc/library/aepack.rst b/Doc/library/aepack.rst new file mode 100644 index 0000000..7eaffd8 --- /dev/null +++ b/Doc/library/aepack.rst @@ -0,0 +1,92 @@ + +:mod:`aepack` --- Conversion between Python variables and AppleEvent data containers +==================================================================================== + +.. module:: aepack + :platform: Mac + :synopsis: Conversion between Python variables and AppleEvent data containers. +.. sectionauthor:: Vincent Marchetti <vincem@en.com> + + +.. % \moduleauthor{Jack Jansen?}{email} + +The :mod:`aepack` module defines functions for converting (packing) Python +variables to AppleEvent descriptors and back (unpacking). Within Python the +AppleEvent descriptor is handled by Python objects of built-in type +:class:`AEDesc`, defined in module :mod:`Carbon.AE`. + +The :mod:`aepack` module defines the following functions: + + +.. function:: pack(x[, forcetype]) + + Returns an :class:`AEDesc` object containing a conversion of Python value x. If + *forcetype* is provided it specifies the descriptor type of the result. + Otherwise, a default mapping of Python types to Apple Event descriptor types is + used, as follows: + + +-----------------+-----------------------------------+ + | Python type | descriptor type | + +=================+===================================+ + | :class:`FSSpec` | typeFSS | + +-----------------+-----------------------------------+ + | :class:`FSRef` | typeFSRef | + +-----------------+-----------------------------------+ + | :class:`Alias` | typeAlias | + +-----------------+-----------------------------------+ + | integer | typeLong (32 bit integer) | + +-----------------+-----------------------------------+ + | float | typeFloat (64 bit floating point) | + +-----------------+-----------------------------------+ + | string | typeText | + +-----------------+-----------------------------------+ + | unicode | typeUnicodeText | + +-----------------+-----------------------------------+ + | list | typeAEList | + +-----------------+-----------------------------------+ + | dictionary | typeAERecord | + +-----------------+-----------------------------------+ + | instance | *see below* | + +-----------------+-----------------------------------+ + + If *x* is a Python instance then this function attempts to call an + :meth:`__aepack__` method. This method should return an :class:`AEDesc` object. + + If the conversion *x* is not defined above, this function returns the Python + string representation of a value (the repr() function) encoded as a text + descriptor. + + +.. function:: unpack(x[, formodulename]) + + *x* must be an object of type :class:`AEDesc`. This function returns a Python + object representation of the data in the Apple Event descriptor *x*. Simple + AppleEvent data types (integer, text, float) are returned as their obvious + Python counterparts. Apple Event lists are returned as Python lists, and the + list elements are recursively unpacked. Object references (ex. ``line 3 of + document 1``) are returned as instances of :class:`aetypes.ObjectSpecifier`, + unless ``formodulename`` is specified. AppleEvent descriptors with descriptor + type typeFSS are returned as :class:`FSSpec` objects. AppleEvent record + descriptors are returned as Python dictionaries, with 4-character string keys + and elements recursively unpacked. + + The optional ``formodulename`` argument is used by the stub packages generated + by :mod:`gensuitemodule`, and ensures that the OSA classes for object specifiers + are looked up in the correct module. This ensures that if, say, the Finder + returns an object specifier for a window you get an instance of + ``Finder.Window`` and not a generic ``aetypes.Window``. The former knows about + all the properties and elements a window has in the Finder, while the latter + knows no such things. + + +.. seealso:: + + Module :mod:`Carbon.AE` + Built-in access to Apple Event Manager routines. + + Module :mod:`aetypes` + Python definitions of codes for Apple Event descriptor types. + + ` Inside Macintosh: Interapplication Communication <http://developer.apple.com/techpubs/mac/IAC/IAC-2.html>`_ + Information about inter-process communications on the Macintosh. + |