mirror of https://github.com/python/cpython
Add window.chgat() method, submitted via e-mail by Fabian Kreutz
This commit is contained in:
parent
781aef2d6b
commit
400a49ba79
|
@ -646,6 +646,16 @@ Similar to \method{border()}, but both \var{ls} and \var{rs} are
|
|||
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()}.
|
||||
|
|
|
@ -135,6 +135,18 @@ print var[2], var.type # Equivalent
|
|||
|
||||
(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
|
||||
|
|
|
@ -129,6 +129,12 @@ def window_funcs(stdscr):
|
|||
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)
|
||||
|
||||
|
|
|
@ -367,6 +367,7 @@ Damon Kohler
|
|||
Joseph Koshy
|
||||
Bob Kras
|
||||
Holger Krekel
|
||||
Fabian Kreutz
|
||||
Hannu Krosing
|
||||
Andrew Kuchling
|
||||
Vladimir Kushnir
|
||||
|
|
|
@ -39,15 +39,15 @@ A number of SysV or ncurses functions don't have wrappers yet; if you need
|
|||
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 @@ int py_mvwdelch(WINDOW *w, int y, int x)
|
|||
}
|
||||
#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 @@ static PyMethodDef PyCursesWindow_Methods[] = {
|
|||
{"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},
|
||||
|
|
Loading…
Reference in New Issue