blob: 9de087122e99f9c03ffa7d1a656ccf9ea5c08e03 [file] [log] [blame]
Jack Jansenee1c85c2003-03-06 23:02:59 +00001/*
2** This module is a one-trick pony: given an FSSpec it gets the aeut
3** resources. It was written by Donovan Preston and slightly modified
4** by Jack.
5**
6** It should be considered a placeholder, it will probably be replaced
7** by a full interface to OpenScripting.
8*/
9#include "Python.h"
Jack Jansen7107c1a2003-11-20 13:31:00 +000010#include "pymactoolbox.h"
Jack Jansenee1c85c2003-03-06 23:02:59 +000011
Jack Jansen86f25fb2003-03-06 23:02:04 +000012#include <Carbon/Carbon.h>
Jack Jansen86f25fb2003-03-06 23:02:04 +000013
Jack Jansenee1c85c2003-03-06 23:02:59 +000014static PyObject *
15PyOSA_GetAppTerminology(PyObject* self, PyObject* args)
16{
17 AEDesc theDesc = {0,0};
18 FSSpec fss;
19 ComponentInstance defaultComponent = NULL;
20 SInt16 defaultTerminology = 0;
21 Boolean didLaunch = 0;
Jack Jansen86f25fb2003-03-06 23:02:04 +000022 OSAError err;
Jack Jansenee1c85c2003-03-06 23:02:59 +000023 long modeFlags = 0;
Jack Jansen86f25fb2003-03-06 23:02:04 +000024
Jack Jansenee1c85c2003-03-06 23:02:59 +000025 if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags))
26 return NULL;
Jack Jansen86f25fb2003-03-06 23:02:04 +000027
Jack Jansenee1c85c2003-03-06 23:02:59 +000028 defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr');
29 err = GetComponentInstanceError (defaultComponent);
30 if (err) return PyMac_Error(err);
Jack Jansen86f25fb2003-03-06 23:02:04 +000031 err = OSAGetCurrentDialect(defaultComponent, &defaultTerminology);
Jack Jansenee1c85c2003-03-06 23:02:59 +000032 if (err) return PyMac_Error(err);
Jack Jansen86f25fb2003-03-06 23:02:04 +000033 err = OSAGetAppTerminology (
34 defaultComponent,
Jack Jansenee1c85c2003-03-06 23:02:59 +000035 modeFlags,
36 &fss,
Jack Jansen86f25fb2003-03-06 23:02:04 +000037 defaultTerminology,
38 &didLaunch,
Jack Jansenee1c85c2003-03-06 23:02:59 +000039 &theDesc
Jack Jansen86f25fb2003-03-06 23:02:04 +000040 );
Jack Jansenee1c85c2003-03-06 23:02:59 +000041 if (err) return PyMac_Error(err);
42 return Py_BuildValue("O&i", AEDesc_New, &theDesc, didLaunch);
43}
Jack Jansen86f25fb2003-03-06 23:02:04 +000044
Jack Jansenee1c85c2003-03-06 23:02:59 +000045static PyObject *
46PyOSA_GetSysTerminology(PyObject* self, PyObject* args)
47{
48 AEDesc theDesc = {0,0};
49 FSSpec fss;
50 ComponentInstance defaultComponent = NULL;
51 SInt16 defaultTerminology = 0;
52 Boolean didLaunch = 0;
53 OSAError err;
54 long modeFlags = 0;
55
56 if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags))
57 return NULL;
58
59 defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr');
60 err = GetComponentInstanceError (defaultComponent);
61 if (err) return PyMac_Error(err);
62 err = OSAGetCurrentDialect(defaultComponent, &defaultTerminology);
63 if (err) return PyMac_Error(err);
64 err = OSAGetAppTerminology (
Jack Jansen86f25fb2003-03-06 23:02:04 +000065 defaultComponent,
Jack Jansenee1c85c2003-03-06 23:02:59 +000066 modeFlags,
67 &fss,
Jack Jansen86f25fb2003-03-06 23:02:04 +000068 defaultTerminology,
69 &didLaunch,
Jack Jansenee1c85c2003-03-06 23:02:59 +000070 &theDesc
71 );
72 if (err) return PyMac_Error(err);
73 return Py_BuildValue("O&i", AEDesc_New, &theDesc, didLaunch);
Jack Jansen86f25fb2003-03-06 23:02:04 +000074}
75
76/*
77 * List of methods defined in the module
78 */
Jack Jansenee1c85c2003-03-06 23:02:59 +000079static struct PyMethodDef OSATerminology_methods[] =
Jack Jansen86f25fb2003-03-06 23:02:04 +000080{
Jack Jansenee1c85c2003-03-06 23:02:59 +000081 {"GetAppTerminology",
82 (PyCFunction) PyOSA_GetAppTerminology,
83 METH_VARARGS,
84 "Get an applications terminology, as an AEDesc object."},
85 {"GetSysTerminology",
86 (PyCFunction) PyOSA_GetSysTerminology,
87 METH_VARARGS,
88 "Get an applications system terminology, as an AEDesc object."},
89 {NULL, (PyCFunction) NULL, 0, NULL}
Jack Jansen86f25fb2003-03-06 23:02:04 +000090};
91
92
93void
Jack Jansenee1c85c2003-03-06 23:02:59 +000094initOSATerminology(void)
Jack Jansen86f25fb2003-03-06 23:02:04 +000095{
Jack Jansenee1c85c2003-03-06 23:02:59 +000096 Py_InitModule("OSATerminology", OSATerminology_methods);
Jack Jansen86f25fb2003-03-06 23:02:04 +000097}