blob: bb6b9c36c40e167c5a8d31c0bfb2ab4a4300e286 [file] [log] [blame]
Fred Drakec817e271998-08-10 18:40:22 +00001\section{\module{MacOS} ---
Fred Drake30cf1182001-08-03 17:11:33 +00002 Access to Mac OS interpreter features}
Fred Drakef6863c11999-03-02 16:37:17 +00003
Fred Drakefe7f3bc1998-07-23 17:55:31 +00004\declaremodule{builtin}{MacOS}
Fred Drakef6863c11999-03-02 16:37:17 +00005 \platform{Mac}
Fred Drake30cf1182001-08-03 17:11:33 +00006\modulesynopsis{Access to Mac OS-specific interpreter features.}
Fred Drakefe7f3bc1998-07-23 17:55:31 +00007
Jack Jansenebed45f1995-08-14 13:40:05 +00008
Jack Jansenebed45f1995-08-14 13:40:05 +00009This module provides access to MacOS specific functionality in the
Fred Drake61885921998-04-03 07:16:46 +000010Python interpreter, such as how the interpreter eventloop functions
Jack Jansenebed45f1995-08-14 13:40:05 +000011and the like. Use with care.
12
Fred Drake30cf1182001-08-03 17:11:33 +000013Note the capitalization of the module name; this is a historical
Fred Drake61885921998-04-03 07:16:46 +000014artifact.
Fred Drake30cf1182001-08-03 17:11:33 +000015
Jack Jansencb60dae2001-08-03 13:19:56 +000016\begin{datadesc}{runtimemodel}
Jack Jansen5860dab2003-02-24 11:02:36 +000017Either\code{'carbon'} or \code{'macho'}. This
18signifies whether this Python uses the Mac OS X and Mac OS 9 compatible
19CarbonLib style or the Mac OS
20X-only Mach-O style. In earlier versions of Python the value could
21also be \code{'ppc'} for the classic Mac OS 8 runtime model.
22\end{datadesc}
23
24\begin{datadesc}{linkmodel}
25The way the interpreter has been linked. As extension modules may be
26incompatible between linking models, packages could use this information to give
27more decent error messages. The value is one of \code{'static'} for a
28statically linked Python, \code{'framework'} for Python in a Mac OS X framework,
29\code{'shared'} for Python in a standard unix shared library and
30\code{'cfm'} for the Mac OS 9-compatible Python.
Jack Jansencb60dae2001-08-03 13:19:56 +000031\end{datadesc}
Jack Jansenebed45f1995-08-14 13:40:05 +000032
33\begin{excdesc}{Error}
34This exception is raised on MacOS generated errors, either from
35functions in this module or from other mac-specific modules like the
36toolbox interfaces. The arguments are the integer error code (the
Fred Drake61885921998-04-03 07:16:46 +000037\cdata{OSErr} value) and a textual description of the error code.
Guido van Rossum7e42cab1996-10-15 14:37:31 +000038Symbolic names for all known error codes are defined in the standard
Fred Drake30cf1182001-08-03 17:11:33 +000039module \refmodule{macerrors}.\refstmodindex{macerrors}
Jack Jansenebed45f1995-08-14 13:40:05 +000040\end{excdesc}
41
Guido van Rossume229d861997-08-18 15:14:26 +000042\begin{funcdesc}{SetEventHandler}{handler}
43In the inner interpreter loop Python will occasionally check for events,
Fred Drake61885921998-04-03 07:16:46 +000044unless disabled with \function{ScheduleParams()}. With this function you
Guido van Rossume229d861997-08-18 15:14:26 +000045can pass a Python event-handler function that will be called if an event
46is available. The event is passed as parameter and the function should return
47non-zero if the event has been fully processed, otherwise event processing
48continues (by passing the event to the console window package, for instance).
Jack Jansenebed45f1995-08-14 13:40:05 +000049
Fred Drake61885921998-04-03 07:16:46 +000050Call \function{SetEventHandler()} without a parameter to clear the
51event handler. Setting an event handler while one is already set is an
52error.
Jack Jansen7aeba452003-02-12 09:58:33 +000053
54Availability: MacPython-OS9.
Jack Jansenebed45f1995-08-14 13:40:05 +000055\end{funcdesc}
56
Fred Drake61885921998-04-03 07:16:46 +000057\begin{funcdesc}{SchedParams}{\optional{doint\optional{, evtmask\optional{,
58 besocial\optional{, interval\optional{,
59 bgyield}}}}}}
Guido van Rossume229d861997-08-18 15:14:26 +000060Influence the interpreter inner loop event handling. \var{Interval}
61specifies how often (in seconds, floating point) the interpreter
62should enter the event processing code. When true, \var{doint} causes
Fred Drake61885921998-04-03 07:16:46 +000063interrupt (command-dot) checking to be done. \var{evtmask} tells the
Guido van Rossume229d861997-08-18 15:14:26 +000064interpreter to do event processing for events in the mask (redraws,
Fred Drake289f97d1997-08-22 13:51:31 +000065mouseclicks to switch to other applications, etc). The \var{besocial}
66flag gives other processes a chance to run. They are granted minimal
Guido van Rossume229d861997-08-18 15:14:26 +000067runtime when Python is in the foreground and \var{bgyield} seconds per
68\var{interval} when Python runs in the background.
Jack Jansenebed45f1995-08-14 13:40:05 +000069
Guido van Rossume229d861997-08-18 15:14:26 +000070All parameters are optional, and default to the current value. The return
71value of this function is a tuple with the old values of these options.
72Initial defaults are that all processing is enabled, checking is done every
Fred Drake17f690f2001-07-14 02:14:42 +000073quarter second and the processor is given up for a quarter second when in the
Guido van Rossume229d861997-08-18 15:14:26 +000074background.
Jack Jansend22eb592002-10-19 21:36:56 +000075
76The most common use case is to call \code{SchedParams(0, 0)} to completely disable
77event handling in the interpreter mainloop.
Jack Jansen7aeba452003-02-12 09:58:33 +000078
79Availability: MacPython-OS9.
Jack Jansenebed45f1995-08-14 13:40:05 +000080\end{funcdesc}
81
82\begin{funcdesc}{HandleEvent}{ev}
Fred Drake61885921998-04-03 07:16:46 +000083Pass the event record \var{ev} back to the Python event loop, or
Jack Jansenebed45f1995-08-14 13:40:05 +000084possibly to the handler for the \code{sys.stdout} window (based on the
Fred Drake61885921998-04-03 07:16:46 +000085compiler used to build Python). This allows Python programs that do
Jack Jansenebed45f1995-08-14 13:40:05 +000086their own event handling to still have some command-period and
87window-switching capability.
Guido van Rossume229d861997-08-18 15:14:26 +000088
89If you attempt to call this function from an event handler set through
Fred Drake61885921998-04-03 07:16:46 +000090\function{SetEventHandler()} you will get an exception.
Jack Jansen7aeba452003-02-12 09:58:33 +000091
92Availability: MacPython-OS9.
Jack Jansenebed45f1995-08-14 13:40:05 +000093\end{funcdesc}
94
95\begin{funcdesc}{GetErrorString}{errno}
96Return the textual description of MacOS error code \var{errno}.
97\end{funcdesc}
Guido van Rossum66774a91996-07-21 02:20:58 +000098
99\begin{funcdesc}{splash}{resid}
100This function will put a splash window
101on-screen, with the contents of the DLOG resource specified by
Fred Drake61885921998-04-03 07:16:46 +0000102\var{resid}. Calling with a zero argument will remove the splash
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000103screen. This function is useful if you want an applet to post a splash screen
Guido van Rossum66774a91996-07-21 02:20:58 +0000104early in initialization without first having to load numerous
105extension modules.
Jack Jansen7aeba452003-02-12 09:58:33 +0000106
107Availability: MacPython-OS9.
Guido van Rossum66774a91996-07-21 02:20:58 +0000108\end{funcdesc}
109
Fred Drake671fe9d1997-12-29 18:53:31 +0000110\begin{funcdesc}{DebugStr}{message \optional{, object}}
Jack Jansen7aeba452003-02-12 09:58:33 +0000111On Mac OS 9, drop to the low-level debugger with message \var{message}. The
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000112optional \var{object} argument is not used, but can easily be
Jack Jansen7aeba452003-02-12 09:58:33 +0000113inspected from the debugger. On Mac OS X the string is simply printed
114to stderr.
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000115
116Note that you should use this function with extreme care: if no
117low-level debugger like MacsBug is installed this call will crash your
118system. It is intended mainly for developers of Python extension
119modules.
120\end{funcdesc}
121
Jack Jansen7aeba452003-02-12 09:58:33 +0000122\begin{funcdesc}{SysBeep}{}
123Ring the bell.
124\end{funcdesc}
125
126\begin{funcdesc}{GetTicks}{}
127Get the number of clock ticks (1/60th of a second) since system boot.
128\end{funcdesc}
129
130\begin{funcdesc}{GetCreatorAndType}{file}
131Return the file creator and file type as two four-character strings.
132The \var{file} parameter can be a pathname or an \code{FSSpec} or
133\code{FSRef} object.
134\end{funcdesc}
135
136\begin{funcdesc}{SetCreatorAndType}{file, creator, type}
137Set the file creator and file type.
138The \var{file} parameter can be a pathname or an \code{FSSpec} or
139\code{FSRef} object. \var{creator} and \var{type} must be four character
140strings.
141\end{funcdesc}
142
Fred Drake671fe9d1997-12-29 18:53:31 +0000143\begin{funcdesc}{openrf}{name \optional{, mode}}
Guido van Rossum66774a91996-07-21 02:20:58 +0000144Open the resource fork of a file. Arguments are the same as for the
Fred Drake61885921998-04-03 07:16:46 +0000145built-in function \function{open()}. The object returned has file-like
146semantics, but it is not a Python file object, so there may be subtle
Guido van Rossum66774a91996-07-21 02:20:58 +0000147differences.
148\end{funcdesc}
Jack Jansen5860dab2003-02-24 11:02:36 +0000149
150\begin{funcdesc}{WMAvailable}{}
151Checks wether the current process has access to the window manager.
152The method will return \code{False} if the window manager is not available,
153for instance when running on Mac OS X Server or when logged in via ssh,
154or when the current interpreter is not running from a fullblown application
155bundle. A script runs from an application bundle either when it has been
156started with \program{pythonw} in stead of \program{python} or when running
157as an applet.
158
159On Mac OS 9 the method always returns \code{True}.
160\end{funcdesc}