diff options
Diffstat (limited to 'Doc/library/ic.rst')
-rw-r--r-- | Doc/library/ic.rst | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/Doc/library/ic.rst b/Doc/library/ic.rst new file mode 100644 index 0000000..d5e03bd --- /dev/null +++ b/Doc/library/ic.rst @@ -0,0 +1,119 @@ + +:mod:`ic` --- Access to the Mac OS X Internet Config +==================================================== + +.. module:: ic + :platform: Mac + :synopsis: Access to the Mac OS X Internet Config. + + +This module provides access to various internet-related preferences set through +:program:`System Preferences` or the :program:`Finder`. + +.. index:: module: icglue + +There is a low-level companion module :mod:`icglue` which provides the basic +Internet Config access functionality. This low-level module is not documented, +but the docstrings of the routines document the parameters and the routine names +are the same as for the Pascal or C API to Internet Config, so the standard IC +programmers' documentation can be used if this module is needed. + +The :mod:`ic` module defines the :exc:`error` exception and symbolic names for +all error codes Internet Config can produce; see the source for details. + + +.. exception:: error + + Exception raised on errors in the :mod:`ic` module. + +The :mod:`ic` module defines the following class and function: + + +.. class:: IC([signature[, ic]]) + + Create an Internet Config object. The signature is a 4-character creator code of + the current application (default ``'Pyth'``) which may influence some of ICs + settings. The optional *ic* argument is a low-level ``icglue.icinstance`` + created beforehand, this may be useful if you want to get preferences from a + different config file, etc. + + +.. function:: launchurl(url[, hint]) + parseurl(data[, start[, end[, hint]]]) + mapfile(file) + maptypecreator(type, creator[, filename]) + settypecreator(file) + + These functions are "shortcuts" to the methods of the same name, described + below. + + +IC Objects +---------- + +:class:`IC` objects have a mapping interface, hence to obtain the mail address +you simply get ``ic['MailAddress']``. Assignment also works, and changes the +option in the configuration file. + +The module knows about various datatypes, and converts the internal IC +representation to a "logical" Python data structure. Running the :mod:`ic` +module standalone will run a test program that lists all keys and values in your +IC database, this will have to serve as documentation. + +If the module does not know how to represent the data it returns an instance of +the ``ICOpaqueData`` type, with the raw data in its :attr:`data` attribute. +Objects of this type are also acceptable values for assignment. + +Besides the dictionary interface, :class:`IC` objects have the following +methods: + + +.. method:: IC.launchurl(url[, hint]) + + Parse the given URL, launch the correct application and pass it the URL. The + optional *hint* can be a scheme name such as ``'mailto:'``, in which case + incomplete URLs are completed with this scheme. If *hint* is not provided, + incomplete URLs are invalid. + + +.. method:: IC.parseurl(data[, start[, end[, hint]]]) + + Find an URL somewhere in *data* and return start position, end position and the + URL. The optional *start* and *end* can be used to limit the search, so for + instance if a user clicks in a long text field you can pass the whole text field + and the click-position in *start* and this routine will return the whole URL in + which the user clicked. As above, *hint* is an optional scheme used to complete + incomplete URLs. + + +.. method:: IC.mapfile(file) + + Return the mapping entry for the given *file*, which can be passed as either a + filename or an :func:`FSSpec` result, and which need not exist. + + The mapping entry is returned as a tuple ``(version, type, creator, postcreator, + flags, extension, appname, postappname, mimetype, entryname)``, where *version* + is the entry version number, *type* is the 4-character filetype, *creator* is + the 4-character creator type, *postcreator* is the 4-character creator code of + an optional application to post-process the file after downloading, *flags* are + various bits specifying whether to transfer in binary or ascii and such, + *extension* is the filename extension for this file type, *appname* is the + printable name of the application to which this file belongs, *postappname* is + the name of the postprocessing application, *mimetype* is the MIME type of this + file and *entryname* is the name of this entry. + + +.. method:: IC.maptypecreator(type, creator[, filename]) + + Return the mapping entry for files with given 4-character *type* and *creator* + codes. The optional *filename* may be specified to further help finding the + correct entry (if the creator code is ``'????'``, for instance). + + The mapping entry is returned in the same format as for *mapfile*. + + +.. method:: IC.settypecreator(file) + + Given an existing *file*, specified either as a filename or as an :func:`FSSpec` + result, set its creator and type correctly based on its extension. The finder + is told about the change, so the finder icon will be updated quickly. |