[Python-checkins] CVS: python/dist/src/Mac/Modules/ctl _Ctlmodule.c,1.15,1.16 ctlsupport.py,1.48,1.49

Just van Rossum jvr@users.sourceforge.net
2002年1月04日 11:45:17 -0800


Update of /cvsroot/python/python/dist/src/Mac/Modules/ctl
In directory usw-pr-cvs1:/tmp/cvs-serv18414
Modified Files:
	_Ctlmodule.c ctlsupport.py 
Log Message:
- added support for UserPaneKeyDownProc and UserPaneFocusProc
- clear error after failing PyArg_Parse()
Index: _Ctlmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ctl/_Ctlmodule.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** _Ctlmodule.c	2001年12月31日 09:50:31	1.15
--- _Ctlmodule.c	2002年01月04日 19:45:15	1.16
***************
*** 133,136 ****
--- 133,138 ----
 static ControlActionUPP mytracker_upp;
 static ControlActionUPP myactionproc_upp;
+ static ControlUserPaneKeyDownUPP mykeydownproc_upp;
+ static ControlUserPaneFocusUPP myfocusproc_upp;
 static ControlUserPaneDrawUPP mydrawproc_upp;
 static ControlUserPaneIdleUPP myidleproc_upp;
***************
*** 6514,6517 ****
--- 6516,6523 ----
 	if ( which == kMyControlActionProcTag )
 		*uppp = (UniversalProcPtr)myactionproc_upp;
+ 	else if ( which == kControlUserPaneKeyDownProcTag )
+ 		*uppp = (UniversalProcPtr)mykeydownproc_upp;
+ 	else if ( which == kControlUserPaneFocusProcTag )
+ 		*uppp = (UniversalProcPtr)myfocusproc_upp;
 	else if ( which == kControlUserPaneDrawProcTag )
 		*uppp = (UniversalProcPtr)mydrawproc_upp;
***************
*** 6571,6574 ****
--- 6577,6616 ----
 }
 
+ static pascal ControlPartCode
+ mykeydownproc(ControlHandle control, SInt16 keyCode, SInt16 charCode, SInt16 modifiers)
+ {
+ 	ControlObject *ctl_obj;
+ 	PyObject *arglist, *rv;
+ 	short c_rv = 0;
+ 	
+ 	ctl_obj = (ControlObject *)CtlObj_WhichControl(control);
+ 	arglist = Py_BuildValue("Ohhh", ctl_obj, keyCode, charCode, modifiers);
+ 	rv = callcallback(ctl_obj, kControlUserPaneKeyDownProcTag, arglist);
+ 	Py_XDECREF(arglist);
+ 	if ( rv )
+ 		if (!PyArg_Parse(rv, "h", &c_rv))
+ 			PyErr_Clear();
+ 	Py_XDECREF(rv);
+ 	return (ControlPartCode)c_rv;
+ }
+ 
+ static pascal ControlPartCode
+ myfocusproc(ControlHandle control, ControlPartCode part)
+ {
+ 	ControlObject *ctl_obj;
+ 	PyObject *arglist, *rv;
+ 	short c_rv = kControlFocusNoPart;
+ 	
+ 	ctl_obj = (ControlObject *)CtlObj_WhichControl(control);
+ 	arglist = Py_BuildValue("Oh", ctl_obj, part);
+ 	rv = callcallback(ctl_obj, kControlUserPaneFocusProcTag, arglist);
+ 	Py_XDECREF(arglist);
+ 	if ( rv )
+ 		if (!PyArg_Parse(rv, "h", &c_rv))
+ 			PyErr_Clear();
+ 	Py_XDECREF(rv);
+ 	return (ControlPartCode)c_rv;
+ }
+ 
 static pascal void
 mydrawproc(ControlHandle control, SInt16 part)
***************
*** 6610,6614 ****
 	/* Ignore errors, nothing we can do about them */
 	if ( rv )
! 		PyArg_Parse(rv, "h", &c_rv);
 	Py_XDECREF(rv);
 	return (ControlPartCode)c_rv;
--- 6652,6657 ----
 	/* Ignore errors, nothing we can do about them */
 	if ( rv )
! 		if (!PyArg_Parse(rv, "h", &c_rv))
! 			PyErr_Clear();
 	Py_XDECREF(rv);
 	return (ControlPartCode)c_rv;
***************
*** 6628,6632 ****
 	Py_XDECREF(arglist);
 	if ( rv )
! 		PyArg_Parse(rv, "h", &c_rv);
 	Py_XDECREF(rv);
 	return (ControlPartCode)c_rv;
--- 6671,6676 ----
 	Py_XDECREF(arglist);
 	if ( rv )
! 		if (!PyArg_Parse(rv, "h", &c_rv))
! 			PyErr_Clear();
 	Py_XDECREF(rv);
 	return (ControlPartCode)c_rv;
***************
*** 6643,6646 ****
--- 6687,6692 ----
 	mytracker_upp = NewControlActionUPP(mytracker);
 	myactionproc_upp = NewControlActionUPP(myactionproc);
