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