mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
	
	
		
			229 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			229 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | 
 | ||
|  | /* =========================== Module Evt =========================== */ | ||
|  | 
 | ||
|  | #include "Python.h"
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define SystemSevenOrLater 1
 | ||
|  | 
 | ||
|  | #include "macglue.h"
 | ||
|  | #include <Memory.h>
 | ||
|  | #include <Dialogs.h>
 | ||
|  | #include <Menus.h>
 | ||
|  | #include <Controls.h>
 | ||
|  | 
 | ||
|  | extern PyObject *ResObj_New(Handle); | ||
|  | extern int ResObj_Convert(PyObject *, Handle *); | ||
|  | 
 | ||
|  | extern PyObject *WinObj_New(WindowPtr); | ||
|  | extern int WinObj_Convert(PyObject *, WindowPtr *); | ||
|  | 
 | ||
|  | extern PyObject *DlgObj_New(DialogPtr); | ||
|  | extern int DlgObj_Convert(PyObject *, DialogPtr *); | ||
|  | extern PyTypeObject Dialog_Type; | ||
|  | #define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
 | ||
|  | 
 | ||
|  | extern PyObject *MenuObj_New(MenuHandle); | ||
|  | extern int MenuObj_Convert(PyObject *, MenuHandle *); | ||
|  | 
 | ||
|  | extern PyObject *CtlObj_New(ControlHandle); | ||
|  | extern int CtlObj_Convert(PyObject *, ControlHandle *); | ||
|  | 
 | ||
|  | #include <Events.h>
 | ||
|  | 
 | ||
|  | #define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
 | ||
|  | 
 | ||
|  | static PyObject *Evt_Error; | ||
|  | 
 | ||
