\section{Standard Module \sectcode{MiniAEFrame}}
\stmodindex{MiniAEFrame}
\label{module-MiniAEFrame}

The module \var{MiniAEFrame} provides a framework for an application
that can function as an OSA server, i.e. receive and process
AppleEvents. It can be used in conjunction with \var{FrameWork} or
standalone.

This module is temporary, it will eventually be replaced by a module
that handles argument names better and possibly automates making your
application scriptable.

The \var{MiniAEFrame} module defines the following classes:

\setindexsubitem{(in module MiniAEFrame)}

\begin{funcdesc}{AEServer}{}
A class that handles AppleEvent dispatch. Your application should
subclass this class together with either
\code{MiniAEFrame.MiniApplication} or
\code{FrameWork.Application}. Your \code{__init__} method should call
the \code{__init__} method for both classes.
\end{funcdesc}

\begin{funcdesc}{MiniApplication}{}
A class that is more or less compatible with
\code{FrameWork.Application} but with less functionality. Its
eventloop supports the apple menu, command-dot and AppleEvents, other
events are passed on to the Python interpreter and/or Sioux.
Useful if your application wants to use \code{AEServer} but does not
provide its own windows, etc.
\end{funcdesc}

\subsection{AEServer Objects}

\setindexsubitem{(AEServer method)}

\begin{funcdesc}{installaehandler}{classe\, type\, callback}
Installs an AppleEvent handler. \code{Classe} and \code{type} are the
four-char OSA Class and Type designators, \code{'****'} wildcards are
allowed. When a matching AppleEvent is received the parameters are
decoded and your callback is invoked.
\end{funcdesc}

\begin{funcdesc}{callback}{_object\, **kwargs}
Your callback is called with the OSA Direct Object as first positional
parameter. The other parameters are passed as keyword arguments, with
the 4-char designator as name. Three extra keyword parameters are
passed: \code{_class} and \code{_type} are the Class and Type
designators and \code{_attributes} is a dictionary with the AppleEvent
attributes.

The return value of your method is packed with
\code{aetools.packevent} and sent as reply.
\end{funcdesc}

Note that there are some serious problems with the current
design. AppleEvents which have non-identifier 4-char designators for
arguments are not implementable, and it is not possible to return an
error to the originator. This will be addressed in a future release.
