Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9de6ffa

Browse files
committed
Another patch from Thomas Gellekum: add .overlay() and .overwrite()
window methods
1 parent 9bcc68c commit 9de6ffa

1 file changed

Lines changed: 81 additions & 3 deletions

File tree

Modules/_cursesmodule.c

Lines changed: 81 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ A number of SysV or ncurses functions don't have wrappers yet; if you need
3939
a given function, add it and send a patch. Here's a list of currently
4040
unsupported functions:
4141
42-
addchnstr addchstr chgat color_set copywin define_key
42+
addchnstr addchstr chgat color_set define_key
4343
del_curterm delscreen dupwin inchnstr inchstr innstr keyok
4444
mcprint mvaddchnstr mvaddchstr mvchgat mvcur mvinchnstr
4545
mvinchstr mvinnstr mmvwaddchnstr mvwaddchstr mvwchgat
4646
mvwgetnstr mvwinchnstr mvwinchstr mvwinnstr newterm
47-
overlay overwrite resizeterm restartterm ripoffline scr_dump
47+
resizeterm restartterm ripoffline scr_dump
4848
scr_init scr_restore scr_set scrl set_curterm set_term setterm
4949
tgetent tgetflag tgetnum tgetstr tgoto timeout tputs
5050
use_default_colors vidattr vidputs waddchnstr waddchstr wchgat
@@ -1081,6 +1081,82 @@ PyCursesWindow_NoOutRefresh(PyCursesWindowObject *self, PyObject *args)
10811081
}
10821082
}
10831083

1084+
static PyObject *
1085+
PyCursesWindow_Overlay(PyCursesWindowObject *self, PyObject *args)
1086+
{
1087+
PyCursesWindowObject *temp;
1088+
int use_copywin = FALSE;
1089+
int sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol;
1090+
int rtn;
1091+
1092+
switch (ARG_COUNT(args)) {
1093+
case 1:
1094+
if (!PyArg_ParseTuple(args, "O!;window object",
1095+
&PyCursesWindow_Type, &temp))
1096+
return NULL;
1097+
break;
1098+
case 7:
1099+
if (!PyArg_ParseTuple(args, "(O!iiiiii);window object, int, int, int, int, int, int",
1100+
&PyCursesWindow_Type, &temp, &sminrow, &smincol,
1101+
&dminrow, &dmincol, &dmaxrow, &dmaxcol))
1102+
return NULL;
1103+
use_copywin = TRUE;
1104+
break;
1105+
default:
1106+
PyErr_SetString(PyExc_TypeError,
1107+
"overlay requires one or seven arguments");
1108+
return NULL;
1109+
}
1110+
1111+
if (use_copywin == TRUE) {
1112+
rtn = copywin(self->win, temp->win, sminrow, smincol,
1113+
dminrow, dmincol, dmaxrow, dmaxcol, TRUE);
1114+
return PyCursesCheckERR(rtn, "copywin");
1115+
}
1116+
else {
1117+
rtn = overlay(self->win, temp->win);
1118+
return PyCursesCheckERR(rtn, "overlay");
1119+
}
1120+
}
1121+
1122+
static PyObject *
1123+
PyCursesWindow_Overwrite(PyCursesWindowObject *self, PyObject *args)
1124+
{
1125+
PyCursesWindowObject *temp;
1126+
int use_copywin = FALSE;
1127+
int sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol;
1128+
int rtn;
1129+
1130+
switch (ARG_COUNT(args)) {
1131+
case 1:
1132+
if (!PyArg_ParseTuple(args, "O!;window object",
1133+
&PyCursesWindow_Type, &temp))
1134+
return NULL;
1135+
break;
1136+
case 7:
1137+
if (!PyArg_ParseTuple(args, "(O!iiiiii);window object, int, int, int, int, int, int",
1138+
&PyCursesWindow_Type, &temp, &sminrow, &smincol,
1139+
&dminrow, &dmincol, &dmaxrow, &dmaxcol))
1140+
return NULL;
1141+
use_copywin = TRUE;
1142+
break;
1143+
default:
1144+
PyErr_SetString(PyExc_TypeError,
1145+
"overwrite requires one or seven arguments");
1146+
return NULL;
1147+
}
1148+
1149+
if (use_copywin == TRUE) {
1150+
rtn = copywin(self->win, temp->win, sminrow, smincol,
1151+
dminrow, dmincol, dmaxrow, dmaxcol, FALSE);
1152+
return PyCursesCheckERR(rtn, "copywin");
1153+
}
1154+
else {
1155+
rtn = overwrite(self->win, temp->win);
1156+
return PyCursesCheckERR(rtn, "overwrite");
1157+
}
1158+
}
1159+
10841160
static PyObject *
10851161
PyCursesWindow_PutWin(PyCursesWindowObject *self, PyObject *args)
10861162
{
@@ -1323,7 +1399,9 @@ static PyMethodDef PyCursesWindow_Methods[] = {
13231399
{"notimeout", (PyCFunction)PyCursesWindow_notimeout},
13241400
{"noutrefresh", (PyCFunction)PyCursesWindow_NoOutRefresh},
13251401
/* Backward compatibility alias -- remove in Python 2.1 */
1326-
{"nooutrefresh", (PyCFunction)PyCursesWindow_NoOutRefresh},
1402+
{"nooutrefresh", (PyCFunction)PyCursesWindow_NoOutRefresh},
1403+
{"overlay", (PyCFunction)PyCursesWindow_Overlay, METH_VARARGS},
1404+
{"overwrite", (PyCFunction)PyCursesWindow_Overwrite, METH_VARARGS},
13271405
{"putwin", (PyCFunction)PyCursesWindow_PutWin},
13281406
{"redrawln", (PyCFunction)PyCursesWindow_RedrawLine},
13291407
{"redrawwin", (PyCFunction)PyCursesWindow_redrawwin},

0 commit comments

Comments
 (0)