PageRenderTime 35ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Mac/Modules/app/_Appmodule.c

http://unladen-swallow.googlecode.com/
C | 1832 lines | 1712 code | 111 blank | 9 comment | 205 complexity | d8cbb2a7b6087f00f03a8baf8dc82d44 MD5 | raw file
Possible License(s): 0BSD, BSD-3-Clause
  1. /* ========================== Module _App =========================== */
  2. #include "Python.h"
  3. #ifndef __LP64__
  4. /* Carbon GUI stuff, not available in 64-bit mode */
  5. #include "pymactoolbox.h"
  6. /* Macro to test whether a weak-loaded CFM function exists */
  7. #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
  8. PyErr_SetString(PyExc_NotImplementedError, \
  9. "Not available in this shared library/OS version"); \
  10. return NULL; \
  11. }} while(0)
  12. #include <Carbon/Carbon.h>
  13. static int ThemeButtonDrawInfo_Convert(PyObject *v, ThemeButtonDrawInfo *p_itself)
  14. {
  15. return PyArg_Parse(v, "(iHH)", &p_itself->state, &p_itself->value, &p_itself->adornment);
  16. }
  17. static PyObject *App_Error;
  18. /* ----------------- Object type ThemeDrawingState ------------------ */
  19. PyTypeObject ThemeDrawingState_Type;
  20. #define ThemeDrawingStateObj_Check(x) ((x)->ob_type == &ThemeDrawingState_Type || PyObject_TypeCheck((x), &ThemeDrawingState_Type))
  21. typedef struct ThemeDrawingStateObject {
  22. PyObject_HEAD
  23. ThemeDrawingState ob_itself;
  24. } ThemeDrawingStateObject;
  25. PyObject *ThemeDrawingStateObj_New(ThemeDrawingState itself)
  26. {
  27. ThemeDrawingStateObject *it;
  28. it = PyObject_NEW(ThemeDrawingStateObject, &ThemeDrawingState_Type);
  29. if (it == NULL) return NULL;
  30. it->ob_itself = itself;
  31. return (PyObject *)it;
  32. }
  33. int ThemeDrawingStateObj_Convert(PyObject *v, ThemeDrawingState *p_itself)
  34. {
  35. if (!ThemeDrawingStateObj_Check(v))
  36. {
  37. PyErr_SetString(PyExc_TypeError, "ThemeDrawingState required");
  38. return 0;
  39. }
  40. *p_itself = ((ThemeDrawingStateObject *)v)->ob_itself;
  41. return 1;
  42. }
  43. static void ThemeDrawingStateObj_dealloc(ThemeDrawingStateObject *self)
  44. {
  45. /* Cleanup of self->ob_itself goes here */
  46. self->ob_type->tp_free((PyObject *)self);
  47. }
  48. static PyObject *ThemeDrawingStateObj_SetThemeDrawingState(ThemeDrawingStateObject *_self, PyObject *_args)
  49. {
  50. PyObject *_res = NULL;
  51. OSStatus _rv;
  52. Boolean inDisposeNow;
  53. #ifndef SetThemeDrawingState
  54. PyMac_PRECHECK(SetThemeDrawingState);
  55. #endif
  56. if (!PyArg_ParseTuple(_args, "b",
  57. &inDisposeNow))
  58. return NULL;
  59. _rv = SetThemeDrawingState(_self->ob_itself,
  60. inDisposeNow);
  61. _res = Py_BuildValue("l",
  62. _rv);
  63. return _res;
  64. }
  65. static PyObject *ThemeDrawingStateObj_DisposeThemeDrawingState(ThemeDrawingStateObject *_self, PyObject *_args)
  66. {
  67. PyObject *_res = NULL;
  68. OSStatus _rv;
  69. #ifndef DisposeThemeDrawingState
  70. PyMac_PRECHECK(DisposeThemeDrawingState);
  71. #endif
  72. if (!PyArg_ParseTuple(_args, ""))
  73. return NULL;
  74. _rv = DisposeThemeDrawingState(_self->ob_itself);
  75. _res = Py_BuildValue("l",
  76. _rv);
  77. return _res;
  78. }
  79. static PyMethodDef ThemeDrawingStateObj_methods[] = {
  80. {"SetThemeDrawingState", (PyCFunction)ThemeDrawingStateObj_SetThemeDrawingState, 1,
  81. PyDoc_STR("(Boolean inDisposeNow) -> (OSStatus _rv)")},
  82. {"DisposeThemeDrawingState", (PyCFunction)ThemeDrawingStateObj_DisposeThemeDrawingState, 1,
  83. PyDoc_STR("() -> (OSStatus _rv)")},
  84. {NULL, NULL, 0}
  85. };
  86. #define ThemeDrawingStateObj_getsetlist NULL
  87. #define ThemeDrawingStateObj_compare NULL
  88. #define ThemeDrawingStateObj_repr NULL
  89. #define ThemeDrawingStateObj_hash NULL
  90. #define ThemeDrawingStateObj_tp_init 0
  91. #define ThemeDrawingStateObj_tp_alloc PyType_GenericAlloc
  92. static PyObject *ThemeDrawingStateObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
  93. {
  94. PyObject *_self;
  95. ThemeDrawingState itself;
  96. char *kw[] = {"itself", 0};
  97. if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, ThemeDrawingStateObj_Convert, &itself)) return NULL;
  98. if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
  99. ((ThemeDrawingStateObject *)_self)->ob_itself = itself;
  100. return _self;
  101. }
  102. #define ThemeDrawingStateObj_tp_free PyObject_Del
  103. PyTypeObject ThemeDrawingState_Type = {
  104. PyObject_HEAD_INIT(NULL)
  105. 0, /*ob_size*/
  106. "_App.ThemeDrawingState", /*tp_name*/
  107. sizeof(ThemeDrawingStateObject), /*tp_basicsize*/
  108. 0, /*tp_itemsize*/
  109. /* methods */
  110. (destructor) ThemeDrawingStateObj_dealloc, /*tp_dealloc*/
  111. 0, /*tp_print*/
  112. (getattrfunc)0, /*tp_getattr*/
  113. (setattrfunc)0, /*tp_setattr*/
  114. (cmpfunc) ThemeDrawingStateObj_compare, /*tp_compare*/
  115. (reprfunc) ThemeDrawingStateObj_repr, /*tp_repr*/
  116. (PyNumberMethods *)0, /* tp_as_number */
  117. (PySequenceMethods *)0, /* tp_as_sequence */
  118. (PyMappingMethods *)0, /* tp_as_mapping */
  119. (hashfunc) ThemeDrawingStateObj_hash, /*tp_hash*/
  120. 0, /*tp_call*/
  121. 0, /*tp_str*/
  122. PyObject_GenericGetAttr, /*tp_getattro*/
  123. PyObject_GenericSetAttr, /*tp_setattro */
  124. 0, /*tp_as_buffer*/
  125. Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
  126. 0, /*tp_doc*/
  127. 0, /*tp_traverse*/
  128. 0, /*tp_clear*/
  129. 0, /*tp_richcompare*/
  130. 0, /*tp_weaklistoffset*/
  131. 0, /*tp_iter*/
  132. 0, /*tp_iternext*/
  133. ThemeDrawingStateObj_methods, /* tp_methods */
  134. 0, /*tp_members*/
  135. ThemeDrawingStateObj_getsetlist, /*tp_getset*/
  136. 0, /*tp_base*/
  137. 0, /*tp_dict*/
  138. 0, /*tp_descr_get*/
  139. 0, /*tp_descr_set*/
  140. 0, /*tp_dictoffset*/
  141. ThemeDrawingStateObj_tp_init, /* tp_init */
  142. ThemeDrawingStateObj_tp_alloc, /* tp_alloc */
  143. ThemeDrawingStateObj_tp_new, /* tp_new */
  144. ThemeDrawingStateObj_tp_free, /* tp_free */
  145. };
  146. /* --------------- End object type ThemeDrawingState ---------------- */
  147. static PyObject *App_RegisterAppearanceClient(PyObject *_self, PyObject *_args)
  148. {
  149. PyObject *_res = NULL;
  150. OSStatus _err;
  151. #ifndef RegisterAppearanceClient
  152. PyMac_PRECHECK(RegisterAppearanceClient);
  153. #endif
  154. if (!PyArg_ParseTuple(_args, ""))
  155. return NULL;
  156. _err = RegisterAppearanceClient();
  157. if (_err != noErr) return PyMac_Error(_err);
  158. Py_INCREF(Py_None);
  159. _res = Py_None;
  160. return _res;
  161. }
  162. static PyObject *App_UnregisterAppearanceClient(PyObject *_self, PyObject *_args)
  163. {
  164. PyObject *_res = NULL;
  165. OSStatus _err;
  166. #ifndef UnregisterAppearanceClient
  167. PyMac_PRECHECK(UnregisterAppearanceClient);
  168. #endif
  169. if (!PyArg_ParseTuple(_args, ""))
  170. return NULL;
  171. _err = UnregisterAppearanceClient();
  172. if (_err != noErr) return PyMac_Error(_err);
  173. Py_INCREF(Py_None);
  174. _res = Py_None;
  175. return _res;
  176. }
  177. static PyObject *App_SetThemePen(PyObject *_self, PyObject *_args)
  178. {
  179. PyObject *_res = NULL;
  180. OSStatus _err;
  181. ThemeBrush inBrush;
  182. SInt16 inDepth;
  183. Boolean inIsColorDevice;
  184. #ifndef SetThemePen
  185. PyMac_PRECHECK(SetThemePen);
  186. #endif
  187. if (!PyArg_ParseTuple(_args, "hhb",
  188. &inBrush,
  189. &inDepth,
  190. &inIsColorDevice))
  191. return NULL;
  192. _err = SetThemePen(inBrush,
  193. inDepth,
  194. inIsColorDevice);
  195. if (_err != noErr) return PyMac_Error(_err);
  196. Py_INCREF(Py_None);
  197. _res = Py_None;
  198. return _res;
  199. }
  200. static PyObject *App_SetThemeBackground(PyObject *_self, PyObject *_args)
  201. {
  202. PyObject *_res = NULL;
  203. OSStatus _err;
  204. ThemeBrush inBrush;
  205. SInt16 inDepth;
  206. Boolean inIsColorDevice;
  207. #ifndef SetThemeBackground
  208. PyMac_PRECHECK(SetThemeBackground);
  209. #endif
  210. if (!PyArg_ParseTuple(_args, "hhb",
  211. &inBrush,
  212. &inDepth,
  213. &inIsColorDevice))
  214. return NULL;
  215. _err = SetThemeBackground(inBrush,
  216. inDepth,
  217. inIsColorDevice);
  218. if (_err != noErr) return PyMac_Error(_err);
  219. Py_INCREF(Py_None);
  220. _res = Py_None;
  221. return _res;
  222. }
  223. static PyObject *App_SetThemeTextColor(PyObject *_self, PyObject *_args)
  224. {
  225. PyObject *_res = NULL;
  226. OSStatus _err;
  227. ThemeTextColor inColor;
  228. SInt16 inDepth;
  229. Boolean inIsColorDevice;
  230. #ifndef SetThemeTextColor
  231. PyMac_PRECHECK(SetThemeTextColor);
  232. #endif
  233. if (!PyArg_ParseTuple(_args, "hhb",
  234. &inColor,
  235. &inDepth,
  236. &inIsColorDevice))
  237. return NULL;
  238. _err = SetThemeTextColor(inColor,
  239. inDepth,
  240. inIsColorDevice);
  241. if (_err != noErr) return PyMac_Error(_err);
  242. Py_INCREF(Py_None);
  243. _res = Py_None;
  244. return _res;
  245. }
  246. static PyObject *App_SetThemeWindowBackground(PyObject *_self, PyObject *_args)
  247. {
  248. PyObject *_res = NULL;
  249. OSStatus _err;
  250. WindowPtr inWindow;
  251. ThemeBrush inBrush;
  252. Boolean inUpdate;
  253. #ifndef SetThemeWindowBackground
  254. PyMac_PRECHECK(SetThemeWindowBackground);
  255. #endif
  256. if (!PyArg_ParseTuple(_args, "O&hb",
  257. WinObj_Convert, &inWindow,
  258. &inBrush,
  259. &inUpdate))
  260. return NULL;
  261. _err = SetThemeWindowBackground(inWindow,
  262. inBrush,
  263. inUpdate);
  264. if (_err != noErr) return PyMac_Error(_err);
  265. Py_INCREF(Py_None);
  266. _res = Py_None;
  267. return _res;
  268. }
  269. static PyObject *App_DrawThemeWindowHeader(PyObject *_self, PyObject *_args)
  270. {
  271. PyObject *_res = NULL;
  272. OSStatus _err;
  273. Rect inRect;
  274. ThemeDrawState inState;
  275. #ifndef DrawThemeWindowHeader
  276. PyMac_PRECHECK(DrawThemeWindowHeader);
  277. #endif
  278. if (!PyArg_ParseTuple(_args, "O&l",
  279. PyMac_GetRect, &inRect,
  280. &inState))
  281. return NULL;
  282. _err = DrawThemeWindowHeader(&inRect,
  283. inState);
  284. if (_err != noErr) return PyMac_Error(_err);
  285. Py_INCREF(Py_None);
  286. _res = Py_None;
  287. return _res;
  288. }
  289. static PyObject *App_DrawThemeWindowListViewHeader(PyObject *_self, PyObject *_args)
  290. {
  291. PyObject *_res = NULL;
  292. OSStatus _err;
  293. Rect inRect;
  294. ThemeDrawState inState;
  295. #ifndef DrawThemeWindowListViewHeader
  296. PyMac_PRECHECK(DrawThemeWindowListViewHeader);
  297. #endif
  298. if (!PyArg_ParseTuple(_args, "O&l",
  299. PyMac_GetRect, &inRect,
  300. &inState))
  301. return NULL;
  302. _err = DrawThemeWindowListViewHeader(&inRect,
  303. inState);
  304. if (_err != noErr) return PyMac_Error(_err);
  305. Py_INCREF(Py_None);
  306. _res = Py_None;
  307. return _res;
  308. }
  309. static PyObject *App_DrawThemePlacard(PyObject *_self, PyObject *_args)
  310. {
  311. PyObject *_res = NULL;
  312. OSStatus _err;
  313. Rect inRect;
  314. ThemeDrawState inState;
  315. #ifndef DrawThemePlacard
  316. PyMac_PRECHECK(DrawThemePlacard);
  317. #endif
  318. if (!PyArg_ParseTuple(_args, "O&l",
  319. PyMac_GetRect, &inRect,
  320. &inState))
  321. return NULL;
  322. _err = DrawThemePlacard(&inRect,
  323. inState);
  324. if (_err != noErr) return PyMac_Error(_err);
  325. Py_INCREF(Py_None);
  326. _res = Py_None;
  327. return _res;
  328. }
  329. static PyObject *App_DrawThemeEditTextFrame(PyObject *_self, PyObject *_args)
  330. {
  331. PyObject *_res = NULL;
  332. OSStatus _err;
  333. Rect inRect;
  334. ThemeDrawState inState;
  335. #ifndef DrawThemeEditTextFrame
  336. PyMac_PRECHECK(DrawThemeEditTextFrame);
  337. #endif
  338. if (!PyArg_ParseTuple(_args, "O&l",
  339. PyMac_GetRect, &inRect,
  340. &inState))
  341. return NULL;
  342. _err = DrawThemeEditTextFrame(&inRect,
  343. inState);
  344. if (_err != noErr) return PyMac_Error(_err);
  345. Py_INCREF(Py_None);
  346. _res = Py_None;
  347. return _res;
  348. }
  349. static PyObject *App_DrawThemeListBoxFrame(PyObject *_self, PyObject *_args)
  350. {
  351. PyObject *_res = NULL;
  352. OSStatus _err;
  353. Rect inRect;
  354. ThemeDrawState inState;
  355. #ifndef DrawThemeListBoxFrame
  356. PyMac_PRECHECK(DrawThemeListBoxFrame);
  357. #endif
  358. if (!PyArg_ParseTuple(_args, "O&l",
  359. PyMac_GetRect, &inRect,
  360. &inState))
  361. return NULL;
  362. _err = DrawThemeListBoxFrame(&inRect,
  363. inState);
  364. if (_err != noErr) return PyMac_Error(_err);
  365. Py_INCREF(Py_None);
  366. _res = Py_None;
  367. return _res;
  368. }
  369. static PyObject *App_DrawThemeFocusRect(PyObject *_self, PyObject *_args)
  370. {
  371. PyObject *_res = NULL;
  372. OSStatus _err;
  373. Rect inRect;
  374. Boolean inHasFocus;
  375. #ifndef DrawThemeFocusRect
  376. PyMac_PRECHECK(DrawThemeFocusRect);
  377. #endif
  378. if (!PyArg_ParseTuple(_args, "O&b",
  379. PyMac_GetRect, &inRect,
  380. &inHasFocus))
  381. return NULL;
  382. _err = DrawThemeFocusRect(&inRect,
  383. inHasFocus);
  384. if (_err != noErr) return PyMac_Error(_err);
  385. Py_INCREF(Py_None);
  386. _res = Py_None;
  387. return _res;
  388. }
  389. static PyObject *App_DrawThemePrimaryGroup(PyObject *_self, PyObject *_args)
  390. {
  391. PyObject *_res = NULL;
  392. OSStatus _err;
  393. Rect inRect;
  394. ThemeDrawState inState;
  395. #ifndef DrawThemePrimaryGroup
  396. PyMac_PRECHECK(DrawThemePrimaryGroup);
  397. #endif
  398. if (!PyArg_ParseTuple(_args, "O&l",
  399. PyMac_GetRect, &inRect,
  400. &inState))
  401. return NULL;
  402. _err = DrawThemePrimaryGroup(&inRect,
  403. inState);
  404. if (_err != noErr) return PyMac_Error(_err);
  405. Py_INCREF(Py_None);
  406. _res = Py_None;
  407. return _res;
  408. }
  409. static PyObject *App_DrawThemeSecondaryGroup(PyObject *_self, PyObject *_args)
  410. {
  411. PyObject *_res = NULL;
  412. OSStatus _err;
  413. Rect inRect;
  414. ThemeDrawState inState;
  415. #ifndef DrawThemeSecondaryGroup
  416. PyMac_PRECHECK(DrawThemeSecondaryGroup);
  417. #endif
  418. if (!PyArg_ParseTuple(_args, "O&l",
  419. PyMac_GetRect, &inRect,
  420. &inState))
  421. return NULL;
  422. _err = DrawThemeSecondaryGroup(&inRect,
  423. inState);
  424. if (_err != noErr) return PyMac_Error(_err);
  425. Py_INCREF(Py_None);
  426. _res = Py_None;
  427. return _res;
  428. }
  429. static PyObject *App_DrawThemeSeparator(PyObject *_self, PyObject *_args)
  430. {
  431. PyObject *_res = NULL;
  432. OSStatus _err;
  433. Rect inRect;
  434. ThemeDrawState inState;
  435. #ifndef DrawThemeSeparator
  436. PyMac_PRECHECK(DrawThemeSeparator);
  437. #endif
  438. if (!PyArg_ParseTuple(_args, "O&l",
  439. PyMac_GetRect, &inRect,
  440. &inState))
  441. return NULL;
  442. _err = DrawThemeSeparator(&inRect,
  443. inState);
  444. if (_err != noErr) return PyMac_Error(_err);
  445. Py_INCREF(Py_None);
  446. _res = Py_None;
  447. return _res;
  448. }
  449. static PyObject *App_DrawThemeModelessDialogFrame(PyObject *_self, PyObject *_args)
  450. {
  451. PyObject *_res = NULL;
  452. OSStatus _err;
  453. Rect inRect;
  454. ThemeDrawState inState;
  455. #ifndef DrawThemeModelessDialogFrame
  456. PyMac_PRECHECK(DrawThemeModelessDialogFrame);
  457. #endif
  458. if (!PyArg_ParseTuple(_args, "O&l",
  459. PyMac_GetRect, &inRect,
  460. &inState))
  461. return NULL;
  462. _err = DrawThemeModelessDialogFrame(&inRect,
  463. inState);
  464. if (_err != noErr) return PyMac_Error(_err);
  465. Py_INCREF(Py_None);
  466. _res = Py_None;
  467. return _res;
  468. }
  469. static PyObject *App_DrawThemeGenericWell(PyObject *_self, PyObject *_args)
  470. {
  471. PyObject *_res = NULL;
  472. OSStatus _err;
  473. Rect inRect;
  474. ThemeDrawState inState;
  475. Boolean inFillCenter;
  476. #ifndef DrawThemeGenericWell
  477. PyMac_PRECHECK(DrawThemeGenericWell);
  478. #endif
  479. if (!PyArg_ParseTuple(_args, "O&lb",
  480. PyMac_GetRect, &inRect,
  481. &inState,
  482. &inFillCenter))
  483. return NULL;
  484. _err = DrawThemeGenericWell(&inRect,
  485. inState,
  486. inFillCenter);
  487. if (_err != noErr) return PyMac_Error(_err);
  488. Py_INCREF(Py_None);
  489. _res = Py_None;
  490. return _res;
  491. }
  492. static PyObject *App_DrawThemeFocusRegion(PyObject *_self, PyObject *_args)
  493. {
  494. PyObject *_res = NULL;
  495. OSStatus _err;
  496. Boolean inHasFocus;
  497. #ifndef DrawThemeFocusRegion
  498. PyMac_PRECHECK(DrawThemeFocusRegion);
  499. #endif
  500. if (!PyArg_ParseTuple(_args, "b",
  501. &inHasFocus))
  502. return NULL;
  503. _err = DrawThemeFocusRegion((RgnHandle)0,
  504. inHasFocus);
  505. if (_err != noErr) return PyMac_Error(_err);
  506. Py_INCREF(Py_None);
  507. _res = Py_None;
  508. return _res;
  509. }
  510. static PyObject *App_IsThemeInColor(PyObject *_self, PyObject *_args)
  511. {
  512. PyObject *_res = NULL;
  513. Boolean _rv;
  514. SInt16 inDepth;
  515. Boolean inIsColorDevice;
  516. #ifndef IsThemeInColor
  517. PyMac_PRECHECK(IsThemeInColor);
  518. #endif
  519. if (!PyArg_ParseTuple(_args, "hb",
  520. &inDepth,
  521. &inIsColorDevice))
  522. return NULL;
  523. _rv = IsThemeInColor(inDepth,
  524. inIsColorDevice);
  525. _res = Py_BuildValue("b",
  526. _rv);
  527. return _res;
  528. }
  529. static PyObject *App_GetThemeAccentColors(PyObject *_self, PyObject *_args)
  530. {
  531. PyObject *_res = NULL;
  532. OSStatus _err;
  533. CTabHandle outColors;
  534. #ifndef GetThemeAccentColors
  535. PyMac_PRECHECK(GetThemeAccentColors);
  536. #endif
  537. if (!PyArg_ParseTuple(_args, ""))
  538. return NULL;
  539. _err = GetThemeAccentColors(&outColors);
  540. if (_err != noErr) return PyMac_Error(_err);
  541. _res = Py_BuildValue("O&",
  542. ResObj_New, outColors);
  543. return _res;
  544. }
  545. static PyObject *App_DrawThemeMenuBarBackground(PyObject *_self, PyObject *_args)
  546. {
  547. PyObject *_res = NULL;
  548. OSStatus _err;
  549. Rect inBounds;
  550. ThemeMenuBarState inState;
  551. UInt32 inAttributes;
  552. #ifndef DrawThemeMenuBarBackground
  553. PyMac_PRECHECK(DrawThemeMenuBarBackground);
  554. #endif
  555. if (!PyArg_ParseTuple(_args, "O&Hl",
  556. PyMac_GetRect, &inBounds,
  557. &inState,
  558. &inAttributes))
  559. return NULL;
  560. _err = DrawThemeMenuBarBackground(&inBounds,
  561. inState,
  562. inAttributes);
  563. if (_err != noErr) return PyMac_Error(_err);
  564. Py_INCREF(Py_None);
  565. _res = Py_None;
  566. return _res;
  567. }
  568. static PyObject *App_GetThemeMenuBarHeight(PyObject *_self, PyObject *_args)
  569. {
  570. PyObject *_res = NULL;
  571. OSStatus _err;
  572. SInt16 outHeight;
  573. #ifndef GetThemeMenuBarHeight
  574. PyMac_PRECHECK(GetThemeMenuBarHeight);
  575. #endif
  576. if (!PyArg_ParseTuple(_args, ""))
  577. return NULL;
  578. _err = GetThemeMenuBarHeight(&outHeight);
  579. if (_err != noErr) return PyMac_Error(_err);
  580. _res = Py_BuildValue("h",
  581. outHeight);
  582. return _res;
  583. }
  584. static PyObject *App_DrawThemeMenuBackground(PyObject *_self, PyObject *_args)
  585. {
  586. PyObject *_res = NULL;
  587. OSStatus _err;
  588. Rect inMenuRect;
  589. ThemeMenuType inMenuType;
  590. #ifndef DrawThemeMenuBackground
  591. PyMac_PRECHECK(DrawThemeMenuBackground);
  592. #endif
  593. if (!PyArg_ParseTuple(_args, "O&H",
  594. PyMac_GetRect, &inMenuRect,
  595. &inMenuType))
  596. return NULL;
  597. _err = DrawThemeMenuBackground(&inMenuRect,
  598. inMenuType);
  599. if (_err != noErr) return PyMac_Error(_err);
  600. Py_INCREF(Py_None);
  601. _res = Py_None;
  602. return _res;
  603. }
  604. static PyObject *App_GetThemeMenuBackgroundRegion(PyObject *_self, PyObject *_args)
  605. {
  606. PyObject *_res = NULL;
  607. OSStatus _err;
  608. Rect inMenuRect;
  609. ThemeMenuType menuType;
  610. #ifndef GetThemeMenuBackgroundRegion
  611. PyMac_PRECHECK(GetThemeMenuBackgroundRegion);
  612. #endif
  613. if (!PyArg_ParseTuple(_args, "O&H",
  614. PyMac_GetRect, &inMenuRect,
  615. &menuType))
  616. return NULL;
  617. _err = GetThemeMenuBackgroundRegion(&inMenuRect,
  618. menuType,
  619. (RgnHandle)0);
  620. if (_err != noErr) return PyMac_Error(_err);
  621. Py_INCREF(Py_None);
  622. _res = Py_None;
  623. return _res;
  624. }
  625. static PyObject *App_DrawThemeMenuSeparator(PyObject *_self, PyObject *_args)
  626. {
  627. PyObject *_res = NULL;
  628. OSStatus _err;
  629. Rect inItemRect;
  630. #ifndef DrawThemeMenuSeparator
  631. PyMac_PRECHECK(DrawThemeMenuSeparator);
  632. #endif
  633. if (!PyArg_ParseTuple(_args, "O&",
  634. PyMac_GetRect, &inItemRect))
  635. return NULL;
  636. _err = DrawThemeMenuSeparator(&inItemRect);
  637. if (_err != noErr) return PyMac_Error(_err);
  638. Py_INCREF(Py_None);
  639. _res = Py_None;
  640. return _res;
  641. }
  642. static PyObject *App_GetThemeMenuSeparatorHeight(PyObject *_self, PyObject *_args)
  643. {
  644. PyObject *_res = NULL;
  645. OSStatus _err;
  646. SInt16 outHeight;
  647. #ifndef GetThemeMenuSeparatorHeight
  648. PyMac_PRECHECK(GetThemeMenuSeparatorHeight);
  649. #endif
  650. if (!PyArg_ParseTuple(_args, ""))
  651. return NULL;
  652. _err = GetThemeMenuSeparatorHeight(&outHeight);
  653. if (_err != noErr) return PyMac_Error(_err);
  654. _res = Py_BuildValue("h",
  655. outHeight);
  656. return _res;
  657. }
  658. static PyObject *App_GetThemeMenuItemExtra(PyObject *_self, PyObject *_args)
  659. {
  660. PyObject *_res = NULL;
  661. OSStatus _err;
  662. ThemeMenuItemType inItemType;
  663. SInt16 outHeight;
  664. SInt16 outWidth;
  665. #ifndef GetThemeMenuItemExtra
  666. PyMac_PRECHECK(GetThemeMenuItemExtra);
  667. #endif
  668. if (!PyArg_ParseTuple(_args, "H",
  669. &inItemType))
  670. return NULL;
  671. _err = GetThemeMenuItemExtra(inItemType,
  672. &outHeight,
  673. &outWidth);
  674. if (_err != noErr) return PyMac_Error(_err);
  675. _res = Py_BuildValue("hh",
  676. outHeight,
  677. outWidth);
  678. return _res;
  679. }
  680. static PyObject *App_GetThemeMenuTitleExtra(PyObject *_self, PyObject *_args)
  681. {
  682. PyObject *_res = NULL;
  683. OSStatus _err;
  684. SInt16 outWidth;
  685. Boolean inIsSquished;
  686. #ifndef GetThemeMenuTitleExtra
  687. PyMac_PRECHECK(GetThemeMenuTitleExtra);
  688. #endif
  689. if (!PyArg_ParseTuple(_args, "b",
  690. &inIsSquished))
  691. return NULL;
  692. _err = GetThemeMenuTitleExtra(&outWidth,
  693. inIsSquished);
  694. if (_err != noErr) return PyMac_Error(_err);
  695. _res = Py_BuildValue("h",
  696. outWidth);
  697. return _res;
  698. }
  699. static PyObject *App_DrawThemeTabPane(PyObject *_self, PyObject *_args)
  700. {
  701. PyObject *_res = NULL;
  702. OSStatus _err;
  703. Rect inRect;
  704. ThemeDrawState inState;
  705. #ifndef DrawThemeTabPane
  706. PyMac_PRECHECK(DrawThemeTabPane);
  707. #endif
  708. if (!PyArg_ParseTuple(_args, "O&l",
  709. PyMac_GetRect, &inRect,
  710. &inState))
  711. return NULL;
  712. _err = DrawThemeTabPane(&inRect,
  713. inState);
  714. if (_err != noErr) return PyMac_Error(_err);
  715. Py_INCREF(Py_None);
  716. _res = Py_None;
  717. return _res;
  718. }
  719. static PyObject *App_GetThemeTabRegion(PyObject *_self, PyObject *_args)
  720. {
  721. PyObject *_res = NULL;
  722. OSStatus _err;
  723. Rect inRect;
  724. ThemeTabStyle inStyle;
  725. ThemeTabDirection inDirection;
  726. #ifndef GetThemeTabRegion
  727. PyMac_PRECHECK(GetThemeTabRegion);
  728. #endif
  729. if (!PyArg_ParseTuple(_args, "O&HH",
  730. PyMac_GetRect, &inRect,
  731. &inStyle,
  732. &inDirection))
  733. return NULL;
  734. _err = GetThemeTabRegion(&inRect,
  735. inStyle,
  736. inDirection,
  737. (RgnHandle)0);
  738. if (_err != noErr) return PyMac_Error(_err);
  739. Py_INCREF(Py_None);
  740. _res = Py_None;
  741. return _res;
  742. }
  743. static PyObject *App_SetThemeCursor(PyObject *_self, PyObject *_args)
  744. {
  745. PyObject *_res = NULL;
  746. OSStatus _err;
  747. ThemeCursor inCursor;
  748. #ifndef SetThemeCursor
  749. PyMac_PRECHECK(SetThemeCursor);
  750. #endif
  751. if (!PyArg_ParseTuple(_args, "l",
  752. &inCursor))
  753. return NULL;
  754. _err = SetThemeCursor(inCursor);
  755. if (_err != noErr) return PyMac_Error(_err);
  756. Py_INCREF(Py_None);
  757. _res = Py_None;
  758. return _res;
  759. }
  760. static PyObject *App_SetAnimatedThemeCursor(PyObject *_self, PyObject *_args)
  761. {
  762. PyObject *_res = NULL;
  763. OSStatus _err;
  764. ThemeCursor inCursor;
  765. UInt32 inAnimationStep;
  766. #ifndef SetAnimatedThemeCursor
  767. PyMac_PRECHECK(SetAnimatedThemeCursor);
  768. #endif
  769. if (!PyArg_ParseTuple(_args, "ll",
  770. &inCursor,
  771. &inAnimationStep))
  772. return NULL;
  773. _err = SetAnimatedThemeCursor(inCursor,
  774. inAnimationStep);
  775. if (_err != noErr) return PyMac_Error(_err);
  776. Py_INCREF(Py_None);
  777. _res = Py_None;
  778. return _res;
  779. }
  780. static PyObject *App_GetThemeScrollBarThumbStyle(PyObject *_self, PyObject *_args)
  781. {
  782. PyObject *_res = NULL;
  783. OSStatus _err;
  784. ThemeScrollBarThumbStyle outStyle;
  785. #ifndef GetThemeScrollBarThumbStyle
  786. PyMac_PRECHECK(GetThemeScrollBarThumbStyle);
  787. #endif
  788. if (!PyArg_ParseTuple(_args, ""))
  789. return NULL;
  790. _err = GetThemeScrollBarThumbStyle(&outStyle);
  791. if (_err != noErr) return PyMac_Error(_err);
  792. _res = Py_BuildValue("H",
  793. outStyle);
  794. return _res;
  795. }
  796. static PyObject *App_GetThemeScrollBarArrowStyle(PyObject *_self, PyObject *_args)
  797. {
  798. PyObject *_res = NULL;
  799. OSStatus _err;
  800. ThemeScrollBarArrowStyle outStyle;
  801. #ifndef GetThemeScrollBarArrowStyle
  802. PyMac_PRECHECK(GetThemeScrollBarArrowStyle);
  803. #endif
  804. if (!PyArg_ParseTuple(_args, ""))
  805. return NULL;
  806. _err = GetThemeScrollBarArrowStyle(&outStyle);
  807. if (_err != noErr) return PyMac_Error(_err);
  808. _res = Py_BuildValue("H",
  809. outStyle);
  810. return _res;
  811. }
  812. static PyObject *App_GetThemeCheckBoxStyle(PyObject *_self, PyObject *_args)
  813. {
  814. PyObject *_res = NULL;
  815. OSStatus _err;
  816. ThemeCheckBoxStyle outStyle;
  817. #ifndef GetThemeCheckBoxStyle
  818. PyMac_PRECHECK(GetThemeCheckBoxStyle);
  819. #endif
  820. if (!PyArg_ParseTuple(_args, ""))
  821. return NULL;
  822. _err = GetThemeCheckBoxStyle(&outStyle);
  823. if (_err != noErr) return PyMac_Error(_err);
  824. _res = Py_BuildValue("H",
  825. outStyle);
  826. return _res;
  827. }
  828. static PyObject *App_UseThemeFont(PyObject *_self, PyObject *_args)
  829. {
  830. PyObject *_res = NULL;
  831. OSStatus _err;
  832. ThemeFontID inFontID;
  833. ScriptCode inScript;
  834. #ifndef UseThemeFont
  835. PyMac_PRECHECK(UseThemeFont);
  836. #endif
  837. if (!PyArg_ParseTuple(_args, "Hh",
  838. &inFontID,
  839. &inScript))
  840. return NULL;
  841. _err = UseThemeFont(inFontID,
  842. inScript);
  843. if (_err != noErr) return PyMac_Error(_err);
  844. Py_INCREF(Py_None);
  845. _res = Py_None;
  846. return _res;
  847. }
  848. static PyObject *App_DrawThemeTextBox(PyObject *_self, PyObject *_args)
  849. {
  850. PyObject *_res = NULL;
  851. OSStatus _err;
  852. CFStringRef inString;
  853. ThemeFontID inFontID;
  854. ThemeDrawState inState;
  855. Boolean inWrapToWidth;
  856. Rect inBoundingBox;
  857. SInt16 inJust;
  858. #ifndef DrawThemeTextBox
  859. PyMac_PRECHECK(DrawThemeTextBox);
  860. #endif
  861. if (!PyArg_ParseTuple(_args, "O&HlbO&h",
  862. CFStringRefObj_Convert, &inString,
  863. &inFontID,
  864. &inState,
  865. &inWrapToWidth,
  866. PyMac_GetRect, &inBoundingBox,
  867. &inJust))
  868. return NULL;
  869. _err = DrawThemeTextBox(inString,
  870. inFontID,
  871. inState,
  872. inWrapToWidth,
  873. &inBoundingBox,
  874. inJust,
  875. NULL);
  876. if (_err != noErr) return PyMac_Error(_err);
  877. Py_INCREF(Py_None);
  878. _res = Py_None;
  879. return _res;
  880. }
  881. static PyObject *App_TruncateThemeText(PyObject *_self, PyObject *_args)
  882. {
  883. PyObject *_res = NULL;
  884. OSStatus _err;
  885. CFMutableStringRef inString;
  886. ThemeFontID inFontID;
  887. ThemeDrawState inState;
  888. SInt16 inPixelWidthLimit;
  889. TruncCode inTruncWhere;
  890. Boolean outTruncated;
  891. #ifndef TruncateThemeText
  892. PyMac_PRECHECK(TruncateThemeText);
  893. #endif
  894. if (!PyArg_ParseTuple(_args, "O&Hlhh",
  895. CFMutableStringRefObj_Convert, &inString,
  896. &inFontID,
  897. &inState,
  898. &inPixelWidthLimit,
  899. &inTruncWhere))
  900. return NULL;
  901. _err = TruncateThemeText(inString,
  902. inFontID,
  903. inState,
  904. inPixelWidthLimit,
  905. inTruncWhere,
  906. &outTruncated);
  907. if (_err != noErr) return PyMac_Error(_err);
  908. _res = Py_BuildValue("b",
  909. outTruncated);
  910. return _res;
  911. }
  912. static PyObject *App_GetThemeTextDimensions(PyObject *_self, PyObject *_args)
  913. {
  914. PyObject *_res = NULL;
  915. OSStatus _err;
  916. CFStringRef inString;
  917. ThemeFontID inFontID;
  918. ThemeDrawState inState;
  919. Boolean inWrapToWidth;
  920. Point ioBounds;
  921. SInt16 outBaseline;
  922. #ifndef GetThemeTextDimensions
  923. PyMac_PRECHECK(GetThemeTextDimensions);
  924. #endif
  925. if (!PyArg_ParseTuple(_args, "O&HlbO&",
  926. CFStringRefObj_Convert, &inString,
  927. &inFontID,
  928. &inState,
  929. &inWrapToWidth,
  930. PyMac_GetPoint, &ioBounds))
  931. return NULL;
  932. _err = GetThemeTextDimensions(inString,
  933. inFontID,
  934. inState,
  935. inWrapToWidth,
  936. &ioBounds,
  937. &outBaseline);
  938. if (_err != noErr) return PyMac_Error(_err);
  939. _res = Py_BuildValue("O&h",
  940. PyMac_BuildPoint, ioBounds,
  941. outBaseline);
  942. return _res;
  943. }
  944. static PyObject *App_GetThemeTextShadowOutset(PyObject *_self, PyObject *_args)
  945. {
  946. PyObject *_res = NULL;
  947. OSStatus _err;
  948. ThemeFontID inFontID;
  949. ThemeDrawState inState;
  950. Rect outOutset;
  951. #ifndef GetThemeTextShadowOutset
  952. PyMac_PRECHECK(GetThemeTextShadowOutset);
  953. #endif
  954. if (!PyArg_ParseTuple(_args, "Hl",
  955. &inFontID,
  956. &inState))
  957. return NULL;
  958. _err = GetThemeTextShadowOutset(inFontID,
  959. inState,
  960. &outOutset);
  961. if (_err != noErr) return PyMac_Error(_err);
  962. _res = Py_BuildValue("O&",
  963. PyMac_BuildRect, &outOutset);
  964. return _res;
  965. }
  966. static PyObject *App_DrawThemeScrollBarArrows(PyObject *_self, PyObject *_args)
  967. {
  968. PyObject *_res = NULL;
  969. OSStatus _err;
  970. Rect bounds;
  971. ThemeTrackEnableState enableState;
  972. ThemeTrackPressState pressState;
  973. Boolean isHoriz;
  974. Rect trackBounds;
  975. #ifndef DrawThemeScrollBarArrows
  976. PyMac_PRECHECK(DrawThemeScrollBarArrows);
  977. #endif
  978. if (!PyArg_ParseTuple(_args, "O&bbb",
  979. PyMac_GetRect, &bounds,
  980. &enableState,
  981. &pressState,
  982. &isHoriz))
  983. return NULL;
  984. _err = DrawThemeScrollBarArrows(&bounds,
  985. enableState,
  986. pressState,
  987. isHoriz,
  988. &trackBounds);
  989. if (_err != noErr) return PyMac_Error(_err);
  990. _res = Py_BuildValue("O&",
  991. PyMac_BuildRect, &trackBounds);
  992. return _res;
  993. }
  994. static PyObject *App_GetThemeScrollBarTrackRect(PyObject *_self, PyObject *_args)
  995. {
  996. PyObject *_res = NULL;
  997. OSStatus _err;
  998. Rect bounds;
  999. ThemeTrackEnableState enableState;
  1000. ThemeTrackPressState pressState;
  1001. Boolean isHoriz;
  1002. Rect trackBounds;
  1003. #ifndef GetThemeScrollBarTrackRect
  1004. PyMac_PRECHECK(GetThemeScrollBarTrackRect);
  1005. #endif
  1006. if (!PyArg_ParseTuple(_args, "O&bbb",
  1007. PyMac_GetRect, &bounds,
  1008. &enableState,
  1009. &pressState,
  1010. &isHoriz))
  1011. return NULL;
  1012. _err = GetThemeScrollBarTrackRect(&bounds,
  1013. enableState,
  1014. pressState,
  1015. isHoriz,
  1016. &trackBounds);
  1017. if (_err != noErr) return PyMac_Error(_err);
  1018. _res = Py_BuildValue("O&",
  1019. PyMac_BuildRect, &trackBounds);
  1020. return _res;
  1021. }
  1022. static PyObject *App_HitTestThemeScrollBarArrows(PyObject *_self, PyObject *_args)
  1023. {
  1024. PyObject *_res = NULL;
  1025. Boolean _rv;
  1026. Rect scrollBarBounds;
  1027. ThemeTrackEnableState enableState;
  1028. ThemeTrackPressState pressState;
  1029. Boolean isHoriz;
  1030. Point ptHit;
  1031. Rect trackBounds;
  1032. ControlPartCode partcode;
  1033. #ifndef HitTestThemeScrollBarArrows
  1034. PyMac_PRECHECK(HitTestThemeScrollBarArrows);
  1035. #endif
  1036. if (!PyArg_ParseTuple(_args, "O&bbbO&",
  1037. PyMac_GetRect, &scrollBarBounds,
  1038. &enableState,
  1039. &pressState,
  1040. &isHoriz,
  1041. PyMac_GetPoint, &ptHit))
  1042. return NULL;
  1043. _rv = HitTestThemeScrollBarArrows(&scrollBarBounds,
  1044. enableState,
  1045. pressState,
  1046. isHoriz,
  1047. ptHit,
  1048. &trackBounds,
  1049. &partcode);
  1050. _res = Py_BuildValue("bO&h",
  1051. _rv,
  1052. PyMac_BuildRect, &trackBounds,
  1053. partcode);
  1054. return _res;
  1055. }
  1056. static PyObject *App_DrawThemeScrollBarDelimiters(PyObject *_self, PyObject *_args)
  1057. {
  1058. PyObject *_res = NULL;
  1059. OSStatus _err;
  1060. ThemeWindowType flavor;
  1061. Rect inContRect;
  1062. ThemeDrawState state;
  1063. ThemeWindowAttributes attributes;
  1064. #ifndef DrawThemeScrollBarDelimiters
  1065. PyMac_PRECHECK(DrawThemeScrollBarDelimiters);
  1066. #endif
  1067. if (!PyArg_ParseTuple(_args, "HO&ll",
  1068. &flavor,
  1069. PyMac_GetRect, &inContRect,
  1070. &state,
  1071. &attributes))
  1072. return NULL;
  1073. _err = DrawThemeScrollBarDelimiters(flavor,
  1074. &inContRect,
  1075. state,
  1076. attributes);
  1077. if (_err != noErr) return PyMac_Error(_err);
  1078. Py_INCREF(Py_None);
  1079. _res = Py_None;
  1080. return _res;
  1081. }
  1082. static PyObject *App_DrawThemeButton(PyObject *_self, PyObject *_args)
  1083. {
  1084. PyObject *_res = NULL;
  1085. OSStatus _err;
  1086. Rect inBounds;
  1087. UInt16 inKind;
  1088. ThemeButtonDrawInfo inNewInfo;
  1089. ThemeButtonDrawInfo inPrevInfo;
  1090. UInt32 inUserData;
  1091. #ifndef DrawThemeButton
  1092. PyMac_PRECHECK(DrawThemeButton);
  1093. #endif
  1094. if (!PyArg_ParseTuple(_args, "O&HO&O&l",
  1095. PyMac_GetRect, &inBounds,
  1096. &inKind,
  1097. ThemeButtonDrawInfo_Convert, &inNewInfo,
  1098. ThemeButtonDrawInfo_Convert, &inPrevInfo,
  1099. &inUserData))
  1100. return NULL;
  1101. _err = DrawThemeButton(&inBounds,
  1102. inKind,
  1103. &inNewInfo,
  1104. &inPrevInfo,
  1105. NULL,
  1106. NULL,
  1107. inUserData);
  1108. if (_err != noErr) return PyMac_Error(_err);
  1109. Py_INCREF(Py_None);
  1110. _res = Py_None;
  1111. return _res;
  1112. }
  1113. static PyObject *App_GetThemeButtonRegion(PyObject *_self, PyObject *_args)
  1114. {
  1115. PyObject *_res = NULL;
  1116. OSStatus _err;
  1117. Rect inBounds;
  1118. UInt16 inKind;
  1119. ThemeButtonDrawInfo inNewInfo;
  1120. #ifndef GetThemeButtonRegion
  1121. PyMac_PRECHECK(GetThemeButtonRegion);
  1122. #endif
  1123. if (!PyArg_ParseTuple(_args, "O&HO&",
  1124. PyMac_GetRect, &inBounds,
  1125. &inKind,
  1126. ThemeButtonDrawInfo_Convert, &inNewInfo))
  1127. return NULL;
  1128. _err = GetThemeButtonRegion(&inBounds,
  1129. inKind,
  1130. &inNewInfo,
  1131. (RgnHandle)0);
  1132. if (_err != noErr) return PyMac_Error(_err);
  1133. Py_INCREF(Py_None);
  1134. _res = Py_None;
  1135. return _res;
  1136. }
  1137. static PyObject *App_GetThemeButtonContentBounds(PyObject *_self, PyObject *_args)
  1138. {
  1139. PyObject *_res = NULL;
  1140. OSStatus _err;
  1141. Rect inBounds;
  1142. UInt16 inKind;
  1143. ThemeButtonDrawInfo inDrawInfo;
  1144. Rect outBounds;
  1145. #ifndef GetThemeButtonContentBounds
  1146. PyMac_PRECHECK(GetThemeButtonContentBounds);
  1147. #endif
  1148. if (!PyArg_ParseTuple(_args, "O&HO&",
  1149. PyMac_GetRect, &inBounds,
  1150. &inKind,
  1151. ThemeButtonDrawInfo_Convert, &inDrawInfo))
  1152. return NULL;
  1153. _err = GetThemeButtonContentBounds(&inBounds,
  1154. inKind,
  1155. &inDrawInfo,
  1156. &outBounds);
  1157. if (_err != noErr) return PyMac_Error(_err);
  1158. _res = Py_BuildValue("O&",
  1159. PyMac_BuildRect, &outBounds);
  1160. return _res;
  1161. }
  1162. static PyObject *App_GetThemeButtonBackgroundBounds(PyObject *_self, PyObject *_args)
  1163. {
  1164. PyObject *_res = NULL;
  1165. OSStatus _err;
  1166. Rect inBounds;
  1167. UInt16 inKind;
  1168. ThemeButtonDrawInfo inDrawInfo;
  1169. Rect outBounds;
  1170. #ifndef GetThemeButtonBackgroundBounds
  1171. PyMac_PRECHECK(GetThemeButtonBackgroundBounds);
  1172. #endif
  1173. if (!PyArg_ParseTuple(_args, "O&HO&",
  1174. PyMac_GetRect, &inBounds,
  1175. &inKind,
  1176. ThemeButtonDrawInfo_Convert, &inDrawInfo))
  1177. return NULL;
  1178. _err = GetThemeButtonBackgroundBounds(&inBounds,
  1179. inKind,
  1180. &inDrawInfo,
  1181. &outBounds);
  1182. if (_err != noErr) return PyMac_Error(_err);
  1183. _res = Py_BuildValue("O&",
  1184. PyMac_BuildRect, &outBounds);
  1185. return _res;
  1186. }
  1187. static PyObject *App_PlayThemeSound(PyObject *_self, PyObject *_args)
  1188. {
  1189. PyObject *_res = NULL;
  1190. OSStatus _err;
  1191. ThemeSoundKind kind;
  1192. #ifndef PlayThemeSound
  1193. PyMac_PRECHECK(PlayThemeSound);
  1194. #endif
  1195. if (!PyArg_ParseTuple(_args, "O&",
  1196. PyMac_GetOSType, &kind))
  1197. return NULL;
  1198. _err = PlayThemeSound(kind);
  1199. if (_err != noErr) return PyMac_Error(_err);
  1200. Py_INCREF(Py_None);
  1201. _res = Py_None;
  1202. return _res;
  1203. }
  1204. static PyObject *App_BeginThemeDragSound(PyObject *_self, PyObject *_args)
  1205. {
  1206. PyObject *_res = NULL;
  1207. OSStatus _err;
  1208. ThemeDragSoundKind kind;
  1209. #ifndef BeginThemeDragSound
  1210. PyMac_PRECHECK(BeginThemeDragSound);
  1211. #endif
  1212. if (!PyArg_ParseTuple(_args, "O&",
  1213. PyMac_GetOSType, &kind))
  1214. return NULL;
  1215. _err = BeginThemeDragSound(kind);
  1216. if (_err != noErr) return PyMac_Error(_err);
  1217. Py_INCREF(Py_None);
  1218. _res = Py_None;
  1219. return _res;
  1220. }
  1221. static PyObject *App_EndThemeDragSound(PyObject *_self, PyObject *_args)
  1222. {
  1223. PyObject *_res = NULL;
  1224. OSStatus _err;
  1225. #ifndef EndThemeDragSound
  1226. PyMac_PRECHECK(EndThemeDragSound);
  1227. #endif
  1228. if (!PyArg_ParseTuple(_args, ""))
  1229. return NULL;
  1230. _err = EndThemeDragSound();
  1231. if (_err != noErr) return PyMac_Error(_err);
  1232. Py_INCREF(Py_None);
  1233. _res = Py_None;
  1234. return _res;
  1235. }
  1236. static PyObject *App_DrawThemeTickMark(PyObject *_self, PyObject *_args)
  1237. {
  1238. PyObject *_res = NULL;
  1239. OSStatus _err;
  1240. Rect bounds;
  1241. ThemeDrawState state;
  1242. #ifndef DrawThemeTickMark
  1243. PyMac_PRECHECK(DrawThemeTickMark);
  1244. #endif
  1245. if (!PyArg_ParseTuple(_args, "O&l",
  1246. PyMac_GetRect, &bounds,
  1247. &state))
  1248. return NULL;
  1249. _err = DrawThemeTickMark(&bounds,
  1250. state);
  1251. if (_err != noErr) return PyMac_Error(_err);
  1252. Py_INCREF(Py_None);
  1253. _res = Py_None;
  1254. return _res;
  1255. }
  1256. static PyObject *App_DrawThemeChasingArrows(PyObject *_self, PyObject *_args)
  1257. {
  1258. PyObject *_res = NULL;
  1259. OSStatus _err;
  1260. Rect bounds;
  1261. UInt32 index;
  1262. ThemeDrawState state;
  1263. UInt32 eraseData;
  1264. #ifndef DrawThemeChasingArrows
  1265. PyMac_PRECHECK(DrawThemeChasingArrows);
  1266. #endif
  1267. if (!PyArg_ParseTuple(_args, "O&lll",
  1268. PyMac_GetRect, &bounds,
  1269. &index,
  1270. &state,
  1271. &eraseData))
  1272. return NULL;
  1273. _err = DrawThemeChasingArrows(&bounds,
  1274. index,
  1275. state,
  1276. NULL,
  1277. eraseData);
  1278. if (_err != noErr) return PyMac_Error(_err);
  1279. Py_INCREF(Py_None);
  1280. _res = Py_None;
  1281. return _res;
  1282. }
  1283. static PyObject *App_DrawThemePopupArrow(PyObject *_self, PyObject *_args)
  1284. {
  1285. PyObject *_res = NULL;
  1286. OSStatus _err;
  1287. Rect bounds;
  1288. ThemeArrowOrientation orientation;
  1289. ThemePopupArrowSize size;
  1290. ThemeDrawState state;
  1291. UInt32 eraseData;
  1292. #ifndef DrawThemePopupArrow
  1293. PyMac_PRECHECK(DrawThemePopupArrow);
  1294. #endif
  1295. if (!PyArg_ParseTuple(_args, "O&HHll",
  1296. PyMac_GetRect, &bounds,
  1297. &orientation,
  1298. &size,
  1299. &state,
  1300. &eraseData))
  1301. return NULL;
  1302. _err = DrawThemePopupArrow(&bounds,
  1303. orientation,
  1304. size,
  1305. state,
  1306. NULL,
  1307. eraseData);
  1308. if (_err != noErr) return PyMac_Error(_err);
  1309. Py_INCREF(Py_None);
  1310. _res = Py_None;
  1311. return _res;
  1312. }
  1313. static PyObject *App_DrawThemeStandaloneGrowBox(PyObject *_self, PyObject *_args)
  1314. {
  1315. PyObject *_res = NULL;
  1316. OSStatus _err;
  1317. Point origin;
  1318. ThemeGrowDirection growDirection;
  1319. Boolean isSmall;
  1320. ThemeDrawState state;
  1321. #ifndef DrawThemeStandaloneGrowBox
  1322. PyMac_PRECHECK(DrawThemeStandaloneGrowBox);
  1323. #endif
  1324. if (!PyArg_ParseTuple(_args, "O&Hbl",
  1325. PyMac_GetPoint, &origin,
  1326. &growDirection,
  1327. &isSmall,
  1328. &state))
  1329. return NULL;
  1330. _err = DrawThemeStandaloneGrowBox(origin,
  1331. growDirection,
  1332. isSmall,
  1333. state);
  1334. if (_err != noErr) return PyMac_Error(_err);
  1335. Py_INCREF(Py_None);
  1336. _res = Py_None;
  1337. return _res;
  1338. }
  1339. static PyObject *App_DrawThemeStandaloneNoGrowBox(PyObject *_self, PyObject *_args)
  1340. {
  1341. PyObject *_res = NULL;
  1342. OSStatus _err;
  1343. Point origin;
  1344. ThemeGrowDirection growDirection;
  1345. Boolean isSmall;
  1346. ThemeDrawState state;
  1347. #ifndef DrawThemeStandaloneNoGrowBox
  1348. PyMac_PRECHECK(DrawThemeStandaloneNoGrowBox);
  1349. #endif
  1350. if (!PyArg_ParseTuple(_args, "O&Hbl",
  1351. PyMac_GetPoint, &origin,
  1352. &growDirection,
  1353. &isSmall,
  1354. &state))
  1355. return NULL;
  1356. _err = DrawThemeStandaloneNoGrowBox(origin,
  1357. growDirection,
  1358. isSmall,
  1359. state);
  1360. if (_err != noErr) return PyMac_Error(_err);
  1361. Py_INCREF(Py_None);
  1362. _res = Py_None;
  1363. return _res;
  1364. }
  1365. static PyObject *App_GetThemeStandaloneGrowBoxBounds(PyObject *_self, PyObject *_args)
  1366. {
  1367. PyObject *_res = NULL;
  1368. OSStatus _err;
  1369. Point origin;
  1370. ThemeGrowDirection growDirection;
  1371. Boolean isSmall;
  1372. Rect bounds;
  1373. #ifndef GetThemeStandaloneGrowBoxBounds
  1374. PyMac_PRECHECK(GetThemeStandaloneGrowBoxBounds);
  1375. #endif
  1376. if (!PyArg_ParseTuple(_args, "O&Hb",
  1377. PyMac_GetPoint, &origin,
  1378. &growDirection,
  1379. &isSmall))
  1380. return NULL;
  1381. _err = GetThemeStandaloneGrowBoxBounds(origin,
  1382. growDirection,
  1383. isSmall,
  1384. &bounds);
  1385. if (_err != noErr) return PyMac_Error(_err);
  1386. _res = Py_BuildValue("O&",
  1387. PyMac_BuildRect, &bounds);
  1388. return _res;
  1389. }
  1390. static PyObject *App_NormalizeThemeDrawingState(PyObject *_self, PyObject *_args)
  1391. {
  1392. PyObject *_res = NULL;
  1393. OSStatus _err;
  1394. #ifndef NormalizeThemeDrawingState
  1395. PyMac_PRECHECK(NormalizeThemeDrawingState);
  1396. #endif
  1397. if (!PyArg_ParseTuple(_args, ""))
  1398. return NULL;
  1399. _err = NormalizeThemeDrawingState();
  1400. if (_err != noErr) return PyMac_Error(_err);
  1401. Py_INCREF(Py_None);
  1402. _res = Py_None;
  1403. return _res;
  1404. }
  1405. static PyObject *App_GetThemeDrawingState(PyObject *_self, PyObject *_args)
  1406. {
  1407. PyObject *_res = NULL;
  1408. OSStatus _err;
  1409. ThemeDrawingState outState;
  1410. #ifndef GetThemeDrawingState
  1411. PyMac_PRECHECK(GetThemeDrawingState);
  1412. #endif
  1413. if (!PyArg_ParseTuple(_args, ""))
  1414. return NULL;
  1415. _err = GetThemeDrawingState(&outState);
  1416. if (_err != noErr) return PyMac_Error(_err);
  1417. _res = Py_BuildValue("O&",
  1418. ThemeDrawingStateObj_New, outState);
  1419. return _res;
  1420. }
  1421. static PyObject *App_ApplyThemeBackground(PyObject *_self, PyObject *_args)
  1422. {
  1423. PyObject *_res = NULL;
  1424. OSStatus _err;
  1425. ThemeBackgroundKind inKind;
  1426. Rect bounds;
  1427. ThemeDrawState inState;
  1428. SInt16 inDepth;
  1429. Boolean inColorDev;
  1430. #ifndef ApplyThemeBackground
  1431. PyMac_PRECHECK(ApplyThemeBackground);
  1432. #endif
  1433. if (!PyArg_ParseTuple(_args, "lO&lhb",
  1434. &inKind,
  1435. PyMac_GetRect, &bounds,
  1436. &inState,
  1437. &inDepth,
  1438. &inColorDev))
  1439. return NULL;
  1440. _err = ApplyThemeBackground(inKind,
  1441. &bounds,
  1442. inState,
  1443. inDepth,
  1444. inColorDev);
  1445. if (_err != noErr) return PyMac_Error(_err);
  1446. Py_INCREF(Py_None);
  1447. _res = Py_None;
  1448. return _res;
  1449. }
  1450. static PyObject *App_SetThemeTextColorForWindow(PyObject *_self, PyObject *_args)
  1451. {
  1452. PyObject *_res = NULL;
  1453. OSStatus _err;
  1454. WindowPtr window;
  1455. Boolean isActive;
  1456. SInt16 depth;
  1457. Boolean isColorDev;
  1458. #ifndef SetThemeTextColorForWindow
  1459. PyMac_PRECHECK(SetThemeTextColorForWindow);
  1460. #endif
  1461. if (!PyArg_ParseTuple(_args, "O&bhb",
  1462. WinObj_Convert, &window,
  1463. &isActive,
  1464. &depth,
  1465. &isColorDev))
  1466. return NULL;
  1467. _err = SetThemeTextColorForWindow(window,
  1468. isActive,
  1469. depth,
  1470. isColorDev);
  1471. if (_err != noErr) return PyMac_Error(_err);
  1472. Py_INCREF(Py_None);
  1473. _res = Py_None;
  1474. return _res;
  1475. }
  1476. static PyObject *App_IsValidAppearanceFileType(PyObject *_self, PyObject *_args)
  1477. {
  1478. PyObject *_res = NULL;
  1479. Boolean _rv;
  1480. OSType fileType;
  1481. #ifndef IsValidAppearanceFileType
  1482. PyMac_PRECHECK(IsValidAppearanceFileType);
  1483. #endif
  1484. if (!PyArg_ParseTuple(_args, "O&",
  1485. PyMac_GetOSType, &fileType))
  1486. return NULL;
  1487. _rv = IsValidAppearanceFileType(fileType);
  1488. _res = Py_BuildValue("b",
  1489. _rv);
  1490. return _res;
  1491. }
  1492. static PyObject *App_GetThemeBrushAsColor(PyObject *_self, PyObject *_args)
  1493. {
  1494. PyObject *_res = NULL;
  1495. OSStatus _err;
  1496. ThemeBrush inBrush;
  1497. SInt16 inDepth;
  1498. Boolean inColorDev;
  1499. RGBColor outColor;
  1500. #ifndef GetThemeBrushAsColor
  1501. PyMac_PRECHECK(GetThemeBrushAsColor);
  1502. #endif
  1503. if (!PyArg_ParseTuple(_args, "hhb",
  1504. &inBrush,
  1505. &inDepth,
  1506. &inColorDev))
  1507. return NULL;
  1508. _err = GetThemeBrushAsColor(inBrush,
  1509. inDepth,
  1510. inColorDev,
  1511. &outColor);
  1512. if (_err != noErr) return PyMac_Error(_err);
  1513. _res = Py_BuildValue("O&",
  1514. QdRGB_New, &outColor);
  1515. return _res;
  1516. }
  1517. static PyObject *App_GetThemeTextColor(PyObject *_self, PyObject *_args)
  1518. {
  1519. PyObject *_res = NULL;
  1520. OSStatus _err;
  1521. ThemeTextColor inColor;
  1522. SInt16 inDepth;
  1523. Boolean inColorDev;
  1524. RGBColor outColor;
  1525. #ifndef GetThemeTextColor
  1526. PyMac_PRECHECK(GetThemeTextColor);
  1527. #endif
  1528. if (!PyArg_ParseTuple(_args, "hhb",
  1529. &inColor,
  1530. &inDepth,
  1531. &inColorDev))
  1532. return NULL;
  1533. _err = GetThemeTextColor(inColor,
  1534. inDepth,
  1535. inColorDev,
  1536. &outColor);
  1537. if (_err != noErr) return PyMac_Error(_err);
  1538. _res = Py_BuildValue("O&",
  1539. QdRGB_New, &outColor);
  1540. return _res;
  1541. }
  1542. static PyObject *App_GetThemeMetric(PyObject *_self, PyObject *_args)
  1543. {
  1544. PyObject *_res = NULL;
  1545. OSStatus _err;
  1546. ThemeMetric inMetric;
  1547. SInt32 outMetric;
  1548. #ifndef GetThemeMetric
  1549. PyMac_PRECHECK(GetThemeMetric);
  1550. #endif
  1551. if (!PyArg_ParseTuple(_args, "l",
  1552. &inMetric))
  1553. return NULL;
  1554. _err = GetThemeMetric(inMetric,
  1555. &outMetric);
  1556. if (_err != noErr) return PyMac_Error(_err);
  1557. _res = Py_BuildValue("l",
  1558. outMetric);
  1559. return _res;
  1560. }
  1561. static PyMethodDef App_methods[] = {
  1562. {"RegisterAppearanceClient", (PyCFunction)App_RegisterAppearanceClient, 1,
  1563. PyDoc_STR("() -> None")},
  1564. {"UnregisterAppearanceClient", (PyCFunction)App_UnregisterAppearanceClient, 1,
  1565. PyDoc_STR("() -> None")},
  1566. {"SetThemePen", (PyCFunction)App_SetThemePen, 1,
  1567. PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None")},
  1568. {"SetThemeBackground", (PyCFunction)App_SetThemeBackground, 1,
  1569. PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None")},
  1570. {"SetThemeTextColor", (PyCFunction)App_SetThemeTextColor, 1,
  1571. PyDoc_STR("(ThemeTextColor inColor, SInt16 inDepth, Boolean inIsColorDevice) -> None")},
  1572. {"SetThemeWindowBackground", (PyCFunction)App_SetThemeWindowBackground, 1,
  1573. PyDoc_STR("(WindowPtr inWindow, ThemeBrush inBrush, Boolean inUpdate) -> None")},
  1574. {"DrawThemeWindowHeader", (PyCFunction)App_DrawThemeWindowHeader, 1,
  1575. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1576. {"DrawThemeWindowListViewHeader", (PyCFunction)App_DrawThemeWindowListViewHeader, 1,
  1577. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1578. {"DrawThemePlacard", (PyCFunction)App_DrawThemePlacard, 1,
  1579. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1580. {"DrawThemeEditTextFrame", (PyCFunction)App_DrawThemeEditTextFrame, 1,
  1581. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1582. {"DrawThemeListBoxFrame", (PyCFunction)App_DrawThemeListBoxFrame, 1,
  1583. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1584. {"DrawThemeFocusRect", (PyCFunction)App_DrawThemeFocusRect, 1,
  1585. PyDoc_STR("(Rect inRect, Boolean inHasFocus) -> None")},
  1586. {"DrawThemePrimaryGroup", (PyCFunction)App_DrawThemePrimaryGroup, 1,
  1587. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1588. {"DrawThemeSecondaryGroup", (PyCFunction)App_DrawThemeSecondaryGroup, 1,
  1589. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1590. {"DrawThemeSeparator", (PyCFunction)App_DrawThemeSeparator, 1,
  1591. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1592. {"DrawThemeModelessDialogFrame", (PyCFunction)App_DrawThemeModelessDialogFrame, 1,
  1593. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1594. {"DrawThemeGenericWell", (PyCFunction)App_DrawThemeGenericWell, 1,
  1595. PyDoc_STR("(Rect inRect, ThemeDrawState inState, Boolean inFillCenter) -> None")},
  1596. {"DrawThemeFocusRegion", (PyCFunction)App_DrawThemeFocusRegion, 1,
  1597. PyDoc_STR("(Boolean inHasFocus) -> None")},
  1598. {"IsThemeInColor", (PyCFunction)App_IsThemeInColor, 1,
  1599. PyDoc_STR("(SInt16 inDepth, Boolean inIsColorDevice) -> (Boolean _rv)")},
  1600. {"GetThemeAccentColors", (PyCFunction)App_GetThemeAccentColors, 1,
  1601. PyDoc_STR("() -> (CTabHandle outColors)")},
  1602. {"DrawThemeMenuBarBackground", (PyCFunction)App_DrawThemeMenuBarBackground, 1,
  1603. PyDoc_STR("(Rect inBounds, ThemeMenuBarState inState, UInt32 inAttributes) -> None")},
  1604. {"GetThemeMenuBarHeight", (PyCFunction)App_GetThemeMenuBarHeight, 1,
  1605. PyDoc_STR("() -> (SInt16 outHeight)")},
  1606. {"DrawThemeMenuBackground", (PyCFunction)App_DrawThemeMenuBackground, 1,
  1607. PyDoc_STR("(Rect inMenuRect, ThemeMenuType inMenuType) -> None")},
  1608. {"GetThemeMenuBackgroundRegion", (PyCFunction)App_GetThemeMenuBackgroundRegion, 1,
  1609. PyDoc_STR("(Rect inMenuRect, ThemeMenuType menuType) -> None")},
  1610. {"DrawThemeMenuSeparator", (PyCFunction)App_DrawThemeMenuSeparator, 1,
  1611. PyDoc_STR("(Rect inItemRect) -> None")},
  1612. {"GetThemeMenuSeparatorHeight", (PyCFunction)App_GetThemeMenuSeparatorHeight, 1,
  1613. PyDoc_STR("() -> (SInt16 outHeight)")},
  1614. {"GetThemeMenuItemExtra", (PyCFunction)App_GetThemeMenuItemExtra, 1,
  1615. PyDoc_STR("(ThemeMenuItemType inItemType) -> (SInt16 outHeight, SInt16 outWidth)")},
  1616. {"GetThemeMenuTitleExtra", (PyCFunction)App_GetThemeMenuTitleExtra, 1,
  1617. PyDoc_STR("(Boolean inIsSquished) -> (SInt16 outWidth)")},
  1618. {"DrawThemeTabPane", (PyCFunction)App_DrawThemeTabPane, 1,
  1619. PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
  1620. {"GetThemeTabRegion", (PyCFunction)App_GetThemeTabRegion, 1,
  1621. PyDoc_STR("(Rect inRect, ThemeTabStyle inStyle, ThemeTabDirection inDirection) -> None")},
  1622. {"SetThemeCursor", (PyCFunction)App_SetThemeCursor, 1,
  1623. PyDoc_STR("(ThemeCursor inCursor) -> None")},
  1624. {"SetAnimatedThemeCursor", (PyCFunction)App_SetAnimatedThemeCursor, 1,
  1625. PyDoc_STR("(ThemeCursor inCursor, UInt32 inAnimationStep) -> None")},
  1626. {"GetThemeScrollBarThumbStyle", (PyCFunction)App_GetThemeScrollBarThumbStyle, 1,
  1627. PyDoc_STR("() -> (ThemeScrollBarThumbStyle outStyle)")},
  1628. {"GetThemeScrollBarArrowStyle", (PyCFunction)App_GetThemeScrollBarArrowStyle, 1,
  1629. PyDoc_STR("() -> (ThemeScrollBarArrowStyle outStyle)")},
  1630. {"GetThemeCheckBoxStyle", (PyCFunction)App_GetThemeCheckBoxStyle, 1,
  1631. PyDoc_STR("() -> (ThemeCheckBoxStyle outStyle)")},
  1632. {"UseThemeFont", (PyCFunction)App_UseThemeFont, 1,
  1633. PyDoc_STR("(ThemeFontID inFontID, ScriptCode inScript) -> None")},
  1634. {"DrawThemeTextBox", (PyCFunction)App_DrawThemeTextBox, 1,
  1635. PyDoc_STR("(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Rect inBoundingBox, SInt16 inJust) -> None")},
  1636. {"TruncateThemeText", (PyCFunction)App_TruncateThemeText, 1,
  1637. PyDoc_STR("(CFMutableStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, SInt16 inPixelWidthLimit, TruncCode inTruncWhere) -> (Boolean outTruncated)")},
  1638. {"GetThemeTextDimensions", (PyCFunction)App_GetThemeTextDimensions, 1,
  1639. PyDoc_STR("(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Point ioBounds) -> (Point ioBounds, SInt16 outBaseline)")},
  1640. {"GetThemeTextShadowOutset", (PyCFunction)App_GetThemeTextShadowOutset, 1,
  1641. PyDoc_STR("(ThemeFontID inFontID, ThemeDrawState inState) -> (Rect outOutset)")},
  1642. {"DrawThemeScrollBarArrows", (PyCFunction)App_DrawThemeScrollBarArrows, 1,
  1643. PyDoc_STR("(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)")},
  1644. {"GetThemeScrollBarTrackRect", (PyCFunction)App_GetThemeScrollBarTrackRect, 1,
  1645. PyDoc_STR("(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)")},
  1646. {"HitTestThemeScrollBarArrows", (PyCFunction)App_HitTestThemeScrollBarArrows, 1,
  1647. PyDoc_STR("(Rect scrollBarBounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz, Point ptHit) -> (Boolean _rv, Rect trackBounds, ControlPartCode partcode)")},
  1648. {"DrawThemeScrollBarDelimiters", (PyCFunction)App_DrawThemeScrollBarDelimiters, 1,
  1649. PyDoc_STR("(ThemeWindowType flavor, Rect inContRect, ThemeDrawState state, ThemeWindowAttributes attributes) -> None")},
  1650. {"DrawThemeButton", (PyCFunction)App_DrawThemeButton, 1,
  1651. PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inNewInfo, ThemeButtonDrawInfo inPrevInfo, UInt32 inUserData) -> None")},
  1652. {"GetThemeButtonRegion", (PyCFunction)App_GetThemeButtonRegion, 1,
  1653. PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inNewInfo) -> None")},
  1654. {"GetThemeButtonContentBounds", (PyCFunction)App_GetThemeButtonContentBounds, 1,
  1655. PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inDrawInfo) -> (Rect outBounds)")},
  1656. {"GetThemeButtonBackgroundBounds", (PyCFunction)App_GetThemeButtonBackgroundBounds, 1,
  1657. PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inDrawInfo) -> (Rect outBounds)")},
  1658. {"PlayThemeSound", (PyCFunction)App_PlayThemeSound, 1,
  1659. PyDoc_STR("(ThemeSoundKind kind) -> None")},
  1660. {"BeginThemeDragSound", (PyCFunction)App_BeginThemeDragSound, 1,
  1661. PyDoc_STR("(ThemeDragSoundKind kind) -> None")},
  1662. {"EndThemeDragSound", (PyCFunction)App_EndThemeDragSound, 1,
  1663. PyDoc_STR("() -> None")},
  1664. {"DrawThemeTickMark", (PyCFunction)App_DrawThemeTickMark, 1,
  1665. PyDoc_STR("(Rect bounds, ThemeDrawState state) -> None")},
  1666. {"DrawThemeChasingArrows", (PyCFunction)App_DrawThemeChasingArrows, 1,
  1667. PyDoc_STR("(Rect bounds, UInt32 index, ThemeDrawState state, UInt32 eraseData) -> None")},
  1668. {"DrawThemePopupArrow", (PyCFunction)App_DrawThemePopupArrow, 1,
  1669. PyDoc_STR("(Rect bounds, ThemeArrowOrientation orientation, ThemePopupArrowSize size, ThemeDrawState state, UInt32 eraseData) -> None")},
  1670. {"DrawThemeStandaloneGrowBox", (PyCFunction)App_DrawThemeStandaloneGrowBox, 1,
  1671. PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None")},
  1672. {"DrawThemeStandaloneNoGrowBox", (PyCFunction)App_DrawThemeStandaloneNoGrowBox, 1,
  1673. PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None")},
  1674. {"GetThemeStandaloneGrowBoxBounds", (PyCFunction)App_GetThemeStandaloneGrowBoxBounds, 1,
  1675. PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall) -> (Rect bounds)")},
  1676. {"NormalizeThemeDrawingState", (PyCFunction)App_NormalizeThemeDrawingState, 1,
  1677. PyDoc_STR("() -> None")},
  1678. {"GetThemeDrawingState", (PyCFunction)App_GetThemeDrawingState, 1,
  1679. PyDoc_STR("() -> (ThemeDrawingState outState)")},
  1680. {"ApplyThemeBackground", (PyCFunction)App_ApplyThemeBackground, 1,
  1681. PyDoc_STR("(ThemeBackgroundKind inKind, Rect bounds, ThemeDrawState inState, SInt16 inDepth, Boolean inColorDev) -> None")},
  1682. {"SetThemeTextColorForWindow", (PyCFunction)App_SetThemeTextColorForWindow, 1,
  1683. PyDoc_STR("(WindowPtr window, Boolean isActive, SInt16 depth, Boolean isColorDev) -> None")},
  1684. {"IsValidAppearanceFileType", (PyCFunction)App_IsValidAppearanceFileType, 1,
  1685. PyDoc_STR("(OSType fileType) -> (Boolean _rv)")},
  1686. {"GetThemeBrushAsColor", (PyCFunction)App_GetThemeBrushAsColor, 1,
  1687. PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)")},
  1688. {"GetThemeTextColor", (PyCFunction)App_GetThemeTextColor, 1,
  1689. PyDoc_STR("(ThemeTextColor inColor, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)")},
  1690. {"GetThemeMetric", (PyCFunction)App_GetThemeMetric, 1,
  1691. PyDoc_STR("(ThemeMetric inMetric) -> (SInt32 outMetric)")},
  1692. {NULL, NULL, 0}
  1693. };
  1694. #else /* __LP64__ */
  1695. static PyMethodDef App_methods[] = {
  1696. {NULL, NULL, 0}
  1697. };
  1698. #endif /* __LP64__ */
  1699. void init_App(void)
  1700. {
  1701. PyObject *m;
  1702. #ifndef __LP64__
  1703. PyObject *d;
  1704. #endif /* !__LP64__ */
  1705. m = Py_InitModule("_App", App_methods);
  1706. #ifndef __LP64__
  1707. d = PyModule_GetDict(m);
  1708. App_Error = PyMac_GetOSErrException();
  1709. if (App_Error == NULL ||
  1710. PyDict_SetItemString(d, "Error", App_Error) != 0)
  1711. return;
  1712. ThemeDrawingState_Type.ob_type = &PyType_Type;
  1713. if (PyType_Ready(&ThemeDrawingState_Type) < 0) return;
  1714. Py_INCREF(&ThemeDrawingState_Type);
  1715. PyModule_AddObject(m, "ThemeDrawingState", (PyObject *)&ThemeDrawingState_Type);
  1716. /* Backward-compatible name */
  1717. Py_INCREF(&ThemeDrawingState_Type);
  1718. PyModule_AddObject(m, "ThemeDrawingStateType", (PyObject *)&ThemeDrawingState_Type);
  1719. #endif /* __LP64__ */
  1720. }
  1721. /* ======================== End module _App ========================= */