OSATerminology-1.2.6.2.patch$$mBIND*** OSATerminology_orig2.c Mon Jan 31 12:58:41 2005 --- OSATerminology_patched.c Mon Jan 31 17:32:51 2005 *************** *** 1,10 **** /* ! ** 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. ** ! ** It should be considered a placeholder, it will probably be replaced ! ** by a full interface to OpenScripting. */ #include "Python.h" #include "pymactoolbox.h" --- 1,13 ---- /* ! ** An interface to the application scripting related functions of the OSA API. ** ! ** 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" *************** *** 25,36 **** if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags)) return NULL; defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr'); err = GetComponentInstanceError (defaultComponent); if (err) return PyMac_Error(err); err = OSAGetAppTerminology ( defaultComponent, ! modeFlags, &fss, defaultTerminology, &didLaunch, --- 28,46 ---- 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, ! kOSAModeNull, &fss, defaultTerminology, &didLaunch, *************** *** 44,72 **** 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; defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr'); err = GetComponentInstanceError (defaultComponent); if (err) return PyMac_Error(err); ! err = OSAGetAppTerminology ( defaultComponent, ! modeFlags, ! &fss, defaultTerminology, - &didLaunch, &theDesc ); if (err) return PyMac_Error(err); ! return Py_BuildValue("O&i", AEDesc_New, &theDesc, didLaunch); } /* --- 54,76 ---- PyOSA_GetSysTerminology(PyObject* self, PyObject* args) { AEDesc theDesc = {0,0}; ComponentInstance defaultComponent = NULL; SInt16 defaultTerminology = 0; OSAError err; + /* 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 = OSAGetSysTerminology ( defaultComponent, ! kOSAModeNull, defaultTerminology, &theDesc ); if (err) return PyMac_Error(err); ! return Py_BuildValue("O&", AEDesc_New, &theDesc); } /* *************** *** 77,87 **** {"GetAppTerminology", (PyCFunction) PyOSA_GetAppTerminology, METH_VARARGS, ! "Get an applications terminology, as an AEDesc object."}, {"GetSysTerminology", (PyCFunction) PyOSA_GetSysTerminology, METH_VARARGS, ! "Get an applications system terminology, as an AEDesc object."}, {NULL, (PyCFunction) NULL, 0, NULL} }; --- 81,91 ---- {"GetAppTerminology", (PyCFunction) PyOSA_GetAppTerminology, METH_VARARGS, ! "Get an application's terminology. GetAppTerminology(path) --> AEDesc"}, {"GetSysTerminology", (PyCFunction) PyOSA_GetSysTerminology, METH_VARARGS, ! "Get the AppleScript language's terminology. GetSysTerminology() --> AEDesc"}, {NULL, (PyCFunction) NULL, 0, NULL} };