diff options
-rw-r--r-- | Mac/Modules/OSATerminology.c | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/Mac/Modules/OSATerminology.c b/Mac/Modules/OSATerminology.c index e56a0db..6a13aea 100644 --- a/Mac/Modules/OSATerminology.c +++ b/Mac/Modules/OSATerminology.c @@ -1,10 +1,13 @@ /* -** This module is a one-trick pony: given an FSSpec it gets the aeut -** resources. It was written by Donovan Preston and slightly modified -** by Jack. +** An interface to the application scripting related functions of the OSA API. ** -** It should be considered a placeholder, it will probably be replaced -** by a full interface to OpenScripting. +** GetAppTerminology - given an FSSpec/posix path to an application, +** returns its aevt (scripting terminology) resource(s) +** +** GetSysTerminology - returns the AppleScript language component's +** aeut (scripting terminology) resource +** +** Written by Donovan Preston and slightly modified by Jack and HAS. */ #include "Python.h" #include "pymactoolbox.h" @@ -26,12 +29,19 @@ PyOSA_GetAppTerminology(PyObject* self, PyObject* args) if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags)) return NULL; + /* + ** Note that we have to use the AppleScript component here. Who knows why + ** OSAGetAppTerminology should require a scripting component in the + ** first place, but it does. Note: doesn't work with the generic scripting + ** component, which is unfortunate as the AS component is currently very + ** slow (~1 sec?) to load, but we just have to live with this. + */ defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr'); err = GetComponentInstanceError (defaultComponent); if (err) return PyMac_Error(err); err = OSAGetAppTerminology ( defaultComponent, - modeFlags, + kOSAModeNull, &fss, defaultTerminology, &didLaunch, @@ -45,29 +55,23 @@ static PyObject * PyOSA_GetSysTerminology(PyObject* self, PyObject* args) { AEDesc theDesc = {0,0}; - FSSpec fss; ComponentInstance defaultComponent = NULL; SInt16 defaultTerminology = 0; - Boolean didLaunch = 0; OSAError err; - long modeFlags = 0; - - if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags)) - return NULL; + /* Accept any args for sake of backwards compatibility, then ignore them. */ + defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr'); err = GetComponentInstanceError (defaultComponent); if (err) return PyMac_Error(err); - err = OSAGetAppTerminology ( + err = OSAGetSysTerminology ( defaultComponent, - modeFlags, - &fss, + kOSAModeNull, defaultTerminology, - &didLaunch, &theDesc ); if (err) return PyMac_Error(err); - return Py_BuildValue("O&i", AEDesc_New, &theDesc, didLaunch); + return Py_BuildValue("O&", AEDesc_New, &theDesc); } #endif /* !__LP64__ */ @@ -80,11 +84,11 @@ static struct PyMethodDef OSATerminology_methods[] = {"GetAppTerminology", (PyCFunction) PyOSA_GetAppTerminology, METH_VARARGS, - "Get an applications terminology, as an AEDesc object."}, + "Get an application's terminology. GetAppTerminology(path) --> AEDesc"}, {"GetSysTerminology", (PyCFunction) PyOSA_GetSysTerminology, METH_VARARGS, - "Get an applications system terminology, as an AEDesc object."}, + "Get the AppleScript language's terminology. GetSysTerminology() --> AEDesc"}, #endif /* !__LP64__ */ {NULL, (PyCFunction) NULL, 0, NULL} }; |