summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2000-08-04 07:35:41 (GMT)
committerEric S. Raymond <esr@thyrsus.com>2000-08-04 07:35:41 (GMT)
commit5a007693c141536a04d305f3a2162c625dfbd501 (patch)
tree60264a8d623c61a12bf9ddeb8fdb121771305bce /Doc
parent5af256ded6190e899530de8df61fa77fe37686fc (diff)
downloadcpython-5a007693c141536a04d305f3a2162c625dfbd501.zip
cpython-5a007693c141536a04d305f3a2162c625dfbd501.tar.gz
cpython-5a007693c141536a04d305f3a2162c625dfbd501.tar.bz2
Documented curses.wrapper and curses.textpad.
Diffstat (limited to 'Doc')
-rw-r--r--Doc/lib/libcurses.tex133
1 files changed, 131 insertions, 2 deletions
diff --git a/Doc/lib/libcurses.tex b/Doc/lib/libcurses.tex
index a24a66b..2cf28f4 100644
--- a/Doc/lib/libcurses.tex
+++ b/Doc/lib/libcurses.tex
@@ -1,10 +1,11 @@
\section{\module{curses} ---
Screen painting and input handling for character-cell terminals}
-\declaremodule{extension}{curses}
+\declaremodule{standard}{curses}
\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
\sectionauthor{Eric Raymond}{esr@thyrsus.com}
\modulesynopsis{An interface to the curses library.}
+\versionadded{1.6}
The \module{curses} module provides an interface to the curses \UNIX{}
library, the de-facto standard for portable advanced terminal
@@ -20,7 +21,7 @@ Unix.
\seemodule{curses.ascii}{Utilities for working with \ASCII{}
characters, regardless of your locale
settings.}
- \seemodule{curses.textbox}{Editable text widget for curses supporting
+ \seemodule{curses.textpad}{Editable text widget for curses supporting
Emacs-like bindings.}
\seetext{Tutorial material on using curses with Python is available
on the Python Web site as Andrew Kuchling's
@@ -1163,3 +1164,131 @@ The following table lists the predefined colors:
\lineii{COLOR_YELLOW}{Yellow}
\end{tableii}
+\section{\module{curses.textpad} ---
+ Text input widget for curses programs}
+
+\declaremodule{standard}{curses.textpad}
+\sectionauthor{Eric Raymond}{esr@thyrsus.com}
+\moduleauthor{Eric Raymond}{esr@thyrsus.com}
+\modulesynopsis{Emacs-like input editing in a curses window.}
+\versionadded{1.6}
+
+The \module{curses.textpad} module provides a \class{Textbox} class
+that handles elementary text editing in a curses window, supporting a
+set of keybindings resembling those of Emacs (thus, also of Netscape
+Navigator, BBedit 6.x, FrameMaker, and many other programs). The
+module also provides a rectangle-drawing function useful for framing
+text boxes or for other purposes.
+
+\subsection{Functions \label{curses-textpad-functions}}
+
+The module \module{curses.textpad} defines the following functions:
+
+\begin{funcdesc}{rectangle}{win, uly, ulx, lry, lrx}
+Draw a rectangle. The first argument must be a window object; the
+remaining arguments are coordinates relative to that window. The
+second and third arguments are the y and x coordinates of the upper
+left hand corner of the rectangle To be drawn; the fourth and fifth
+arguments are the y and x coordinates of the lower right hand corner.
+The rectangle will be drawn using VT100/IBM PC forms characters on
+terminals that make this possible (including xterm and most other
+software terminal emulators). Otherwise it will be drawn with ASCII
+dashes, vertical bars, and plus signs.
+\end{funcdesc}
+
+\subsection{Textbox objects \label{curses-textpad-objects}}
+
+You can instantiate a \class{Textbox} object as follows:
+
+\classdesc{Textbox}{win}
+Return a textbox widget object. The win argument should be a curses
+\class{WindowObject} in which the textbox is to be contained. The
+edit cursor of the textbox is initially located at the upper left
+hand corner of the containin window, with coordinates (0,0). The
+instance's \member{stripspaces} flag is initially on.
+\end{classdesc}
+
+Textbox objects, have the following methods:
+
+\begin{methoddesc}{edit}{validator=None}
+This is the entry point you will normally use. It accepts editing
+keystrokes until one of the termination keystrokes is entered. If a
+validator function is specified, each entered keystroke is passed to
+it; command dispatch is done on the result. This method returns the
+window contents as a string; whether blanks in the window are included
+is affected by the \member{stripspaces} member.
+\end{methoddesc}
+
+\begin{methoddesc}{do_command}{ch}
+Process a single command keystroke. Here are the supported special
+keystrokes:
+
+\begin{tableii}{c|l}{code}{keystroke}{action}
+ \lineii{Ctrl-A}{Go to left edge of window.}
+ \lineii{Ctrl-B}{Cursor left, wrapping to previous line if appropriate.}
+ \lineii{Ctrl-D}{Delete character under cursor.}
+ \lineii{Ctrl-E}{Go to right edge (stripspaces off) or end of line (stripspaces on).}
+ \lineii{Ctrl-F}{Cursor right, wrapping to next line when appropriate.}
+ \lineii{Ctrl-G}{Terminate, returning the window contents.}
+ \lineii{Ctrl-H}{Delete character backward.}
+ \lineii{Ctrl-J}{Terminate if the window is 1 line, otherwise insert newline.}
+ \lineii{Ctrl-K}{If line is blank, delete it, otherwise clear to end of line.}
+ \lineii{Ctrl-L}{Refresh screen.}
+ \lineii{Ctrl-N}{Cursor down; move down one line.}
+ \lineii{Ctrl-O}{Insert a blank line at cursor location.}
+ \lineii{Ctrl-P}{Cursor up; move up one line.}
+\end{tableii}
+
+Move operations do nothing if the cursor is at an edge where the
+movement is not possible. The following synonyms are supported where
+possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P,
+KEY_DOWN = Ctrl-N, KEY_BACKSPACE = Ctrl-h.
+
+All other keystrokes are treated as a command to insert the given
+character and move right (with line wrapping).
+\end{methoddesc}
+
+\begin{methoddesc}{gather}{}
+This method returns the window contents as a string; whether blanks in
+the window are included is affected by the \member{stripspaces}
+member.
+\end{methoddesc}
+
+\begin{methoddesc}{stripspaces}{}
+This data member is a flag which controls the interpretation of blanks in
+the window. When it is on, trailing blanks on each line are ignored;
+any cursor motion that would land the cursor on a trailing blank goes
+to the end of that line instead, and trailing blanks are stripped when
+the window contents is gathered.
+\end{methoddesc}
+
+\section{\module{curses.wrapper} ---
+ Exception-handling wrapper for curses programs.}
+
+\declaremodule{standard}{curses.wrapper}
+\sectionauthor{Eric Raymond}{esr@thyrsus.com}
+\moduleauthor{Eric Raymond}{esr@thyrsus.com}
+\modulesynopsis{Exception-handling wrapper for curses programs.}
+\versionadded{1.6}
+
+This module supplies one function, \function{wrapper()}, which runs
+another function which should be the rest of your curses-using
+application. If the application raises an exception,
+\function{wrapper()} will restore the terminal to a sane state before
+passing it further up the stack and generating a traceback.
+
+\subsection{Functions \label{curses-wrapper-functions}}
+
+\begin{funcdesc}{wrapper}{func, *rest}
+Wrapper function that initializes curses and calls another function,
+\function{func}, restoring normal keyboard/screen behavior on error.
+The callable object 'func' is then passed the main window 'stdscr'
+as its first argument, followed by any other arguments passed to
+\function{wrapper()}.
+\end{funcdesc}
+
+Before calling the hook function, \function{wrapper()} turns on
+cbreak mode, turns off echo, and enables the terminal keypad. On
+exit (whether normally or by exception) it restores cooked mode,
+turns on echo, and disables the terminal keypad.
+