summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@microsoft.com>2015-04-15 22:06:05 (GMT)
committerSteve Dower <steve.dower@microsoft.com>2015-04-15 22:06:05 (GMT)
commitd2bc389e550464e3f71ec60071880335e8f9b6c6 (patch)
treeff1e0fd7f6231e3ccf09ca699de88618abd2ddf7
parent9abe04975a1948f85c16896dcd68e7cf26bb593e (diff)
downloadcpython-d2bc389e550464e3f71ec60071880335e8f9b6c6.zip
cpython-d2bc389e550464e3f71ec60071880335e8f9b6c6.tar.gz
cpython-d2bc389e550464e3f71ec60071880335e8f9b6c6.tar.bz2
Issue #4254: Adds _curses.update_lines_cols() Patch by Arnon Yaari
-rw-r--r--Doc/library/curses.rst7
-rw-r--r--Doc/whatsnew/3.5.rst5
-rw-r--r--Lib/test/test_curses.py7
-rw-r--r--Misc/NEWS2
-rw-r--r--Modules/_cursesmodule.c10
5 files changed, 31 insertions, 0 deletions
diff --git a/Doc/library/curses.rst b/Doc/library/curses.rst
index f3e60b4..e8dfd83 100644
--- a/Doc/library/curses.rst
+++ b/Doc/library/curses.rst
@@ -599,6 +599,13 @@ The module :mod:`curses` defines the following functions:
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)
Push *ch* so the next :meth:`get_wch` will return it.
diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst
index 5d010bf..2960979 100644
--- a/Doc/whatsnew/3.5.rst
+++ b/Doc/whatsnew/3.5.rst
@@ -289,6 +289,11 @@ contextlib
don't provide any options to redirect it.
(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
-------
diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py
index bd7d4fc..2747041 100644
--- a/Lib/test/test_curses.py
+++ b/Lib/test/test_curses.py
@@ -370,6 +370,13 @@ class TestCurses(unittest.TestCase):
offset = human_readable_signature.find("[y, x,]")
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__':
unittest.main()
diff --git a/Misc/NEWS b/Misc/NEWS
index 5f5cac6..cd1d81e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -36,6 +36,8 @@ Core and Builtins
Library
-------
+- Issue #4254: Adds _curses.update_lines_cols() Patch by Arnon Yaari
+
- Issue 19933: Provide default argument for ndigits in round. Patch by
Vajrasky Kok.
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 54c724b..d64bdc7 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -2866,6 +2866,13 @@ update_lines_cols(void)
Py_DECREF(m);
return 1;
}
+
+static PyObject *
+PyCurses_update_lines_cols(PyObject *self)
+{
+ return PyLong_FromLong((long) update_lines_cols());
+}
+
#endif
#ifdef HAVE_CURSES_RESIZETERM
@@ -3268,6 +3275,9 @@ static PyMethodDef PyCurses_methods[] = {
{"typeahead", (PyCFunction)PyCurses_TypeAhead, METH_VARARGS},
{"unctrl", (PyCFunction)PyCurses_UnCtrl, 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
{"unget_wch", (PyCFunction)PyCurses_Unget_Wch, METH_VARARGS},
#endif