Macintosh Library Modules
Macintosh Library Modules
Macintosh Library Modules
Release 2.3.4
PythonLabs
Email: [email protected]
Copyright
c 2001, 2002, 2003 Python Software Foundation. All rights reserved.
Copyright
c 2000 BeOpen.com. All rights reserved.
Copyright
c 1995-2000 Corporation for National Research Initiatives. All rights reserved.
Copyright
c 1991-1995 Stichting Mathematisch Centrum. All rights reserved.
See the end of this document for complete license and permissions information.
Abstract
This library reference manual documents Python’s extensions for the Macintosh. It should be used in conjunction
with the Python Library Reference, which documents the standard library and built-in types.
This manual assumes basic knowledge about the Python language. For an informal introduction to Python, see the
Python Tutorial; the Python Reference Manual remains the highest authority on syntactic and semantic questions.
Finally, the manual entitled Extending and Embedding the Python Interpreter describes how to add new extensions
to Python and how to embed it in other applications.
CONTENTS
2 MacPython Modules 7
2.1 mac — Implementations for the os module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 macpath — MacOS path manipulation functions . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 macfs — Various file system services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 ic — Access to Internet Config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5 MacOS — Access to Mac OS interpreter features . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 macostools — Convenience routines for file manipulation . . . . . . . . . . . . . . . . . . . 13
2.7 findertools — The finder’s Apple Events interface . . . . . . . . . . . . . . . . . . . . . . 13
2.8 EasyDialogs — Basic Macintosh dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.9 FrameWork — Interactive application framework . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.10 autoGIL — Global Interpreter Lock handling in event loops . . . . . . . . . . . . . . . . . . . 19
i
4.19 Carbon.Qt — QuickTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.20 Carbon.Res — Resource Manager and Handles . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.21 Carbon.Scrap — Scrap Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.22 Carbon.Snd — Sound Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.23 Carbon.TE — TextEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.24 Carbon.Win — Window Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.25 ColorPicker — Color selection dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5 Undocumented Modules 31
5.1 applesingle — AppleSingle decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2 buildtools — Helper module for BuildApplet and Friends . . . . . . . . . . . . . . . . . . . 31
5.3 py resource — Resources from Python code . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.4 cfmfile — Code Fragment Resource module . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.5 icopen — Internet Config replacement for open() . . . . . . . . . . . . . . . . . . . . . . . 31
5.6 macerrors — Mac OS Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.7 macresource — Locate script resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.8 Nav — NavServices calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.9 mkcwproject — Create CodeWarrior projects . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.10 nsremote — Wrapper around Netscape OSA modules . . . . . . . . . . . . . . . . . . . . . . 32
5.11 PixMapWrapper — Wrapper for PixMap objects . . . . . . . . . . . . . . . . . . . . . . . . 32
5.12 preferences — Application preferences manager . . . . . . . . . . . . . . . . . . . . . . . . 32
5.13 pythonprefs — Preferences manager for Python . . . . . . . . . . . . . . . . . . . . . . . . 32
5.14 quietconsole — Non-visible standard output . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.15 videoreader — Read QuickTime movies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.16 W — Widgets built on FrameWork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.17 waste — non-Apple TextEdit replacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Module Index 39
Index 41
ii
CHAPTER
ONE
Using Python on a Macintosh, especially on Mac OS 9 (MacPython-OSX includes a complete U NIX Python) can
seem like something completely different than using it on a U NIX-like or Windows system. Most of the Python
documentation, both the “official” documentation and published books, describe only how Python is used on these
systems, causing confusion for the new user of MacPython-OS9. This chapter gives a brief introduction to the
specifics of using Python on a Macintosh.
The section on the IDE (see Section 1.3) is relevant to MacPython-OSX too.
• A ‘MacPython-2.3’ folder in your ‘Applications’ folder. In here you find the PythonIDE Integrated Devel-
opment Environment; PythonLauncher, which handles double-clicking Python scripts from the Finder; and
the Package Manager.
• A fairly standard U NIX commandline Python interpreter in ‘/usr/local/bin/python’, but without the usual
‘/usr/local/lib/python’.
• A framework ‘/Library/Frameworks/Python.framework’, where all the action really is, but which you usually
do not have to be aware of.
Your best way to get started with Python on Mac OS X is through the PythonIDE integrated development envi-
ronment, see section 1.3 and use the Help menu when the IDE is running.
If you want to run Python scripts from the Terminal window command line or from the Finder you first need
an editor to create your script. Mac OS X comes with a number of standard U NIX command line editors, vi and
emacs among them. If you want a more Mac-like editor BBEdit or TextWrangler from Bare Bones Software (see
http://www.barebones.com/products/bbedit/index.shtml) are good choices. Their freeware BBEdit Lite is officially
discontinued but still available. AppleWorks or any other word processor that can save files in ASCII is also a
possibility, but TextEdit is not: it saves in ‘.rtf’ format only.
1
To run your script from the Terminal window you must make sure that ‘/usr/local/bin’ is in your shell search path
before ‘/usr/bin’, where the Apple-supplied Python lives (which is version 2.2, as of Mac OS X 10.2.4).
To run your script from the Finder you have two options:
• Drag it to PythonLauncher
• Select PythonLauncher as the default application to open your script (or any .py script) through the finder
Info window and double-click it.
PythonLauncher has various preferences to control how your script is launched. Option-dragging allows you to
change these for one invocation, or use its Preferences menu to change things globally.
There is one Mac OS X quirk that you need to be aware of: programs that talk to the Aqua window manager (in
other words, anything that has a GUI) need to be run in a special way. Use pythonw instead of python to start
such scripts.
1.1.3 configuration
MacPython honours all standard U NIX environment variables such as PYTHONPATH, but setting these variables
for programs started from the Finder is non-standard as the Finder does not read your ‘.profile’ or ‘.cshrc’ at
startup. You need to create a file ‘˜/.MacOSX/environment.plist’. See Apple’s Technical Document QA1067 for
details.
Installing additional Python packages is most easily done through the Package Manager, see the MacPython Help
Book for details.
The interactive interpreter that you will see used in Python documentation is started by double-clicking the
PythonInterpreter icon, which looks like a 16-ton weight falling. You should see the version information and
the ‘>>> ’ prompt. Use it exactly as described in the standard documentation.
There are several ways to run an existing Python script; two common ways to run a Python script are “drag and
drop” and “double clicking”. Other ways include running it from within the IDE (see Section 1.3), or launching
via AppleScript.
One of the easiest ways to launch a Python script is via “Drag and Drop”. This is just like launching a text file
in the Finder by “dragging” it over your word processor’s icon and “dropping” it there. Make sure that you use
an icon referring to the PythonInterpreter, not the IDE or Idle icons which have different behaviour which is
described below.
Some things that might have gone wrong:
• A window flashes after dropping the script onto the PythonInterpreter, but then disappears. Most likely
this is a configuration issue; your PythonInterpreter is setup to exit immediately upon completion, but
your script assumes that if it prints something that text will stick around for a while. To fix this, see section
1.2.5.
• When you waved the script icon over the PythonInterpreter, the PythonInterpreter icon did not hilight.
Most likely the Creator code and document type is unset (or set incorrectly) – this often happens when a file
originates on a non-Mac computer. See section 1.2.2 for more details.
If the script that you want to launch has the appropriate Creator Code and File Type you can simply double-click
on the script to launch it. To be “double-clickable” a file needs to be of type ‘TEXT’, with a creator code of
‘Pyth’.
Setting the creator code and filetype can be done with the IDE (see sections 1.3.2 and 1.3.4), with an editor with a
Python mode (BBEdit) – see section 1.2.4, or with assorted other Mac utilities, but a script (‘fixfiletypes.py’) has
been included in the MacPython distribution, making it possible to set the proper Type and Creator Codes with
Python.
The ‘fixfiletypes.py’ script will change the file type and creator codes for the indicated directory. To use
‘fixfiletypes.py’:
1. Locate it in the ‘scripts’ folder of the ‘Mac’ folder of the MacPython distribution.
2. Put all of the scripts that you want to fix in a folder with nothing else in it.
3. Double-click on the ‘fixfiletypes.py’ icon.
4. Navigate into the folder of files you want to fix, and press the “Select current folder” button.
Since Python scripts are simply text files, they can be created in any way that text files can be created, but some
special tools also exist with extra features.
In an editor
You can create a text file with any word processing program such as MSWord or AppleWorks but you need to
make sure that the file is saved as “ASCII” or “plain text”.
Several text editors have additional features that add functionality when you are creating a Python script. These
can include coloring Python keywords to make your code easier to read, module browsing, or a built-in debugger.
These include Alpha, Pepper, and BBedit, and the MacPython IDE (Section 1.3).
BBedit
If you use BBEdit to create your scripts you will want to tell it about the Python creator code so that you can
simply double click on the saved file to launch it.
• Launch BBEdit.
• Select “Preferences” from the “Edit” menu.
• Select “File Types” from the scrolling list.
• click on the “Add...” button and navigate to PythonInterpreter in the main directory of the MacPython
distribution; click “open”.
• Click on the “Save” button in the Preferences panel.
1.2.5 Configuration
The MacPython distribution comes with EditPythonPrefs, an applet which will help you to customize the
MacPython environment for your working habits.
EditPythonPrefs
EditPythonPrefs gives you the capability to configure Python to behave the way you want it to. There are two
ways to use EditPythonPrefs, you can use it to set the preferences in general, or you can drop a particular Python
engine onto it to customize only that version. The latter can be handy if, for example, you want to have a second
copy of the PythonInterpreter that keeps the output window open on a normal exit even though you prefer to
normally not work that way.
To change the default preferences, simply double-click on EditPythonPrefs. To change the preferences only for
one copy of the Interpreter, drop the icon for that copy onto EditPythonPrefs. You can also use EditPythonPrefs
in this fashion to set the preferences of the Python IDE and any applets you create – see section 1.3.4.
When executing an import statement, Python looks for modules in places defined by the sys.path To edit the
sys.path on a Mac, launch EditPythonPrefs, and enter them into the largish field at the top (one per line).
Since MacPython defines a main Python directory, the easiest thing is to add folders to search within the main
Python directory. To add a folder of scripts that you created called “My Folder” located in the main Python Folder,
enter ‘$(PYTHON):My Folder’ onto a new line.
The “Default startup options...” button in the EditPythonPrefs dialog box gives you many options including the
ability to keep the “Output” window open after the script terminates, and the ability to enter interactive mode
after the termination of the run script. The latter can be very helpful if you want to examine the objects that were
created during your script.
Use this window like you would the PythonInterpreter, except that you cannot use the “Drag and drop” method
above. Instead, dropping a script onto the Python IDE icon will open the file in a separate script window (which
you can then execute manually – see section 1.3.3).
In addition to using the Python IDE interactively, you can also type out a complete Python program, saving it
incrementally, and execute it or smaller selections of it.
You can create a new script, open a previously saved script, and save your currently open script by selecting the
appropriate item in the “File” menu. Dropping a Python script onto the Python IDE will open it for editting.
If you try to open a script with the Python IDE but either can’t locate it from the “Open” dialog box, or you get
an error message like “Can’t open file of type ...” see section 1.2.2.
When the Python IDE saves a script, it uses the creator code settings which are available by clicking on the small
black triangle on the top right of the document window, and selecting “save options”. The default is to save the file
with the Python IDE as the creator, this means that you can open the file for editing by simply double-clicking on
its icon. You might want to change this behaviour so that it will be opened by the PythonInterpreter, and run. To
do this simply choose “Python Interpreter” from the “save options”. Note that these options are associated with
the file not the application.
You can run the script in the frontmost window of the Python IDE by hitting the run all button. You should be
aware, however that if you use the Python convention ‘if name == " main ":’ the script will not
be “ main ” by default. To get that behaviour you must select the “Run as main ” option from the small
black triangle on the top right of the document window. Note that this option is associated with the file not the
application. It will stay active after a save, however; to shut this feature off simply select it again.
When you are done writing your Python script you have the option of saving it as an “applet” (by selecting “Save
as applet” from the “File” menu). This has a significant advantage in that you can drop files or folders onto it,
to pass them to the applet the way command-line users would type them onto the command-line to pass them as
arguments to the script. However, you should make sure to save the applet as a separate file, do not overwrite the
script you are writing, because you will not be able to edit it again.
TWO
MacPython Modules
The following modules are only available on the Macintosh, and are documented here:
mac Implementations for the os module.
macpath MacOS path manipulation functions.
macfs Support for FSSpec, the Alias Manager, finder aliases, and the Standard File package.
ic Access to Internet Config.
MacOS Access to Mac OS-specific interpreter features.
macostools Convenience routines for file manipulation.
findertools Wrappers around the finder’s Apple Events interface.
EasyDialogs Basic Macintosh dialogs.
FrameWork Interactive application framework.
autoGIL Global Interpreter Lock handling in event loops.
7
partial Macintosh pathname, (2) an FSSpec object or (3) a 3-tuple (wdRefNum, parID, name) as described
in Inside Macintosh: Files. An FSSpec can point to a non-existing file, as long as the folder containing the file
exists. Under MacPython the same is true for a pathname, but not under unix-Pyton because of the way pathnames
and FSRefs works. See Apple’s documentation for details.
A description of aliases and the Standard File package can also be found there.
FSSpec(file)
Create an FSSpec object for the specified file.
RawFSSpec(data)
Create an FSSpec object given the raw data for the C structure for the FSSpec as a string. This is mainly
useful if you have obtained an FSSpec structure over a network.
RawAlias(data)
Create an Alias object given the raw data for the C structure for the alias as a string. This is mainly useful
if you have obtained an FSSpec structure over a network.
FInfo()
Create a zero-filled FInfo object.
ResolveAliasFile(file)
Resolve an alias file. Returns a 3-tuple (fsspec, isfolder, aliased) where fsspec is the resulting FSSpec
object, isfolder is true if fsspec points to a folder and aliased is true if the file was an alias in the first place
(otherwise the FSSpec object for the file itself is returned).
StandardGetFile([type, ... ])
Present the user with a standard “open input file” dialog. Optionally, you can pass up to four 4-character
file types to limit the files the user can choose from. The function returns an FSSpec object and a flag
indicating that the user completed the dialog without cancelling.
PromptGetFile(prompt[, type, ... ])
Similar to StandardGetFile() but allows you to specify a prompt which will be displayed at the top
of the dialog.
StandardPutFile(prompt[, default ])
Present the user with a standard “open output file” dialog. prompt is the prompt string, and the optional de-
fault argument initializes the output file name. The function returns an FSSpec object and a flag indicating
that the user completed the dialog without cancelling.
GetDirectory([prompt ])
Present the user with a non-standard “select a directory” dialog. You have to first open the directory before
clicking on the “select current directory” button. prompt is the prompt string which will be displayed at the
top of the dialog. Return an FSSpec object and a success-indicator.
SetFolder([fsspec ])
Set the folder that is initially presented to the user when one of the file selection dialogs is presented. fsspec
should point to a file in the folder, not the folder itself (the file need not exist, though). If no argument is
passed the folder will be set to the current directory, i.e. what os.getcwd() returns.
Note that starting with system 7.5 the user can change Standard File behaviour with the “general controls”
control panel, thereby making this call inoperative.
FindFolder(where, which, create)
Locates one of the “special” folders that MacOS knows about, such as the trash or the Preferences folder.
where is the disk to search, which is the 4-character string specifying which folder to locate. Setting create
causes the folder to be created if it does not exist. Returns a (vrefnum, dirid) tuple.
The constants for where and which can be obtained from the standard module Carbon.Folders.
NewAliasMinimalFromFullPath(pathname)
Return a minimal alias object that points to the given file, which must be specified as a full pathname.
This is the only way to create an Alias pointing to a non-existing file.
FindApplication(creator)
Locate the application with 4-character creator code creator. The function returns an FSSpec object point-
ing to the application.
See Inside Macintosh: Files for a complete description of what the various fields mean.
Creator
The 4-character creator code of the file.
2.4.1 IC Objects
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 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 data attribute. Objects of this type are also acceptable values for assignment.
Besides the dictionary interface, IC objects have the following methods:
launchurl(url[, hint ])
Parse the given URL, lauch 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.
ProgressBar objects provide support for modeless progress-bar dialogs. Both determinate (thermometer style)
and indeterminate (barber-pole style) progress bars are supported. The bar will be determinate if its maximum
value is greater than zero; otherwise it will be indeterminate. Changed in version 2.2: Support for indeterminate-
style progress bars was added.
The dialog is displayed immediately after creation. If the dialog’s “Cancel” button is pressed, or if Cmd-. or ESC
is typed, the dialog window is hidden and KeyboardInterrupt is raised (but note that this response does not
occur until the progress bar is next updated, typically via a call to inc() or set()). Otherwise, the bar remains
visible until the ProgressBar object is discarded.
ProgressBar objects possess the following attributes and methods:
curval
The current value (of type integer or long integer) of the progress bar. The normal access methods coerce
curval between 0 and maxval. This attribute should not be altered directly.
maxval
The maximum value (of type integer or long integer) of the progress bar; the progress bar (thermometer
style) is full when curval equals maxval. If maxval is 0, the bar will be indeterminate (barber-pole).
This attribute should not be altered directly.
title([newstr ])
Sets the text in the title bar of the progress dialog to newstr.
label([newstr ])
Sets the text in the progress box of the progress dialog to newstr.
set(value[, max ])
Sets the progress bar’s curval to value, and also maxval to max if the latter is provided. value is first
coerced between 0 and maxval. The thermometer bar is updated to reflect the changes, including a change
from indeterminate to determinate or vice versa.
inc([n ])
Increments the progress bar’s curval by n, or by 1 if n is not provided. (Note that n may be negative,
The strong point of FrameWork is that it allows you to break into the control-flow at many
different places. W, for instance, uses a different way to enable/disable menus and that plugs right in
leaving the rest intact. The weak points of FrameWork are that it has no abstract command interface
(but that shouldn’t be difficult), that it’s dialog support is minimal and that it’s control/toolbar support
is non-existent.
ControlsWindow objects have the following methods besides those of Window objects:
do controlhit(window, control, pcode, event)
Part pcode of control control was hit by the user. Tracking and such has already been taken care of.
ScrolledWindow objects are ControlsWindow objects with the following extra methods:
scrollbars([wantx[, wanty ]])
Create (or destroy) horizontal and vertical scrollbars. The arguments specify which you want (default:
both). The scrollbars always have minimum 0 and maximum 32767.
getscrollbarvalues()
You must supply this method. It should return a tuple (x, y) giving the current position of the scrollbars
(between 0 and 32767). You can return None for either to indicate the whole document is visible in that
direction.
updatescrollbars()
Call this method when the document has changed. It will call getscrollbarvalues() and update the
scrollbars.
scrollbar callback(which, what, value)
Supplied by you and called after user interaction. which will be ’x’ or ’y’, what will be ’-’, ’--’,
’set’, ’++’ or ’+’. For ’set’, value will contain the new scrollbar position.
scalebarvalues(absmin, absmax, curmin, curmax)
Auxiliary method to help you calculate values to return from getscrollbarvalues(). You pass docu-
ment minimum and maximum value and topmost (leftmost) and bottommost (rightmost) visible values and
it returns the correct number or None.
do activate(onoff, event)
Takes care of dimming/highlighting scrollbars when a window becomes frontmost. If you override this
method, call this one at the end of your method.
DialogWindow objects have the following methods besides those of Window objects:
open(resid)
Create the dialog window, from the DLOG resource with id resid. The dialog object is stored in self.wid.
do itemhit(item, event)
Item number item was hit. You are responsible for redrawing toggle buttons, etc.
THREE
Python has a fairly complete implementation of the Open Scripting Architecure (OSA, also commonly referred
to as AppleScript), allowing you to control scriptable applications from your Python program, and with a fairly
pythonic interface.
For a description of the various components of AppleScript and OSA, and to get an understanding of the archi-
tecture and terminology, you should read Apple’s documentation. The ”Applescript Language Guide” explains
the conceptual model and the terminology, and documents the standard suite. The ”Open Scripting Architecture”
document explains how to use OSA from an application programmers point of view. In the Apple Help Viewer
these book sare located in the Developer Documentation, Core Technologies section.
As an example of scripting an application, the following piece of AppleScript will get the name of the frontmost
Finder window and print it:
import Finder
f = Finder.Finder()
print f.get(f.window(1).name)
As distributed the Python library includes packages that implement the standard suites, plus packages that interface
to a small number of common applications.
To send AppleEvents to an application you must first create the Python package interfacing to the terminology of
the application (what Script Editor calls the ”Dictionary”). This can be done from within the PythonIDE or by
running the ‘gensuitemodule.py’ module as a standalone program from the command line.
The generated output is a package with a number of modules, one for every suite used in the program plus an
init module to glue it all together. The Python inheritance graph follows the AppleScript inheritance
graph, so if a programs dictionary specifies that it includes support for the Standard Suite, but extends one or
two verbs with extra arguments then the output suite will contain a module Standard Suite that imports
and re-exports everything from StdSuites.Standard Suite but overrides the methods that have extra
functionality. The output of gensuitemodule is pretty readable, and contains the documentation that was in
the original AppleScript dictionary in Python docstrings, so reading it is a good source of documentation.
The output package implements a main class with the same name as the package which contains all the AppleScript
verbs as methods, with the direct object as the first argument and all optional parameters as keyword arguments.
AppleScript classes are also implemented as Python classes, as are comparisons and all the other thingies.
The main Python class implementing the verbs also allows access to the properties and elements declared
in the AppleScript class ”application”. In the current release that is as far as the object orientation goes,
21
so in the example above we need to use f.get(f.window(1).name) instead of the more Pythonic
f.window(1).name.get().
If an AppleScript identifier is not a Python identifier the name is mangled according to a small number of rules:
Python also has support for creating scriptable applications in Python, but The following modules are relevant to
MacPython AppleScript support:
gensuitemodule Create a stub package from an OSA dictionary
aetools Basic support for sending Apple Events
aepack Conversion between Python variables and AppleEvent data containers.
aetypes Python representation of the Apple Event Object Model.
MiniAEFrame Support to act as an Open Scripting Architecture (OSA) server (“Apple Events”).
In addition, support modules have been pre-generated for Finder, Terminal, Explorer, Netscape,
CodeWarrior, SystemEvents and StdSuites.
FOUR
There are a set of modules that provide interfaces to various MacOS toolboxes. If applicable the module will define
a number of Python objects for the various structures declared by the toolbox, and operations will be implemented
as methods of the object. Other operations will be implemented as functions in the module. Not all operations
possible in C will also be possible in Python (callbacks are often a problem), and parameters will occasionally
be different in Python (input and output buffers, especially). All methods and functions have a doc string
describing their arguments and return values, and for additional description you are referred to Inside Macintosh
or similar works.
These modules all live in a package called Carbon. Despite that name they are not all part of the Carbon
framework: CF is really in the CoreFoundation framework and Qt is in the QuickTime framework. The normal
use pattern is
from Carbon import AE
Warning! These modules are not yet documented. If you wish to contribute documentation of any of these
modules, please get in touch with [email protected].
Carbon.AE Interface to the Apple Events toolbox.
Carbon.AH Interface to the Apple Help manager.
Carbon.App Interface to the Appearance Manager.
Carbon.CF Interface to the Core Foundation.
Carbon.CG Interface to the Component Manager.
Carbon.CaronEvt Interface to the Carbon Event Manager.
Carbon.Cm Interface to the Component Manager.
Carbon.Ctl Interface to the Control Manager.
Carbon.Dlg Interface to the Dialog Manager.
Carbon.Evt Interface to the classic Event Manager.
Carbon.Fm Interface to the Font Manager.
Carbon.Folder Interface to the Folder Manager.
Carbon.Help Interface to the Carbon Help Manager.
Carbon.List Interface to the List Manager.
Carbon.Menu Interface to the Menu Manager.
Carbon.Mlte Interface to the MultiLingual Text Editor.
Carbon.Qd Interface to the QuickDraw toolbox.
Carbon.Qdoffs Interface to the QuickDraw Offscreen APIs.
Carbon.Qt Interface to the QuickTime toolbox.
Carbon.Res Interface to the Resource Manager and Handles.
Carbon.Scrap Interface to the Carbon Scrap Manager.
Carbon.Snd Interface to the Sound Manager.
Carbon.TE Interface to TextEdit.
Carbon.Win Interface to the Window Manager.
ColorPicker Interface to the standard color selection dialog.
27
4.1 Carbon.AE — Apple Events
FIVE
Undocumented Modules
The modules in this chapter are poorly documented (if at all). If you wish to contribute documentation of any of
these modules, please get in touch with [email protected].
applesingle Rudimentary decoder for AppleSingle format files.
buildtools Helper module for BuildApplet, BuildApplication and macfreeze.
py resource Helper to create ’PYC ’ resources for compiled applications.
cfmfile Code Fragment Resource module.
icopen Internet Config replacement for open().
macerrors Constant definitions for many Mac OS error codes.
macresource Locate script resources.
Nac Interface to Navigation Services.
mkcwproject Create CodeWarrior projects.
nsremote Wrapper around Netscape OSA modules.
PixMapWrapper Wrapper for PixMap objects.
preferences Nice application preferences manager with support for defaults.
pythonprefs Specialized preferences manager for the Python interpreter.
quietconsole Buffered, non-visible standard output.
videoreader Read QuickTime movies frame by frame for further processing.
W Widgets for the Mac, built on top of FrameWork.
waste Interface to the “WorldScript-Aware Styled Text Engine.”
31
5.6 macerrors — Mac OS Errors
macerrors cotains constant definitions for many Mac OS error codes.
Note: GPL-compatible doesn’t mean that we’re distributing Python under the GPL. All Python licenses, unlike
the GPL, let you distribute a modified version without making your changes open source. The GPL-compatible
licenses make it possible to combine Python with other software that is released under the GPL; the others don’t.
Thanks to the many outside volunteers who have worked under Guido’s direction to make these releases possible.
35
A.2 Terms and conditions for accessing or otherwise using Python
PSF LICENSE AGREEMENT FOR PYTHON 2.3.4
1. This LICENSE AGREEMENT is between the Python Software Foundation (“PSF”), and the Individual or
Organization (“Licensee”) accessing and otherwise using Python 2.3.4 software in source or binary form
and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive,
royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare deriva-
tive works, distribute, and otherwise use Python 2.3.4 alone or in any derivative version, provided, however,
that PSF’s License Agreement and PSF’s notice of copyright, i.e., “Copyright
c 2001-2003 Python Soft-
ware Foundation; All Rights Reserved” are retained in Python 2.3.4 alone or in any derivative version
prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on or incorporates Python 2.3.4 or any part
thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby
agrees to include in any such work a brief summary of the changes made to Python 2.3.4.
4. PSF is making Python 2.3.4 available to Licensee on an “AS IS” basis. PSF MAKES NO REPRESEN-
TATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMI-
TATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MER-
CHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON
2.3.4 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.3.4 FOR ANY
INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFY-
ING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.3.4, OR ANY DERIVATIVE THEREOF,
EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or
joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or
any third party.
8. By copying, installing or otherwise using Python 2.3.4, Licensee agrees to be bound by the terms and
conditions of this License Agreement.
1. This LICENSE AGREEMENT is between BeOpen.com (“BeOpen”), having an office at 160 Saratoga
Avenue, Santa Clara, CA 95051, and the Individual or Organization (“Licensee”) accessing and otherwise
using this software in source or binary form and its associated documentation (“the Software”).
2. Subject to the terms and conditions of this BeOpen Python License Agreement, BeOpen hereby grants Li-
censee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display
publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any derivative
version, provided, however, that the BeOpen Python License is retained in the Software, alone or in any
derivative version prepared by Licensee.
3. BeOpen is making the Software available to Licensee on an “AS IS” basis. BEOPEN MAKES NO REP-
RESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT
LIMITATION, BEOPEN MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY
OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF
THE SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT
OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF,
EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an
office at 1895 Preston White Drive, Reston, VA 20191 (“CNRI”), and the Individual or Organization (“Li-
censee”) accessing and otherwise using Python 1.6.1 software in source or binary form and its associated
documentation.
2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a nonexclu-
sive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare
derivative works, distribute, and otherwise use Python 1.6.1 alone or in any derivative version, provided,
however, that CNRI’s License Agreement and CNRI’s notice of copyright, i.e., “Copyright
c 1995-2001
Corporation for National Research Initiatives; All Rights Reserved” are retained in Python 1.6.1 alone
or in any derivative version prepared by Licensee. Alternately, in lieu of CNRI’s License Agreement,
Licensee may substitute the following text (omitting the quotes): “Python 1.6.1 is made available sub-
ject to the terms and conditions in CNRI’s License Agreement. This Agreement together with Python
1.6.1 may be located on the Internet using the following unique, persistent identifier (known as a handle):
1895.22/1013. This Agreement may also be obtained from a proxy server on the Internet using the following
URL: http://hdl.handle.net/1895.22/1013.”
3. In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6.1 or any part
thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby
agrees to include in any such work a brief summary of the changes made to Python 1.6.1.
4. CNRI is making Python 1.6.1 available to Licensee on an “AS IS” basis. CNRI MAKES NO REPRESEN-
TATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMI-
TATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MER-
CHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON
1.6.1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 1.6.1 FOR ANY
INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFY-
ING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, OR ANY DERIVATIVE THEREOF,
EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
7. This License Agreement shall be governed by the federal intellectual property law of the United States, in-
cluding without limitation the federal copyright law, and, to the extent such U.S. federal law does not apply,
by the law of the Commonwealth of Virginia, excluding Virginia’s conflict of law provisions. Notwithstand-
ing the foregoing, with regard to derivative works based on Python 1.6.1 that incorporate non-separable
material that was previously distributed under the GNU General Public License (GPL), the law of the Com-
monwealth of Virginia shall govern this License Agreement only as to issues arising under or with respect
to Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this License Agreement shall be deemed to
create any relationship of agency, partnership, or joint venture between CNRI and Licensee. This License
Agreement does not grant permission to use CNRI trademarks or trade name in a trademark sense to endorse
or promote products or services of Licensee, or any third party.
8. By clicking on the “ACCEPT” button where indicated, or by copying, installing or otherwise using Python
1.6.1, Licensee agrees to be bound by the terms and conditions of this License Agreement.
A G
aepack, 23 gensuitemodule, 22
aetools, 23
aetypes, 24 I
applesingle, 31 ic, 10
autoGIL, 19 icopen, 31
B M
buildtools, 31 mac, 7
macerrors, 32
C macfs, 7
Carbon.AE, 28 MacOS, 11
Carbon.AH, 28 macostools, 13
Carbon.App, 28 macpath, 7
Carbon.CaronEvt, 29 macresource, 32
Carbon.CF, 28 MiniAEFrame, 26
Carbon.CG, 29 mkcwproject, 32
Carbon.Cm, 29
Carbon.Ctl, 29 N
Carbon.Dlg, 29 Nac, 32
Carbon.Evt, 29 nsremote, 32
Carbon.Fm, 29
Carbon.Folder, 29 P
Carbon.Help, 29 PixMapWrapper, 32
Carbon.List, 29 preferences, 32
Carbon.Menu, 29 py resource, 31
Carbon.Mlte, 29 pythonprefs, 32
Carbon.Qd, 29
Carbon.Qdoffs, 29 Q
Carbon.Qt, 29 quietconsole, 32
Carbon.Res, 29
Carbon.Scrap, 29 V
Carbon.Snd, 29 videoreader, 33
Carbon.TE, 29
Carbon.Win, 29 W
cfmfile, 31 W, 33
ColorPicker, 29 waste, 33
E
EasyDialogs, 14
F
findertools, 13
FrameWork, 16
39
40
INDEX
41
Window method, 18 K
do update() (Window method), 18 keysubst() (in module aetools), 23
Keyword (class in aetypes), 25
E
EasyDialogs (standard module), 14 L
Enum (class in aetypes), 25 label() (ProgressBar method), 15
enumsubst() (in module aetools), 23 launch() (in module findertools), 13
environment variables launchurl()
PYTHONPATH, 2 IC method, 10
Error (exception in MacOS), 11 in module ic, 10
error (exception in ic), 10 linkmodel (data in MacOS), 11
Location (FInfo attribute), 10
F Logical (class in aetypes), 25
FindApplication() (in module macfs), 8
findertools (standard module), 13 M
FindFolder() (in module macfs), 8 mac (built-in module), 7
FInfo() (in module macfs), 8 macerrors (standard module), 11, 32
Flags (FInfo attribute), 10 macfs (standard module), 7
Fldr (FInfo attribute), 10 Macintosh Alias Manager, 7
FrameWork (standard module), 16, 26 MacOS (built-in module), 11
FSSpec() (in module macfs), 8 macostools (standard module), 13
macpath (standard module), 7
G macresource (standard module), 32
gensuitemodule (standard module), 22 mainloop() (Application method), 17
getabouttext() (Application method), 17 makeusermenus() (Application method), 17
GetArgv() (in module EasyDialogs), 14 mapfile()
GetColor() (in module ColorPicker), 30 IC method, 11
GetCreatorAndType() (in module MacOS), in module ic, 10
12 maptypecreator()
GetCreatorType() (FSSpec method), 9 IC method, 11
GetDates() (FSSpec method), 9 in module ic, 10
GetDirectory() (in module macfs), 8 maxval (ProgressBar attribute), 15
GetErrorString() (in module MacOS), 12 Menu() (in module FrameWork), 16
GetFInfo() (FSSpec method), 9 MenuBar() (in module FrameWork), 16
GetInfo() (Alias method), 9 MenuItem() (in module FrameWork), 16
getscrollbarvalues() (ScrolledWindow Message() (in module EasyDialogs), 14
method), 18 MiniAEFrame (standard module), 26
GetTicks() (in module MacOS), 12 MiniApplication (class in MiniAEFrame), 26
mkalias() (in module macostools), 13
H mkcwproject (standard module), 32
HandleEvent() (in module MacOS), 12 move() (in module findertools), 13
I N
IC (class in ic), 10 Nac (standard module), 32
ic (built-in module), 10 NewAlias() (FSSpec method), 9
icglue (built-in module), 10 NewAliasMinimal() (FSSpec method), 9
icopen (standard module), 31 NewAliasMinimalFromFullPath() (in
idle() (Application method), 17 module macfs), 8
inc() (ProgressBar method), 15 NProperty (class in aetypes), 25
InsertionLoc (class in aetypes), 25 nsremote (standard module), 32
installaehandler() (AEServer method), 26
installAutoGIL() (in module autoGIL), 19 O
Internet Config, 10 ObjectSpecifier (class in aetypes), 25
IntlText (class in aetypes), 25 open()
IntlWritingCode (class in aetypes), 25 DialogWindow method, 19
is scriptable() (in module gensuitemodule), Window method, 18
22 Open Scripting Architecture, 26
42 Index
openrf() (in module MacOS), 12 in module ic, 10
Ordinal (class in aetypes), 25 setwatchcursor() (in module FrameWork), 17
os (standard module), 7 shutdown() (in module findertools), 14
os.path (standard module), 7 sleep() (in module findertools), 13
splash() (in module MacOS), 12
P Standard File, 7
pack() (in module aepack), 23 StandardGetFile() (in module macfs), 8
packevent() (in module aetools), 23 StandardPutFile() (in module macfs), 8
parseurl() StyledText (class in aetypes), 25
IC method, 11 SubMenu() (in module FrameWork), 16
in module ic, 10 SysBeep() (in module MacOS), 12
PixMapWrapper (standard module), 32
preferences (standard module), 32 T
Print() (in module findertools), 13 TalkTo (class in aetools), 23
processfile() (in module gensuitemodule), 22 title() (ProgressBar method), 15
processfile fromresource() (in module touched() (in module macostools), 13
gensuitemodule), 22 Type
ProgressBar() (in module EasyDialogs), 14 class in aetypes, 25
PromptGetFile() (in module macfs), 8 FInfo attribute, 10
py resource (standard module), 31
PYTHONPATH, 2 U
pythonprefs (standard module), 32 Unknown (class in aetypes), 25
unpack() (in module aepack), 24
Q unpackevent() (in module aetools), 23
QDPoint (class in aetypes), 25 Update() (Alias method), 9
QDRectangle (class in aetypes), 25 updatescrollbars() (ScrolledWindow
quietconsole (standard module), 32 method), 18
R V
Range (class in aetypes), 25 videoreader (standard module), 33
RawAlias() (in module macfs), 8
RawFSSpec() (in module macfs), 8 W
Resolve() (Alias method), 9 W (standard module), 33
ResolveAliasFile() (in module macfs), 8 waste (standard module), 33
restart() (in module findertools), 13 Window() (in module FrameWork), 16
RGBColor (class in aetypes), 25 windowbounds() (in module FrameWork), 16
runtimemodel (data in MacOS), 11 WMAvailable() (in module MacOS), 12
S
scalebarvalues() (ScrolledWindow method),
18
SchedParams() (in module MacOS), 12
scrollbar callback() (ScrolledWindow
method), 18
scrollbars() (ScrolledWindow method), 18
send() (TalkTo method), 23
Separator() (in module FrameWork), 16
set() (ProgressBar method), 15
setarrowcursor() (in module FrameWork), 17
SetCreatorAndType() (in module MacOS),
12
SetCreatorType() (FSSpec method), 9
SetDates() (FSSpec method), 9
SetEventHandler() (in module MacOS), 11
SetFInfo() (FSSpec method), 9
SetFolder() (in module macfs), 8
settypecreator()
IC method, 11
Index 43