\section{Standard Module \module{macostools}}
\declaremodule{standard}{macostools}

\modulesynopsis{Convenience routines for file manipulation.}


This module contains some convenience routines for file-manipulation
on the Macintosh.

The \module{macostools} module defines the following functions:


\begin{funcdesc}{copy}{src, dst\optional{, createpath\optional{, copytimes}}}
Copy file \var{src} to \var{dst}. The files can be specified as
pathnames or \pytype{FSSpec} objects. If \var{createpath} is non-zero
\var{dst} must be a pathname and the folders leading to the
destination are created if necessary.  The method copies data and
resource fork and some finder information (creator, type, flags) and
optionally the creation, modification and backup times (default is to
copy them). Custom icons, comments and icon position are not copied.

If the source is an alias the original to which the alias points is
copied, not the aliasfile.
\end{funcdesc}

\begin{funcdesc}{copytree}{src, dst}
Recursively copy a file tree from \var{src} to \var{dst}, creating
folders as needed. \var{src} and \var{dst} should be specified as
pathnames.
\end{funcdesc}

\begin{funcdesc}{mkalias}{src, dst}
Create a finder alias \var{dst} pointing to \var{src}. Both may be
specified as pathnames or \pytype{FSSpec} objects.
\end{funcdesc}

\begin{funcdesc}{touched}{dst}
Tell the finder that some bits of finder-information such as creator
or type for file \var{dst} has changed. The file can be specified by
pathname or fsspec. This call should prod the finder into redrawing the
files icon.
\end{funcdesc}

\begin{datadesc}{BUFSIZ}
The buffer size for \code{copy}, default 1 megabyte.
\end{datadesc}

Note that the process of creating finder aliases is not specified in
the Apple documentation. Hence, aliases created with \function{mkalias()}
could conceivably have incompatible behaviour in some cases.

\section{Standard Module \module{findertools}}
\declaremodule{standard}{findertools}

\modulesynopsis{Wrappers around the \program{finder}'s Apple Events interface.}


This module contains routines that give Python programs access to some
functionality provided by the finder. They are implemented as wrappers
around the AppleEvent\index{AppleEvents} interface to the finder.

All file and folder parameters can be specified either as full
pathnames or as \pytype{FSSpec} objects.

The \module{findertools} module defines the following functions:


\begin{funcdesc}{launch}{file}
Tell the finder to launch \var{file}. What launching means depends on the file:
applications are started, folders are opened and documents are opened
in the correct application.
\end{funcdesc}

\begin{funcdesc}{Print}{file}
Tell the finder to print a file (again specified by full pathname or
\pytype{FSSpec}). The behaviour is identical to selecting the file and using
the print command in the finder.
\end{funcdesc}

\begin{funcdesc}{copy}{file, destdir}
Tell the finder to copy a file or folder \var{file} to folder
\var{destdir}. The function returns an \pytype{Alias} object pointing to
the new file.
\end{funcdesc}

\begin{funcdesc}{move}{file, destdir}
Tell the finder to move a file or folder \var{file} to folder
\var{destdir}. The function returns an \pytype{Alias} object pointing to
the new file.
\end{funcdesc}

\begin{funcdesc}{sleep}{}
Tell the finder to put the Macintosh to sleep, if your machine
supports it.
\end{funcdesc}

\begin{funcdesc}{restart}{}
Tell the finder to perform an orderly restart of the machine.
\end{funcdesc}

\begin{funcdesc}{shutdown}{}
Tell the finder to perform an orderly shutdown of the machine.
\end{funcdesc}
