[Python-checkins] r54746 - in python/trunk: Doc/lib/libcurses.tex Doc/whatsnew/whatsnew26.tex Lib/test/test_curses.py Misc/ACKS Modules/_cursesmodule.c
andrew.kuchling
python-checkins at python.org
Wed Apr 11 15:39:02 CEST 2007
Author: andrew.kuchling
Date: Wed Apr 11 15:39:00 2007
New Revision: 54746
Modified:
python/trunk/Doc/lib/libcurses.tex
python/trunk/Doc/whatsnew/whatsnew26.tex
python/trunk/Lib/test/test_curses.py
python/trunk/Misc/ACKS
python/trunk/Modules/_cursesmodule.c
Log:
Add window.chgat() method, submitted via e-mail by Fabian Kreutz
Modified: python/trunk/Doc/lib/libcurses.tex
==============================================================================
--- python/trunk/Doc/lib/libcurses.tex (original)
+++ python/trunk/Doc/lib/libcurses.tex Wed Apr 11 15:39:00 2007
@@ -646,6 +646,16 @@
corner characters are always used by this function.
\end{methoddesc}
+\begin{methoddesc}[window]{chgat}{\optional{y, x, } \optional{num,} attr}
+Sets the attributes of \var{num} characters at the current cursor
+position, or at position \code{(\var{y}, \var{x})} if supplied. If no
+value of \var{num} is given or \var{num} = -1, the attribute will
+be set on all the characters to the end of the line.
+This function does not move the cursor. The changed line
+will be touched using the \method{touchline} method so that the
+contents will be redisplayed by the next window refresh.
+\end{methoddesc}
+
\begin{methoddesc}[window]{clear}{}
Like \method{erase()}, but also causes the whole window to be repainted
upon next call to \method{refresh()}.
Modified: python/trunk/Doc/whatsnew/whatsnew26.tex
==============================================================================
--- python/trunk/Doc/whatsnew/whatsnew26.tex (original)
+++ python/trunk/Doc/whatsnew/whatsnew26.tex Wed Apr 11 15:39:00 2007
@@ -135,6 +135,18 @@
(Contributed by Raymond Hettinger.)
+\item New method in the \module{curses} module:
+for a window, \method{chgat()} changes the display characters for a
+certain number of characters on a single line.
+
+\begin{verbatim}
+# Boldface text starting at y=0,x=21
+# and affecting the rest of the line.
+stdscr.chgat(0,21, curses.A_BOLD)
+\end{verbatim}
+
+(Contributed by Fabian Kreutz.)
+
\item New function in the \module{heapq} module:
\function{merge(iter1, iter2, ...)}
takes any number of iterables that return data
Modified: python/trunk/Lib/test/test_curses.py
==============================================================================
--- python/trunk/Lib/test/test_curses.py (original)
+++ python/trunk/Lib/test/test_curses.py Wed Apr 11 15:39:00 2007
@@ -129,6 +129,12 @@
stdscr.touchline(5,5,0)
stdscr.vline('a', 3)
stdscr.vline('a', 3, curses.A_STANDOUT)
+ stdscr.chgat(5, 2, 3, curses.A_BLINK)
+ stdscr.chgat(3, curses.A_BOLD)
+ stdscr.chgat(5, 8, curses.A_UNDERLINE)
+ stdscr.chgat(curses.A_BLINK)
+ stdscr.refresh()
+
stdscr.vline(1,1, 'a', 3)
stdscr.vline(1,1, 'a', 3, curses.A_STANDOUT)
Modified: python/trunk/Misc/ACKS
==============================================================================
--- python/trunk/Misc/ACKS (original)
+++ python/trunk/Misc/ACKS Wed Apr 11 15:39:00 2007
@@ -367,6 +367,7 @@
Joseph Koshy
Bob Kras
Holger Krekel
+Fabian Kreutz
Hannu Krosing
Andrew Kuchling
Vladimir Kushnir
Modified: python/trunk/Modules/_cursesmodule.c
==============================================================================
--- python/trunk/Modules/_cursesmodule.c (original)
+++ python/trunk/Modules/_cursesmodule.c Wed Apr 11 15:39:00 2007
@@ -39,15 +39,15 @@
a given function, add it and send a patch. Here's a list of currently
unsupported functions:
- addchnstr addchstr chgat color_set define_key
+ addchnstr addchstr color_set define_key
del_curterm delscreen dupwin inchnstr inchstr innstr keyok
- mcprint mvaddchnstr mvaddchstr mvchgat mvcur mvinchnstr
- mvinchstr mvinnstr mmvwaddchnstr mvwaddchstr mvwchgat
+ mcprint mvaddchnstr mvaddchstr mvcur mvinchnstr
+ mvinchstr mvinnstr mmvwaddchnstr mvwaddchstr
mvwinchnstr mvwinchstr mvwinnstr newterm
restartterm ripoffline scr_dump
scr_init scr_restore scr_set scrl set_curterm set_term setterm
tgetent tgetflag tgetnum tgetstr tgoto timeout tputs
- vidattr vidputs waddchnstr waddchstr wchgat
+ vidattr vidputs waddchnstr waddchstr
wcolor_set winchnstr winchstr winnstr wmouse_trafo wscrl
Low-priority:
@@ -620,6 +620,56 @@
}
#endif
+/* chgat, added by Fabian Kreutz <fabian.kreutz at gmx.net> */
+
+static PyObject *
+PyCursesWindow_ChgAt(PyCursesWindowObject *self, PyObject *args)
+{
+ int rtn;
+ int x, y;
+ int num = -1;
+ short color;
+ attr_t attr = A_NORMAL;
+ int use_xy = FALSE;
+
+ switch (PyTuple_Size(args)) {
+ case 1:
+ if (!PyArg_ParseTuple(args,"l;attr", &attr))
+ return NULL;
+ break;
+ case 2:
+ if (!PyArg_ParseTuple(args,"il;n,attr", &num, &attr))
+ return NULL;
+ break;
+ case 3:
+ if (!PyArg_ParseTuple(args,"iil;int,int,attr", &y, &x, &attr))
+ return NULL;
+ use_xy = TRUE;
+ break;
+ case 4:
+ if (!PyArg_ParseTuple(args,"iiil;int,int,n,attr", &y, &x, &num, &attr))
+ return NULL;
+ use_xy = TRUE;
+ break;
+ default:
+ PyErr_SetString(PyExc_TypeError, "chgat requires 1 to 4 arguments");
+ return NULL;
+ }
+
+ color = (short)((attr >> 8) & 0xff);
+ attr = attr - (color << 8);
+
+ if (use_xy == TRUE) {
+ rtn = mvwchgat(self->win,y,x,num,attr,color,NULL);
+ touchline(self->win,y,1);
+ } else {
+ getyx(self->win,y,x);
+ rtn = wchgat(self->win,num,attr,color,NULL);
+ touchline(self->win,y,1);
+ }
+ return PyCursesCheckERR(rtn, "chgat");
+}
+
static PyObject *
PyCursesWindow_DelCh(PyCursesWindowObject *self, PyObject *args)
@@ -1428,6 +1478,7 @@
{"attron", (PyCFunction)PyCursesWindow_wattron, METH_VARARGS},
{"attrset", (PyCFunction)PyCursesWindow_wattrset, METH_VARARGS},
{"bkgd", (PyCFunction)PyCursesWindow_Bkgd, METH_VARARGS},
+ {"chgat", (PyCFunction)PyCursesWindow_ChgAt, METH_VARARGS},
{"bkgdset", (PyCFunction)PyCursesWindow_BkgdSet, METH_VARARGS},
{"border", (PyCFunction)PyCursesWindow_Border, METH_VARARGS},
{"box", (PyCFunction)PyCursesWindow_Box, METH_VARARGS},
More information about the Python-checkins
mailing list