[ Web Proxy ]
URL:
Viewing: https://bugs.python.org/file13194/curses_patch.diff [Back]  [Original]

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 

Web Proxy Viewer  |  New URL  |  Original Page