Issue #4254: Adds _curses.update_lines_cols() Patch by Arnon Yaari

This commit is contained in:
Steve Dower 2015-04-15 18:06:05 -04:00
parent 9abe04975a
commit d2bc389e55
5 changed files with 31 additions and 0 deletions

View File

@ -599,6 +599,13 @@ The module :mod:`curses` defines the following functions:
Only one *ch* can be pushed before :meth:`getch` is called. Only one *ch* can be pushed before :meth:`getch` is called.
.. function:: update_lines_cols()
Update :envvar:`LINES` and :envvar:`COLS`. Useful for detecting manual screen resize.
.. versionadded:: 3.5
.. function:: unget_wch(ch) .. function:: unget_wch(ch)
Push *ch* so the next :meth:`get_wch` will return it. Push *ch* so the next :meth:`get_wch` will return it.

View File

@ -289,6 +289,11 @@ contextlib
don't provide any options to redirect it. don't provide any options to redirect it.
(Contributed by Berker Peksag in :issue:`22389`.) (Contributed by Berker Peksag in :issue:`22389`.)
curses
------
* The new :func:`curses.update_lines_cols` function updates the variables
:envvar:`curses.LINES` and :envvar:`curses.COLS`.
difflib difflib
------- -------

View File

@ -370,6 +370,13 @@ class TestCurses(unittest.TestCase):
offset = human_readable_signature.find("[y, x,]") offset = human_readable_signature.find("[y, x,]")
assert offset >= 0, "" assert offset >= 0, ""
def test_update_lines_cols(self):
# this doesn't actually test that LINES and COLS are updated,
# because we can't automate changing them. See Issue #4254 for
# a manual test script. We can only test that the function
# can be called.
curses.update_lines_cols()
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View File

@ -36,6 +36,8 @@ Core and Builtins
Library Library
------- -------
- Issue #4254: Adds _curses.update_lines_cols() Patch by Arnon Yaari
- Issue 19933: Provide default argument for ndigits in round. Patch by - Issue 19933: Provide default argument for ndigits in round. Patch by
Vajrasky Kok. Vajrasky Kok.

View File

@ -2866,6 +2866,13 @@ update_lines_cols(void)
Py_DECREF(m); Py_DECREF(m);
return 1; return 1;
} }
static PyObject *
PyCurses_update_lines_cols(PyObject *self)
{
return PyLong_FromLong((long) update_lines_cols());
}
#endif #endif
#ifdef HAVE_CURSES_RESIZETERM #ifdef HAVE_CURSES_RESIZETERM
@ -3268,6 +3275,9 @@ static PyMethodDef PyCurses_methods[] = {
{"typeahead", (PyCFunction)PyCurses_TypeAhead, METH_VARARGS}, {"typeahead", (PyCFunction)PyCurses_TypeAhead, METH_VARARGS},
{"unctrl", (PyCFunction)PyCurses_UnCtrl, METH_VARARGS}, {"unctrl", (PyCFunction)PyCurses_UnCtrl, METH_VARARGS},
{"ungetch", (PyCFunction)PyCurses_UngetCh, METH_VARARGS}, {"ungetch", (PyCFunction)PyCurses_UngetCh, METH_VARARGS},
#if defined(HAVE_CURSES_RESIZETERM) || defined(HAVE_CURSES_RESIZE_TERM)
{"update_lines_cols", (PyCFunction)PyCurses_update_lines_cols, METH_NOARGS},
#endif
#ifdef HAVE_NCURSESW #ifdef HAVE_NCURSESW
{"unget_wch", (PyCFunction)PyCurses_Unget_Wch, METH_VARARGS}, {"unget_wch", (PyCFunction)PyCurses_Unget_Wch, METH_VARARGS},
#endif #endif