summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/carbonevt/CarbonEvtsupport.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Modules/carbonevt/CarbonEvtsupport.py')
-rw-r--r--Mac/Modules/carbonevt/CarbonEvtsupport.py314
1 files changed, 0 insertions, 314 deletions
diff --git a/Mac/Modules/carbonevt/CarbonEvtsupport.py b/Mac/Modules/carbonevt/CarbonEvtsupport.py
deleted file mode 100644
index 2adc8cb..0000000
--- a/Mac/Modules/carbonevt/CarbonEvtsupport.py
+++ /dev/null
@@ -1,314 +0,0 @@
-# IBCarbonsupport.py
-
-from macsupport import *
-
-from CarbonEvtscan import RefObjectTypes
-
-# where should this go? macsupport.py?
-CFStringRef = OpaqueByValueType('CFStringRef')
-
-for typ in RefObjectTypes:
- execstr = "%(name)s = OpaqueByValueType('%(name)s')" % {"name": typ}
- exec execstr
-
-
-if 0:
- # these types will have no methods and will merely be opaque blobs
- # should write getattr and setattr for them?
-
- StructObjectTypes = ["EventTypeSpec",
- "HIPoint",
- "HICommand",
- "EventHotKeyID",
- ]
-
- for typ in StructObjectTypes:
- execstr = "%(name)s = OpaqueType('%(name)s')" % {"name": typ}
- exec execstr
-
-EventHotKeyID = OpaqueByValueType("EventHotKeyID", "EventHotKeyID")
-EventTypeSpec_ptr = OpaqueType("EventTypeSpec", "EventTypeSpec")
-
-# is this the right type for the void * in GetEventParameter
-#void_ptr = FixedInputBufferType(1024)
-void_ptr = stringptr
-# here are some types that are really other types
-
-class MyVarInputBufferType(VarInputBufferType):
- def passInput(self, name):
- return "%s__len__, %s__in__" % (name, name)
-
-MyInBuffer = MyVarInputBufferType('char', 'long', 'l') # (buf, len)
-
-EventTime = double
-EventTimeout = EventTime
-EventTimerInterval = EventTime
-EventAttributes = UInt32
-EventParamName = OSType
-EventParamType = OSType
-EventPriority = SInt16
-EventMask = UInt16
-
-EventComparatorUPP = FakeType("(EventComparatorUPP)0")
-EventLoopTimerUPP = FakeType("(EventLoopTimerUPP)0")
-EventHandlerUPP = FakeType("(EventHandlerUPP)0")
-EventHandlerUPP = FakeType("(EventHandlerUPP)0")
-EventComparatorProcPtr = FakeType("(EventComparatorProcPtr)0")
-EventLoopTimerProcPtr = FakeType("(EventLoopTimerProcPtr)0")
-EventHandlerProcPtr = FakeType("(EventHandlerProcPtr)0")
-
-CarbonEventsFunction = OSErrFunctionGenerator
-CarbonEventsMethod = OSErrMethodGenerator
-
-class EventHandlerRefMethod(OSErrMethodGenerator):
- def precheck(self):
- OutLbrace('if (_self->ob_itself == NULL)')
- Output('PyErr_SetString(CarbonEvents_Error, "Handler has been removed");')
- Output('return NULL;')
- OutRbrace()
-
-
-RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
-GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj")
-MouseTrackingResult = UInt16
-
-
-includestuff = includestuff + r"""
-#include <Carbon/Carbon.h>
-
-extern int CFStringRef_New(CFStringRef *);
-
-extern int CFStringRef_Convert(PyObject *, CFStringRef *);
-extern int CFBundleRef_Convert(PyObject *, CFBundleRef *);
-
-int EventTargetRef_Convert(PyObject *, EventTargetRef *);
-PyObject *EventHandlerCallRef_New(EventHandlerCallRef itself);
-PyObject *EventRef_New(EventRef itself);
-
-/********** EventTypeSpec *******/
-static PyObject*
-EventTypeSpec_New(EventTypeSpec *in)
-{
- return Py_BuildValue("ll", in->eventClass, in->eventKind);
-}
-
-static int
-EventTypeSpec_Convert(PyObject *v, EventTypeSpec *out)
-{
- if (PyArg_Parse(v, "(O&l)",
- PyMac_GetOSType, &(out->eventClass),
- &(out->eventKind)))
- return 1;
- return NULL;
-}
-
-/********** end EventTypeSpec *******/
-
-/********** HIPoint *******/
-
-#if 0 /* XXX doesn't compile */
-static PyObject*
-HIPoint_New(HIPoint *in)
-{
- return Py_BuildValue("ff", in->x, in->y);
-}
-
-static int
-HIPoint_Convert(PyObject *v, HIPoint *out)
-{
- if (PyArg_ParseTuple(v, "ff", &(out->x), &(out->y)))
- return 1;
- return NULL;
-}
-#endif
-
-/********** end HIPoint *******/
-
-/********** EventHotKeyID *******/
-
-static PyObject*
-EventHotKeyID_New(EventHotKeyID *in)
-{
- return Py_BuildValue("ll", in->signature, in->id);
-}
-
-static int
-EventHotKeyID_Convert(PyObject *v, EventHotKeyID *out)
-{
- if (PyArg_ParseTuple(v, "ll", &out->signature, &out->id))
- return 1;
- return NULL;
-}
-
-/********** end EventHotKeyID *******/
-
-/******** myEventHandler ***********/
-
-static EventHandlerUPP myEventHandlerUPP;
-
-static pascal OSStatus
-myEventHandler(EventHandlerCallRef handlerRef, EventRef event, void *outPyObject) {
- PyObject *retValue;
- int status;
-
- retValue = PyObject_CallFunction((PyObject *)outPyObject, "O&O&",
- EventHandlerCallRef_New, handlerRef,
- EventRef_New, event);
- if (retValue == NULL) {
- PySys_WriteStderr("Error in event handler callback:\n");
- PyErr_Print(); /* this also clears the error */
- status = noErr; /* complain? how? */
- } else {
- if (retValue == Py_None)
- status = noErr;
- else if (PyInt_Check(retValue)) {
- status = PyInt_AsLong(retValue);
- } else
- status = noErr; /* wrong object type, complain? */
- Py_DECREF(retValue);
- }
-
- return status;
-}
-
-/******** end myEventHandler ***********/
-
-"""
-
-initstuff = initstuff + """
-myEventHandlerUPP = NewEventHandlerUPP(myEventHandler);
-"""
-module = MacModule('_CarbonEvt', 'CarbonEvents', includestuff, finalstuff, initstuff)
-
-
-
-
-class EventHandlerRefObjectDefinition(PEP253Mixin, GlobalObjectDefinition):
- def outputStructMembers(self):
- Output("%s ob_itself;", self.itselftype)
- Output("PyObject *ob_callback;")
- def outputInitStructMembers(self):
- Output("it->ob_itself = %sitself;", self.argref)
- Output("it->ob_callback = NULL;")
- def outputFreeIt(self, name):
- OutLbrace("if (self->ob_itself != NULL)")
- Output("RemoveEventHandler(self->ob_itself);")
- Output("Py_DECREF(self->ob_callback);")
- OutRbrace()
-
-class MyGlobalObjectDefinition(PEP253Mixin, GlobalObjectDefinition):
- pass
-
-for typ in RefObjectTypes:
- if typ == 'EventHandlerRef':
- EventHandlerRefobject = EventHandlerRefObjectDefinition('EventHandlerRef')
- else:
- execstr = typ + 'object = MyGlobalObjectDefinition(typ)'
- exec execstr
- module.addobject(eval(typ + 'object'))
-
-
-functions = []
-for typ in RefObjectTypes: ## go thru all ObjectTypes as defined in CarbonEventsscan.py
- # initialize the lists for carbongen to fill
- execstr = typ + 'methods = []'
- exec execstr
-
-exec(open('CarbonEventsgen.py').read())
-
-
-
-for f in functions: module.add(f) # add all the functions carboneventsgen put in the list
-
-for typ in RefObjectTypes: ## go thru all ObjectTypes as defined in CarbonEventsscan.py
- methods = eval(typ + 'methods') ## get a reference to the method list from the main namespace
- obj = eval(typ + 'object') ## get a reference to the object
- for m in methods: obj.add(m) ## add each method in the list to the object
-
-
-removeeventhandler = """
-OSStatus _err;
-if (_self->ob_itself == NULL) {
- PyErr_SetString(CarbonEvents_Error, "Handler has been removed");
- return NULL;
-}
-if (!PyArg_ParseTuple(_args, ""))
- return NULL;
-_err = RemoveEventHandler(_self->ob_itself);
-if (_err != noErr) return PyMac_Error(_err);
-_self->ob_itself = NULL;
-Py_DECREF(_self->ob_callback);
-_self->ob_callback = NULL;
-Py_INCREF(Py_None);
-_res = Py_None;
-return _res;"""
-
-f = ManualGenerator("RemoveEventHandler", removeeventhandler);
-f.docstring = lambda: "() -> None"
-EventHandlerRefobject.add(f)
-
-
-installeventhandler = """
-EventTypeSpec inSpec;
-PyObject *callback;
-EventHandlerRef outRef;
-OSStatus _err;
-
-if (!PyArg_ParseTuple(_args, "O&O", EventTypeSpec_Convert, &inSpec, &callback))
- return NULL;
-
-_err = InstallEventHandler(_self->ob_itself, myEventHandlerUPP, 1, &inSpec, (void *)callback, &outRef);
-if (_err != noErr) return PyMac_Error(_err);
-
-_res = EventHandlerRef_New(outRef);
-if (_res != NULL) {
- ((EventHandlerRefObject*)_res)->ob_callback = callback;
- Py_INCREF(callback);
-}
-return _res;"""
-
-f = ManualGenerator("InstallEventHandler", installeventhandler);
-f.docstring = lambda: "(EventTypeSpec inSpec, Method callback) -> (EventHandlerRef outRef)"
-EventTargetRefobject.add(f)
-
-# This may not be the best, but at least it lets you get the raw data back into python as a string. You'll have to cut it up yourself and parse the result.
-
-geteventparameter = """
-UInt32 bufferSize;
-EventParamName inName;
-EventParamType inType;
-OSErr _err;
-void * buffer;
-
-if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetOSType, &inName, PyMac_GetOSType, &inType))
- return NULL;
-
-/* Figure out the size by passing a null buffer to GetEventParameter */
-_err = GetEventParameter(_self->ob_itself, inName, inType, NULL, 0, &bufferSize, NULL);
-
-if (_err != noErr)
- return PyMac_Error(_err);
-buffer = PyMem_NEW(char, bufferSize);
-if (buffer == NULL)
- return PyErr_NoMemory();
-
-_err = GetEventParameter(_self->ob_itself, inName, inType, NULL, bufferSize, NULL, buffer);
-
-if (_err != noErr) {
- PyMem_DEL(buffer);
- return PyMac_Error(_err);
-}
-_res = Py_BuildValue("s#", buffer, bufferSize);
-PyMem_DEL(buffer);
-return _res;
-"""
-
-f = ManualGenerator("GetEventParameter", geteventparameter);
-f.docstring = lambda: "(EventParamName eventName, EventParamType eventType) -> (String eventParamData)"
-EventRefobject.add(f)
-
-SetOutputFileName('_CarbonEvtmodule.c')
-module.generate()
-
-##import os
-##os.system("python setup.py build")