PageRenderTime 41ms CodeModel.GetById 14ms app.highlight 23ms RepoModel.GetById 1ms app.codeStats 0ms

/Mac/Modules/evt/_Evtmodule.c

http://unladen-swallow.googlecode.com/
C | 559 lines | 504 code | 52 blank | 3 comment | 34 complexity | 1dd8756feb989d25dfdf306f3fa078f1 MD5 | raw file
  1
  2/* ========================== Module _Evt =========================== */
  3
  4#include "Python.h"
  5
  6#ifndef __LP64__
  7
  8
  9#include "pymactoolbox.h"
 10
 11/* Macro to test whether a weak-loaded CFM function exists */
 12#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
 13        PyErr_SetString(PyExc_NotImplementedError, \
 14        "Not available in this shared library/OS version"); \
 15        return NULL; \
 16    }} while(0)
 17
 18
 19#include <Carbon/Carbon.h>
 20
 21
 22static PyObject *Evt_Error;
 23
 24static PyObject *Evt_GetMouse(PyObject *_self, PyObject *_args)
 25{
 26	PyObject *_res = NULL;
 27	Point mouseLoc;
 28#ifndef GetMouse
 29	PyMac_PRECHECK(GetMouse);
 30#endif
 31	if (!PyArg_ParseTuple(_args, ""))
 32		return NULL;
 33	GetMouse(&mouseLoc);
 34	_res = Py_BuildValue("O&",
 35	                     PyMac_BuildPoint, mouseLoc);
 36	return _res;
 37}
 38
 39static PyObject *Evt_Button(PyObject *_self, PyObject *_args)
 40{
 41	PyObject *_res = NULL;
 42	Boolean _rv;
 43#ifndef Button
 44	PyMac_PRECHECK(Button);
 45#endif
 46	if (!PyArg_ParseTuple(_args, ""))
 47		return NULL;
 48	_rv = Button();
 49	_res = Py_BuildValue("b",
 50	                     _rv);
 51	return _res;
 52}
 53
 54static PyObject *Evt_StillDown(PyObject *_self, PyObject *_args)
 55{
 56	PyObject *_res = NULL;
 57	Boolean _rv;
 58#ifndef StillDown
 59	PyMac_PRECHECK(StillDown);
 60#endif
 61	if (!PyArg_ParseTuple(_args, ""))
 62		return NULL;
 63	_rv = StillDown();
 64	_res = Py_BuildValue("b",
 65	                     _rv);
 66	return _res;
 67}
 68
 69static PyObject *Evt_WaitMouseUp(PyObject *_self, PyObject *_args)
 70{
 71	PyObject *_res = NULL;
 72	Boolean _rv;
 73#ifndef WaitMouseUp
 74	PyMac_PRECHECK(WaitMouseUp);
 75#endif
 76	if (!PyArg_ParseTuple(_args, ""))
 77		return NULL;
 78	_rv = WaitMouseUp();
 79	_res = Py_BuildValue("b",
 80	                     _rv);
 81	return _res;
 82}
 83
 84static PyObject *Evt_GetCaretTime(PyObject *_self, PyObject *_args)
 85{
 86	PyObject *_res = NULL;
 87	UInt32 _rv;
 88#ifndef GetCaretTime
 89	PyMac_PRECHECK(GetCaretTime);
 90#endif
 91	if (!PyArg_ParseTuple(_args, ""))
 92		return NULL;
 93	_rv = GetCaretTime();
 94	_res = Py_BuildValue("l",
 95	                     _rv);
 96	return _res;
 97}
 98
 99static PyObject *Evt_GetKeys(PyObject *_self, PyObject *_args)
