\section{\module{macostools} ---
         Convenience routines for file manipulation}

\declaremodule{standard}{macostools}
  \platform{Mac}
\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.
\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 tell the finder to redraw 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{\module{findertools} ---
         The \program{finder}'s Apple Events interface}

\declaremodule{standard}{findertools}
  \platform{Mac}
\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's file menu.
\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}
