Close #6755: Add get_wch() method to curses.window class

Patch by Iñigo Serna.
This commit is contained in:
Victor Stinner 2011-07-14 23:07:44 +02:00
parent d33344a030
commit a7878b77dc
5 changed files with 53 additions and 0 deletions

View file

@ -906,6 +906,38 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
}
}
static PyObject *
PyCursesWindow_Get_WCh(PyCursesWindowObject *self, PyObject *args)
{
int x, y;
int ct;
wint_t rtn;
switch (PyTuple_Size(args)) {
case 0:
Py_BEGIN_ALLOW_THREADS
ct = wget_wch(self->win,&rtn);
Py_END_ALLOW_THREADS
break;
case 2:
if (!PyArg_ParseTuple(args,"ii;y,x",&y,&x))
return NULL;
Py_BEGIN_ALLOW_THREADS
ct = mvwget_wch(self->win,y,x,&rtn);
Py_END_ALLOW_THREADS
break;
default:
PyErr_SetString(PyExc_TypeError, "get_wch requires 0 or 2 arguments");
return NULL;
}
if (ct == ERR) {
/* get_wch() returns ERR in nodelay mode */
PyErr_SetString(PyCursesError, "no input");
return NULL;
}
return PyLong_FromLong(rtn);
}
static PyObject *
PyCursesWindow_GetStr(PyCursesWindowObject *self, PyObject *args)
{
@ -1604,6 +1636,7 @@ static PyMethodDef PyCursesWindow_Methods[] = {
{"getbkgd", (PyCFunction)PyCursesWindow_GetBkgd, METH_NOARGS},
{"getch", (PyCFunction)PyCursesWindow_GetCh, METH_VARARGS},
{"getkey", (PyCFunction)PyCursesWindow_GetKey, METH_VARARGS},
{"get_wch", (PyCFunction)PyCursesWindow_Get_WCh, METH_VARARGS},
{"getmaxyx", (PyCFunction)PyCursesWindow_getmaxyx, METH_NOARGS},
{"getparyx", (PyCFunction)PyCursesWindow_getparyx, METH_NOARGS},
{"getstr", (PyCFunction)PyCursesWindow_GetStr, METH_VARARGS},