From: Andrew M. Kuchling Date: Wed, 13 Aug 2003 23:11:04 +0000 (+0000) Subject: [Patch #739124] Add use_default_colors() to curses module X-Git-Tag: v2.4a1~1749 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=69f31eb80c86f74cf35ae313870f87b6611293fa;p=python [Patch #739124] Add use_default_colors() to curses module --- diff --git a/Doc/lib/libcurses.tex b/Doc/lib/libcurses.tex index 296e8874fc..1eace435c0 100644 --- a/Doc/lib/libcurses.tex +++ b/Doc/lib/libcurses.tex @@ -537,6 +537,15 @@ a window (in which case default behavior would be to use the window size if \envvar{LINES} and \envvar{COLUMNS} are not set). \end{funcdesc} +\begin{funcdesc}{use_default_colors}{} +Allow use of default values for colors on terminals supporting this +feature. Use this to support transparency in your +application. The default color is assigned to the color number -1. +After calling this function, +\function{init_pair(x, curses.COLOR_RED, -1)} initializes, for instance, +color pair \var{x} to a red foreground color on the default background. +\end{funcdesc} + \subsection{Window Objects \label{curses-window-objects}} Window objects, as returned by \function{initscr()} and diff --git a/Doc/whatsnew/whatsnew24.tex b/Doc/whatsnew/whatsnew24.tex index e49825f507..2f0df30fe1 100644 --- a/Doc/whatsnew/whatsnew24.tex +++ b/Doc/whatsnew/whatsnew24.tex @@ -69,8 +69,11 @@ details. \begin{itemize} -\item Descriptions go here. - +\item The \module{curses} modules now supports the ncurses extension + \function{use_default_colors()}. On platforms where the terminal + supports transparency, this makes it possible to use a transparent background. + (Contributed by J\"org Lehmann.) + \end{itemize} diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 188da8d286..f62783f54e 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -181,6 +181,9 @@ def module_funcs(stdscr): curses.pair_content(curses.COLOR_PAIRS) curses.pair_number(0) + if hasattr(curses, 'use_default_colors'): + curses.use_default_colors() + if hasattr(curses, 'keyname'): curses.keyname(13) diff --git a/Misc/ACKS b/Misc/ACKS index de27616d9e..a0206ab714 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -325,6 +325,7 @@ Inyeol Lee John J. Lee Luc Lefebvre Kip Lehman +Joerg Lehmann Marc-Andre Lemburg William Lewis Robert van Liere diff --git a/Misc/NEWS b/Misc/NEWS index 93c7fb8b8d..ee464cac67 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -22,6 +22,8 @@ Extension modules - The signal module now exposes SIGRTMIN and SIGRTMAX (if available). +- curses module now supports use_default_colors(). [patch #739124] + Library ------- diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 4424dae692..51f4c388fe 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -47,7 +47,7 @@ unsupported functions: resizeterm restartterm ripoffline scr_dump scr_init scr_restore scr_set scrl set_curterm set_term setterm tgetent tgetflag tgetnum tgetstr tgoto timeout tputs - use_default_colors vidattr vidputs waddchnstr waddchstr wchgat + vidattr vidputs waddchnstr waddchstr wchgat wcolor_set winchnstr winchstr winnstr wmouse_trafo wscrl Low-priority: @@ -2354,6 +2354,26 @@ PyCurses_Use_Env(PyObject *self, PyObject *args) return Py_None; } +#ifndef STRICT_SYSV_CURSES +static PyObject * +PyCurses_Use_Default_Colors(PyObject *self) +{ + int code; + + PyCursesInitialised + PyCursesInitialisedColor + + code = use_default_colors(); + if (code != ERR) { + Py_INCREF(Py_None); + return Py_None; + } else { + PyErr_SetString(PyCursesError, "use_default_colors() returned ERR"); + return NULL; + } +} +#endif /* STRICT_SYSV_CURSES */ + /* List of functions defined in the module */ static PyMethodDef PyCurses_methods[] = { @@ -2434,6 +2454,9 @@ static PyMethodDef PyCurses_methods[] = { {"unctrl", (PyCFunction)PyCurses_UnCtrl, METH_VARARGS}, {"ungetch", (PyCFunction)PyCurses_UngetCh, METH_VARARGS}, {"use_env", (PyCFunction)PyCurses_Use_Env, METH_VARARGS}, +#ifndef STRICT_SYSV_CURSES + {"use_default_colors", (PyCFunction)PyCurses_Use_Default_Colors, METH_NOARGS}, +#endif {NULL, NULL} /* sentinel */ };