blob: e0830a1c0c2409868d50f56b036c1a75c6fc5455 [file] [log] [blame]
Fred Drake3a0351c1998-04-04 07:23:21 +00001\section{Built-in Module \module{macfs}}
Guido van Rossume47da0a1997-07-17 16:34:52 +00002\label{module-macfs}
Jack Jansene4be9be1995-02-28 15:46:09 +00003\bimodindex{macfs}
4
Guido van Rossum86751151995-02-28 17:14:32 +00005
Fred Drakecce10901998-03-17 06:33:25 +00006This module provides access to Macintosh FSSpec handling, the Alias
Fred Drake41788db1998-04-04 06:23:02 +00007Manager, \program{finder} aliases and the Standard File package.
8\index{Macintosh Alias Manager}
9\index{Alias Manager, Macintosh}
10\index{Standard File}
Jack Jansene4be9be1995-02-28 15:46:09 +000011
12Whenever a function or method expects a \var{file} argument, this
Guido van Rossum6bb1adc1995-03-13 10:03:32 +000013argument can be one of three things:\ (1) a full or partial Macintosh
Fred Drake41788db1998-04-04 06:23:02 +000014pathname, (2) an \pytype{FSSpec} object or (3) a 3-tuple \code{(\var{wdRefNum},
15\var{parID}, \var{name})} as described in \emph{Inside
16Macintosh:\ Files}\@. A description of aliases and the Standard File
17package can also be found there.
Jack Jansene4be9be1995-02-28 15:46:09 +000018
19\begin{funcdesc}{FSSpec}{file}
Fred Drake41788db1998-04-04 06:23:02 +000020Create an \pytype{FSSpec} object for the specified file.
Jack Jansene4be9be1995-02-28 15:46:09 +000021\end{funcdesc}
22
23\begin{funcdesc}{RawFSSpec}{data}
Fred Drake41788db1998-04-04 06:23:02 +000024Create an \pytype{FSSpec} object given the raw data for the \C{}
25structure for the \pytype{FSSpec} as a string. This is mainly useful
26if you have obtained an \pytype{FSSpec} structure over a network.
Jack Jansene4be9be1995-02-28 15:46:09 +000027\end{funcdesc}
28
29\begin{funcdesc}{RawAlias}{data}
Fred Drake41788db1998-04-04 06:23:02 +000030Create an \pytype{Alias} object given the raw data for the \C{}
31structure for the alias as a string. This is mainly useful if you
32have obtained an \pytype{FSSpec} structure over a network.
Jack Jansene4be9be1995-02-28 15:46:09 +000033\end{funcdesc}
34
Jack Jansene164bd81995-08-10 11:53:14 +000035\begin{funcdesc}{FInfo}{}
Fred Drake41788db1998-04-04 06:23:02 +000036Create a zero-filled \pytype{FInfo} object.
Jack Jansene164bd81995-08-10 11:53:14 +000037\end{funcdesc}
38
Jack Jansene4be9be1995-02-28 15:46:09 +000039\begin{funcdesc}{ResolveAliasFile}{file}
Fred Drake41788db1998-04-04 06:23:02 +000040Resolve an alias file. Returns a 3-tuple \code{(\var{fsspec},
41\var{isfolder}, \var{aliased})} where \var{fsspec} is the resulting
42\pytype{FSSpec} object, \var{isfolder} is true if \var{fsspec} points
43to a folder and \var{aliased} is true if the file was an alias in the
44first place (otherwise the \pytype{FSSpec} object for the file itself
45is returned).
Jack Jansene4be9be1995-02-28 15:46:09 +000046\end{funcdesc}
47
Fred Drakecce10901998-03-17 06:33:25 +000048\begin{funcdesc}{StandardGetFile}{\optional{type, ...}}
Guido van Rossum6bb1adc1995-03-13 10:03:32 +000049Present the user with a standard ``open input file''
Fred Drake41788db1998-04-04 06:23:02 +000050dialog. Optionally, you can pass up to four 4-character file types to limit
51the files the user can choose from. The function returns an \pytype{FSSpec}
Jack Jansene4be9be1995-02-28 15:46:09 +000052object and a flag indicating that the user completed the dialog
53without cancelling.
54\end{funcdesc}
55
Fred Drakecce10901998-03-17 06:33:25 +000056\begin{funcdesc}{PromptGetFile}{prompt\optional{, type, ...}}
Fred Drake41788db1998-04-04 06:23:02 +000057Similar to \function{StandardGetFile()} but allows you to specify a
58prompt.
Jack Jansen0e133741995-08-14 13:39:16 +000059\end{funcdesc}
60
Fred Drakecce10901998-03-17 06:33:25 +000061\begin{funcdesc}{StandardPutFile}{prompt, \optional{default}}
Jack Jansene4be9be1995-02-28 15:46:09 +000062Present the user with a standard ``open output file''
63dialog. \var{prompt} is the prompt string, and the optional
Guido van Rossum6bb1adc1995-03-13 10:03:32 +000064\var{default} argument initializes the output file name. The function
Fred Drake41788db1998-04-04 06:23:02 +000065returns an \pytype{FSSpec} object and a flag indicating that the user
66completed the dialog without cancelling.
Jack Jansene4be9be1995-02-28 15:46:09 +000067\end{funcdesc}
68
Jack Jansen0e133741995-08-14 13:39:16 +000069\begin{funcdesc}{GetDirectory}{\optional{prompt}}
Jack Jansene4be9be1995-02-28 15:46:09 +000070Present the user with a non-standard ``select a directory''
Jack Jansen0e133741995-08-14 13:39:16 +000071dialog. \var{prompt} is the prompt string, and the optional.
Fred Drake41788db1998-04-04 06:23:02 +000072Return an \pytype{FSSpec} object and a success-indicator.
Jack Jansene4be9be1995-02-28 15:46:09 +000073\end{funcdesc}
74
Guido van Rossum910a6711996-07-30 18:22:31 +000075\begin{funcdesc}{SetFolder}{\optional{fsspec}}
76Set the folder that is initially presented to the user when one of
Fred Drake41788db1998-04-04 06:23:02 +000077the file selection dialogs is presented. \var{fsspec} should point to
Guido van Rossum910a6711996-07-30 18:22:31 +000078a file in the folder, not the folder itself (the file need not exist,
79though). If no argument is passed the folder will be set to the
Fred Drake41788db1998-04-04 06:23:02 +000080current directory, i.e. what \function{os.getcwd()} returns.
Guido van Rossum910a6711996-07-30 18:22:31 +000081
82Note that starting with system 7.5 the user can change Standard File
83behaviour with the ``general controls'' controlpanel, thereby making
84this call inoperative.
85\end{funcdesc}
86
Fred Drakecce10901998-03-17 06:33:25 +000087\begin{funcdesc}{FindFolder}{where, which, create}
Jack Jansene164bd81995-08-10 11:53:14 +000088Locates one of the ``special'' folders that MacOS knows about, such as
Fred Drake41788db1998-04-04 06:23:02 +000089the trash or the Preferences folder. \var{where} is the disk to
90search, \var{which} is the 4-character string specifying which folder to
Jack Jansenda53c521995-10-10 14:43:20 +000091locate. Setting \var{create} causes the folder to be created if it
Fred Drake41788db1998-04-04 06:23:02 +000092does not exist. Returns a \code{(\var{vrefnum}, \var{dirid})} tuple.
Fred Drake29996071997-08-22 13:45:13 +000093\end{funcdesc}
Jack Jansenda53c521995-10-10 14:43:20 +000094
Guido van Rossume229d861997-08-18 15:14:26 +000095\begin{funcdesc}{NewAliasMinimalFromFullPath}{pathname}
Fred Drake41788db1998-04-04 06:23:02 +000096Return a minimal \pytype{alias} object that points to the given file, which
Guido van Rossume229d861997-08-18 15:14:26 +000097must be specified as a full pathname. This is the only way to create an
Fred Drake41788db1998-04-04 06:23:02 +000098\pytype{Alias} pointing to a non-existing file.
Guido van Rossume229d861997-08-18 15:14:26 +000099
Jack Jansenda53c521995-10-10 14:43:20 +0000100The constants for \var{where} and \var{which} can be obtained from the
101standard module \var{MACFS}.
Jack Jansene164bd81995-08-10 11:53:14 +0000102\end{funcdesc}
103
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000104\begin{funcdesc}{FindApplication}{creator}
105Locate the application with 4-char creator code \var{creator}. The
Fred Drake41788db1998-04-04 06:23:02 +0000106function returns an \pytype{FSSpec} object pointing to the application.
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000107\end{funcdesc}
108
Jack Jansene4be9be1995-02-28 15:46:09 +0000109\subsection{FSSpec objects}
Fred Drake41788db1998-04-04 06:23:02 +0000110\label{fsspec-objects}
Jack Jansene4be9be1995-02-28 15:46:09 +0000111
Fred Drake41788db1998-04-04 06:23:02 +0000112\begin{memberdesc}[FSSpec]{data}
Jack Jansene4be9be1995-02-28 15:46:09 +0000113The raw data from the FSSpec object, suitable for passing
114to other applications, for instance.
Fred Drake41788db1998-04-04 06:23:02 +0000115\end{memberdesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000116
Fred Drake19479911998-02-13 06:58:54 +0000117\setindexsubitem{(FSSpec object method)}
Fred Drake41788db1998-04-04 06:23:02 +0000118\begin{methoddesc}[FSSpec]{as_pathname}{}
119Return the full pathname of the file described by the \pytype{FSSpec}
120object.
121\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000122
Fred Drake41788db1998-04-04 06:23:02 +0000123\begin{methoddesc}[FSSpec]{as_tuple}{}
124Return the \code{(\var{wdRefNum}, \var{parID}, \var{name})} tuple of
125the file described by the \pytype{FSSpec} object.
126\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000127
Fred Drake41788db1998-04-04 06:23:02 +0000128\begin{methoddesc}[FSSpec]{NewAlias}{\optional{file}}
Jack Jansene4be9be1995-02-28 15:46:09 +0000129Create an Alias object pointing to the file described by this
Guido van Rossum6bb1adc1995-03-13 10:03:32 +0000130FSSpec. If the optional \var{file} parameter is present the alias
Jack Jansene4be9be1995-02-28 15:46:09 +0000131will be relative to that file, otherwise it will be absolute.
Fred Drake41788db1998-04-04 06:23:02 +0000132\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000133
Fred Drake41788db1998-04-04 06:23:02 +0000134\begin{methoddesc}[FSSpec]{NewAliasMinimal}{}
Jack Jansene4be9be1995-02-28 15:46:09 +0000135Create a minimal alias pointing to this file.
Fred Drake41788db1998-04-04 06:23:02 +0000136\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000137
Fred Drake41788db1998-04-04 06:23:02 +0000138\begin{methoddesc}[FSSpec]{GetCreatorType}{}
139Return the 4-character creator and type of the file.
140\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000141
Fred Drake41788db1998-04-04 06:23:02 +0000142\begin{methoddesc}[FSSpec]{SetCreatorType}{creator, type}
143Set the 4-character creator and type of the file.
144\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000145
Fred Drake41788db1998-04-04 06:23:02 +0000146\begin{methoddesc}[FSSpec]{GetFInfo}{}
147Return a \pytype{FInfo} object describing the finder info for the file.
148\end{methoddesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000149
Fred Drake41788db1998-04-04 06:23:02 +0000150\begin{methoddesc}[FSSpec]{SetFInfo}{finfo}
151Set the finder info for the file to the values given as \var{finfo}
152(an \pytype{FInfo} object).
153\end{methoddesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000154
Fred Drake41788db1998-04-04 06:23:02 +0000155\begin{methoddesc}[FSSpec]{GetDates}{}
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000156Return a tuple with three floating point values representing the
157creation date, modification date and backup date of the file.
Fred Drake41788db1998-04-04 06:23:02 +0000158\end{methoddesc}
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000159
Fred Drake41788db1998-04-04 06:23:02 +0000160\begin{methoddesc}[FSSpec]{SetDates}{crdate, moddate, backupdate}
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000161Set the creation, modification and backup date of the file. The values
162are in the standard floating point format used for times throughout
163Python.
Fred Drake41788db1998-04-04 06:23:02 +0000164\end{methoddesc}
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000165
Jack Jansene4be9be1995-02-28 15:46:09 +0000166
Fred Drake41788db1998-04-04 06:23:02 +0000167\subsection{Alias Objects}
168\label{alias-objects}
169
170\begin{memberdesc}[Alias]{data}
Jack Jansene4be9be1995-02-28 15:46:09 +0000171The raw data for the Alias record, suitable for storing in a resource
172or transmitting to other programs.
Fred Drake41788db1998-04-04 06:23:02 +0000173\end{memberdesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000174
Fred Drake41788db1998-04-04 06:23:02 +0000175\begin{methoddesc}[Alias]{Resolve}{\optional{file}}
Jack Jansene4be9be1995-02-28 15:46:09 +0000176Resolve the alias. If the alias was created as a relative alias you
Guido van Rossum6bb1adc1995-03-13 10:03:32 +0000177should pass the file relative to which it is. Return the FSSpec for
Fred Drake41788db1998-04-04 06:23:02 +0000178the file pointed to and a flag indicating whether the \pytype{Alias} object
Guido van Rossume229d861997-08-18 15:14:26 +0000179itself was modified during the search process. If the file does
180not exist but the path leading up to it does exist a valid fsspec
181is returned.
Fred Drake41788db1998-04-04 06:23:02 +0000182\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000183
Fred Drake41788db1998-04-04 06:23:02 +0000184\begin{methoddesc}[Alias]{GetInfo}{num}
185An interface to the \C{} routine \cfunction{GetAliasInfo()}.
186\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000187
Fred Drake41788db1998-04-04 06:23:02 +0000188\begin{methoddesc}[Alias]{Update}{file, \optional{file2}}
Jack Jansene4be9be1995-02-28 15:46:09 +0000189Update the alias to point to the \var{file} given. If \var{file2} is
190present a relative alias will be created.
Fred Drake41788db1998-04-04 06:23:02 +0000191\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000192
Fred Drake41788db1998-04-04 06:23:02 +0000193Note that it is currently not possible to directly manipulate a
194resource as an \pytype{Alias} object. Hence, after calling
195\method{Update()} or after \method{Resolve()} indicates that the alias
196has changed the Python program is responsible for getting the
Fred Drakedf0e3fc1998-04-07 20:04:27 +0000197\member{data} value from the \pytype{Alias} object and modifying the
198resource.
Jack Jansene4be9be1995-02-28 15:46:09 +0000199
200
Fred Drake41788db1998-04-04 06:23:02 +0000201\subsection{FInfo Objects}
202\label{finfo-objects}
Jack Jansene164bd81995-08-10 11:53:14 +0000203
Fred Drake41788db1998-04-04 06:23:02 +0000204See \emph{Inside Macintosh: Files} for a complete description of what
205the various fields mean.
Jack Jansene164bd81995-08-10 11:53:14 +0000206
Fred Drake41788db1998-04-04 06:23:02 +0000207\begin{memberdesc}[FInfo]{Creator}
208The 4-character creator code of the file.
209\end{memberdesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000210
Fred Drake41788db1998-04-04 06:23:02 +0000211\begin{memberdesc}[FInfo]{Type}
212The 4-character type code of the file.
213\end{memberdesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000214
Fred Drake41788db1998-04-04 06:23:02 +0000215\begin{memberdesc}[FInfo]{Flags}
Jack Jansenda53c521995-10-10 14:43:20 +0000216The finder flags for the file as 16-bit integer. The bit values in
Fred Drake41788db1998-04-04 06:23:02 +0000217\var{Flags} are defined in standard module \module{MACFS}.
218\end{memberdesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000219
Fred Drake41788db1998-04-04 06:23:02 +0000220\begin{memberdesc}[FInfo]{Location}
Jack Jansene164bd81995-08-10 11:53:14 +0000221A Point giving the position of the file's icon in its folder.
Fred Drake41788db1998-04-04 06:23:02 +0000222\end{memberdesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000223
Fred Drake41788db1998-04-04 06:23:02 +0000224\begin{memberdesc}[FInfo]{Fldr}
Jack Jansene164bd81995-08-10 11:53:14 +0000225The folder the file is in (as an integer).
Fred Drake41788db1998-04-04 06:23:02 +0000226\end{memberdesc}