blob: fcb342cd1a91c1d349ec05d3cfab6cc8eb011d7c [file] [log] [blame]
Fred Drakec817e271998-08-10 18:40:22 +00001\section{\module{macfs} ---
Fred Drakef6863c11999-03-02 16:37:17 +00002 Various file system services}
Fred Drakefe7f3bc1998-07-23 17:55:31 +00003
Fred Drakef6863c11999-03-02 16:37:17 +00004\declaremodule{builtin}{macfs}
5 \platform{Mac}
Fred Drake72554e41998-11-25 20:07:35 +00006\modulesynopsis{Support for FSSpec, the Alias Manager,
7 \program{finder} aliases, and the Standard File package.}
Fred Drakefe7f3bc1998-07-23 17:55:31 +00008
Jack Jansene4be9be1995-02-28 15:46:09 +00009
Fred Drakecce10901998-03-17 06:33:25 +000010This module provides access to Macintosh FSSpec handling, the Alias
Fred Drake41788db1998-04-04 06:23:02 +000011Manager, \program{finder} aliases and the Standard File package.
12\index{Macintosh Alias Manager}
13\index{Alias Manager, Macintosh}
14\index{Standard File}
Jack Jansene4be9be1995-02-28 15:46:09 +000015
16Whenever a function or method expects a \var{file} argument, this
Guido van Rossum6bb1adc1995-03-13 10:03:32 +000017argument can be one of three things:\ (1) a full or partial Macintosh
Fred Drakeeecdc7f2000-10-14 04:45:22 +000018pathname, (2) an \pytype{FSSpec} object or (3) a 3-tuple
19\code{(\var{wdRefNum}, \var{parID}, \var{name})} as described in
Jack Jansend37f75b2002-08-06 22:15:23 +000020\citetitle{Inside Macintosh:\ Files}. An \pytype{FSSpec} can point to
21a non-existing file, as long as the folder containing the file exists.
22Under MacPython the same is true for a pathname, but not under unix-Pyton
23because of the way pathnames and FSRefs works. See Apple's documentation
24for details.
25
26A description of aliases and the
Fred Drakeeecdc7f2000-10-14 04:45:22 +000027Standard File package can also be found there.
28
Fred Drake0aa811c2001-10-20 04:24:09 +000029\note{A module, \refmodule{macfsn}, is auto-imported to replace
30StandardFile calls in \module{macfs} with NavServices calls.}
Jack Jansene4be9be1995-02-28 15:46:09 +000031
32\begin{funcdesc}{FSSpec}{file}
Fred Drake41788db1998-04-04 06:23:02 +000033Create an \pytype{FSSpec} object for the specified file.
Jack Jansene4be9be1995-02-28 15:46:09 +000034\end{funcdesc}
35
36\begin{funcdesc}{RawFSSpec}{data}
Fred Drake41788db1998-04-04 06:23:02 +000037Create an \pytype{FSSpec} object given the raw data for the \C{}
38structure for the \pytype{FSSpec} as a string. This is mainly useful
39if you have obtained an \pytype{FSSpec} structure over a network.
Jack Jansene4be9be1995-02-28 15:46:09 +000040\end{funcdesc}
41
42\begin{funcdesc}{RawAlias}{data}
Fred Drake41788db1998-04-04 06:23:02 +000043Create an \pytype{Alias} object given the raw data for the \C{}
44structure for the alias as a string. This is mainly useful if you
45have obtained an \pytype{FSSpec} structure over a network.
Jack Jansene4be9be1995-02-28 15:46:09 +000046\end{funcdesc}
47
Jack Jansene164bd81995-08-10 11:53:14 +000048\begin{funcdesc}{FInfo}{}
Fred Drake41788db1998-04-04 06:23:02 +000049Create a zero-filled \pytype{FInfo} object.
Jack Jansene164bd81995-08-10 11:53:14 +000050\end{funcdesc}
51
Jack Jansene4be9be1995-02-28 15:46:09 +000052\begin{funcdesc}{ResolveAliasFile}{file}
Fred Drake41788db1998-04-04 06:23:02 +000053Resolve an alias file. Returns a 3-tuple \code{(\var{fsspec},
54\var{isfolder}, \var{aliased})} where \var{fsspec} is the resulting
55\pytype{FSSpec} object, \var{isfolder} is true if \var{fsspec} points
56to a folder and \var{aliased} is true if the file was an alias in the
57first place (otherwise the \pytype{FSSpec} object for the file itself
58is returned).
Jack Jansene4be9be1995-02-28 15:46:09 +000059\end{funcdesc}
60
Fred Drake4c6d21a2000-09-22 15:46:35 +000061\begin{funcdesc}{StandardGetFile}{\optional{type, \moreargs}}
Guido van Rossum6bb1adc1995-03-13 10:03:32 +000062Present the user with a standard ``open input file''
Fred Drake41788db1998-04-04 06:23:02 +000063dialog. Optionally, you can pass up to four 4-character file types to limit
64the files the user can choose from. The function returns an \pytype{FSSpec}
Jack Jansene4be9be1995-02-28 15:46:09 +000065object and a flag indicating that the user completed the dialog
66without cancelling.
67\end{funcdesc}
68
Fred Drake4c6d21a2000-09-22 15:46:35 +000069\begin{funcdesc}{PromptGetFile}{prompt\optional{, type, \moreargs}}
Fred Drake41788db1998-04-04 06:23:02 +000070Similar to \function{StandardGetFile()} but allows you to specify a
Fred Drakeeecdc7f2000-10-14 04:45:22 +000071prompt which will be displayed at the top of the dialog.
Jack Jansen0e133741995-08-14 13:39:16 +000072\end{funcdesc}
73
Fred Drake4c6d21a2000-09-22 15:46:35 +000074\begin{funcdesc}{StandardPutFile}{prompt\optional{, default}}
Jack Jansene4be9be1995-02-28 15:46:09 +000075Present the user with a standard ``open output file''
76dialog. \var{prompt} is the prompt string, and the optional
Guido van Rossum6bb1adc1995-03-13 10:03:32 +000077\var{default} argument initializes the output file name. The function
Fred Drake41788db1998-04-04 06:23:02 +000078returns an \pytype{FSSpec} object and a flag indicating that the user
79completed the dialog without cancelling.
Jack Jansene4be9be1995-02-28 15:46:09 +000080\end{funcdesc}
81
Jack Jansen0e133741995-08-14 13:39:16 +000082\begin{funcdesc}{GetDirectory}{\optional{prompt}}
Fred Drakeeecdc7f2000-10-14 04:45:22 +000083Present the user with a non-standard ``select a directory'' dialog. You
84have to first open the directory before clicking on the ``select current
85directory'' button. \var{prompt} is the prompt string which will be
86displayed at the top of the dialog. Return an \pytype{FSSpec} object and
87a success-indicator.
Jack Jansene4be9be1995-02-28 15:46:09 +000088\end{funcdesc}
89
Guido van Rossum910a6711996-07-30 18:22:31 +000090\begin{funcdesc}{SetFolder}{\optional{fsspec}}
91Set the folder that is initially presented to the user when one of
Fred Drake41788db1998-04-04 06:23:02 +000092the file selection dialogs is presented. \var{fsspec} should point to
Guido van Rossum910a6711996-07-30 18:22:31 +000093a file in the folder, not the folder itself (the file need not exist,
94though). If no argument is passed the folder will be set to the
Fred Drake41788db1998-04-04 06:23:02 +000095current directory, i.e. what \function{os.getcwd()} returns.
Guido van Rossum910a6711996-07-30 18:22:31 +000096
97Note that starting with system 7.5 the user can change Standard File
Fred Drakeeecdc7f2000-10-14 04:45:22 +000098behaviour with the ``general controls'' control panel, thereby making
Guido van Rossum910a6711996-07-30 18:22:31 +000099this call inoperative.
100\end{funcdesc}
101
Fred Drakecce10901998-03-17 06:33:25 +0000102\begin{funcdesc}{FindFolder}{where, which, create}
Jack Jansene164bd81995-08-10 11:53:14 +0000103Locates one of the ``special'' folders that MacOS knows about, such as
Fred Drake41788db1998-04-04 06:23:02 +0000104the trash or the Preferences folder. \var{where} is the disk to
105search, \var{which} is the 4-character string specifying which folder to
Jack Jansenda53c521995-10-10 14:43:20 +0000106locate. Setting \var{create} causes the folder to be created if it
Fred Drake41788db1998-04-04 06:23:02 +0000107does not exist. Returns a \code{(\var{vrefnum}, \var{dirid})} tuple.
Fred Drake29996071997-08-22 13:45:13 +0000108\end{funcdesc}
Jack Jansenda53c521995-10-10 14:43:20 +0000109
Guido van Rossume229d861997-08-18 15:14:26 +0000110\begin{funcdesc}{NewAliasMinimalFromFullPath}{pathname}
Fred Drake41788db1998-04-04 06:23:02 +0000111Return a minimal \pytype{alias} object that points to the given file, which
Guido van Rossume229d861997-08-18 15:14:26 +0000112must be specified as a full pathname. This is the only way to create an
Fred Drake41788db1998-04-04 06:23:02 +0000113\pytype{Alias} pointing to a non-existing file.
Guido van Rossume229d861997-08-18 15:14:26 +0000114
Jack Jansenda53c521995-10-10 14:43:20 +0000115The constants for \var{where} and \var{which} can be obtained from the
116standard module \var{MACFS}.
Jack Jansene164bd81995-08-10 11:53:14 +0000117\end{funcdesc}
118
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000119\begin{funcdesc}{FindApplication}{creator}
Fred Drakeeecdc7f2000-10-14 04:45:22 +0000120Locate the application with 4-character creator code \var{creator}. The
Fred Drake41788db1998-04-04 06:23:02 +0000121function returns an \pytype{FSSpec} object pointing to the application.
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000122\end{funcdesc}
123
Fred Drakef6863c11999-03-02 16:37:17 +0000124
Fred Drakeefff11b2002-01-17 04:44:34 +0000125\subsection{FSSpec Objects \label{fsspec-objects}}
Jack Jansene4be9be1995-02-28 15:46:09 +0000126
Fred Drake41788db1998-04-04 06:23:02 +0000127\begin{memberdesc}[FSSpec]{data}
Jack Jansene4be9be1995-02-28 15:46:09 +0000128The raw data from the FSSpec object, suitable for passing
129to other applications, for instance.
Fred Drake41788db1998-04-04 06:23:02 +0000130\end{memberdesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000131
Fred Drake41788db1998-04-04 06:23:02 +0000132\begin{methoddesc}[FSSpec]{as_pathname}{}
133Return the full pathname of the file described by the \pytype{FSSpec}
134object.
135\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000136
Fred Drake41788db1998-04-04 06:23:02 +0000137\begin{methoddesc}[FSSpec]{as_tuple}{}
138Return the \code{(\var{wdRefNum}, \var{parID}, \var{name})} tuple of
139the file described by the \pytype{FSSpec} object.
140\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000141
Fred Drake41788db1998-04-04 06:23:02 +0000142\begin{methoddesc}[FSSpec]{NewAlias}{\optional{file}}
Jack Jansene4be9be1995-02-28 15:46:09 +0000143Create an Alias object pointing to the file described by this
Guido van Rossum6bb1adc1995-03-13 10:03:32 +0000144FSSpec. If the optional \var{file} parameter is present the alias
Jack Jansene4be9be1995-02-28 15:46:09 +0000145will be relative to that file, otherwise it will be absolute.
Fred Drake41788db1998-04-04 06:23:02 +0000146\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000147
Fred Drake41788db1998-04-04 06:23:02 +0000148\begin{methoddesc}[FSSpec]{NewAliasMinimal}{}
Jack Jansene4be9be1995-02-28 15:46:09 +0000149Create a minimal alias pointing to this file.
Fred Drake41788db1998-04-04 06:23:02 +0000150\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000151
Fred Drake41788db1998-04-04 06:23:02 +0000152\begin{methoddesc}[FSSpec]{GetCreatorType}{}
153Return the 4-character creator and type of the file.
154\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000155
Fred Drake41788db1998-04-04 06:23:02 +0000156\begin{methoddesc}[FSSpec]{SetCreatorType}{creator, type}
157Set the 4-character creator and type of the file.
158\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000159
Fred Drake41788db1998-04-04 06:23:02 +0000160\begin{methoddesc}[FSSpec]{GetFInfo}{}
161Return a \pytype{FInfo} object describing the finder info for the file.
162\end{methoddesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000163
Fred Drake41788db1998-04-04 06:23:02 +0000164\begin{methoddesc}[FSSpec]{SetFInfo}{finfo}
165Set the finder info for the file to the values given as \var{finfo}
166(an \pytype{FInfo} object).
167\end{methoddesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000168
Fred Drake41788db1998-04-04 06:23:02 +0000169\begin{methoddesc}[FSSpec]{GetDates}{}
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000170Return a tuple with three floating point values representing the
171creation date, modification date and backup date of the file.
Fred Drake41788db1998-04-04 06:23:02 +0000172\end{methoddesc}
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000173
Fred Drake41788db1998-04-04 06:23:02 +0000174\begin{methoddesc}[FSSpec]{SetDates}{crdate, moddate, backupdate}
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000175Set the creation, modification and backup date of the file. The values
176are in the standard floating point format used for times throughout
177Python.
Fred Drake41788db1998-04-04 06:23:02 +0000178\end{methoddesc}
Guido van Rossum7e42cab1996-10-15 14:37:31 +0000179
Jack Jansene4be9be1995-02-28 15:46:09 +0000180
Fred Drakef6863c11999-03-02 16:37:17 +0000181\subsection{Alias Objects \label{alias-objects}}
Fred Drake41788db1998-04-04 06:23:02 +0000182
183\begin{memberdesc}[Alias]{data}
Jack Jansene4be9be1995-02-28 15:46:09 +0000184The raw data for the Alias record, suitable for storing in a resource
185or transmitting to other programs.
Fred Drake41788db1998-04-04 06:23:02 +0000186\end{memberdesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000187
Fred Drake41788db1998-04-04 06:23:02 +0000188\begin{methoddesc}[Alias]{Resolve}{\optional{file}}
Jack Jansene4be9be1995-02-28 15:46:09 +0000189Resolve the alias. If the alias was created as a relative alias you
Guido van Rossum6bb1adc1995-03-13 10:03:32 +0000190should pass the file relative to which it is. Return the FSSpec for
Fred Drake41788db1998-04-04 06:23:02 +0000191the file pointed to and a flag indicating whether the \pytype{Alias} object
Guido van Rossume229d861997-08-18 15:14:26 +0000192itself was modified during the search process. If the file does
193not exist but the path leading up to it does exist a valid fsspec
194is returned.
Fred Drake41788db1998-04-04 06:23:02 +0000195\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000196
Fred Drake41788db1998-04-04 06:23:02 +0000197\begin{methoddesc}[Alias]{GetInfo}{num}
198An interface to the \C{} routine \cfunction{GetAliasInfo()}.
199\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000200
Fred Drake4c6d21a2000-09-22 15:46:35 +0000201\begin{methoddesc}[Alias]{Update}{file\optional{, file2}}
Jack Jansene4be9be1995-02-28 15:46:09 +0000202Update the alias to point to the \var{file} given. If \var{file2} is
203present a relative alias will be created.
Fred Drake41788db1998-04-04 06:23:02 +0000204\end{methoddesc}
Jack Jansene4be9be1995-02-28 15:46:09 +0000205
Fred Drake41788db1998-04-04 06:23:02 +0000206Note that it is currently not possible to directly manipulate a
207resource as an \pytype{Alias} object. Hence, after calling
208\method{Update()} or after \method{Resolve()} indicates that the alias
209has changed the Python program is responsible for getting the
Fred Drakedf0e3fc1998-04-07 20:04:27 +0000210\member{data} value from the \pytype{Alias} object and modifying the
211resource.
Jack Jansene4be9be1995-02-28 15:46:09 +0000212
213
Fred Drakef6863c11999-03-02 16:37:17 +0000214\subsection{FInfo Objects \label{finfo-objects}}
Jack Jansene164bd81995-08-10 11:53:14 +0000215
Fred Drakee15eb351999-11-10 16:13:25 +0000216See \citetitle{Inside Macintosh: Files} for a complete description of what
Fred Drake41788db1998-04-04 06:23:02 +0000217the various fields mean.
Jack Jansene164bd81995-08-10 11:53:14 +0000218
Fred Drake41788db1998-04-04 06:23:02 +0000219\begin{memberdesc}[FInfo]{Creator}
220The 4-character creator code of the file.
221\end{memberdesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000222
Fred Drake41788db1998-04-04 06:23:02 +0000223\begin{memberdesc}[FInfo]{Type}
224The 4-character type code of the file.
225\end{memberdesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000226
Fred Drake41788db1998-04-04 06:23:02 +0000227\begin{memberdesc}[FInfo]{Flags}
Jack Jansenda53c521995-10-10 14:43:20 +0000228The finder flags for the file as 16-bit integer. The bit values in
Fred Drake41788db1998-04-04 06:23:02 +0000229\var{Flags} are defined in standard module \module{MACFS}.
230\end{memberdesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000231
Fred Drake41788db1998-04-04 06:23:02 +0000232\begin{memberdesc}[FInfo]{Location}
Jack Jansene164bd81995-08-10 11:53:14 +0000233A Point giving the position of the file's icon in its folder.
Fred Drake41788db1998-04-04 06:23:02 +0000234\end{memberdesc}
Jack Jansene164bd81995-08-10 11:53:14 +0000235
Fred Drake41788db1998-04-04 06:23:02 +0000236\begin{memberdesc}[FInfo]{Fldr}
Jack Jansene164bd81995-08-10 11:53:14 +0000237The folder the file is in (as an integer).
Fred Drake41788db1998-04-04 06:23:02 +0000238\end{memberdesc}