summaryrefslogtreecommitdiffstats
path: root/Doc/libmacfs.tex
blob: 9df3f84d21d51eb9e11cbdf2bf781eafa5520b75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
\section{Built-in Module \sectcode{macfs}}
\bimodindex{macfs}

\renewcommand{\indexsubitem}{(in module macfs)}

This module provides access to macintosh FSSpec handling, the Alias
Manager, finder aliases and the Standard File package.

Whenever a function or method expects a \var{file} argument, this
argument can be one of three things:\ (1) a full or partial Macintosh
pathname, (2) an FSSpec object or (3) a 3-tuple \code{(wdRefNum,
parID, name)} as described in Inside Mac VI\@. A description of aliases
and the standard file package can also be found there.

\begin{funcdesc}{FSSpec}{file}
Create an FSSpec object for the specified file.
\end{funcdesc}

\begin{funcdesc}{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.
\end{funcdesc}

\begin{funcdesc}{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.
\end{funcdesc}

\begin{funcdesc}{FInfo}{}
Create a zero-filled FInfo object.
\end{funcdesc}

\begin{funcdesc}{ResolveAliasFile}{file}
Resolve an alias file. Returns a 3-tuple \code{(\var{fsspec}, \var{isfolder},
\var{aliased})} where \var{fsspec} is the resulting FSSpec object,
\var{isfolder} is true if \var{fsspec} points to a folder and
\var{aliased} is true if the file was an alias in the first place
(otherwise the FSSpec object for the file itself is returned).
\end{funcdesc}

\begin{funcdesc}{StandardGetFile}{\optional{type\, ...}}
Present the user with a standard ``open input file''
dialog. Optionally, you can pass up to four 4-char 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.
\end{funcdesc}

\begin{funcdesc}{StandardPutFile}{prompt\, \optional{default}}
Present the user with a standard ``open output file''
dialog. \var{prompt} is the prompt string, and the optional
\var{default} argument initializes the output file name. The function
returns an FSSpec object and a flag indicating that the user completed
the dialog without cancelling.
\end{funcdesc}

\begin{funcdesc}{GetDirectory}{}
Present the user with a non-standard ``select a directory''
dialog. Return an FSSpec object and a success-indicator.
\end{funcdesc}

\begin{funcdesc}{FindFolder}{where\, which\, create}
Locates one of the ``special'' folders that MacOS knows about, such as
the trash or the Preferences folder. \var{Where} is the disk to search
(\code{0x8000} for the boot disk), \var{which} is the 4-char string
specifying which folder to locate. Setting \var{create} causes the
folder to be created if it does not exist. Returns a \code{(vrefnum,
dirid)} tuple. See Inside Mac VI for a complete description, including
4-char names.
\end{funcdesc}

\subsection{FSSpec objects}

\renewcommand{\indexsubitem}{(FSSpec object attribute)}
\begin{datadesc}{data}
The raw data from the FSSpec object, suitable for passing
to other applications, for instance.
\end{datadesc}

\renewcommand{\indexsubitem}{(FSSpec object method)}
\begin{funcdesc}{as_pathname}{}
Return the full pathname of the file described by the FSSpec object.
\end{funcdesc}

\begin{funcdesc}{as_tuple}{}
Return the \code{(\var{wdRefNum}, \var{parID}, \var{name})} tuple of the file described
by the FSSpec object.
\end{funcdesc}

\begin{funcdesc}{NewAlias}{\optional{file}}
Create an Alias object pointing to the file described by this
FSSpec. If the optional \var{file} parameter is present the alias
will be relative to that file, otherwise it will be absolute.
\end{funcdesc}

\begin{funcdesc}{NewAliasMinimal}{}
Create a minimal alias pointing to this file.
\end{funcdesc}

\begin{funcdesc}{GetCreatorType}{}
Return the 4-char creator and type of the file.
\end{funcdesc}

\begin{funcdesc}{SetCreatorType}{creator\, type}
Set the 4-char creator and type of the file.
\end{funcdesc}

\begin{funcdesc}{GetFInfo}{}
Return a FInfo object describing the finder info for the file.
\end{funcdesc}

\begin{funcdesc}{SetFInfo}{finfo}
Set the finder info for the file to the values specified in the
\var{finfo} object.
\end{funcdesc}

\subsection{alias objects}

\renewcommand{\indexsubitem}{(alias object attribute)}
\begin{datadesc}{data}
The raw data for the Alias record, suitable for storing in a resource
or transmitting to other programs.
\end{datadesc}

\renewcommand{\indexsubitem}{(alias object method)}
\begin{funcdesc}{Resolve}{\optional{file}}
Resolve the alias. If the alias was created as a relative alias you
should pass the file relative to which it is. Return the FSSpec for
the file pointed to and a flag indicating whether the alias object
itself was modified during the search process. 
\end{funcdesc}

\begin{funcdesc}{GetInfo}{num}
An interface to the C routine \code{GetAliasInfo()}.
\end{funcdesc}

\begin{funcdesc}{Update}{file\, \optional{file2}}
Update the alias to point to the \var{file} given. If \var{file2} is
present a relative alias will be created.
\end{funcdesc}

Note that it is currently not possible to directly manipulate a resource
as an alias object. Hence, after calling \var{Update} or after
\var{Resolve} indicates that the alias has changed the Python program
is responsible for getting the \var{data} from the alias object and
modifying the resource.


\subsection{FInfo objects}

See Inside Mac for a complete description of what the various fields
mean.

\renewcommand{\indexsubitem}{(FInfo object attribute)}
\begin{datadesc}{Creator}
The 4-char creator code of the file.
\end{datadesc}

\begin{datadesc}{Type}
The 4-char type code of the file.
\end{datadesc}

\begin{datadesc}{Flags}
The finder flags for the file as 16-bit integer.
\end{datadesc}

\begin{datadesc}{Location}
A Point giving the position of the file's icon in its folder.
\end{datadesc}

\begin{datadesc}{Fldr}
The folder the file is in (as an integer).
\end{datadesc}