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

\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:

\setindexsubitem{(in module panel)}
\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}

\strong{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{Standard Module \sectcode{panelparser}}
\label{module-panelparser}
\stmodindex{panelparser}

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{Built-in Module \sectcode{pnl}}
\label{module-pnl}
\bimodindex{pnl}

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

\strong{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.
