Fred Drake | c817e27 | 1998-08-10 18:40:22 +0000 | [diff] [blame] | 1 | \section{\module{MacOS} --- |
Fred Drake | 30cf118 | 2001-08-03 17:11:33 +0000 | [diff] [blame] | 2 | Access to Mac OS interpreter features} |
Fred Drake | f6863c1 | 1999-03-02 16:37:17 +0000 | [diff] [blame] | 3 | |
Fred Drake | fe7f3bc | 1998-07-23 17:55:31 +0000 | [diff] [blame] | 4 | \declaremodule{builtin}{MacOS} |
Fred Drake | f6863c1 | 1999-03-02 16:37:17 +0000 | [diff] [blame] | 5 | \platform{Mac} |
Fred Drake | 30cf118 | 2001-08-03 17:11:33 +0000 | [diff] [blame] | 6 | \modulesynopsis{Access to Mac OS-specific interpreter features.} |
Fred Drake | fe7f3bc | 1998-07-23 17:55:31 +0000 | [diff] [blame] | 7 | |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 8 | |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 9 | This module provides access to MacOS specific functionality in the |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 10 | Python interpreter, such as how the interpreter eventloop functions |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 11 | and the like. Use with care. |
| 12 | |
Fred Drake | 30cf118 | 2001-08-03 17:11:33 +0000 | [diff] [blame] | 13 | Note the capitalization of the module name; this is a historical |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 14 | artifact. |
Fred Drake | 30cf118 | 2001-08-03 17:11:33 +0000 | [diff] [blame] | 15 | |
Jack Jansen | cb60dae | 2001-08-03 13:19:56 +0000 | [diff] [blame] | 16 | \begin{datadesc}{runtimemodel} |
Jack Jansen | 5860dab | 2003-02-24 11:02:36 +0000 | [diff] [blame] | 17 | Either\code{'carbon'} or \code{'macho'}. This |
| 18 | signifies whether this Python uses the Mac OS X and Mac OS 9 compatible |
| 19 | CarbonLib style or the Mac OS |
| 20 | X-only Mach-O style. In earlier versions of Python the value could |
| 21 | also be \code{'ppc'} for the classic Mac OS 8 runtime model. |
| 22 | \end{datadesc} |
| 23 | |
| 24 | \begin{datadesc}{linkmodel} |
| 25 | The way the interpreter has been linked. As extension modules may be |
| 26 | incompatible between linking models, packages could use this information to give |
| 27 | more decent error messages. The value is one of \code{'static'} for a |
| 28 | statically 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 Jansen | cb60dae | 2001-08-03 13:19:56 +0000 | [diff] [blame] | 31 | \end{datadesc} |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 32 | |
| 33 | \begin{excdesc}{Error} |
| 34 | This exception is raised on MacOS generated errors, either from |
| 35 | functions in this module or from other mac-specific modules like the |
| 36 | toolbox interfaces. The arguments are the integer error code (the |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 37 | \cdata{OSErr} value) and a textual description of the error code. |
Guido van Rossum | 7e42cab | 1996-10-15 14:37:31 +0000 | [diff] [blame] | 38 | Symbolic names for all known error codes are defined in the standard |
Fred Drake | 30cf118 | 2001-08-03 17:11:33 +0000 | [diff] [blame] | 39 | module \refmodule{macerrors}.\refstmodindex{macerrors} |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 40 | \end{excdesc} |
| 41 | |
Guido van Rossum | e229d86 | 1997-08-18 15:14:26 +0000 | [diff] [blame] | 42 | \begin{funcdesc}{SetEventHandler}{handler} |
| 43 | In the inner interpreter loop Python will occasionally check for events, |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 44 | unless disabled with \function{ScheduleParams()}. With this function you |
Guido van Rossum | e229d86 | 1997-08-18 15:14:26 +0000 | [diff] [blame] | 45 | can pass a Python event-handler function that will be called if an event |
| 46 | is available. The event is passed as parameter and the function should return |
| 47 | non-zero if the event has been fully processed, otherwise event processing |
| 48 | continues (by passing the event to the console window package, for instance). |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 49 | |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 50 | Call \function{SetEventHandler()} without a parameter to clear the |
| 51 | event handler. Setting an event handler while one is already set is an |
| 52 | error. |
Jack Jansen | 7aeba45 | 2003-02-12 09:58:33 +0000 | [diff] [blame] | 53 | |
| 54 | Availability: MacPython-OS9. |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 55 | \end{funcdesc} |
| 56 | |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 57 | \begin{funcdesc}{SchedParams}{\optional{doint\optional{, evtmask\optional{, |
| 58 | besocial\optional{, interval\optional{, |
| 59 | bgyield}}}}}} |
Guido van Rossum | e229d86 | 1997-08-18 15:14:26 +0000 | [diff] [blame] | 60 | Influence the interpreter inner loop event handling. \var{Interval} |
| 61 | specifies how often (in seconds, floating point) the interpreter |
| 62 | should enter the event processing code. When true, \var{doint} causes |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 63 | interrupt (command-dot) checking to be done. \var{evtmask} tells the |
Guido van Rossum | e229d86 | 1997-08-18 15:14:26 +0000 | [diff] [blame] | 64 | interpreter to do event processing for events in the mask (redraws, |
Fred Drake | 289f97d | 1997-08-22 13:51:31 +0000 | [diff] [blame] | 65 | mouseclicks to switch to other applications, etc). The \var{besocial} |
| 66 | flag gives other processes a chance to run. They are granted minimal |
Guido van Rossum | e229d86 | 1997-08-18 15:14:26 +0000 | [diff] [blame] | 67 | runtime when Python is in the foreground and \var{bgyield} seconds per |
| 68 | \var{interval} when Python runs in the background. |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 69 | |
Guido van Rossum | e229d86 | 1997-08-18 15:14:26 +0000 | [diff] [blame] | 70 | All parameters are optional, and default to the current value. The return |
| 71 | value of this function is a tuple with the old values of these options. |
| 72 | Initial defaults are that all processing is enabled, checking is done every |
Fred Drake | 17f690f | 2001-07-14 02:14:42 +0000 | [diff] [blame] | 73 | quarter second and the processor is given up for a quarter second when in the |
Guido van Rossum | e229d86 | 1997-08-18 15:14:26 +0000 | [diff] [blame] | 74 | background. |
Jack Jansen | d22eb59 | 2002-10-19 21:36:56 +0000 | [diff] [blame] | 75 | |
| 76 | The most common use case is to call \code{SchedParams(0, 0)} to completely disable |
| 77 | event handling in the interpreter mainloop. |
Jack Jansen | 7aeba45 | 2003-02-12 09:58:33 +0000 | [diff] [blame] | 78 | |
| 79 | Availability: MacPython-OS9. |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 80 | \end{funcdesc} |
| 81 | |
| 82 | \begin{funcdesc}{HandleEvent}{ev} |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 83 | Pass the event record \var{ev} back to the Python event loop, or |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 84 | possibly to the handler for the \code{sys.stdout} window (based on the |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 85 | compiler used to build Python). This allows Python programs that do |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 86 | their own event handling to still have some command-period and |
| 87 | window-switching capability. |
Guido van Rossum | e229d86 | 1997-08-18 15:14:26 +0000 | [diff] [blame] | 88 | |
| 89 | If you attempt to call this function from an event handler set through |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 90 | \function{SetEventHandler()} you will get an exception. |
Jack Jansen | 7aeba45 | 2003-02-12 09:58:33 +0000 | [diff] [blame] | 91 | |
| 92 | Availability: MacPython-OS9. |
Jack Jansen | ebed45f | 1995-08-14 13:40:05 +0000 | [diff] [blame] | 93 | \end{funcdesc} |
| 94 | |
| 95 | \begin{funcdesc}{GetErrorString}{errno} |
| 96 | Return the textual description of MacOS error code \var{errno}. |
| 97 | \end{funcdesc} |
Guido van Rossum | 66774a9 | 1996-07-21 02:20:58 +0000 | [diff] [blame] | 98 | |
| 99 | \begin{funcdesc}{splash}{resid} |
| 100 | This function will put a splash window |
| 101 | on-screen, with the contents of the DLOG resource specified by |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 102 | \var{resid}. Calling with a zero argument will remove the splash |
Guido van Rossum | 7e42cab | 1996-10-15 14:37:31 +0000 | [diff] [blame] | 103 | screen. This function is useful if you want an applet to post a splash screen |
Guido van Rossum | 66774a9 | 1996-07-21 02:20:58 +0000 | [diff] [blame] | 104 | early in initialization without first having to load numerous |
| 105 | extension modules. |
Jack Jansen | 7aeba45 | 2003-02-12 09:58:33 +0000 | [diff] [blame] | 106 | |
| 107 | Availability: MacPython-OS9. |
Guido van Rossum | 66774a9 | 1996-07-21 02:20:58 +0000 | [diff] [blame] | 108 | \end{funcdesc} |
| 109 | |
Fred Drake | 671fe9d | 1997-12-29 18:53:31 +0000 | [diff] [blame] | 110 | \begin{funcdesc}{DebugStr}{message \optional{, object}} |
Jack Jansen | 7aeba45 | 2003-02-12 09:58:33 +0000 | [diff] [blame] | 111 | On Mac OS 9, drop to the low-level debugger with message \var{message}. The |
Guido van Rossum | 7e42cab | 1996-10-15 14:37:31 +0000 | [diff] [blame] | 112 | optional \var{object} argument is not used, but can easily be |
Jack Jansen | 7aeba45 | 2003-02-12 09:58:33 +0000 | [diff] [blame] | 113 | inspected from the debugger. On Mac OS X the string is simply printed |
| 114 | to stderr. |
Guido van Rossum | 7e42cab | 1996-10-15 14:37:31 +0000 | [diff] [blame] | 115 | |
| 116 | Note that you should use this function with extreme care: if no |
| 117 | low-level debugger like MacsBug is installed this call will crash your |
| 118 | system. It is intended mainly for developers of Python extension |
| 119 | modules. |
| 120 | \end{funcdesc} |
| 121 | |
Jack Jansen | 7aeba45 | 2003-02-12 09:58:33 +0000 | [diff] [blame] | 122 | \begin{funcdesc}{SysBeep}{} |
| 123 | Ring the bell. |
| 124 | \end{funcdesc} |
| 125 | |
| 126 | \begin{funcdesc}{GetTicks}{} |
| 127 | Get the number of clock ticks (1/60th of a second) since system boot. |
| 128 | \end{funcdesc} |
| 129 | |
| 130 | \begin{funcdesc}{GetCreatorAndType}{file} |
| 131 | Return the file creator and file type as two four-character strings. |
| 132 | The \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} |
| 137 | Set the file creator and file type. |
| 138 | The \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 |
| 140 | strings. |
| 141 | \end{funcdesc} |
| 142 | |
Fred Drake | 671fe9d | 1997-12-29 18:53:31 +0000 | [diff] [blame] | 143 | \begin{funcdesc}{openrf}{name \optional{, mode}} |
Guido van Rossum | 66774a9 | 1996-07-21 02:20:58 +0000 | [diff] [blame] | 144 | Open the resource fork of a file. Arguments are the same as for the |
Fred Drake | 6188592 | 1998-04-03 07:16:46 +0000 | [diff] [blame] | 145 | built-in function \function{open()}. The object returned has file-like |
| 146 | semantics, but it is not a Python file object, so there may be subtle |
Guido van Rossum | 66774a9 | 1996-07-21 02:20:58 +0000 | [diff] [blame] | 147 | differences. |
| 148 | \end{funcdesc} |
Jack Jansen | 5860dab | 2003-02-24 11:02:36 +0000 | [diff] [blame] | 149 | |
| 150 | \begin{funcdesc}{WMAvailable}{} |
| 151 | Checks wether the current process has access to the window manager. |
| 152 | The method will return \code{False} if the window manager is not available, |
| 153 | for instance when running on Mac OS X Server or when logged in via ssh, |
| 154 | or when the current interpreter is not running from a fullblown application |
| 155 | bundle. A script runs from an application bundle either when it has been |
| 156 | started with \program{pythonw} in stead of \program{python} or when running |
| 157 | as an applet. |
| 158 | |
| 159 | On Mac OS 9 the method always returns \code{True}. |
| 160 | \end{funcdesc} |