\section{\module{curses.panel} ---
         A panel stack extension for curses.}

\declaremodule{standard}{curses.panel}
\sectionauthor{A.M. Kuchling}{amk@amk.ca}
\modulesynopsis{A panel stack extension that adds depth to 
                curses windows.}

Panels are windows with the added feature of depth, so they can be
stacked on top of each other, and only the visible portions of
each window will be displayed.  Panels can be added, moved up
or down in the stack, and removed. 

\subsection{Functions \label{cursespanel-functions}}

The module \module{curses.panel} defines the following functions:


\begin{funcdesc}{bottom_panel}{}
Returns the bottom panel in the panel stack.
\end{funcdesc}

\begin{funcdesc}{new_panel}{win}
Returns a panel object, associating it with the given window \var{win}.
\end{funcdesc}

\begin{funcdesc}{top_panel}{}
Returns the top panel in the panel stack.
\end{funcdesc}

\begin{funcdesc}{update_panels}{}
Updates the virtual screen after changes in the panel stack. This does
not call \function{curses.doupdate()}, so you'll have to do this yourself.
\end{funcdesc}

\subsection{Panel Objects \label{curses-panel-objects}}

Panel objects, as returned by \function{new_panel()} above, are windows
with a stacking order. There's always a window associated with a
panel which determines the content, while the panel methods are
responsible for the window's depth in the panel stack.

Panel objects have the following methods:

\begin{methoddesc}{above}{}
Returns the panel above the current panel.
\end{methoddesc}

\begin{methoddesc}{below}{}
Returns the panel below the current panel.
\end{methoddesc}

\begin{methoddesc}{bottom}{}
Push the panel to the bottom of the stack.
\end{methoddesc}

\begin{methoddesc}{hidden}{}
Returns true if the panel is hidden (not visible), false otherwise.
\end{methoddesc}

\begin{methoddesc}{hide}{}
Hide the panel. This does not delete the object, it just makes the
window on screen invisible.
\end{methoddesc}

\begin{methoddesc}{move}{y, x}
Move the panel to the screen coordinates \code{(\var{y}, \var{x})}.
\end{methoddesc}

\begin{methoddesc}{replace}{win}
Change the window associated with the panel to the window \var{win}.
\end{methoddesc}

\begin{methoddesc}{set_userptr}{obj}
Set the panel's user pointer to \var{obj}. This is used to associate an
arbitrary piece of data with the panel, and can be any Python object.
\end{methoddesc}

\begin{methoddesc}{show}{}
Display the panel (which might have been hidden).
\end{methoddesc}

\begin{methoddesc}{top}{}
Push panel to the top of the stack.
\end{methoddesc}

\begin{methoddesc}{userptr}{}
Returns the user pointer for the panel.  This might be any Python object.
\end{methoddesc}

\begin{methoddesc}{window}{}
Returns the window object associated with the panel.
\end{methoddesc}
