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

@ -846,6 +846,14 @@ the following methods:
until a key is pressed. until a key is pressed.
.. method:: window.get_wch([y, x])
Get a wide character. Like :meth:`getch`, but the integer returned is the
Unicode code point for the key pressed, so it can be passed to :func:`chr`.
.. versionadded:: 3.3
.. method:: window.getkey([y, x]) .. method:: window.getkey([y, x])
Get a character, returning a string instead of an integer, as :meth:`getch` Get a character, returning a string instead of an integer, as :meth:`getch`

View file

@ -91,6 +91,14 @@ versions.
(:issue:`12100`) (:issue:`12100`)
curses
------
The :class:`curses.window` class has a new :class:`~curses.window.get_wch`
method to a wide character. Patch by Iñigo Serna.
(:issue:`6755`)
faulthandler faulthandler
------------ ------------

View file

@ -851,6 +851,7 @@ Nick Seidenman
Yury Selivanov Yury Selivanov
Fred Sells Fred Sells
Jiwon Seo Jiwon Seo
Iñigo Serna
Roger D. Serwy Roger D. Serwy
Jerry Seutter Jerry Seutter
Denis Severson Denis Severson

View file

@ -225,6 +225,9 @@ Core and Builtins
Library Library
------- -------
- Issue #6755: Add get_wch() method to curses.window class. Patch by Iñigo
Serna.
- Add cgi.closelog() function to close the log file. - Add cgi.closelog() function to close the log file.
- Issue #12502: asyncore: fix polling loop with AF_UNIX sockets. - Issue #12502: asyncore: fix polling loop with AF_UNIX sockets.

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 * static PyObject *
PyCursesWindow_GetStr(PyCursesWindowObject *self, PyObject *args) PyCursesWindow_GetStr(PyCursesWindowObject *self, PyObject *args)
{ {
@ -1604,6 +1636,7 @@ static PyMethodDef PyCursesWindow_Methods[] = {
{"getbkgd", (PyCFunction)PyCursesWindow_GetBkgd, METH_NOARGS}, {"getbkgd", (PyCFunction)PyCursesWindow_GetBkgd, METH_NOARGS},
{"getch", (PyCFunction)PyCursesWindow_GetCh, METH_VARARGS}, {"getch", (PyCFunction)PyCursesWindow_GetCh, METH_VARARGS},
{"getkey", (PyCFunction)PyCursesWindow_GetKey, METH_VARARGS}, {"getkey", (PyCFunction)PyCursesWindow_GetKey, METH_VARARGS},
{"get_wch", (PyCFunction)PyCursesWindow_Get_WCh, METH_VARARGS},
{"getmaxyx", (PyCFunction)PyCursesWindow_getmaxyx, METH_NOARGS}, {"getmaxyx", (PyCFunction)PyCursesWindow_getmaxyx, METH_NOARGS},
{"getparyx", (PyCFunction)PyCursesWindow_getparyx, METH_NOARGS}, {"getparyx", (PyCFunction)PyCursesWindow_getparyx, METH_NOARGS},
{"getstr", (PyCFunction)PyCursesWindow_GetStr, METH_VARARGS}, {"getstr", (PyCFunction)PyCursesWindow_GetStr, METH_VARARGS},