+ 	mykeydownproc_upp = NewControlUserPaneKeyDownUPP(mykeydownproc);
+ 	myfocusproc_upp = NewControlUserPaneFocusUPP(myfocusproc);
 	mydrawproc_upp = NewControlUserPaneDrawUPP(mydrawproc);
 	myidleproc_upp = NewControlUserPaneIdleUPP(myidleproc);
Index: ctlsupport.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ctl/ctlsupport.py,v
retrieving revision 1.48
retrieving revision 1.49
diff -C2 -d -r1.48 -r1.49
*** ctlsupport.py	2001年12月30日 21:25:26	1.48
--- ctlsupport.py	2002年01月04日 19:45:15	1.49
***************
*** 226,229 ****
--- 226,231 ----
 static ControlActionUPP mytracker_upp;
 static ControlActionUPP myactionproc_upp;
+ static ControlUserPaneKeyDownUPP mykeydownproc_upp;
+ static ControlUserPaneFocusUPP myfocusproc_upp;
 static ControlUserPaneDrawUPP mydrawproc_upp;
 static ControlUserPaneIdleUPP myidleproc_upp;
***************
*** 314,317 ****
--- 316,323 ----
 	if ( which == kMyControlActionProcTag )
 		*uppp = (UniversalProcPtr)myactionproc_upp;
+ 	else if ( which == kControlUserPaneKeyDownProcTag )
+ 		*uppp = (UniversalProcPtr)mykeydownproc_upp;
+ 	else if ( which == kControlUserPaneFocusProcTag )
+ 		*uppp = (UniversalProcPtr)myfocusproc_upp;
 	else if ( which == kControlUserPaneDrawProcTag )
 		*uppp = (UniversalProcPtr)mydrawproc_upp;
***************
*** 371,374 ****
--- 377,416 ----
 }
 
+ static pascal ControlPartCode
+ mykeydownproc(ControlHandle control, SInt16 keyCode, SInt16 charCode, SInt16 modifiers)
+ {
+ 	ControlObject *ctl_obj;
+ 	PyObject *arglist, *rv;
+ 	short c_rv = 0;
+ 	
+ 	ctl_obj = (ControlObject *)CtlObj_WhichControl(control);
+ 	arglist = Py_BuildValue("Ohhh", ctl_obj, keyCode, charCode, modifiers);
+ 	rv = callcallback(ctl_obj, kControlUserPaneKeyDownProcTag, arglist);
+ 	Py_XDECREF(arglist);
+ 	if ( rv )
+ 		if (!PyArg_Parse(rv, "h", &c_rv))
+ 			PyErr_Clear();
+ 	Py_XDECREF(rv);
+ 	return (ControlPartCode)c_rv;
+ }
+ 
+ static pascal ControlPartCode
+ myfocusproc(ControlHandle control, ControlPartCode part)
+ {
+ 	ControlObject *ctl_obj;
+ 	PyObject *arglist, *rv;
+ 	short c_rv = kControlFocusNoPart;
+ 	
+ 	ctl_obj = (ControlObject *)CtlObj_WhichControl(control);
+ 	arglist = Py_BuildValue("Oh", ctl_obj, part);
+ 	rv = callcallback(ctl_obj, kControlUserPaneFocusProcTag, arglist);
+ 	Py_XDECREF(arglist);
+ 	if ( rv )
+ 		if (!PyArg_Parse(rv, "h", &c_rv))
+ 			PyErr_Clear();
+ 	Py_XDECREF(rv);
+ 	return (ControlPartCode)c_rv;
+ }
+ 
 static pascal void
 mydrawproc(ControlHandle control, SInt16 part)
***************
*** 410,414 ****
 	/* Ignore errors, nothing we can do about them */
 	if ( rv )
! 		PyArg_Parse(rv, "h", &c_rv);
 	Py_XDECREF(rv);
 	return (ControlPartCode)c_rv;
--- 452,457 ----
 	/* Ignore errors, nothing we can do about them */
 	if ( rv )
! 		if (!PyArg_Parse(rv, "h", &c_rv))
! 			PyErr_Clear();
 	Py_XDECREF(rv);
 	return (ControlPartCode)c_rv;
***************
*** 428,432 ****
 	Py_XDECREF(arglist);
 	if ( rv )
! 		PyArg_Parse(rv, "h", &c_rv);
 	Py_XDECREF(rv);
 	return (ControlPartCode)c_rv;
--- 471,476 ----
 	Py_XDECREF(arglist);
 	if ( rv )
! 		if (!PyArg_Parse(rv, "h", &c_rv))
! 			PyErr_Clear();
 	Py_XDECREF(rv);
 	return (ControlPartCode)c_rv;
***************
*** 437,440 ****
--- 481,486 ----
 mytracker_upp = NewControlActionUPP(mytracker);
 myactionproc_upp = NewControlActionUPP(myactionproc);
+ mykeydownproc_upp = NewControlUserPaneKeyDownUPP(mykeydownproc);
+ myfocusproc_upp = NewControlUserPaneFocusUPP(myfocusproc);
 mydrawproc_upp = NewControlUserPaneDrawUPP(mydrawproc);
 myidleproc_upp = NewControlUserPaneIdleUPP(myidleproc);

AltStyle によって変換されたページ (->オリジナル) /