|  | static PyObject *Evt_GetNextEvent(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	Boolean _rv; | ||
|  | 	short eventMask; | ||
|  | 	EventRecord theEvent; | ||
|  | 	if (!PyArg_ParseTuple(_args, "h", | ||
|  | 	                      &eventMask)) | ||
|  | 		return NULL; | ||
|  | 	_rv = GetNextEvent(eventMask, | ||
|  | 	                   &theEvent); | ||
|  | 	_res = Py_BuildValue("bO&", | ||
|  | 	                     _rv, | ||
|  | 	                     PyMac_BuildEventRecord, &theEvent); | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *Evt_WaitNextEvent(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	Boolean _rv; | ||
|  | 	short eventMask; | ||
|  | 	EventRecord theEvent; | ||
|  | 	unsigned long sleep; | ||
|  | 	if (!PyArg_ParseTuple(_args, "hl", | ||
|  | 	                      &eventMask, | ||
|  | 	                      &sleep)) | ||
|  | 		return NULL; | ||
|  | 	_rv = WaitNextEvent(eventMask, | ||
|  | 	                    &theEvent, | ||
|  | 	                    sleep, | ||
|  | 	                    (RgnHandle)0); | ||
|  | 	_res = Py_BuildValue("bO&", | ||
|  | 	                     _rv, | ||
|  | 	                     PyMac_BuildEventRecord, &theEvent); | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *Evt_EventAvail(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	Boolean _rv; | ||
|  | 	short eventMask; | ||
|  | 	EventRecord theEvent; | ||
|  | 	if (!PyArg_ParseTuple(_args, "h", | ||
|  | 	                      &eventMask)) | ||
|  | 		return NULL; | ||
|  | 	_rv = EventAvail(eventMask, | ||
|  | 	                 &theEvent); | ||
|  | 	_res = Py_BuildValue("bO&", | ||
|  | 	                     _rv, | ||
|  | 	                     PyMac_BuildEventRecord, &theEvent); | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *Evt_GetMouse(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	Point mouseLoc; | ||
|  | 	if (!PyArg_ParseTuple(_args, "")) | ||
|  | 		return NULL; | ||
|  | 	GetMouse(&mouseLoc); | ||
|  | 	_res = Py_BuildValue("O&", | ||
|  | 	                     PyMac_BuildPoint, mouseLoc); | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *Evt_Button(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	Boolean _rv; | ||
|  | 	if (!PyArg_ParseTuple(_args, "")) | ||
|  | 		return NULL; | ||
|  | 	_rv = Button(); | ||
|  | 	_res = Py_BuildValue("b", | ||
|  | 	                     _rv); | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *Evt_StillDown(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	Boolean _rv; | ||
|  | 	if (!PyArg_ParseTuple(_args, "")) | ||
|  | 		return NULL; | ||
|  | 	_rv = StillDown(); | ||
|  | 	_res = Py_BuildValue("b", | ||
|  | 	                     _rv); | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *Evt_WaitMouseUp(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	Boolean _rv; | ||
|  | 	if (!PyArg_ParseTuple(_args, "")) | ||
|  | 		return NULL; | ||
|  | 	_rv = WaitMouseUp(); | ||
|  | 	_res = Py_BuildValue("b", | ||
|  | 	                     _rv); | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *Evt_GetKeys(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	KeyMap theKeys__out__; | ||
|  | 	int theKeys__len__; | ||
|  | 	if (!PyArg_ParseTuple(_args, "")) | ||
|  | 		return NULL; | ||
|  | 	GetKeys(theKeys__out__); | ||
|  | 	_res = Py_BuildValue("s#", | ||
|  | 	                     (char *)&theKeys__out__, sizeof(KeyMap)); | ||
|  |  theKeys__error__: ; | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyObject *Evt_TickCount(_self, _args) | ||
|  | 	PyObject *_self; | ||
|  | 	PyObject *_args; | ||
|  | { | ||
|  | 	PyObject *_res = NULL; | ||
|  | 	long _rv; | ||
|  | 	if (!PyArg_ParseTuple(_args, "")) | ||
|  | 		return NULL; | ||
|  | 	_rv = TickCount(); | ||
|  | 	_res = Py_BuildValue("l", | ||
|  | 	                     _rv); | ||
|  | 	return _res; | ||
|  | } | ||
|  | 
 | ||
|  | static PyMethodDef Evt_methods[] = { | ||
|  | 	{"GetNextEvent", (PyCFunction)Evt_GetNextEvent, 1, | ||
|  | 	 "(short eventMask) -> (Boolean _rv, EventRecord theEvent)"}, | ||
|  | 	{"WaitNextEvent", (PyCFunction)Evt_WaitNextEvent, 1, | ||
|  | 	 "(short eventMask, unsigned long sleep) -> (Boolean _rv, EventRecord theEvent)"}, | ||
|  | 	{"EventAvail", (PyCFunction)Evt_EventAvail, 1, | ||
|  | 	 "(short eventMask) -> (Boolean _rv, EventRecord theEvent)"}, | ||
|  | 	{"GetMouse", (PyCFunction)Evt_GetMouse, 1, | ||
|  | 	 "() -> (Point mouseLoc)"}, | ||
|  | 	{"Button", (PyCFunction)Evt_Button, 1, | ||
|  | 	 "() -> (Boolean _rv)"}, | ||
|  | 	{"StillDown", (PyCFunction)Evt_StillDown, 1, | ||
|  | 	 "() -> (Boolean _rv)"}, | ||
|  | 	{"WaitMouseUp", (PyCFunction)Evt_WaitMouseUp, 1, | ||
|  | 	 "() -> (Boolean _rv)"}, | ||
|  | 	{"GetKeys", (PyCFunction)Evt_GetKeys, 1, | ||
|  | 	 "() -> (KeyMap theKeys)"}, | ||
|  | 	{"TickCount", (PyCFunction)Evt_TickCount, 1, | ||
|  | 	 "() -> (long _rv)"}, | ||
|  | 	{NULL, NULL, 0} | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | void initEvt() | ||
|  | { | ||
|  | 	PyObject *m; | ||
|  | 	PyObject *d; | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 	m = Py_InitModule("Evt", Evt_methods); | ||
|  | 	d = PyModule_GetDict(m); | ||
|  | 	Evt_Error = PyMac_GetOSErrException(); | ||
|  | 	if (Evt_Error == NULL || | ||
|  | 	    PyDict_SetItemString(d, "Error", Evt_Error) != 0) | ||
|  | 		Py_FatalError("can't initialize Evt.Error"); | ||
|  | } | ||
|  | 
 | ||
|  | /* ========================= End module Evt ========================= */ | ||
|  | 
 |