Index: _cursesmodule.c
===================================================================
--- _cursesmodule.c (revision 70006)
+++ _cursesmodule.c (working copy)
@@ -411,7 +411,84 @@
return PyCursesCheckERR(rtn, "addch");
}
+/* Window.addchstr Inserted Steve Owens 2/25/2005 */
static PyObject *
+PyCursesWindow_AddChstr(PyCursesWindowObject *self, PyObject *args)
+{
+ int x, y, n;
+ PyObject * rtn = NULL;
+ Py_ssize_t size, ix;
+ PyObject *pList = NULL;
+ chtype* pChstr = NULL;
+
+ switch (PyTuple_Size(args)) {
+ case 1:
+ if (!PyArg_ParseTuple(args, "O;(List) expected for waddchstr", &pList))
+ return NULL;
+ break;
+ case 2:
+ if (!PyArg_ParseTuple(args, "Oi;(List, int) expected for waddchnstr", &pList, &n))
+ return NULL;
+ break;
+ case 3:
+ if (!PyArg_ParseTuple(args,"iiO;(int, int, List) expected for mvwaddchstr", &y, &x, &pList))
+ return NULL;
+ break;
+ case 4:
+ if (!PyArg_ParseTuple(args,"iiOi;(int, int, List, int) expected for mvwaddchnstr", &y, &x, &pList, &n))
+ return NULL;
+ break;
+ default:
+ PyErr_SetString(PyExc_TypeError, "addchstr requires 1 to 4 arguments");
+ }
+
+ if(!PyList_Check(pList))
+ {
+ PyErr_SetString(PyExc_TypeError, "Invalid object passed as List argument to addchstr.");
+ return NULL;
+ }
+ size = PyList_Size(pList);
+ if(size < 1)
+ {
+ return PyCursesCheckERR(OK, "Nothing to do"); /* Nothing to do */
+ }
+
+ pChstr = (chtype *)malloc((size + 1) * sizeof(chtype));
+ for(ix = 0; ix < size; ix++)
+ {
+ PyObject * pPyCh = PyList_GetItem(pList, ix);
+ if (PyInt_Check(pPyCh))
+ pChstr[ix] = (chtype) PyInt_AsLong(pPyCh);
+ else
+ {
+ PyErr_SetString(PyExc_TypeError, "Invalid element type in List argument to addchstr. Must be a list of elements.");
+ free(pChstr);
+ return NULL;
+ }
+ }
+ pChstr[size] = 0L;
+
+ switch (PyTuple_Size(args)) {
+ case 1:
+ rtn = PyCursesCheckERR(waddchstr(self->win, pChstr), "waddchstr");
+ break;
+ case 2:
+ rtn = PyCursesCheckERR(waddchnstr(self->win, pChstr, n), "waddchnstr");
+ break;
+ case 3:
+ rtn = PyCursesCheckERR(mvwaddchstr(self->win, y, x, pChstr), "mvwaddchstr");
+ break;
+ case 4:
+ rtn = PyCursesCheckERR(mvwaddchnstr(self->win, y, x, pChstr, n), "mvwaddchnstr");
+ break;
+ }
+ if(pChstr != NULL)
+ free(pChstr);
+
+ return rtn;
+}
+
+static PyObject *
PyCursesWindow_AddStr(PyCursesWindowObject *self, PyObject *args)
{
int rtn;
@@ -715,7 +792,20 @@
return PyCursesCheckERR(rtn, "chgat");
}
+/* Inserted Steve Owens 2/24/4009 */
+static PyObject *
+PyCursesWindow_wcolor_set(PyCursesWindowObject *self, PyObject *args)
+{
+ short color_pair_number;
+ PyCursesInitialised
+ PyCursesInitialisedColor
+ if (!PyArg_ParseTuple(args, "h:wcolor_set", &color_pair_number)) return NULL;
+
+ return PyCursesCheckERR(wcolor_set(self->win, color_pair_number, NULL), "wcolor_set");
+}
+
+
static PyObject *
PyCursesWindow_DelCh(PyCursesWindowObject *self, PyObject *args)
{
@@ -1536,6 +1626,8 @@
{"addch", (PyCFunction)PyCursesWindow_AddCh, METH_VARARGS},
{"addnstr", (PyCFunction)PyCursesWindow_AddNStr, METH_VARARGS},
{"addstr", (PyCFunction)PyCursesWindow_AddStr, METH_VARARGS},
+ {"addchstr", (PyCFunction)PyCursesWindow_AddChstr, METH_VARARGS},
+ {"addchnstr", (PyCFunction)PyCursesWindow_AddChstr, METH_VARARGS},
{"attroff", (PyCFunction)PyCursesWindow_AttrOff, METH_VARARGS},
{"attron", (PyCFunction)PyCursesWindow_AttrOn, METH_VARARGS},
{"attrset", (PyCFunction)PyCursesWindow_AttrSet, METH_VARARGS},
@@ -1548,6 +1640,7 @@
{"clearok", (PyCFunction)PyCursesWindow_clearok, METH_VARARGS},
{"clrtobot", (PyCFunction)PyCursesWindow_wclrtobot, METH_NOARGS},
{"clrtoeol", (PyCFunction)PyCursesWindow_wclrtoeol, METH_NOARGS},
+ {"color_set", (PyCFunction)PyCursesWindow_wcolor_set, METH_VARARGS},
{"cursyncup", (PyCFunction)PyCursesWindow_wcursyncup, METH_NOARGS},
{"delch", (PyCFunction)PyCursesWindow_DelCh, METH_VARARGS},
{"deleteln", (PyCFunction)PyCursesWindow_wdeleteln, METH_NOARGS},
@@ -1680,7 +1773,87 @@
NoArgNoReturnVoidFunction(flushinp)
NoArgNoReturnVoidFunction(noqiflush)
+
+/* addchstr Inserted Steve Owens 2/25/2005 */
static PyObject *
+PyCurses_AddChstr(PyObject *self, PyObject *args)
+{
+ int x, y, n;
+ PyObject * rtn = NULL;
+ Py_ssize_t size, ix;
+ PyObject *pList = NULL;
+ chtype* pChstr = NULL;
+
+ switch (PyTuple_Size(args)) {
+ case 1:
+ if (!PyArg_ParseTuple(args, "O;(List) expected for waddchstr", &pList))
+ return NULL;
+ break;
+ case 2:
+ if (!PyArg_ParseTuple(args, "Oi;(List, int) expected for waddchnstr", &pList, &n))
+ return NULL;
+ break;
+ case 3:
+ if (!PyArg_ParseTuple(args,"iiO;(int, int, List) expected for mvwaddchstr", &y, &x, &pList))
+ return NULL;
+ break;
+ case 4:
+ if (!PyArg_ParseTuple(args,"iiOi;(int, int, List, int) expected for mvwaddchnstr", &y, &x, &pList, &n))
+ return NULL;
+ break;
+ default:
+ PyErr_SetString(PyExc_TypeError, "addchstr requires 1 to 4 arguments");
+ }
+
+ if(!PyList_Check(pList))
+ {
+ PyErr_SetString(PyExc_TypeError, "Invalid object passed as List argument to addchstr.");
+ return NULL;
+ }
+ size = PyList_Size(pList);
+ if(size < 1)
+ {
+ return PyCursesCheckERR(OK, "Nothing to do"); /* Nothing to do */
+ }
+
+ pChstr = (chtype *)malloc((size + 1) * sizeof(chtype));
+ for(ix = 0; ix < size; ix++)
+ {
+ PyObject * pPyCh = PyList_GetItem(pList, ix);
+ if (PyInt_Check(pPyCh))
+ pChstr[ix] = (chtype) PyInt_AsLong(pPyCh);
+ else
+ {
+ PyErr_SetString(PyExc_TypeError, "Invalid element type in List argument to addchstr. Must be a list of elements.");
+ if(pChstr != NULL)
+ free(pChstr);
+ return NULL;
+ }
+ }
+ pChstr[size] = 0L;
+
+ switch (PyTuple_Size(args)) {
+ case 1:
+ rtn = PyCursesCheckERR(addchstr(pChstr), "addchstr");
+ break;
+ case 2:
+ rtn = PyCursesCheckERR(addchnstr(pChstr, n), "addchnstr");
+ break;
+ case 3:
+ rtn = PyCursesCheckERR(mvaddchstr(y, x, pChstr), "mvaddchstr");
+ break;
+ case 4:
+ rtn = PyCursesCheckERR(mvaddchnstr(y, x, pChstr, n), "mvaddchnstr");
+ break;
+ }
+ if(pChstr != NULL)
+ free(pChstr);
+
+ return rtn;
+}
+
+
+static PyObject *
PyCurses_filter(PyObject *self)
{
/* not checking for PyCursesInitialised here since filter() must
@@ -1721,7 +1894,26 @@
return PyInt_FromLong((long) (n