/Mac/Modules/osa/_OSAmodule.c

http://unladen-swallow.googlecode.com/ · C · 899 lines · 813 code · 74 blank · 12 comment · 102 complexity · f6e2beafa828fcbadaa5dbb98abdad34 MD5 · raw file

  1. /* ========================== Module _OSA =========================== */
  2. #include "Python.h"
  3. #include "pymactoolbox.h"
  4. /* Macro to test whether a weak-loaded CFM function exists */
  5. #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
  6. PyErr_SetString(PyExc_NotImplementedError, \
  7. "Not available in this shared library/OS version"); \
  8. return NULL; \
  9. }} while(0)
  10. #if PY_VERSION_HEX < 0x02040000
  11. PyObject *PyMac_GetOSErrException(void);
  12. #endif
  13. #include <Carbon/Carbon.h>
  14. #ifdef USE_TOOLBOX_OBJECT_GLUE
  15. extern PyObject *_OSAObj_New(ComponentInstance);
  16. extern int _OSAObj_Convert(PyObject *, ComponentInstance *);
  17. #define OSAObj_New _OSAObj_New
  18. #define OSAObj_Convert _OSAObj_Convert
  19. #endif
  20. static PyObject *OSA_Error;
  21. /* ---------------- Object type OSAComponentInstance ---------------- */
  22. PyTypeObject OSAComponentInstance_Type;
  23. #define OSAObj_Check(x) ((x)->ob_type == &OSAComponentInstance_Type || PyObject_TypeCheck((x), &OSAComponentInstance_Type))
  24. typedef struct OSAComponentInstanceObject {
  25. PyObject_HEAD
  26. ComponentInstance ob_itself;
  27. } OSAComponentInstanceObject;
  28. PyObject *OSAObj_New(ComponentInstance itself)
  29. {
  30. OSAComponentInstanceObject *it;
  31. if (itself == NULL) {
  32. PyErr_SetString(OSA_Error,"NULL ComponentInstance");
  33. return NULL;
  34. }
  35. it = PyObject_NEW(OSAComponentInstanceObject, &OSAComponentInstance_Type);
  36. if (it == NULL) return NULL;
  37. it->ob_itself = itself;
  38. return (PyObject *)it;
  39. }
  40. int OSAObj_Convert(PyObject *v, ComponentInstance *p_itself)
  41. {
  42. if (CmpInstObj_Convert(v, p_itself))
  43. return 1;
  44. PyErr_Clear();
  45. if (!OSAObj_Check(v))
  46. {
  47. PyErr_SetString(PyExc_TypeError, "OSAComponentInstance required");
  48. return 0;
  49. }
  50. *p_itself = ((OSAComponentInstanceObject *)v)->ob_itself;
  51. return 1;
  52. }
  53. static void OSAObj_dealloc(OSAComponentInstanceObject *self)
  54. {
  55. /* Cleanup of self->ob_itself goes here */
  56. self->ob_type->tp_free((PyObject *)self);
  57. }
  58. static PyObject *OSAObj_OSALoad(OSAComponentInstanceObject *_self, PyObject *_args)
  59. {
  60. PyObject *_res = NULL;
  61. OSAError _err;
  62. AEDesc scriptData;
  63. long modeFlags;
  64. OSAID resultingScriptID;
  65. #ifndef OSALoad
  66. PyMac_PRECHECK(OSALoad);
  67. #endif
  68. if (!PyArg_ParseTuple(_args, "O&l",
  69. AEDesc_Convert, &scriptData,
  70. &modeFlags))
  71. return NULL;
  72. _err = OSALoad(_self->ob_itself,
  73. &scriptData,
  74. modeFlags,
  75. &resultingScriptID);
  76. if (_err != noErr) return PyMac_Error(_err);
  77. _res = Py_BuildValue("l",
  78. resultingScriptID);
  79. return _res;
  80. }
  81. static PyObject *OSAObj_OSAStore(OSAComponentInstanceObject *_self, PyObject *_args)
  82. {
  83. PyObject *_res = NULL;
  84. OSAError _err;
  85. OSAID scriptID;
  86. DescType desiredType;
  87. long modeFlags;
  88. AEDesc resultingScriptData;
  89. #ifndef OSAStore
  90. PyMac_PRECHECK(OSAStore);
  91. #endif
  92. if (!PyArg_ParseTuple(_args, "lO&l",
  93. &scriptID,
  94. PyMac_GetOSType, &desiredType,
  95. &modeFlags))
  96. return NULL;
  97. _err = OSAStore(_self->ob_itself,
  98. scriptID,
  99. desiredType,
  100. modeFlags,
  101. &resultingScriptData);
  102. if (_err != noErr) return PyMac_Error(_err);
  103. _res = Py_BuildValue("O&",
  104. AEDesc_New, &resultingScriptData);
  105. return _res;
  106. }
  107. static PyObject *OSAObj_OSAExecute(OSAComponentInstanceObject *_self, PyObject *_args)
  108. {
  109. PyObject *_res = NULL;
  110. OSAError _err;
  111. OSAID compiledScriptID;
  112. OSAID contextID;
  113. long modeFlags;
  114. OSAID resultingScriptValueID;
  115. #ifndef OSAExecute
  116. PyMac_PRECHECK(OSAExecute);
  117. #endif
  118. if (!PyArg_ParseTuple(_args, "lll",
  119. &compiledScriptID,
  120. &contextID,
  121. &modeFlags))
  122. return NULL;
  123. _err = OSAExecute(_self->ob_itself,
  124. compiledScriptID,
  125. contextID,
  126. modeFlags,
  127. &resultingScriptValueID);
  128. if (_err != noErr) return PyMac_Error(_err);
  129. _res = Py_BuildValue("l",
  130. resultingScriptValueID);
  131. return _res;
  132. }
  133. static PyObject *OSAObj_OSADisplay(OSAComponentInstanceObject *_self, PyObject *_args)
  134. {
  135. PyObject *_res = NULL;
  136. OSAError _err;
  137. OSAID scriptValueID;
  138. DescType desiredType;
  139. long modeFlags;
  140. AEDesc resultingText;
  141. #ifndef OSADisplay
  142. PyMac_PRECHECK(OSADisplay);
  143. #endif
  144. if (!PyArg_ParseTuple(_args, "lO&l",
  145. &scriptValueID,
  146. PyMac_GetOSType, &desiredType,
  147. &modeFlags))
  148. return NULL;
  149. _err = OSADisplay(_self->ob_itself,
  150. scriptValueID,
  151. desiredType,
  152. modeFlags,
  153. &resultingText);
  154. if (_err != noErr) return PyMac_Error(_err);
  155. _res = Py_BuildValue("O&",
  156. AEDesc_New, &resultingText);
  157. return _res;
  158. }
  159. static PyObject *OSAObj_OSAScriptError(OSAComponentInstanceObject *_self, PyObject *_args)
  160. {
  161. PyObject *_res = NULL;
  162. OSAError _err;
  163. OSType selector;
  164. DescType desiredType;
  165. AEDesc resultingErrorDescription;
  166. #ifndef OSAScriptError
  167. PyMac_PRECHECK(OSAScriptError);
  168. #endif
  169. if (!PyArg_ParseTuple(_args, "O&O&",
  170. PyMac_GetOSType, &selector,
  171. PyMac_GetOSType, &desiredType))
  172. return NULL;
  173. _err = OSAScriptError(_self->ob_itself,
  174. selector,
  175. desiredType,
  176. &resultingErrorDescription);
  177. if (_err != noErr) return PyMac_Error(_err);
  178. _res = Py_BuildValue("O&",
  179. AEDesc_New, &resultingErrorDescription);
  180. return _res;
  181. }
  182. static PyObject *OSAObj_OSADispose(OSAComponentInstanceObject *_self, PyObject *_args)
  183. {
  184. PyObject *_res = NULL;
  185. OSAError _err;
  186. OSAID scriptID;
  187. #ifndef OSADispose
  188. PyMac_PRECHECK(OSADispose);
  189. #endif
  190. if (!PyArg_ParseTuple(_args, "l",
  191. &scriptID))
  192. return NULL;
  193. _err = OSADispose(_self->ob_itself,
  194. scriptID);
  195. if (_err != noErr) return PyMac_Error(_err);
  196. Py_INCREF(Py_None);
  197. _res = Py_None;
  198. return _res;
  199. }
  200. static PyObject *OSAObj_OSASetScriptInfo(OSAComponentInstanceObject *_self, PyObject *_args)
  201. {
  202. PyObject *_res = NULL;
  203. OSAError _err;
  204. OSAID scriptID;
  205. OSType selector;
  206. long value;
  207. #ifndef OSASetScriptInfo
  208. PyMac_PRECHECK(OSASetScriptInfo);
  209. #endif
  210. if (!PyArg_ParseTuple(_args, "lO&l",
  211. &scriptID,
  212. PyMac_GetOSType, &selector,
  213. &value))
  214. return NULL;
  215. _err = OSASetScriptInfo(_self->ob_itself,
  216. scriptID,
  217. selector,
  218. value);
  219. if (_err != noErr) return PyMac_Error(_err);
  220. Py_INCREF(Py_None);
  221. _res = Py_None;
  222. return _res;
  223. }
  224. static PyObject *OSAObj_OSAGetScriptInfo(OSAComponentInstanceObject *_self, PyObject *_args)
  225. {
  226. PyObject *_res = NULL;
  227. OSAError _err;
  228. OSAID scriptID;
  229. OSType selector;
  230. long result;
  231. #ifndef OSAGetScriptInfo
  232. PyMac_PRECHECK(OSAGetScriptInfo);
  233. #endif
  234. if (!PyArg_ParseTuple(_args, "lO&",
  235. &scriptID,
  236. PyMac_GetOSType, &selector))
  237. return NULL;
  238. _err = OSAGetScriptInfo(_self->ob_itself,
  239. scriptID,
  240. selector,
  241. &result);
  242. if (_err != noErr) return PyMac_Error(_err);
  243. _res = Py_BuildValue("l",
  244. result);
  245. return _res;
  246. }
  247. static PyObject *OSAObj_OSAScriptingComponentName(OSAComponentInstanceObject *_self, PyObject *_args)
  248. {
  249. PyObject *_res = NULL;
  250. OSAError _err;
  251. AEDesc resultingScriptingComponentName;
  252. #ifndef OSAScriptingComponentName
  253. PyMac_PRECHECK(OSAScriptingComponentName);
  254. #endif
  255. if (!PyArg_ParseTuple(_args, ""))
  256. return NULL;
  257. _err = OSAScriptingComponentName(_self->ob_itself,
  258. &resultingScriptingComponentName);
  259. if (_err != noErr) return PyMac_Error(_err);
  260. _res = Py_BuildValue("O&",
  261. AEDesc_New, &resultingScriptingComponentName);
  262. return _res;
  263. }
  264. static PyObject *OSAObj_OSACompile(OSAComponentInstanceObject *_self, PyObject *_args)
  265. {
  266. PyObject *_res = NULL;
  267. OSAError _err;
  268. AEDesc sourceData;
  269. long modeFlags;
  270. OSAID previousAndResultingScriptID;
  271. #ifndef OSACompile
  272. PyMac_PRECHECK(OSACompile);
  273. #endif
  274. if (!PyArg_ParseTuple(_args, "O&l",
  275. AEDesc_Convert, &sourceData,
  276. &modeFlags))
  277. return NULL;
  278. _err = OSACompile(_self->ob_itself,
  279. &sourceData,
  280. modeFlags,
  281. &previousAndResultingScriptID);
  282. if (_err != noErr) return PyMac_Error(_err);
  283. _res = Py_BuildValue("l",
  284. previousAndResultingScriptID);
  285. return _res;
  286. }
  287. static PyObject *OSAObj_OSACopyID(OSAComponentInstanceObject *_self, PyObject *_args)
  288. {
  289. PyObject *_res = NULL;
  290. OSAError _err;
  291. OSAID fromID;
  292. OSAID toID;
  293. #ifndef OSACopyID
  294. PyMac_PRECHECK(OSACopyID);
  295. #endif
  296. if (!PyArg_ParseTuple(_args, "l",
  297. &fromID))
  298. return NULL;
  299. _err = OSACopyID(_self->ob_itself,
  300. fromID,
  301. &toID);
  302. if (_err != noErr) return PyMac_Error(_err);
  303. _res = Py_BuildValue("l",
  304. toID);
  305. return _res;
  306. }
  307. static PyObject *OSAObj_OSAGetSource(OSAComponentInstanceObject *_self, PyObject *_args)
  308. {
  309. PyObject *_res = NULL;
  310. OSAError _err;
  311. OSAID scriptID;
  312. DescType desiredType;
  313. AEDesc resultingSourceData;
  314. #ifndef OSAGetSource
  315. PyMac_PRECHECK(OSAGetSource);
  316. #endif
  317. if (!PyArg_ParseTuple(_args, "lO&",
  318. &scriptID,
  319. PyMac_GetOSType, &desiredType))
  320. return NULL;
  321. _err = OSAGetSource(_self->ob_itself,
  322. scriptID,
  323. desiredType,
  324. &resultingSourceData);
  325. if (_err != noErr) return PyMac_Error(_err);
  326. _res = Py_BuildValue("O&",
  327. AEDesc_New, &resultingSourceData);
  328. return _res;
  329. }
  330. static PyObject *OSAObj_OSACoerceFromDesc(OSAComponentInstanceObject *_self, PyObject *_args)
  331. {
  332. PyObject *_res = NULL;
  333. OSAError _err;
  334. AEDesc scriptData;
  335. long modeFlags;
  336. OSAID resultingScriptID;
  337. #ifndef OSACoerceFromDesc
  338. PyMac_PRECHECK(OSACoerceFromDesc);
  339. #endif
  340. if (!PyArg_ParseTuple(_args, "O&l",
  341. AEDesc_Convert, &scriptData,
  342. &modeFlags))
  343. return NULL;
  344. _err = OSACoerceFromDesc(_self->ob_itself,
  345. &scriptData,
  346. modeFlags,
  347. &resultingScriptID);
  348. if (_err != noErr) return PyMac_Error(_err);
  349. _res = Py_BuildValue("l",
  350. resultingScriptID);
  351. return _res;
  352. }
  353. static PyObject *OSAObj_OSACoerceToDesc(OSAComponentInstanceObject *_self, PyObject *_args)
  354. {
  355. PyObject *_res = NULL;
  356. OSAError _err;
  357. OSAID scriptID;
  358. DescType desiredType;
  359. long modeFlags;
  360. AEDesc result;
  361. #ifndef OSACoerceToDesc
  362. PyMac_PRECHECK(OSACoerceToDesc);
  363. #endif
  364. if (!PyArg_ParseTuple(_args, "lO&l",
  365. &scriptID,
  366. PyMac_GetOSType, &desiredType,
  367. &modeFlags))
  368. return NULL;
  369. _err = OSACoerceToDesc(_self->ob_itself,
  370. scriptID,
  371. desiredType,
  372. modeFlags,
  373. &result);
  374. if (_err != noErr) return PyMac_Error(_err);
  375. _res = Py_BuildValue("O&",
  376. AEDesc_New, &result);
  377. return _res;
  378. }
  379. static PyObject *OSAObj_OSASetDefaultTarget(OSAComponentInstanceObject *_self, PyObject *_args)
  380. {
  381. PyObject *_res = NULL;
  382. OSAError _err;
  383. AEAddressDesc target;
  384. #ifndef OSASetDefaultTarget
  385. PyMac_PRECHECK(OSASetDefaultTarget);
  386. #endif
  387. if (!PyArg_ParseTuple(_args, "O&",
  388. AEDesc_Convert, &target))
  389. return NULL;
  390. _err = OSASetDefaultTarget(_self->ob_itself,
  391. &target);
  392. if (_err != noErr) return PyMac_Error(_err);
  393. Py_INCREF(Py_None);
  394. _res = Py_None;
  395. return _res;
  396. }
  397. static PyObject *OSAObj_OSAStartRecording(OSAComponentInstanceObject *_self, PyObject *_args)
  398. {
  399. PyObject *_res = NULL;
  400. OSAError _err;
  401. OSAID compiledScriptToModifyID;
  402. #ifndef OSAStartRecording
  403. PyMac_PRECHECK(OSAStartRecording);
  404. #endif
  405. if (!PyArg_ParseTuple(_args, ""))
  406. return NULL;
  407. _err = OSAStartRecording(_self->ob_itself,
  408. &compiledScriptToModifyID);
  409. if (_err != noErr) return PyMac_Error(_err);
  410. _res = Py_BuildValue("l",
  411. compiledScriptToModifyID);
  412. return _res;
  413. }
  414. static PyObject *OSAObj_OSAStopRecording(OSAComponentInstanceObject *_self, PyObject *_args)
  415. {
  416. PyObject *_res = NULL;
  417. OSAError _err;
  418. OSAID compiledScriptID;
  419. #ifndef OSAStopRecording
  420. PyMac_PRECHECK(OSAStopRecording);
  421. #endif
  422. if (!PyArg_ParseTuple(_args, "l",
  423. &compiledScriptID))
  424. return NULL;
  425. _err = OSAStopRecording(_self->ob_itself,
  426. compiledScriptID);
  427. if (_err != noErr) return PyMac_Error(_err);
  428. Py_INCREF(Py_None);
  429. _res = Py_None;
  430. return _res;
  431. }
  432. static PyObject *OSAObj_OSALoadExecute(OSAComponentInstanceObject *_self, PyObject *_args)
  433. {
  434. PyObject *_res = NULL;
  435. OSAError _err;
  436. AEDesc scriptData;
  437. OSAID contextID;
  438. long modeFlags;
  439. OSAID resultingScriptValueID;
  440. #ifndef OSALoadExecute
  441. PyMac_PRECHECK(OSALoadExecute);
  442. #endif
  443. if (!PyArg_ParseTuple(_args, "O&ll",
  444. AEDesc_Convert, &scriptData,
  445. &contextID,
  446. &modeFlags))
  447. return NULL;
  448. _err = OSALoadExecute(_self->ob_itself,
  449. &scriptData,
  450. contextID,
  451. modeFlags,
  452. &resultingScriptValueID);
  453. if (_err != noErr) return PyMac_Error(_err);
  454. _res = Py_BuildValue("l",
  455. resultingScriptValueID);
  456. return _res;
  457. }
  458. static PyObject *OSAObj_OSACompileExecute(OSAComponentInstanceObject *_self, PyObject *_args)
  459. {
  460. PyObject *_res = NULL;
  461. OSAError _err;
  462. AEDesc sourceData;
  463. OSAID contextID;
  464. long modeFlags;
  465. OSAID resultingScriptValueID;
  466. #ifndef OSACompileExecute
  467. PyMac_PRECHECK(OSACompileExecute);
  468. #endif
  469. if (!PyArg_ParseTuple(_args, "O&ll",
  470. AEDesc_Convert, &sourceData,
  471. &contextID,
  472. &modeFlags))
  473. return NULL;
  474. _err = OSACompileExecute(_self->ob_itself,
  475. &sourceData,
  476. contextID,
  477. modeFlags,
  478. &resultingScriptValueID);
  479. if (_err != noErr) return PyMac_Error(_err);
  480. _res = Py_BuildValue("l",
  481. resultingScriptValueID);
  482. return _res;
  483. }
  484. static PyObject *OSAObj_OSADoScript(OSAComponentInstanceObject *_self, PyObject *_args)
  485. {
  486. PyObject *_res = NULL;
  487. OSAError _err;
  488. AEDesc sourceData;
  489. OSAID contextID;
  490. DescType desiredType;
  491. long modeFlags;
  492. AEDesc resultingText;
  493. #ifndef OSADoScript
  494. PyMac_PRECHECK(OSADoScript);
  495. #endif
  496. if (!PyArg_ParseTuple(_args, "O&lO&l",
  497. AEDesc_Convert, &sourceData,
  498. &contextID,
  499. PyMac_GetOSType, &desiredType,
  500. &modeFlags))
  501. return NULL;
  502. _err = OSADoScript(_self->ob_itself,
  503. &sourceData,
  504. contextID,
  505. desiredType,
  506. modeFlags,
  507. &resultingText);
  508. if (_err != noErr) return PyMac_Error(_err);
  509. _res = Py_BuildValue("O&",
  510. AEDesc_New, &resultingText);
  511. return _res;
  512. }
  513. static PyObject *OSAObj_OSASetCurrentDialect(OSAComponentInstanceObject *_self, PyObject *_args)
  514. {
  515. PyObject *_res = NULL;
  516. OSAError _err;
  517. short dialectCode;
  518. #ifndef OSASetCurrentDialect
  519. PyMac_PRECHECK(OSASetCurrentDialect);
  520. #endif
  521. if (!PyArg_ParseTuple(_args, "h",
  522. &dialectCode))
  523. return NULL;
  524. _err = OSASetCurrentDialect(_self->ob_itself,
  525. dialectCode);
  526. if (_err != noErr) return PyMac_Error(_err);
  527. Py_INCREF(Py_None);
  528. _res = Py_None;
  529. return _res;
  530. }
  531. static PyObject *OSAObj_OSAGetCurrentDialect(OSAComponentInstanceObject *_self, PyObject *_args)
  532. {
  533. PyObject *_res = NULL;
  534. OSAError _err;
  535. short resultingDialectCode;
  536. #ifndef OSAGetCurrentDialect
  537. PyMac_PRECHECK(OSAGetCurrentDialect);
  538. #endif
  539. if (!PyArg_ParseTuple(_args, ""))
  540. return NULL;
  541. _err = OSAGetCurrentDialect(_self->ob_itself,
  542. &resultingDialectCode);
  543. if (_err != noErr) return PyMac_Error(_err);
  544. _res = Py_BuildValue("h",
  545. resultingDialectCode);
  546. return _res;
  547. }
  548. static PyObject *OSAObj_OSAAvailableDialects(OSAComponentInstanceObject *_self, PyObject *_args)
  549. {
  550. PyObject *_res = NULL;
  551. OSAError _err;
  552. AEDesc resultingDialectInfoList;
  553. #ifndef OSAAvailableDialects
  554. PyMac_PRECHECK(OSAAvailableDialects);
  555. #endif
  556. if (!PyArg_ParseTuple(_args, ""))
  557. return NULL;
  558. _err = OSAAvailableDialects(_self->ob_itself,
  559. &resultingDialectInfoList);
  560. if (_err != noErr) return PyMac_Error(_err);
  561. _res = Py_BuildValue("O&",
  562. AEDesc_New, &resultingDialectInfoList);
  563. return _res;
  564. }
  565. static PyObject *OSAObj_OSAGetDialectInfo(OSAComponentInstanceObject *_self, PyObject *_args)
  566. {
  567. PyObject *_res = NULL;
  568. OSAError _err;
  569. short dialectCode;
  570. OSType selector;
  571. AEDesc resultingDialectInfo;
  572. #ifndef OSAGetDialectInfo
  573. PyMac_PRECHECK(OSAGetDialectInfo);
  574. #endif
  575. if (!PyArg_ParseTuple(_args, "hO&",
  576. &dialectCode,
  577. PyMac_GetOSType, &selector))
  578. return NULL;
  579. _err = OSAGetDialectInfo(_self->ob_itself,
  580. dialectCode,
  581. selector,
  582. &resultingDialectInfo);
  583. if (_err != noErr) return PyMac_Error(_err);
  584. _res = Py_BuildValue("O&",
  585. AEDesc_New, &resultingDialectInfo);
  586. return _res;
  587. }
  588. static PyObject *OSAObj_OSAAvailableDialectCodeList(OSAComponentInstanceObject *_self, PyObject *_args)
  589. {
  590. PyObject *_res = NULL;
  591. OSAError _err;
  592. AEDesc resultingDialectCodeList;
  593. #ifndef OSAAvailableDialectCodeList
  594. PyMac_PRECHECK(OSAAvailableDialectCodeList);
  595. #endif
  596. if (!PyArg_ParseTuple(_args, ""))
  597. return NULL;
  598. _err = OSAAvailableDialectCodeList(_self->ob_itself,
  599. &resultingDialectCodeList);
  600. if (_err != noErr) return PyMac_Error(_err);
  601. _res = Py_BuildValue("O&",
  602. AEDesc_New, &resultingDialectCodeList);
  603. return _res;
  604. }
  605. static PyObject *OSAObj_OSAExecuteEvent(OSAComponentInstanceObject *_self, PyObject *_args)
  606. {
  607. PyObject *_res = NULL;
  608. OSAError _err;
  609. AppleEvent theAppleEvent;
  610. OSAID contextID;
  611. long modeFlags;
  612. OSAID resultingScriptValueID;
  613. #ifndef OSAExecuteEvent
  614. PyMac_PRECHECK(OSAExecuteEvent);
  615. #endif
  616. if (!PyArg_ParseTuple(_args, "O&ll",
  617. AEDesc_Convert, &theAppleEvent,
  618. &contextID,
  619. &modeFlags))
  620. return NULL;
  621. _err = OSAExecuteEvent(_self->ob_itself,
  622. &theAppleEvent,
  623. contextID,
  624. modeFlags,
  625. &resultingScriptValueID);
  626. if (_err != noErr) return PyMac_Error(_err);
  627. _res = Py_BuildValue("l",
  628. resultingScriptValueID);
  629. return _res;
  630. }
  631. static PyObject *OSAObj_OSADoEvent(OSAComponentInstanceObject *_self, PyObject *_args)
  632. {
  633. PyObject *_res = NULL;
  634. OSAError _err;
  635. AppleEvent theAppleEvent;
  636. OSAID contextID;
  637. long modeFlags;
  638. AppleEvent reply;
  639. #ifndef OSADoEvent
  640. PyMac_PRECHECK(OSADoEvent);
  641. #endif
  642. if (!PyArg_ParseTuple(_args, "O&ll",
  643. AEDesc_Convert, &theAppleEvent,
  644. &contextID,
  645. &modeFlags))
  646. return NULL;
  647. _err = OSADoEvent(_self->ob_itself,
  648. &theAppleEvent,
  649. contextID,
  650. modeFlags,
  651. &reply);
  652. if (_err != noErr) return PyMac_Error(_err);
  653. _res = Py_BuildValue("O&",
  654. AEDesc_New, &reply);
  655. return _res;
  656. }
  657. static PyObject *OSAObj_OSAMakeContext(OSAComponentInstanceObject *_self, PyObject *_args)
  658. {
  659. PyObject *_res = NULL;
  660. OSAError _err;
  661. AEDesc contextName;
  662. OSAID parentContext;
  663. OSAID resultingContextID;
  664. #ifndef OSAMakeContext
  665. PyMac_PRECHECK(OSAMakeContext);
  666. #endif
  667. if (!PyArg_ParseTuple(_args, "O&l",
  668. AEDesc_Convert, &contextName,
  669. &parentContext))
  670. return NULL;
  671. _err = OSAMakeContext(_self->ob_itself,
  672. &contextName,
  673. parentContext,
  674. &resultingContextID);
  675. if (_err != noErr) return PyMac_Error(_err);
  676. _res = Py_BuildValue("l",
  677. resultingContextID);
  678. return _res;
  679. }
  680. static PyMethodDef OSAObj_methods[] = {
  681. {"OSALoad", (PyCFunction)OSAObj_OSALoad, 1,
  682. PyDoc_STR("(AEDesc scriptData, long modeFlags) -> (OSAID resultingScriptID)")},
  683. {"OSAStore", (PyCFunction)OSAObj_OSAStore, 1,
  684. PyDoc_STR("(OSAID scriptID, DescType desiredType, long modeFlags) -> (AEDesc resultingScriptData)")},
  685. {"OSAExecute", (PyCFunction)OSAObj_OSAExecute, 1,
  686. PyDoc_STR("(OSAID compiledScriptID, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")},
  687. {"OSADisplay", (PyCFunction)OSAObj_OSADisplay, 1,
  688. PyDoc_STR("(OSAID scriptValueID, DescType desiredType, long modeFlags) -> (AEDesc resultingText)")},
  689. {"OSAScriptError", (PyCFunction)OSAObj_OSAScriptError, 1,
  690. PyDoc_STR("(OSType selector, DescType desiredType) -> (AEDesc resultingErrorDescription)")},
  691. {"OSADispose", (PyCFunction)OSAObj_OSADispose, 1,
  692. PyDoc_STR("(OSAID scriptID) -> None")},
  693. {"OSASetScriptInfo", (PyCFunction)OSAObj_OSASetScriptInfo, 1,
  694. PyDoc_STR("(OSAID scriptID, OSType selector, long value) -> None")},
  695. {"OSAGetScriptInfo", (PyCFunction)OSAObj_OSAGetScriptInfo, 1,
  696. PyDoc_STR("(OSAID scriptID, OSType selector) -> (long result)")},
  697. {"OSAScriptingComponentName", (PyCFunction)OSAObj_OSAScriptingComponentName, 1,
  698. PyDoc_STR("() -> (AEDesc resultingScriptingComponentName)")},
  699. {"OSACompile", (PyCFunction)OSAObj_OSACompile, 1,
  700. PyDoc_STR("(AEDesc sourceData, long modeFlags) -> (OSAID previousAndResultingScriptID)")},
  701. {"OSACopyID", (PyCFunction)OSAObj_OSACopyID, 1,
  702. PyDoc_STR("(OSAID fromID) -> (OSAID toID)")},
  703. {"OSAGetSource", (PyCFunction)OSAObj_OSAGetSource, 1,
  704. PyDoc_STR("(OSAID scriptID, DescType desiredType) -> (AEDesc resultingSourceData)")},
  705. {"OSACoerceFromDesc", (PyCFunction)OSAObj_OSACoerceFromDesc, 1,
  706. PyDoc_STR("(AEDesc scriptData, long modeFlags) -> (OSAID resultingScriptID)")},
  707. {"OSACoerceToDesc", (PyCFunction)OSAObj_OSACoerceToDesc, 1,
  708. PyDoc_STR("(OSAID scriptID, DescType desiredType, long modeFlags) -> (AEDesc result)")},
  709. {"OSASetDefaultTarget", (PyCFunction)OSAObj_OSASetDefaultTarget, 1,
  710. PyDoc_STR("(AEAddressDesc target) -> None")},
  711. {"OSAStartRecording", (PyCFunction)OSAObj_OSAStartRecording, 1,
  712. PyDoc_STR("() -> (OSAID compiledScriptToModifyID)")},
  713. {"OSAStopRecording", (PyCFunction)OSAObj_OSAStopRecording, 1,
  714. PyDoc_STR("(OSAID compiledScriptID) -> None")},
  715. {"OSALoadExecute", (PyCFunction)OSAObj_OSALoadExecute, 1,
  716. PyDoc_STR("(AEDesc scriptData, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")},
  717. {"OSACompileExecute", (PyCFunction)OSAObj_OSACompileExecute, 1,
  718. PyDoc_STR("(AEDesc sourceData, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")},
  719. {"OSADoScript", (PyCFunction)OSAObj_OSADoScript, 1,
  720. PyDoc_STR("(AEDesc sourceData, OSAID contextID, DescType desiredType, long modeFlags) -> (AEDesc resultingText)")},
  721. {"OSASetCurrentDialect", (PyCFunction)OSAObj_OSASetCurrentDialect, 1,
  722. PyDoc_STR("(short dialectCode) -> None")},
  723. {"OSAGetCurrentDialect", (PyCFunction)OSAObj_OSAGetCurrentDialect, 1,
  724. PyDoc_STR("() -> (short resultingDialectCode)")},
  725. {"OSAAvailableDialects", (PyCFunction)OSAObj_OSAAvailableDialects, 1,
  726. PyDoc_STR("() -> (AEDesc resultingDialectInfoList)")},
  727. {"OSAGetDialectInfo", (PyCFunction)OSAObj_OSAGetDialectInfo, 1,
  728. PyDoc_STR("(short dialectCode, OSType selector) -> (AEDesc resultingDialectInfo)")},
  729. {"OSAAvailableDialectCodeList", (PyCFunction)OSAObj_OSAAvailableDialectCodeList, 1,
  730. PyDoc_STR("() -> (AEDesc resultingDialectCodeList)")},
  731. {"OSAExecuteEvent", (PyCFunction)OSAObj_OSAExecuteEvent, 1,
  732. PyDoc_STR("(AppleEvent theAppleEvent, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")},
  733. {"OSADoEvent", (PyCFunction)OSAObj_OSADoEvent, 1,
  734. PyDoc_STR("(AppleEvent theAppleEvent, OSAID contextID, long modeFlags) -> (AppleEvent reply)")},
  735. {"OSAMakeContext", (PyCFunction)OSAObj_OSAMakeContext, 1,
  736. PyDoc_STR("(AEDesc contextName, OSAID parentContext) -> (OSAID resultingContextID)")},
  737. {NULL, NULL, 0}
  738. };
  739. #define OSAObj_getsetlist NULL
  740. #define OSAObj_compare NULL
  741. #define OSAObj_repr NULL
  742. #define OSAObj_hash NULL
  743. #define OSAObj_tp_init 0
  744. #define OSAObj_tp_alloc PyType_GenericAlloc
  745. static PyObject *OSAObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
  746. {
  747. PyObject *_self;
  748. ComponentInstance itself;
  749. char *kw[] = {"itself", 0};
  750. if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, OSAObj_Convert, &itself)) return NULL;
  751. if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
  752. ((OSAComponentInstanceObject *)_self)->ob_itself = itself;
  753. return _self;
  754. }
  755. #define OSAObj_tp_free PyObject_Del
  756. PyTypeObject OSAComponentInstance_Type = {
  757. PyObject_HEAD_INIT(NULL)
  758. 0, /*ob_size*/
  759. "_OSA.OSAComponentInstance", /*tp_name*/
  760. sizeof(OSAComponentInstanceObject), /*tp_basicsize*/
  761. 0, /*tp_itemsize*/
  762. /* methods */
  763. (destructor) OSAObj_dealloc, /*tp_dealloc*/
  764. 0, /*tp_print*/
  765. (getattrfunc)0, /*tp_getattr*/
  766. (setattrfunc)0, /*tp_setattr*/
  767. (cmpfunc) OSAObj_compare, /*tp_compare*/
  768. (reprfunc) OSAObj_repr, /*tp_repr*/
  769. (PyNumberMethods *)0, /* tp_as_number */
  770. (PySequenceMethods *)0, /* tp_as_sequence */
  771. (PyMappingMethods *)0, /* tp_as_mapping */
  772. (hashfunc) OSAObj_hash, /*tp_hash*/
  773. 0, /*tp_call*/
  774. 0, /*tp_str*/
  775. PyObject_GenericGetAttr, /*tp_getattro*/
  776. PyObject_GenericSetAttr, /*tp_setattro */
  777. 0, /*tp_as_buffer*/
  778. Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
  779. 0, /*tp_doc*/
  780. 0, /*tp_traverse*/
  781. 0, /*tp_clear*/
  782. 0, /*tp_richcompare*/
  783. 0, /*tp_weaklistoffset*/
  784. 0, /*tp_iter*/
  785. 0, /*tp_iternext*/
  786. OSAObj_methods, /* tp_methods */
  787. 0, /*tp_members*/
  788. OSAObj_getsetlist, /*tp_getset*/
  789. 0, /*tp_base*/
  790. 0, /*tp_dict*/
  791. 0, /*tp_descr_get*/
  792. 0, /*tp_descr_set*/
  793. 0, /*tp_dictoffset*/
  794. OSAObj_tp_init, /* tp_init */
  795. OSAObj_tp_alloc, /* tp_alloc */
  796. OSAObj_tp_new, /* tp_new */
  797. OSAObj_tp_free, /* tp_free */
  798. };
  799. /* -------------- End object type OSAComponentInstance -------------- */
  800. static PyMethodDef OSA_methods[] = {
  801. {NULL, NULL, 0}
  802. };
  803. void init_OSA(void)
  804. {
  805. PyObject *m;
  806. PyObject *d;
  807. /*
  808. PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, OSAObj_New);
  809. PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, OSAObj_Convert);
  810. */
  811. m = Py_InitModule("_OSA", OSA_methods);
  812. d = PyModule_GetDict(m);
  813. OSA_Error = PyMac_GetOSErrException();
  814. if (OSA_Error == NULL ||
  815. PyDict_SetItemString(d, "Error", OSA_Error) != 0)
  816. return;
  817. OSAComponentInstance_Type.ob_type = &PyType_Type;
  818. if (PyType_Ready(&OSAComponentInstance_Type) < 0) return;
  819. Py_INCREF(&OSAComponentInstance_Type);
  820. PyModule_AddObject(m, "OSAComponentInstance", (PyObject *)&OSAComponentInstance_Type);
  821. /* Backward-compatible name */
  822. Py_INCREF(&OSAComponentInstance_Type);
  823. PyModule_AddObject(m, "OSAComponentInstanceType", (PyObject *)&OSAComponentInstance_Type);
  824. }
  825. /* ======================== End module _OSA ========================= */