summaryrefslogtreecommitdiffstats
path: root/Mac/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Modules')
-rw-r--r--Mac/Modules/ae/AEmodule.c52
-rw-r--r--Mac/Modules/ae/aegen.py16
-rw-r--r--Mac/Modules/ae/aescan.py8
3 files changed, 58 insertions, 18 deletions
diff --git a/Mac/Modules/ae/AEmodule.c b/Mac/Modules/ae/AEmodule.c
index 53467e4..a4f56d6 100644
--- a/Mac/Modules/ae/AEmodule.c
+++ b/Mac/Modules/ae/AEmodule.c
@@ -667,18 +667,19 @@ static PyObject *AEDesc_AEResumeTheCurrentEvent(_self, _args)
PyObject *_res = NULL;
OSErr _err;
AppleEvent reply;
- long handlerRefcon;
- if (!PyArg_ParseTuple(_args, "O&l",
+ AEEventHandlerUPP dispatcher__proc__ = upp_GenericEventHandler;
+ PyObject *dispatcher;
+ if (!PyArg_ParseTuple(_args, "O&O",
AEDesc_Convert, &reply,
- &handlerRefcon))
+ &dispatcher))
return NULL;
_err = AEResumeTheCurrentEvent(&_self->ob_itself,
&reply,
- upp_GenericEventHandler,
- handlerRefcon);
+ dispatcher__proc__, (long)dispatcher);
if (_err != noErr) return PyMac_Error(_err);
Py_INCREF(Py_None);
_res = Py_None;
+ Py_INCREF(dispatcher); /* XXX leak, but needed */
return _res;
}
@@ -760,7 +761,7 @@ static PyMethodDef AEDesc_methods[] = {
{"AESuspendTheCurrentEvent", (PyCFunction)AEDesc_AESuspendTheCurrentEvent, 1,
"() -> None"},
{"AEResumeTheCurrentEvent", (PyCFunction)AEDesc_AEResumeTheCurrentEvent, 1,
- "(AppleEvent reply, long handlerRefcon) -> None"},
+ "(AppleEvent reply, EventHandler dispatcher) -> None"},
{"AEGetTheCurrentEvent", (PyCFunction)AEDesc_AEGetTheCurrentEvent, 1,
"() -> None"},
{"AESetTheCurrentEvent", (PyCFunction)AEDesc_AESetTheCurrentEvent, 1,
@@ -1002,20 +1003,21 @@ static PyObject *AE_AEInstallEventHandler(_self, _args)
OSErr _err;
AEEventClass theAEEventClass;
AEEventID theAEEventID;
- long handlerRefcon;
- if (!PyArg_ParseTuple(_args, "O&O&l",
+ AEEventHandlerUPP handler__proc__ = upp_GenericEventHandler;
+ PyObject *handler;
+ if (!PyArg_ParseTuple(_args, "O&O&O",
PyMac_GetOSType, &theAEEventClass,
PyMac_GetOSType, &theAEEventID,
- &handlerRefcon))
+ &handler))
return NULL;
_err = AEInstallEventHandler(theAEEventClass,
theAEEventID,
- upp_GenericEventHandler,
- handlerRefcon,
+ handler__proc__, (long)handler,
0);
if (_err != noErr) return PyMac_Error(_err);
Py_INCREF(Py_None);
_res = Py_None;
+ Py_INCREF(handler); /* XXX leak, but needed */
return _res;
}
@@ -1041,6 +1043,30 @@ static PyObject *AE_AERemoveEventHandler(_self, _args)
return _res;
}
+static PyObject *AE_AEGetEventHandler(_self, _args)
+ PyObject *_self;
+ PyObject *_args;
+{
+ PyObject *_res = NULL;
+ OSErr _err;
+ AEEventClass theAEEventClass;
+ AEEventID theAEEventID;
+ long procptr, handlerptr;
+
+ if (!PyArg_ParseTuple(_args, "O&O&",
+ PyMac_GetOSType, &theAEEventClass,
+ PyMac_GetOSType, &theAEEventID))
+ return NULL;
+ _err = AEGetEventHandler(theAEEventClass,
+ theAEEventID,
+ (AEEventHandlerUPP *)&procptr, &handlerptr,
+ 0);
+ if (_err != noErr) return PyMac_Error(_err);
+ _res = Py_BuildValue("ll",
+ (long)procptr, (long)handlerptr);
+ return _res;
+}
+
static PyObject *AE_AEManagerInfo(_self, _args)
PyObject *_self;
PyObject *_args;
@@ -1078,9 +1104,11 @@ static PyMethodDef AE_methods[] = {
{"AEInteractWithUser", (PyCFunction)AE_AEInteractWithUser, 1,
"(long timeOutInTicks) -> None"},
{"AEInstallEventHandler", (PyCFunction)AE_AEInstallEventHandler, 1,
- "(AEEventClass theAEEventClass, AEEventID theAEEventID, long handlerRefcon) -> None"},
+ "(AEEventClass theAEEventClass, AEEventID theAEEventID, EventHandler handler) -> None"},
{"AERemoveEventHandler", (PyCFunction)AE_AERemoveEventHandler, 1,
"(AEEventClass theAEEventClass, AEEventID theAEEventID) -> None"},
+ {"AEGetEventHandler", (PyCFunction)AE_AEGetEventHandler, 1,
+ "(AEEventClass theAEEventClass, AEEventID theAEEventID) -> (EventHandler handler)"},
{"AEManagerInfo", (PyCFunction)AE_AEManagerInfo, 1,
"(AEKeyword keyWord) -> (long result)"},
{NULL, NULL, 0}
diff --git a/Mac/Modules/ae/aegen.py b/Mac/Modules/ae/aegen.py
index 1769003..5d3a6e8 100644
--- a/Mac/Modules/ae/aegen.py
+++ b/Mac/Modules/ae/aegen.py
@@ -1,4 +1,4 @@
-# Generated from 'Moes:CodeWarrior6:Metrowerks C/C++:Headers:Universal Headers 2.0.1f:AppleEvents.h'
+# Generated from 'Sap:CodeWarrior6:Metrowerks C/C++:Headers:Universal Headers 2.0.1f:AppleEvents.h'
f = AEFunction(OSErr, 'AECreateDesc',
(DescType, 'typeCode', InMode),
@@ -214,8 +214,7 @@ aedescmethods.append(f)
f = AEMethod(OSErr, 'AEResumeTheCurrentEvent',
(AppleEvent_ptr, 'theAppleEvent', InMode),
(AppleEvent_ptr, 'reply', InMode),
- (AEEventHandlerUPP, 'dispatcher', InMode),
- (long, 'handlerRefcon', InMode),
+ (EventHandler, 'dispatcher', InMode),
)
aedescmethods.append(f)
@@ -249,8 +248,7 @@ functions.append(f)
f = AEFunction(OSErr, 'AEInstallEventHandler',
(AEEventClass, 'theAEEventClass', InMode),
(AEEventID, 'theAEEventID', InMode),
- (AEEventHandlerUPP, 'handler', InMode),
- (long, 'handlerRefcon', InMode),
+ (EventHandler, 'handler', InMode),
(AlwaysFalse, 'isSysHandler', InMode),
)
functions.append(f)
@@ -263,6 +261,14 @@ f = AEFunction(OSErr, 'AERemoveEventHandler',
)
functions.append(f)
+f = AEFunction(OSErr, 'AEGetEventHandler',
+ (AEEventClass, 'theAEEventClass', InMode),
+ (AEEventID, 'theAEEventID', InMode),
+ (EventHandler, 'handler', OutMode),
+ (AlwaysFalse, 'isSysHandler', InMode),
+)
+functions.append(f)
+
f = AEFunction(OSErr, 'AEManagerInfo',
(AEKeyword, 'keyWord', InMode),
(long, 'result', OutMode),
diff --git a/Mac/Modules/ae/aescan.py b/Mac/Modules/ae/aescan.py
index e68c9ae..bc6cc58 100644
--- a/Mac/Modules/ae/aescan.py
+++ b/Mac/Modules/ae/aescan.py
@@ -59,7 +59,7 @@ class AppleEventsScanner(Scanner):
def makeblacklistnames(self):
return [
"AEDisposeDesc",
- "AEGetEventHandler",
+# "AEGetEventHandler",
]
def makeblacklisttypes(self):
@@ -84,6 +84,12 @@ class AppleEventsScanner(Scanner):
([("EventHandlerProcPtr", "*", "OutMode"), ("long", "*", "OutMode")],
[("EventHandler", "*", "*")]),
+ ([("AEEventHandlerUPP", "*", "InMode"), ("long", "*", "InMode")],
+ [("EventHandler", "*", "*")]),
+
+ ([("AEEventHandlerUPP", "*", "OutMode"), ("long", "*", "OutMode")],
+ [("EventHandler", "*", "*")]),
+
([("void", "*", "OutMode"), ("Size", "*", "InMode"),
("Size", "*", "OutMode")],
[("VarVarOutBuffer", "*", "InOutMode")]),