| \section{\module{curses.panel} --- | 
 |          A panel stack extension for curses.} | 
 |  | 
 | \declaremodule{standard}{curses.panel} | 
 | \sectionauthor{A.M. Kuchling}{amk1@bigfoot.com} | 
 | \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} |