\section{\module{panel} ---
         None}
\declaremodule{standard}{panel}

\modulesynopsis{None}


\strong{Please note:} The FORMS library, to which the
\code{fl}\refbimodindex{fl} module described above interfaces, is a
simpler and more accessible user interface library for use with GL
than the \code{panel} module (besides also being by a Dutch author).

This module should be used instead of the built-in module
\code{pnl}\refbimodindex{pnl}
to interface with the
\emph{Panel Library}.

The module is too large to document here in its entirety.
One interesting function:

\begin{funcdesc}{defpanellist}{filename}
Parses a panel description file containing S-expressions written by the
\emph{Panel Editor}
that accompanies the Panel Library and creates the described panels.
It returns a list of panel objects.
\end{funcdesc}

\warning{The Python interpreter will dump core if you don't create a
GL window before calling
\code{panel.mkpanel()}
or
\code{panel.defpanellist()}.}

\section{\module{panelparser} ---
         None}
\declaremodule{standard}{panelparser}

\modulesynopsis{None}


This module defines a self-contained parser for S-expressions as output
by the Panel Editor (which is written in Scheme so it can't help writing
S-expressions).
The relevant function is
\code{panelparser.parse_file(\var{file})}
which has a file object (not a filename!) as argument and returns a list
of parsed S-expressions.
Each S-expression is converted into a Python list, with atoms converted
to Python strings and sub-expressions (recursively) to Python lists.
For more details, read the module file.
% XXXXJH should be funcdesc, I think

\section{\module{pnl} ---
         None}
\declaremodule{builtin}{pnl}

\modulesynopsis{None}


This module provides access to the
\emph{Panel Library}
built by NASA Ames\index{NASA} (to get it, send email to
\code{panel-request@nas.nasa.gov}).
All access to it should be done through the standard module
\code{panel}\refstmodindex{panel},
which transparently exports most functions from
\code{pnl}
but redefines
\code{pnl.dopanel()}.

\warning{The Python interpreter will dump core if you don't create a
GL window before calling \code{pnl.mkpanel()}.}

The module is too large to document here in its entirety.
