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