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.
.. 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])
Get a character, returning a string instead of an integer, as :meth:`getch`

View File

@ -91,6 +91,14 @@ versions.
(: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
------------

View File

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

View File

@ -225,6 +225,9 @@ Core and Builtins
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.
- 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 *
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},