[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
Fri, 04 Jan 2002 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);