summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/ae/AEmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Modules/ae/AEmodule.c')
-rw-r--r--Mac/Modules/ae/AEmodule.c374
1 files changed, 106 insertions, 268 deletions
diff --git a/Mac/Modules/ae/AEmodule.c b/Mac/Modules/ae/AEmodule.c
index dc2fc7d..6bb9dfb 100644
--- a/Mac/Modules/ae/AEmodule.c
+++ b/Mac/Modules/ae/AEmodule.c
@@ -62,7 +62,7 @@ AEEventHandlerUPP upp_GenericEventHandler;
static pascal Boolean AEIdleProc(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn)
{
- (void) PyMac_Idle();
+ PyMac_Yield();
return 0;
}
@@ -164,55 +164,6 @@ static PyObject *AEDesc_AECountItems(_self, _args)
return _res;
}
-static PyObject *AEDesc_AEPutPtr(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- long index;
- DescType typeCode;
- char *dataPtr__in__;
- long dataPtr__len__;
- int dataPtr__in_len__;
- if (!PyArg_ParseTuple(_args, "lO&s#",
- &index,
- PyMac_GetOSType, &typeCode,
- &dataPtr__in__, &dataPtr__in_len__))
- return NULL;
- dataPtr__len__ = dataPtr__in_len__;
- _err = AEPutPtr(&_self->ob_itself,
- index,
- typeCode,
- dataPtr__in__, dataPtr__len__);
- if (_err != noErr) return PyMac_Error(_err);
- Py_INCREF(Py_None);
- _res = Py_None;
- dataPtr__error__: ;
- return _res;
-}
-
-static PyObject *AEDesc_AEPutDesc(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- long index;
- AEDesc theAEDesc;
- if (!PyArg_ParseTuple(_args, "lO&",
- &index,
- AEDesc_Convert, &theAEDesc))
- return NULL;
- _err = AEPutDesc(&_self->ob_itself,
- index,
- &theAEDesc);
- if (_err != noErr) return PyMac_Error(_err);
- Py_INCREF(Py_None);
- _res = Py_None;
- return _res;
-}
-
static PyObject *AEDesc_AEGetNthPtr(_self, _args)
AEDescObject *_self;
PyObject *_args;
@@ -302,174 +253,6 @@ static PyObject *AEDesc_AESizeOfNthItem(_self, _args)
return _res;
}
-static PyObject *AEDesc_AEDeleteItem(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- long index;
- if (!PyArg_ParseTuple(_args, "l",
- &index))
- return NULL;
- _err = AEDeleteItem(&_self->ob_itself,
- index);
- if (_err != noErr) return PyMac_Error(_err);
- Py_INCREF(Py_None);
- _res = Py_None;
- return _res;
-}
-
-static PyObject *AEDesc_AEPutKeyPtr(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- AEKeyword theAEKeyword;
- DescType typeCode;
- char *dataPtr__in__;
- long dataPtr__len__;
- int dataPtr__in_len__;
- if (!PyArg_ParseTuple(_args, "O&O&s#",
- PyMac_GetOSType, &theAEKeyword,
- PyMac_GetOSType, &typeCode,
- &dataPtr__in__, &dataPtr__in_len__))
- return NULL;
- dataPtr__len__ = dataPtr__in_len__;
- _err = AEPutKeyPtr(&_self->ob_itself,
- theAEKeyword,
- typeCode,
- dataPtr__in__, dataPtr__len__);
- if (_err != noErr) return PyMac_Error(_err);
- Py_INCREF(Py_None);
- _res = Py_None;
- dataPtr__error__: ;
- return _res;
-}
-
-static PyObject *AEDesc_AEPutKeyDesc(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- AEKeyword theAEKeyword;
- AEDesc theAEDesc;
- if (!PyArg_ParseTuple(_args, "O&O&",
- PyMac_GetOSType, &theAEKeyword,
- AEDesc_Convert, &theAEDesc))
- return NULL;
- _err = AEPutKeyDesc(&_self->ob_itself,
- theAEKeyword,
- &theAEDesc);
- if (_err != noErr) return PyMac_Error(_err);
- Py_INCREF(Py_None);
- _res = Py_None;
- return _res;
-}
-
-static PyObject *AEDesc_AEGetKeyPtr(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- AEKeyword theAEKeyword;
- DescType desiredType;
- DescType typeCode;
- char *dataPtr__out__;
- long dataPtr__len__;
- int dataPtr__in_len__;
- if (!PyArg_ParseTuple(_args, "O&O&i",
- PyMac_GetOSType, &theAEKeyword,
- PyMac_GetOSType, &desiredType,
- &dataPtr__in_len__))
- return NULL;
- if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
- {
- PyErr_NoMemory();
- goto dataPtr__error__;
- }
- dataPtr__len__ = dataPtr__in_len__;
- _err = AEGetKeyPtr(&_self->ob_itself,
- theAEKeyword,
- desiredType,
- &typeCode,
- dataPtr__out__, dataPtr__len__, &dataPtr__len__);
- if (_err != noErr) return PyMac_Error(_err);
- _res = Py_BuildValue("O&s#",
- PyMac_BuildOSType, typeCode,
- dataPtr__out__, (int)dataPtr__len__);
- free(dataPtr__out__);
- dataPtr__error__: ;
- return _res;
-}
-
-static PyObject *AEDesc_AEGetKeyDesc(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- AEKeyword theAEKeyword;
- DescType desiredType;
- AEDesc result;
- if (!PyArg_ParseTuple(_args, "O&O&",
- PyMac_GetOSType, &theAEKeyword,
- PyMac_GetOSType, &desiredType))
- return NULL;
- _err = AEGetKeyDesc(&_self->ob_itself,
- theAEKeyword,
- desiredType,
- &result);
- if (_err != noErr) return PyMac_Error(_err);
- _res = Py_BuildValue("O&",
- AEDesc_New, &result);
- return _res;
-}
-
-static PyObject *AEDesc_AESizeOfKeyDesc(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- AEKeyword theAEKeyword;
- DescType typeCode;
- Size dataSize;
- if (!PyArg_ParseTuple(_args, "O&",
- PyMac_GetOSType, &theAEKeyword))
- return NULL;
- _err = AESizeOfKeyDesc(&_self->ob_itself,
- theAEKeyword,
- &typeCode,
- &dataSize);
- if (_err != noErr) return PyMac_Error(_err);
- _res = Py_BuildValue("O&l",
- PyMac_BuildOSType, typeCode,
- dataSize);
- return _res;
-}
-
-static PyObject *AEDesc_AEDeleteKeyDesc(_self, _args)
- AEDescObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- AEKeyword theAEKeyword;
- if (!PyArg_ParseTuple(_args, "O&",
- PyMac_GetOSType, &theAEKeyword))
- return NULL;
- _err = AEDeleteKeyDesc(&_self->ob_itself,
- theAEKeyword);
- if (_err != noErr) return PyMac_Error(_err);
- Py_INCREF(Py_None);
- _res = Py_None;
- return _res;
-}
-
static PyObject *AEDesc_AEPutParamPtr(_self, _args)
AEDescObject *_self;
PyObject *_args;
@@ -817,19 +600,33 @@ static PyObject *AEDesc_AEResumeTheCurrentEvent(_self, _args)
PyObject *_res = NULL;
OSErr _err;
AppleEvent reply;
- AEEventHandlerUPP dispatcher__proc__ = upp_GenericEventHandler;
- PyObject *dispatcher;
- if (!PyArg_ParseTuple(_args, "O&O",
+ long handlerRefcon;
+ if (!PyArg_ParseTuple(_args, "O&l",
AEDesc_Convert, &reply,
- &dispatcher))
+ &handlerRefcon))
return NULL;
_err = AEResumeTheCurrentEvent(&_self->ob_itself,
&reply,
- dispatcher__proc__, (long)dispatcher);
+ upp_GenericEventHandler,
+ handlerRefcon);
+ if (_err != noErr) return PyMac_Error(_err);
+ Py_INCREF(Py_None);
+ _res = Py_None;
+ return _res;
+}
+
+static PyObject *AEDesc_AEGetTheCurrentEvent(_self, _args)
+ AEDescObject *_self;
+ PyObject *_args;
+{
+ PyObject *_res = NULL;
+ OSErr _err;
+ if (!PyArg_ParseTuple(_args, ""))
+ return NULL;
+ _err = AEGetTheCurrentEvent(&_self->ob_itself);
if (_err != noErr) return PyMac_Error(_err);
Py_INCREF(Py_None);
_res = Py_None;
- Py_INCREF(dispatcher); /* XXX leak, but needed */
return _res;
}
@@ -855,30 +652,12 @@ static PyMethodDef AEDesc_methods[] = {
"() -> (AEDesc result)"},
{"AECountItems", (PyCFunction)AEDesc_AECountItems, 1,
"() -> (long theCount)"},
- {"AEPutPtr", (PyCFunction)AEDesc_AEPutPtr, 1,
- "(long index, DescType typeCode, Buffer dataPtr) -> None"},
- {"AEPutDesc", (PyCFunction)AEDesc_AEPutDesc, 1,
- "(long index, AEDesc theAEDesc) -> None"},
{"AEGetNthPtr", (PyCFunction)AEDesc_AEGetNthPtr, 1,
"(long index, DescType desiredType, Buffer dataPtr) -> (AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr)"},
{"AEGetNthDesc", (PyCFunction)AEDesc_AEGetNthDesc, 1,
"(long index, DescType desiredType) -> (AEKeyword theAEKeyword, AEDesc result)"},
{"AESizeOfNthItem", (PyCFunction)AEDesc_AESizeOfNthItem, 1,
"(long index) -> (DescType typeCode, Size dataSize)"},
- {"AEDeleteItem", (PyCFunction)AEDesc_AEDeleteItem, 1,
- "(long index) -> None"},
- {"AEPutKeyPtr", (PyCFunction)AEDesc_AEPutKeyPtr, 1,
- "(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
- {"AEPutKeyDesc", (PyCFunction)AEDesc_AEPutKeyDesc, 1,
- "(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None"},
- {"AEGetKeyPtr", (PyCFunction)AEDesc_AEGetKeyPtr, 1,
- "(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)"},
- {"AEGetKeyDesc", (PyCFunction)AEDesc_AEGetKeyDesc, 1,
- "(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)"},
- {"AESizeOfKeyDesc", (PyCFunction)AEDesc_AESizeOfKeyDesc, 1,
- "(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)"},
- {"AEDeleteKeyDesc", (PyCFunction)AEDesc_AEDeleteKeyDesc, 1,
- "(AEKeyword theAEKeyword) -> None"},
{"AEPutParamPtr", (PyCFunction)AEDesc_AEPutParamPtr, 1,
"(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
{"AEPutParamDesc", (PyCFunction)AEDesc_AEPutParamDesc, 1,
@@ -908,7 +687,9 @@ static PyMethodDef AEDesc_methods[] = {
{"AESuspendTheCurrentEvent", (PyCFunction)AEDesc_AESuspendTheCurrentEvent, 1,
"() -> None"},
{"AEResumeTheCurrentEvent", (PyCFunction)AEDesc_AEResumeTheCurrentEvent, 1,
- "(AppleEvent reply, EventHandler dispatcher) -> None"},
+ "(AppleEvent reply, long handlerRefcon) -> None"},
+ {"AEGetTheCurrentEvent", (PyCFunction)AEDesc_AEGetTheCurrentEvent, 1,
+ "() -> None"},
{"AESetTheCurrentEvent", (PyCFunction)AEDesc_AESetTheCurrentEvent, 1,
"() -> None"},
{NULL, NULL, 0}
@@ -1040,6 +821,76 @@ static PyObject *AE_AECreateList(_self, _args)
return _res;
}
+static PyObject *AE_AEPutPtr(_self, _args)
+ PyObject *_self;
+ PyObject *_args;
+{
+ PyObject *_res = NULL;
+ OSErr _err;
+ AEDescList theAEDescList;
+ long index;
+ DescType typeCode;
+ char *dataPtr__in__;
+ long dataPtr__len__;
+ int dataPtr__in_len__;
+ if (!PyArg_ParseTuple(_args, "lO&s#",
+ &index,
+ PyMac_GetOSType, &typeCode,
+ &dataPtr__in__, &dataPtr__in_len__))
+ return NULL;
+ dataPtr__len__ = dataPtr__in_len__;
+ _err = AEPutPtr(&theAEDescList,
+ index,
+ typeCode,
+ dataPtr__in__, dataPtr__len__);
+ if (_err != noErr) return PyMac_Error(_err);
+ _res = Py_BuildValue("O&",
+ AEDesc_New, &theAEDescList);
+ dataPtr__error__: ;
+ return _res;
+}
+
+static PyObject *AE_AEPutDesc(_self, _args)
+ PyObject *_self;
+ PyObject *_args;
+{
+ PyObject *_res = NULL;
+ OSErr _err;
+ AEDescList theAEDescList;
+ long index;
+ AEDesc theAEDesc;
+ if (!PyArg_ParseTuple(_args, "lO&",
+ &index,
+ AEDesc_Convert, &theAEDesc))
+ return NULL;
+ _err = AEPutDesc(&theAEDescList,
+ index,
+ &theAEDesc);
+ if (_err != noErr) return PyMac_Error(_err);
+ _res = Py_BuildValue("O&",
+ AEDesc_New, &theAEDescList);
+ return _res;
+}
+
+static PyObject *AE_AEDeleteItem(_self, _args)
+ PyObject *_self;
+ PyObject *_args;
+{
+ PyObject *_res = NULL;
+ OSErr _err;
+ AEDescList theAEDescList;
+ long index;
+ if (!PyArg_ParseTuple(_args, "l",
+ &index))
+ return NULL;
+ _err = AEDeleteItem(&theAEDescList,
+ index);
+ if (_err != noErr) return PyMac_Error(_err);
+ _res = Py_BuildValue("O&",
+ AEDesc_New, &theAEDescList);
+ return _res;
+}
+
static PyObject *AE_AECreateAppleEvent(_self, _args)
PyObject *_self;
PyObject *_args;
@@ -1088,22 +939,6 @@ static PyObject *AE_AEProcessAppleEvent(_self, _args)
return _res;
}
-static PyObject *AE_AEGetTheCurrentEvent(_self, _args)
- PyObject *_self;
- PyObject *_args;
-{
- PyObject *_res = NULL;
- OSErr _err;
- AppleEvent theAppleEvent;
- if (!PyArg_ParseTuple(_args, ""))
- return NULL;
- _err = AEGetTheCurrentEvent(&theAppleEvent);
- if (_err != noErr) return PyMac_Error(_err);
- _res = Py_BuildValue("O&",
- AEDesc_New, &theAppleEvent);
- return _res;
-}
-
static PyObject *AE_AEGetInteractionAllowed(_self, _args)
PyObject *_self;
PyObject *_args;
@@ -1164,21 +999,20 @@ static PyObject *AE_AEInstallEventHandler(_self, _args)
OSErr _err;
AEEventClass theAEEventClass;
AEEventID theAEEventID;
- AEEventHandlerUPP handler__proc__ = upp_GenericEventHandler;
- PyObject *handler;
- if (!PyArg_ParseTuple(_args, "O&O&O",
+ long handlerRefcon;
+ if (!PyArg_ParseTuple(_args, "O&O&l",
PyMac_GetOSType, &theAEEventClass,
PyMac_GetOSType, &theAEEventID,
- &handler))
+ &handlerRefcon))
return NULL;
_err = AEInstallEventHandler(theAEEventClass,
theAEEventID,
- handler__proc__, (long)handler,
+ upp_GenericEventHandler,
+ handlerRefcon,
0);
if (_err != noErr) return PyMac_Error(_err);
Py_INCREF(Py_None);
_res = Py_None;
- Py_INCREF(handler); /* XXX leak, but needed */
return _res;
}
@@ -1230,12 +1064,16 @@ static PyMethodDef AE_methods[] = {
"(DescType typeCode, Buffer dataPtr, DescType toType) -> (AEDesc result)"},
{"AECreateList", (PyCFunction)AE_AECreateList, 1,
"(Buffer factoringPtr, Boolean isRecord) -> (AEDescList resultList)"},
+ {"AEPutPtr", (PyCFunction)AE_AEPutPtr, 1,
+ "(long index, DescType typeCode, Buffer dataPtr) -> (AEDescList theAEDescList)"},
+ {"AEPutDesc", (PyCFunction)AE_AEPutDesc, 1,
+ "(long index, AEDesc theAEDesc) -> (AEDescList theAEDescList)"},
+ {"AEDeleteItem", (PyCFunction)AE_AEDeleteItem, 1,
+ "(long index) -> (AEDescList theAEDescList)"},
{"AECreateAppleEvent", (PyCFunction)AE_AECreateAppleEvent, 1,
"(AEEventClass theAEEventClass, AEEventID theAEEventID, AEAddressDesc target, short returnID, long transactionID) -> (AppleEvent result)"},
{"AEProcessAppleEvent", (PyCFunction)AE_AEProcessAppleEvent, 1,
"(EventRecord theEventRecord) -> None"},
- {"AEGetTheCurrentEvent", (PyCFunction)AE_AEGetTheCurrentEvent, 1,
- "() -> (AppleEvent theAppleEvent)"},
{"AEGetInteractionAllowed", (PyCFunction)AE_AEGetInteractionAllowed, 1,
"() -> (AEInteractAllowed level)"},
{"AESetInteractionAllowed", (PyCFunction)AE_AESetInteractionAllowed, 1,
@@ -1243,7 +1081,7 @@ static PyMethodDef AE_methods[] = {
{"AEInteractWithUser", (PyCFunction)AE_AEInteractWithUser, 1,
"(long timeOutInTicks) -> None"},
{"AEInstallEventHandler", (PyCFunction)AE_AEInstallEventHandler, 1,
- "(AEEventClass theAEEventClass, AEEventID theAEEventID, EventHandler handler) -> None"},
+ "(AEEventClass theAEEventClass, AEEventID theAEEventID, long handlerRefcon) -> None"},
{"AERemoveEventHandler", (PyCFunction)AE_AERemoveEventHandler, 1,
"(AEEventClass theAEEventClass, AEEventID theAEEventID) -> None"},
{"AEManagerInfo", (PyCFunction)AE_AEManagerInfo, 1,