100{
101	PyObject *_res = NULL;
102	KeyMap theKeys__out__;
103#ifndef GetKeys
104	PyMac_PRECHECK(GetKeys);
105#endif
106	if (!PyArg_ParseTuple(_args, ""))
107		return NULL;
108	GetKeys(theKeys__out__);
109	_res = Py_BuildValue("s#",
110	                     (char *)&theKeys__out__, (int)sizeof(KeyMap));
111	return _res;
112}
113
114static PyObject *Evt_GetDblTime(PyObject *_self, PyObject *_args)
115{
116	PyObject *_res = NULL;
117	UInt32 _rv;
118#ifndef GetDblTime
119	PyMac_PRECHECK(GetDblTime);
120#endif
121	if (!PyArg_ParseTuple(_args, ""))
122		return NULL;
123	_rv = GetDblTime();
124	_res = Py_BuildValue("l",
125	                     _rv);
126	return _res;
127}
128
129static PyObject *Evt_SetEventMask(PyObject *_self, PyObject *_args)
130{
131	PyObject *_res = NULL;
132	EventMask value;
133#ifndef SetEventMask
134	PyMac_PRECHECK(SetEventMask);
135#endif
136	if (!PyArg_ParseTuple(_args, "H",
137	                      &value))
138		return NULL;
139	SetEventMask(value);
140	Py_INCREF(Py_None);
141	_res = Py_None;
142	return _res;
143}
144
145static PyObject *Evt_GetNextEvent(PyObject *_self, PyObject *_args)
146{
147	PyObject *_res = NULL;
148	Boolean _rv;
149	EventMask eventMask;
150	EventRecord theEvent;
151#ifndef GetNextEvent
152	PyMac_PRECHECK(GetNextEvent);
153#endif
154	if (!PyArg_ParseTuple(_args, "H",
155	                      &eventMask))
156		return NULL;
157	_rv = GetNextEvent(eventMask,
158	                   &theEvent);
159	_res = Py_BuildValue("bO&",
160	                     _rv,
161	                     PyMac_BuildEventRecord, &theEvent);
162	return _res;
163}
164
165static PyObject *Evt_EventAvail(PyObject *_self, PyObject *_args)
166{
167	PyObject *_res = NULL;
168	Boolean _rv;
169	EventMask eventMask;
170	EventRecord theEvent;
171#ifndef EventAvail
172	PyMac_PRECHECK(EventAvail);
173#endif
174	if (!PyArg_ParseTuple(_args, "H",
175	                      &eventMask))
176		return NULL;
177	_rv = EventAvail(eventMask,
178	                 &theEvent);
179	_res = Py_BuildValue("bO&",
180	                     _rv,
181	                     PyMac_BuildEventRecord, &theEvent);
182	return _res;
183}
184
185static PyObject *Evt_PostEvent(PyObject *_self, PyObject *_args)
186{
187	PyObject *_res = NULL;
188	OSErr _err;
189	EventKind eventNum;
190	UInt32 eventMsg;
191#ifndef PostEvent
192	PyMac_PRECHECK(PostEvent);
193#endif
194	if (!PyArg_ParseTuple(_args, "Hl",
195	                      &eventNum,
196	                      &eventMsg))
197		return NULL;
198	_err = PostEvent(eventNum,
199	                 eventMsg);
200	if (_err != noErr) return PyMac_Error(_err);
201	Py_INCREF(Py_None);
202	_res = Py_None;
203	return _res;
204}
205
206static PyObject *Evt_FlushEvents(PyObject *_self, PyObject *_args)
207{
208	PyObject *_res = NULL;
209	EventMask whichMask;
210	EventMask stopMask;
211#ifndef FlushEvents
212	PyMac_PRECHECK(FlushEvents);
213#endif
214	if (!PyArg_ParseTuple(_args, "HH",
215	                      &whichMask,
216	                      &stopMask))
217		return NULL;
218	FlushEvents(whichMask,
219	            stopMask);
220	Py_INCREF(Py_None);
221	_res = Py_None;
222	return _res;
223}
224
225static PyObject *Evt_GetGlobalMouse(PyObject *_self, PyObject *_args)
226{
227	PyObject *_res = NULL;
228	Point globalMouse;
229#ifndef GetGlobalMouse
230	PyMac_PRECHECK(GetGlobalMouse);
231#endif
232	if (!PyArg_ParseTuple(_args, ""))
233		return NULL;
234	GetGlobalMouse(&globalMouse);
235	_res = Py_BuildValue("O&",
236	                     PyMac_BuildPoint, globalMouse);
237	return _res;
238}
239
240static PyObject *Evt_GetCurrentKeyModifiers(PyObject *_self, PyObject *_args)
241{
242	PyObject *_res = NULL;
243	UInt32 _rv;
244#ifndef GetCurrentKeyModifiers
245	PyMac_PRECHECK(GetCurrentKeyModifiers);
246#endif
247	if (!PyArg_ParseTuple(_args, ""))
248		return NULL;
249	_rv = GetCurrentKeyModifiers();
250	_res = Py_BuildValue("l",
251	                     _rv);
252	return _res;
253}
254
255static PyObject *Evt_CheckEventQueueForUserCancel(PyObject *_self, PyObject *_args)
256{
257	PyObject *_res = NULL;
258	Boolean _rv;
259#ifndef CheckEventQueueForUserCancel
260	PyMac_PRECHECK(CheckEventQueueForUserCancel);
261#endif
262	if (!PyArg_ParseTuple(_args, ""))
263		return NULL;
264	_rv = CheckEventQueueForUserCancel();
265	_res = Py_BuildValue("b",
266	                     _rv);
267	return _res;
268}
269
270static PyObject *Evt_KeyScript(PyObject *_self, PyObject *_args)
271{
272	PyObject *_res = NULL;
273	short code;
274#ifndef KeyScript
275	PyMac_PRECHECK(KeyScript);
276#endif
277	if (!PyArg_ParseTuple(_args, "h",
278	                      &code))
279		return NULL;
280	KeyScript(code);
281	Py_INCREF(Py_None);
282	_res = Py_None;
283	return _res;
284}
285
286static PyObject *Evt_IsCmdChar(PyObject *_self, PyObject *_args)
287{
288	PyObject *_res = NULL;
289	Boolean _rv;
290	EventRecord event;
291	short test;
292#ifndef IsCmdChar
293	PyMac_PRECHECK(IsCmdChar);
294#endif
295	if (!PyArg_ParseTuple(_args, "O&h",
296	                      PyMac_GetEventRecord, &event,
297	                      &test))
298		return NULL;
299	_rv = IsCmdChar(&event,
300	                test);
301	_res = Py_BuildValue("b",
302	                     _rv);
303	return _res;
304}
305
306static PyObject *Evt_LMGetKeyThresh(PyObject *_self, PyObject *_args)
307{
308	PyObject *_res = NULL;
309	SInt16 _rv;
310#ifndef LMGetKeyThresh
311	PyMac_PRECHECK(LMGetKeyThresh);
312#endif
313	if (!PyArg_ParseTuple(_args, ""))
314		return NULL;
315	_rv = LMGetKeyThresh();
316	_res = Py_BuildValue("h",
317	                     _rv);
318	return _res;
319}
320
321static PyObject *Evt_LMSetKeyThresh(PyObject *_self, PyObject *_args)
322{
323	PyObject *_res = NULL;
324	SInt16 value;
325#ifndef LMSetKeyThresh
326	PyMac_PRECHECK(LMSetKeyThresh);
327#endif
328	if (!PyArg_ParseTuple(_args, "h",
329	                      &value))
330		return NULL;
331	LMSetKeyThresh(value);
332	Py_INCREF(Py_None);
333	_res = Py_None;
334	return _res;
335}
336
337static PyObject *Evt_LMGetKeyRepThresh(PyObject *_self, PyObject *_args)
338{
339	PyObject *_res = NULL;
340	SInt16 _rv;
341#ifndef LMGetKeyRepThresh
342	PyMac_PRECHECK(LMGetKeyRepThresh);
343#endif
344	if (!PyArg_ParseTuple(_args, ""))
345		return NULL;
346	_rv = LMGetKeyRepThresh();
347	_res = Py_BuildValue("h",
348	                     _rv);
349	return _res;
350}
351
352static PyObject *Evt_LMSetKeyRepThresh(PyObject *_self, PyObject *_args)
353{
354	PyObject *_res = NULL;
355	SInt16 value;
356#ifndef LMSetKeyRepThresh
357	PyMac_PRECHECK(LMSetKeyRepThresh);
358#endif
359	if (!PyArg_ParseTuple(_args, "h",
360	                      &value))
361		return NULL;
362	LMSetKeyRepThresh(value);
363	Py_INCREF(Py_None);
364	_res = Py_None;
365	return _res;
366}
367
368static PyObject *Evt_LMGetKbdLast(PyObject *_self, PyObject *_args)
369{
370	PyObject *_res = NULL;
371	UInt8 _rv;
372#ifndef LMGetKbdLast
373	PyMac_PRECHECK(LMGetKbdLast);
374#endif
375	if (!PyArg_ParseTuple(_args, ""))
376		return NULL;
377	_rv = LMGetKbdLast();
378	_res = Py_BuildValue("b",
379	                     _rv);
380	return _res;
381}
382
383static PyObject *Evt_LMSetKbdLast(PyObject *_self, PyObject *_args)
384{
385	PyObject *_res = NULL;
386	UInt8 value;
387#ifndef LMSetKbdLast
388	PyMac_PRECHECK(LMSetKbdLast);
389#endif
390	if (!PyArg_ParseTuple(_args, "b",
391	                      &value))
392		return NULL;
393	LMSetKbdLast(value);
394	Py_INCREF(Py_None);
395	_res = Py_None;
396	return _res;
397}
398
399static PyObject *Evt_LMGetKbdType(PyObject *_self, PyObject *_args)
400{
401	PyObject *_res = NULL;
402	UInt8 _rv;
403#ifndef LMGetKbdType
404	PyMac_PRECHECK(LMGetKbdType);
405#endif
406	if (!PyArg_ParseTuple(_args, ""))
407		return NULL;
408	_rv = LMGetKbdType();
409	_res = Py_BuildValue("b",
410	                     _rv);
411	return _res;
412}
413
414static PyObject *Evt_LMSetKbdType(PyObject *_self, PyObject *_args)
415{
416	PyObject *_res = NULL;
417	UInt8 value;
418#ifndef LMSetKbdType
419	PyMac_PRECHECK(LMSetKbdType);
420#endif
421	if (!PyArg_ParseTuple(_args, "b",
422	                      &value))
423		return NULL;
424	LMSetKbdType(value);
425	Py_INCREF(Py_None);
426	_res = Py_None;
427	return _res;
428}
429
430static PyObject *Evt_TickCount(PyObject *_self, PyObject *_args)
431{
432	PyObject *_res = NULL;
433	UInt32 _rv;
434#ifndef TickCount
435	PyMac_PRECHECK(TickCount);
436#endif
437	if (!PyArg_ParseTuple(_args, ""))
438		return NULL;
439	_rv = TickCount();
440	_res = Py_BuildValue("l",
441	                     _rv);
442	return _res;
443}
444
445static PyObject *Evt_WaitNextEvent(PyObject *_self, PyObject *_args)
446{
447	PyObject *_res = NULL;
448
449	Boolean _rv;
450	EventMask eventMask;
451	EventRecord theEvent;
452	UInt32 sleep;
453	Handle mouseregion = (Handle)0;
454
455	if (!PyArg_ParseTuple(_args, "Hl|O&",
456	                      &eventMask,
457	                      &sleep,
458	                      OptResObj_Convert, &mouseregion))
459	        return NULL;
460	_rv = WaitNextEvent(eventMask,
461	                    &theEvent,
462	                    sleep,
463	                    (RgnHandle)mouseregion);
464	_res = Py_BuildValue("bO&",
465	                     _rv,
466	                     PyMac_BuildEventRecord, &theEvent);
467	return _res;
468
469}
470
471static PyMethodDef Evt_methods[] = {
472	{"GetMouse", (PyCFunction)Evt_GetMouse, 1,
473	 PyDoc_STR("() -> (Point mouseLoc)")},
474	{"Button", (PyCFunction)Evt_Button, 1,
475	 PyDoc_STR("() -> (Boolean _rv)")},
476	{"StillDown", (PyCFunction)Evt_StillDown, 1,
477	 PyDoc_STR("() -> (Boolean _rv)")},
478	{"WaitMouseUp", (PyCFunction)Evt_WaitMouseUp, 1,
479	 PyDoc_STR("() -> (Boolean _rv)")},
480	{"GetCaretTime", (PyCFunction)Evt_GetCaretTime, 1,
481	 PyDoc_STR("() -> (UInt32 _rv)")},
482	{"GetKeys", (PyCFunction)Evt_GetKeys, 1,
483	 PyDoc_STR("() -> (KeyMap theKeys)")},
484	{"GetDblTime", (PyCFunction)Evt_GetDblTime, 1,
485	 PyDoc_STR("() -> (UInt32 _rv)")},
486	{"SetEventMask", (PyCFunction)Evt_SetEventMask, 1,
487	 PyDoc_STR("(EventMask value) -> None")},
488	{"GetNextEvent", (PyCFunction)Evt_GetNextEvent, 1,
489	 PyDoc_STR("(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)")},
490	{"EventAvail", (PyCFunction)Evt_EventAvail, 1,
491	 PyDoc_STR("(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)")},
492	{"PostEvent", (PyCFunction)Evt_PostEvent, 1,
493	 PyDoc_STR("(EventKind eventNum, UInt32 eventMsg) -> None")},
494	{"FlushEvents", (PyCFunction)Evt_FlushEvents, 1,
495	 PyDoc_STR("(EventMask whichMask, EventMask stopMask) -> None")},
496	{"GetGlobalMouse", (PyCFunction)Evt_GetGlobalMouse, 1,
497	 PyDoc_STR("() -> (Point globalMouse)")},
498	{"GetCurrentKeyModifiers", (PyCFunction)Evt_GetCurrentKeyModifiers, 1,
499	 PyDoc_STR("() -> (UInt32 _rv)")},
500	{"CheckEventQueueForUserCancel", (PyCFunction)Evt_CheckEventQueueForUserCancel, 1,
501	 PyDoc_STR("() -> (Boolean _rv)")},
502	{"KeyScript", (PyCFunction)Evt_KeyScript, 1,
503	 PyDoc_STR("(short code) -> None")},
504	{"IsCmdChar", (PyCFunction)Evt_IsCmdChar, 1,
505	 PyDoc_STR("(EventRecord event, short test) -> (Boolean _rv)")},
506	{"LMGetKeyThresh", (PyCFunction)Evt_LMGetKeyThresh, 1,
507	 PyDoc_STR("() -> (SInt16 _rv)")},
508	{"LMSetKeyThresh", (PyCFunction)Evt_LMSetKeyThresh, 1,
509	 PyDoc_STR("(SInt16 value) -> None")},
510	{"LMGetKeyRepThresh", (PyCFunction)Evt_LMGetKeyRepThresh, 1,
511	 PyDoc_STR("() -> (SInt16 _rv)")},
512	{"LMSetKeyRepThresh", (PyCFunction)Evt_LMSetKeyRepThresh, 1,
513	 PyDoc_STR("(SInt16 value) -> None")},
514	{"LMGetKbdLast", (PyCFunction)Evt_LMGetKbdLast, 1,
515	 PyDoc_STR("() -> (UInt8 _rv)")},
516	{"LMSetKbdLast", (PyCFunction)Evt_LMSetKbdLast, 1,
517	 PyDoc_STR("(UInt8 value) -> None")},
518	{"LMGetKbdType", (PyCFunction)Evt_LMGetKbdType, 1,
519	 PyDoc_STR("() -> (UInt8 _rv)")},
520	{"LMSetKbdType", (PyCFunction)Evt_LMSetKbdType, 1,
521	 PyDoc_STR("(UInt8 value) -> None")},
522	{"TickCount", (PyCFunction)Evt_TickCount, 1,
523	 PyDoc_STR("() -> (UInt32 _rv)")},
524	{"WaitNextEvent", (PyCFunction)Evt_WaitNextEvent, 1,
525	 PyDoc_STR("(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)")},
526	{NULL, NULL, 0}
527};
528
529
530#else /* __LP64__ */
531
532static PyMethodDef Evt_methods[] = {
533	{NULL, NULL, 0}
534};
535#endif /* __LP64__ */
536
537
538void init_Evt(void)
539{
540	PyObject *m;
541#ifndef __LP64__
542	PyObject *d;
543#endif /* __LP64__ */
544
545
546
547
548	m = Py_InitModule("_Evt", Evt_methods);
549#ifndef __LP64__
550	d = PyModule_GetDict(m);
551	Evt_Error = PyMac_GetOSErrException();
552	if (Evt_Error == NULL ||
553	    PyDict_SetItemString(d, "Error", Evt_Error) != 0)
554		return;
555#endif /* __LP64__ */
556}
557
558/* ======================== End module _Evt ========================= */
559