@@ -39,12 +39,12 @@ A number of SysV or ncurses functions don't have wrappers yet; if you need
3939a given function, add it and send a patch. Here's a list of currently
4040unsupported 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+
10841160static PyObject *
10851161PyCursesWindow_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