2 /* ========================== Module _App =========================== */
9 #include "pywintoolbox.h"
12 #include "pymactoolbox.h"
15 /* Macro to test whether a weak-loaded CFM function exists */
16 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
17 PyErr_SetString(PyExc_NotImplementedError, \
18 "Not available in this shared library/OS version"); \
23 #ifdef WITHOUT_FRAMEWORKS
24 #include <Appearance.h>
26 #include <Carbon/Carbon.h>
31 int ThemeButtonDrawInfo_Convert(PyObject
*v
, ThemeButtonDrawInfo
*p_itself
)
33 return PyArg_Parse(v
, "(iHH)", &p_itself
->state
, &p_itself
->value
, &p_itself
->adornment
);
37 static PyObject
*App_Error
;
39 /* ----------------- Object type ThemeDrawingState ------------------ */
41 PyTypeObject ThemeDrawingState_Type
;
43 #define ThemeDrawingStateObj_Check(x) ((x)->ob_type == &ThemeDrawingState_Type)
45 typedef struct ThemeDrawingStateObject
{
47 ThemeDrawingState ob_itself
;
48 } ThemeDrawingStateObject
;
50 PyObject
*ThemeDrawingStateObj_New(ThemeDrawingState itself
)
52 ThemeDrawingStateObject
*it
;
53 it
= PyObject_NEW(ThemeDrawingStateObject
, &ThemeDrawingState_Type
);
54 if (it
== NULL
) return NULL
;
55 it
->ob_itself
= itself
;
56 return (PyObject
*)it
;
58 int ThemeDrawingStateObj_Convert(PyObject
*v
, ThemeDrawingState
*p_itself
)
60 if (!ThemeDrawingStateObj_Check(v
))
62 PyErr_SetString(PyExc_TypeError
, "ThemeDrawingState required");
65 *p_itself
= ((ThemeDrawingStateObject
*)v
)->ob_itself
;
69 static void ThemeDrawingStateObj_dealloc(ThemeDrawingStateObject
*self
)
71 /* Cleanup of self->ob_itself goes here */
75 static PyObject
*ThemeDrawingStateObj_SetThemeDrawingState(ThemeDrawingStateObject
*_self
, PyObject
*_args
)
77 PyObject
*_res
= NULL
;
80 if (!PyArg_ParseTuple(_args
, "b",
83 _rv
= SetThemeDrawingState(_self
->ob_itself
,
85 _res
= Py_BuildValue("l",
90 static PyObject
*ThemeDrawingStateObj_DisposeThemeDrawingState(ThemeDrawingStateObject
*_self
, PyObject
*_args
)
92 PyObject
*_res
= NULL
;
94 if (!PyArg_ParseTuple(_args
, ""))
96 _rv
= DisposeThemeDrawingState(_self
->ob_itself
);
97 _res
= Py_BuildValue("l",
102 static PyMethodDef ThemeDrawingStateObj_methods
[] = {
103 {"SetThemeDrawingState", (PyCFunction
)ThemeDrawingStateObj_SetThemeDrawingState
, 1,
104 "(Boolean inDisposeNow) -> (OSStatus _rv)"},
105 {"DisposeThemeDrawingState", (PyCFunction
)ThemeDrawingStateObj_DisposeThemeDrawingState
, 1,
106 "() -> (OSStatus _rv)"},
110 PyMethodChain ThemeDrawingStateObj_chain
= { ThemeDrawingStateObj_methods
, NULL
};
112 static PyObject
*ThemeDrawingStateObj_getattr(ThemeDrawingStateObject
*self
, char *name
)
114 return Py_FindMethodInChain(&ThemeDrawingStateObj_chain
, (PyObject
*)self
, name
);
117 #define ThemeDrawingStateObj_setattr NULL
119 #define ThemeDrawingStateObj_compare NULL
121 #define ThemeDrawingStateObj_repr NULL
123 #define ThemeDrawingStateObj_hash NULL
125 PyTypeObject ThemeDrawingState_Type
= {
126 PyObject_HEAD_INIT(NULL
)
128 "_App.ThemeDrawingState", /*tp_name*/
129 sizeof(ThemeDrawingStateObject
), /*tp_basicsize*/
132 (destructor
) ThemeDrawingStateObj_dealloc
, /*tp_dealloc*/
134 (getattrfunc
) ThemeDrawingStateObj_getattr
, /*tp_getattr*/
135 (setattrfunc
) ThemeDrawingStateObj_setattr
, /*tp_setattr*/
136 (cmpfunc
) ThemeDrawingStateObj_compare
, /*tp_compare*/
137 (reprfunc
) ThemeDrawingStateObj_repr
, /*tp_repr*/
138 (PyNumberMethods
*)0, /* tp_as_number */
139 (PySequenceMethods
*)0, /* tp_as_sequence */
140 (PyMappingMethods
*)0, /* tp_as_mapping */
141 (hashfunc
) ThemeDrawingStateObj_hash
, /*tp_hash*/
144 /* --------------- End object type ThemeDrawingState ---------------- */
147 static PyObject
*App_RegisterAppearanceClient(PyObject
*_self
, PyObject
*_args
)
149 PyObject
*_res
= NULL
;
151 if (!PyArg_ParseTuple(_args
, ""))
153 _err
= RegisterAppearanceClient();
154 if (_err
!= noErr
) return PyMac_Error(_err
);
160 static PyObject
*App_UnregisterAppearanceClient(PyObject
*_self
, PyObject
*_args
)
162 PyObject
*_res
= NULL
;
164 if (!PyArg_ParseTuple(_args
, ""))
166 _err
= UnregisterAppearanceClient();
167 if (_err
!= noErr
) return PyMac_Error(_err
);
173 static PyObject
*App_SetThemePen(PyObject
*_self
, PyObject
*_args
)
175 PyObject
*_res
= NULL
;
179 Boolean inIsColorDevice
;
180 if (!PyArg_ParseTuple(_args
, "hhb",
185 _err
= SetThemePen(inBrush
,
188 if (_err
!= noErr
) return PyMac_Error(_err
);
194 static PyObject
*App_SetThemeBackground(PyObject
*_self
, PyObject
*_args
)
196 PyObject
*_res
= NULL
;
200 Boolean inIsColorDevice
;
201 if (!PyArg_ParseTuple(_args
, "hhb",
206 _err
= SetThemeBackground(inBrush
,
209 if (_err
!= noErr
) return PyMac_Error(_err
);
215 static PyObject
*App_SetThemeTextColor(PyObject
*_self
, PyObject
*_args
)
217 PyObject
*_res
= NULL
;
219 ThemeTextColor inColor
;
221 Boolean inIsColorDevice
;
222 if (!PyArg_ParseTuple(_args
, "hhb",
227 _err
= SetThemeTextColor(inColor
,
230 if (_err
!= noErr
) return PyMac_Error(_err
);
236 static PyObject
*App_SetThemeWindowBackground(PyObject
*_self
, PyObject
*_args
)
238 PyObject
*_res
= NULL
;
243 if (!PyArg_ParseTuple(_args
, "O&hb",
244 WinObj_Convert
, &inWindow
,
248 _err
= SetThemeWindowBackground(inWindow
,
251 if (_err
!= noErr
) return PyMac_Error(_err
);
257 static PyObject
*App_DrawThemeWindowHeader(PyObject
*_self
, PyObject
*_args
)
259 PyObject
*_res
= NULL
;
262 ThemeDrawState inState
;
263 if (!PyArg_ParseTuple(_args
, "O&l",
264 PyMac_GetRect
, &inRect
,
267 _err
= DrawThemeWindowHeader(&inRect
,
269 if (_err
!= noErr
) return PyMac_Error(_err
);
275 static PyObject
*App_DrawThemeWindowListViewHeader(PyObject
*_self
, PyObject
*_args
)
277 PyObject
*_res
= NULL
;
280 ThemeDrawState inState
;
281 if (!PyArg_ParseTuple(_args
, "O&l",
282 PyMac_GetRect
, &inRect
,
285 _err
= DrawThemeWindowListViewHeader(&inRect
,
287 if (_err
!= noErr
) return PyMac_Error(_err
);
293 static PyObject
*App_DrawThemePlacard(PyObject
*_self
, PyObject
*_args
)
295 PyObject
*_res
= NULL
;
298 ThemeDrawState inState
;
299 if (!PyArg_ParseTuple(_args
, "O&l",
300 PyMac_GetRect
, &inRect
,
303 _err
= DrawThemePlacard(&inRect
,
305 if (_err
!= noErr
) return PyMac_Error(_err
);
311 static PyObject
*App_DrawThemeEditTextFrame(PyObject
*_self
, PyObject
*_args
)
313 PyObject
*_res
= NULL
;
316 ThemeDrawState inState
;
317 if (!PyArg_ParseTuple(_args
, "O&l",
318 PyMac_GetRect
, &inRect
,
321 _err
= DrawThemeEditTextFrame(&inRect
,
323 if (_err
!= noErr
) return PyMac_Error(_err
);
329 static PyObject
*App_DrawThemeListBoxFrame(PyObject
*_self
, PyObject
*_args
)
331 PyObject
*_res
= NULL
;
334 ThemeDrawState inState
;
335 if (!PyArg_ParseTuple(_args
, "O&l",
336 PyMac_GetRect
, &inRect
,
339 _err
= DrawThemeListBoxFrame(&inRect
,
341 if (_err
!= noErr
) return PyMac_Error(_err
);
347 static PyObject
*App_DrawThemeFocusRect(PyObject
*_self
, PyObject
*_args
)
349 PyObject
*_res
= NULL
;
353 if (!PyArg_ParseTuple(_args
, "O&b",
354 PyMac_GetRect
, &inRect
,
357 _err
= DrawThemeFocusRect(&inRect
,
359 if (_err
!= noErr
) return PyMac_Error(_err
);
365 static PyObject
*App_DrawThemePrimaryGroup(PyObject
*_self
, PyObject
*_args
)
367 PyObject
*_res
= NULL
;
370 ThemeDrawState inState
;
371 if (!PyArg_ParseTuple(_args
, "O&l",
372 PyMac_GetRect
, &inRect
,
375 _err
= DrawThemePrimaryGroup(&inRect
,
377 if (_err
!= noErr
) return PyMac_Error(_err
);
383 static PyObject
*App_DrawThemeSecondaryGroup(PyObject
*_self
, PyObject
*_args
)
385 PyObject
*_res
= NULL
;
388 ThemeDrawState inState
;
389 if (!PyArg_ParseTuple(_args
, "O&l",
390 PyMac_GetRect
, &inRect
,
393 _err
= DrawThemeSecondaryGroup(&inRect
,
395 if (_err
!= noErr
) return PyMac_Error(_err
);
401 static PyObject
*App_DrawThemeSeparator(PyObject
*_self
, PyObject
*_args
)
403 PyObject
*_res
= NULL
;
406 ThemeDrawState inState
;
407 if (!PyArg_ParseTuple(_args
, "O&l",
408 PyMac_GetRect
, &inRect
,
411 _err
= DrawThemeSeparator(&inRect
,
413 if (_err
!= noErr
) return PyMac_Error(_err
);
419 static PyObject
*App_DrawThemeModelessDialogFrame(PyObject
*_self
, PyObject
*_args
)
421 PyObject
*_res
= NULL
;
424 ThemeDrawState inState
;
425 if (!PyArg_ParseTuple(_args
, "O&l",
426 PyMac_GetRect
, &inRect
,
429 _err
= DrawThemeModelessDialogFrame(&inRect
,
431 if (_err
!= noErr
) return PyMac_Error(_err
);
437 static PyObject
*App_DrawThemeGenericWell(PyObject
*_self
, PyObject
*_args
)
439 PyObject
*_res
= NULL
;
442 ThemeDrawState inState
;
443 Boolean inFillCenter
;
444 if (!PyArg_ParseTuple(_args
, "O&lb",
445 PyMac_GetRect
, &inRect
,
449 _err
= DrawThemeGenericWell(&inRect
,
452 if (_err
!= noErr
) return PyMac_Error(_err
);
458 static PyObject
*App_DrawThemeFocusRegion(PyObject
*_self
, PyObject
*_args
)
460 PyObject
*_res
= NULL
;
463 if (!PyArg_ParseTuple(_args
, "b",
466 _err
= DrawThemeFocusRegion((RgnHandle
)0,
468 if (_err
!= noErr
) return PyMac_Error(_err
);
474 static PyObject
*App_IsThemeInColor(PyObject
*_self
, PyObject
*_args
)
476 PyObject
*_res
= NULL
;
479 Boolean inIsColorDevice
;
480 if (!PyArg_ParseTuple(_args
, "hb",
484 _rv
= IsThemeInColor(inDepth
,
486 _res
= Py_BuildValue("b",
491 static PyObject
*App_GetThemeAccentColors(PyObject
*_self
, PyObject
*_args
)
493 PyObject
*_res
= NULL
;
495 CTabHandle outColors
;
496 if (!PyArg_ParseTuple(_args
, ""))
498 _err
= GetThemeAccentColors(&outColors
);
499 if (_err
!= noErr
) return PyMac_Error(_err
);
500 _res
= Py_BuildValue("O&",
501 ResObj_New
, outColors
);
505 static PyObject
*App_DrawThemeMenuBarBackground(PyObject
*_self
, PyObject
*_args
)
507 PyObject
*_res
= NULL
;
510 ThemeMenuBarState inState
;
512 if (!PyArg_ParseTuple(_args
, "O&Hl",
513 PyMac_GetRect
, &inBounds
,
517 _err
= DrawThemeMenuBarBackground(&inBounds
,
520 if (_err
!= noErr
) return PyMac_Error(_err
);
526 static PyObject
*App_GetThemeMenuBarHeight(PyObject
*_self
, PyObject
*_args
)
528 PyObject
*_res
= NULL
;
531 if (!PyArg_ParseTuple(_args
, ""))
533 _err
= GetThemeMenuBarHeight(&outHeight
);
534 if (_err
!= noErr
) return PyMac_Error(_err
);
535 _res
= Py_BuildValue("h",
540 static PyObject
*App_DrawThemeMenuBackground(PyObject
*_self
, PyObject
*_args
)
542 PyObject
*_res
= NULL
;
545 ThemeMenuType inMenuType
;
546 if (!PyArg_ParseTuple(_args
, "O&H",
547 PyMac_GetRect
, &inMenuRect
,
550 _err
= DrawThemeMenuBackground(&inMenuRect
,
552 if (_err
!= noErr
) return PyMac_Error(_err
);
558 static PyObject
*App_GetThemeMenuBackgroundRegion(PyObject
*_self
, PyObject
*_args
)
560 PyObject
*_res
= NULL
;
563 ThemeMenuType menuType
;
564 if (!PyArg_ParseTuple(_args
, "O&H",
565 PyMac_GetRect
, &inMenuRect
,
568 _err
= GetThemeMenuBackgroundRegion(&inMenuRect
,
571 if (_err
!= noErr
) return PyMac_Error(_err
);
577 static PyObject
*App_DrawThemeMenuSeparator(PyObject
*_self
, PyObject
*_args
)
579 PyObject
*_res
= NULL
;
582 if (!PyArg_ParseTuple(_args
, "O&",
583 PyMac_GetRect
, &inItemRect
))
585 _err
= DrawThemeMenuSeparator(&inItemRect
);
586 if (_err
!= noErr
) return PyMac_Error(_err
);
592 static PyObject
*App_GetThemeMenuSeparatorHeight(PyObject
*_self
, PyObject
*_args
)
594 PyObject
*_res
= NULL
;
597 if (!PyArg_ParseTuple(_args
, ""))
599 _err
= GetThemeMenuSeparatorHeight(&outHeight
);
600 if (_err
!= noErr
) return PyMac_Error(_err
);
601 _res
= Py_BuildValue("h",
606 static PyObject
*App_GetThemeMenuItemExtra(PyObject
*_self
, PyObject
*_args
)
608 PyObject
*_res
= NULL
;
610 ThemeMenuItemType inItemType
;
613 if (!PyArg_ParseTuple(_args
, "H",
616 _err
= GetThemeMenuItemExtra(inItemType
,
619 if (_err
!= noErr
) return PyMac_Error(_err
);
620 _res
= Py_BuildValue("hh",
626 static PyObject
*App_GetThemeMenuTitleExtra(PyObject
*_self
, PyObject
*_args
)
628 PyObject
*_res
= NULL
;
631 Boolean inIsSquished
;
632 if (!PyArg_ParseTuple(_args
, "b",
635 _err
= GetThemeMenuTitleExtra(&outWidth
,
637 if (_err
!= noErr
) return PyMac_Error(_err
);
638 _res
= Py_BuildValue("h",
643 static PyObject
*App_DrawThemeTabPane(PyObject
*_self
, PyObject
*_args
)
645 PyObject
*_res
= NULL
;
648 ThemeDrawState inState
;
649 if (!PyArg_ParseTuple(_args
, "O&l",
650 PyMac_GetRect
, &inRect
,
653 _err
= DrawThemeTabPane(&inRect
,
655 if (_err
!= noErr
) return PyMac_Error(_err
);
661 static PyObject
*App_GetThemeTabRegion(PyObject
*_self
, PyObject
*_args
)
663 PyObject
*_res
= NULL
;
666 ThemeTabStyle inStyle
;
667 ThemeTabDirection inDirection
;
668 if (!PyArg_ParseTuple(_args
, "O&HH",
669 PyMac_GetRect
, &inRect
,
673 _err
= GetThemeTabRegion(&inRect
,
677 if (_err
!= noErr
) return PyMac_Error(_err
);
683 static PyObject
*App_SetThemeCursor(PyObject
*_self
, PyObject
*_args
)
685 PyObject
*_res
= NULL
;
687 ThemeCursor inCursor
;
688 if (!PyArg_ParseTuple(_args
, "l",
691 _err
= SetThemeCursor(inCursor
);
692 if (_err
!= noErr
) return PyMac_Error(_err
);
698 static PyObject
*App_SetAnimatedThemeCursor(PyObject
*_self
, PyObject
*_args
)
700 PyObject
*_res
= NULL
;
702 ThemeCursor inCursor
;
703 UInt32 inAnimationStep
;
704 if (!PyArg_ParseTuple(_args
, "ll",
708 _err
= SetAnimatedThemeCursor(inCursor
,
710 if (_err
!= noErr
) return PyMac_Error(_err
);
716 static PyObject
*App_GetThemeScrollBarThumbStyle(PyObject
*_self
, PyObject
*_args
)
718 PyObject
*_res
= NULL
;
720 ThemeScrollBarThumbStyle outStyle
;
721 if (!PyArg_ParseTuple(_args
, ""))
723 _err
= GetThemeScrollBarThumbStyle(&outStyle
);
724 if (_err
!= noErr
) return PyMac_Error(_err
);
725 _res
= Py_BuildValue("H",
730 static PyObject
*App_GetThemeScrollBarArrowStyle(PyObject
*_self
, PyObject
*_args
)
732 PyObject
*_res
= NULL
;
734 ThemeScrollBarArrowStyle outStyle
;
735 if (!PyArg_ParseTuple(_args
, ""))
737 _err
= GetThemeScrollBarArrowStyle(&outStyle
);
738 if (_err
!= noErr
) return PyMac_Error(_err
);
739 _res
= Py_BuildValue("H",
744 static PyObject
*App_GetThemeCheckBoxStyle(PyObject
*_self
, PyObject
*_args
)
746 PyObject
*_res
= NULL
;
748 ThemeCheckBoxStyle outStyle
;
749 if (!PyArg_ParseTuple(_args
, ""))
751 _err
= GetThemeCheckBoxStyle(&outStyle
);
752 if (_err
!= noErr
) return PyMac_Error(_err
);
753 _res
= Py_BuildValue("H",
758 static PyObject
*App_UseThemeFont(PyObject
*_self
, PyObject
*_args
)
760 PyObject
*_res
= NULL
;
762 ThemeFontID inFontID
;
764 if (!PyArg_ParseTuple(_args
, "Hh",
768 _err
= UseThemeFont(inFontID
,
770 if (_err
!= noErr
) return PyMac_Error(_err
);
776 #if TARGET_API_MAC_CARBON
778 static PyObject
*App_DrawThemeTextBox(PyObject
*_self
, PyObject
*_args
)
780 PyObject
*_res
= NULL
;
782 CFStringRef inString
;
783 ThemeFontID inFontID
;
784 ThemeDrawState inState
;
785 Boolean inWrapToWidth
;
788 if (!PyArg_ParseTuple(_args
, "O&HlbO&h",
789 CFStringRefObj_Convert
, &inString
,
793 PyMac_GetRect
, &inBoundingBox
,
796 _err
= DrawThemeTextBox(inString
,
803 if (_err
!= noErr
) return PyMac_Error(_err
);
810 #if TARGET_API_MAC_CARBON
812 static PyObject
*App_TruncateThemeText(PyObject
*_self
, PyObject
*_args
)
814 PyObject
*_res
= NULL
;
816 CFMutableStringRef inString
;
817 ThemeFontID inFontID
;
818 ThemeDrawState inState
;
819 SInt16 inPixelWidthLimit
;
820 TruncCode inTruncWhere
;
821 Boolean outTruncated
;
822 if (!PyArg_ParseTuple(_args
, "O&Hlhh",
823 CFMutableStringRefObj_Convert
, &inString
,
829 _err
= TruncateThemeText(inString
,
835 if (_err
!= noErr
) return PyMac_Error(_err
);
836 _res
= Py_BuildValue("b",
842 #if TARGET_API_MAC_CARBON
844 static PyObject
*App_GetThemeTextDimensions(PyObject
*_self
, PyObject
*_args
)
846 PyObject
*_res
= NULL
;
848 CFStringRef inString
;
849 ThemeFontID inFontID
;
850 ThemeDrawState inState
;
851 Boolean inWrapToWidth
;
854 if (!PyArg_ParseTuple(_args
, "O&HlbO&",
855 CFStringRefObj_Convert
, &inString
,
859 PyMac_GetPoint
, &ioBounds
))
861 _err
= GetThemeTextDimensions(inString
,
867 if (_err
!= noErr
) return PyMac_Error(_err
);
868 _res
= Py_BuildValue("O&h",
869 PyMac_BuildPoint
, ioBounds
,
875 #if TARGET_API_MAC_CARBON
877 static PyObject
*App_GetThemeTextShadowOutset(PyObject
*_self
, PyObject
*_args
)
879 PyObject
*_res
= NULL
;
881 ThemeFontID inFontID
;
882 ThemeDrawState inState
;
884 if (!PyArg_ParseTuple(_args
, "Hl",
888 _err
= GetThemeTextShadowOutset(inFontID
,
891 if (_err
!= noErr
) return PyMac_Error(_err
);
892 _res
= Py_BuildValue("O&",
893 PyMac_BuildRect
, &outOutset
);
898 static PyObject
*App_DrawThemeScrollBarArrows(PyObject
*_self
, PyObject
*_args
)
900 PyObject
*_res
= NULL
;
903 ThemeTrackEnableState enableState
;
904 ThemeTrackPressState pressState
;
907 if (!PyArg_ParseTuple(_args
, "O&bbb",
908 PyMac_GetRect
, &bounds
,
913 _err
= DrawThemeScrollBarArrows(&bounds
,
918 if (_err
!= noErr
) return PyMac_Error(_err
);
919 _res
= Py_BuildValue("O&",
920 PyMac_BuildRect
, &trackBounds
);
924 static PyObject
*App_GetThemeScrollBarTrackRect(PyObject
*_self
, PyObject
*_args
)
926 PyObject
*_res
= NULL
;
929 ThemeTrackEnableState enableState
;
930 ThemeTrackPressState pressState
;
933 if (!PyArg_ParseTuple(_args
, "O&bbb",
934 PyMac_GetRect
, &bounds
,
939 _err
= GetThemeScrollBarTrackRect(&bounds
,
944 if (_err
!= noErr
) return PyMac_Error(_err
);
945 _res
= Py_BuildValue("O&",
946 PyMac_BuildRect
, &trackBounds
);
950 static PyObject
*App_HitTestThemeScrollBarArrows(PyObject
*_self
, PyObject
*_args
)
952 PyObject
*_res
= NULL
;
954 Rect scrollBarBounds
;
955 ThemeTrackEnableState enableState
;
956 ThemeTrackPressState pressState
;
960 ControlPartCode partcode
;
961 if (!PyArg_ParseTuple(_args
, "O&bbbO&",
962 PyMac_GetRect
, &scrollBarBounds
,
966 PyMac_GetPoint
, &ptHit
))
968 _rv
= HitTestThemeScrollBarArrows(&scrollBarBounds
,
975 _res
= Py_BuildValue("bO&h",
977 PyMac_BuildRect
, &trackBounds
,
982 static PyObject
*App_DrawThemeScrollBarDelimiters(PyObject
*_self
, PyObject
*_args
)
984 PyObject
*_res
= NULL
;
986 ThemeWindowType flavor
;
988 ThemeDrawState state
;
989 ThemeWindowAttributes attributes
;
990 if (!PyArg_ParseTuple(_args
, "HO&ll",
992 PyMac_GetRect
, &inContRect
,
996 _err
= DrawThemeScrollBarDelimiters(flavor
,
1000 if (_err
!= noErr
) return PyMac_Error(_err
);
1006 static PyObject
*App_DrawThemeButton(PyObject
*_self
, PyObject
*_args
)
1008 PyObject
*_res
= NULL
;
1012 ThemeButtonDrawInfo inNewInfo
;
1013 ThemeButtonDrawInfo inPrevInfo
;
1015 if (!PyArg_ParseTuple(_args
, "O&HO&O&l",
1016 PyMac_GetRect
, &inBounds
,
1018 ThemeButtonDrawInfo_Convert
, &inNewInfo
,
1019 ThemeButtonDrawInfo_Convert
, &inPrevInfo
,
1022 _err
= DrawThemeButton(&inBounds
,
1029 if (_err
!= noErr
) return PyMac_Error(_err
);
1035 static PyObject
*App_GetThemeButtonRegion(PyObject
*_self
, PyObject
*_args
)
1037 PyObject
*_res
= NULL
;
1041 ThemeButtonDrawInfo inNewInfo
;
1042 if (!PyArg_ParseTuple(_args
, "O&HO&",
1043 PyMac_GetRect
, &inBounds
,
1045 ThemeButtonDrawInfo_Convert
, &inNewInfo
))
1047 _err
= GetThemeButtonRegion(&inBounds
,
1051 if (_err
!= noErr
) return PyMac_Error(_err
);
1057 static PyObject
*App_GetThemeButtonContentBounds(PyObject
*_self
, PyObject
*_args
)
1059 PyObject
*_res
= NULL
;
1063 ThemeButtonDrawInfo inDrawInfo
;
1065 if (!PyArg_ParseTuple(_args
, "O&HO&",
1066 PyMac_GetRect
, &inBounds
,
1068 ThemeButtonDrawInfo_Convert
, &inDrawInfo
))
1070 _err
= GetThemeButtonContentBounds(&inBounds
,
1074 if (_err
!= noErr
) return PyMac_Error(_err
);
1075 _res
= Py_BuildValue("O&",
1076 PyMac_BuildRect
, &outBounds
);
1080 static PyObject
*App_GetThemeButtonBackgroundBounds(PyObject
*_self
, PyObject
*_args
)
1082 PyObject
*_res
= NULL
;
1086 ThemeButtonDrawInfo inDrawInfo
;
1088 if (!PyArg_ParseTuple(_args
, "O&HO&",
1089 PyMac_GetRect
, &inBounds
,
1091 ThemeButtonDrawInfo_Convert
, &inDrawInfo
))
1093 _err
= GetThemeButtonBackgroundBounds(&inBounds
,
1097 if (_err
!= noErr
) return PyMac_Error(_err
);
1098 _res
= Py_BuildValue("O&",
1099 PyMac_BuildRect
, &outBounds
);
1103 static PyObject
*App_PlayThemeSound(PyObject
*_self
, PyObject
*_args
)
1105 PyObject
*_res
= NULL
;
1107 ThemeSoundKind kind
;
1108 if (!PyArg_ParseTuple(_args
, "O&",
1109 PyMac_GetOSType
, &kind
))
1111 _err
= PlayThemeSound(kind
);
1112 if (_err
!= noErr
) return PyMac_Error(_err
);
1118 static PyObject
*App_BeginThemeDragSound(PyObject
*_self
, PyObject
*_args
)
1120 PyObject
*_res
= NULL
;
1122 ThemeDragSoundKind kind
;
1123 if (!PyArg_ParseTuple(_args
, "O&",
1124 PyMac_GetOSType
, &kind
))
1126 _err
= BeginThemeDragSound(kind
);
1127 if (_err
!= noErr
) return PyMac_Error(_err
);
1133 static PyObject
*App_EndThemeDragSound(PyObject
*_self
, PyObject
*_args
)
1135 PyObject
*_res
= NULL
;
1137 if (!PyArg_ParseTuple(_args
, ""))
1139 _err
= EndThemeDragSound();
1140 if (_err
!= noErr
) return PyMac_Error(_err
);
1146 static PyObject
*App_DrawThemeTickMark(PyObject
*_self
, PyObject
*_args
)
1148 PyObject
*_res
= NULL
;
1151 ThemeDrawState state
;
1152 if (!PyArg_ParseTuple(_args
, "O&l",
1153 PyMac_GetRect
, &bounds
,
1156 _err
= DrawThemeTickMark(&bounds
,
1158 if (_err
!= noErr
) return PyMac_Error(_err
);
1164 static PyObject
*App_DrawThemeChasingArrows(PyObject
*_self
, PyObject
*_args
)
1166 PyObject
*_res
= NULL
;
1170 ThemeDrawState state
;
1172 if (!PyArg_ParseTuple(_args
, "O&lll",
1173 PyMac_GetRect
, &bounds
,
1178 _err
= DrawThemeChasingArrows(&bounds
,
1183 if (_err
!= noErr
) return PyMac_Error(_err
);
1189 static PyObject
*App_DrawThemePopupArrow(PyObject
*_self
, PyObject
*_args
)
1191 PyObject
*_res
= NULL
;
1194 ThemeArrowOrientation orientation
;
1195 ThemePopupArrowSize size
;
1196 ThemeDrawState state
;
1198 if (!PyArg_ParseTuple(_args
, "O&HHll",
1199 PyMac_GetRect
, &bounds
,
1205 _err
= DrawThemePopupArrow(&bounds
,
1211 if (_err
!= noErr
) return PyMac_Error(_err
);
1217 static PyObject
*App_DrawThemeStandaloneGrowBox(PyObject
*_self
, PyObject
*_args
)
1219 PyObject
*_res
= NULL
;
1222 ThemeGrowDirection growDirection
;
1224 ThemeDrawState state
;
1225 if (!PyArg_ParseTuple(_args
, "O&Hbl",
1226 PyMac_GetPoint
, &origin
,
1231 _err
= DrawThemeStandaloneGrowBox(origin
,
1235 if (_err
!= noErr
) return PyMac_Error(_err
);
1241 static PyObject
*App_DrawThemeStandaloneNoGrowBox(PyObject
*_self
, PyObject
*_args
)
1243 PyObject
*_res
= NULL
;
1246 ThemeGrowDirection growDirection
;
1248 ThemeDrawState state
;
1249 if (!PyArg_ParseTuple(_args
, "O&Hbl",
1250 PyMac_GetPoint
, &origin
,
1255 _err
= DrawThemeStandaloneNoGrowBox(origin
,
1259 if (_err
!= noErr
) return PyMac_Error(_err
);
1265 static PyObject
*App_GetThemeStandaloneGrowBoxBounds(PyObject
*_self
, PyObject
*_args
)
1267 PyObject
*_res
= NULL
;
1270 ThemeGrowDirection growDirection
;
1273 if (!PyArg_ParseTuple(_args
, "O&Hb",
1274 PyMac_GetPoint
, &origin
,
1278 _err
= GetThemeStandaloneGrowBoxBounds(origin
,
1282 if (_err
!= noErr
) return PyMac_Error(_err
);
1283 _res
= Py_BuildValue("O&",
1284 PyMac_BuildRect
, &bounds
);
1288 static PyObject
*App_NormalizeThemeDrawingState(PyObject
*_self
, PyObject
*_args
)
1290 PyObject
*_res
= NULL
;
1292 if (!PyArg_ParseTuple(_args
, ""))
1294 _err
= NormalizeThemeDrawingState();
1295 if (_err
!= noErr
) return PyMac_Error(_err
);
1301 static PyObject
*App_GetThemeDrawingState(PyObject
*_self
, PyObject
*_args
)
1303 PyObject
*_res
= NULL
;
1305 ThemeDrawingState outState
;
1306 if (!PyArg_ParseTuple(_args
, ""))
1308 _err
= GetThemeDrawingState(&outState
);
1309 if (_err
!= noErr
) return PyMac_Error(_err
);
1310 _res
= Py_BuildValue("O&",
1311 ThemeDrawingStateObj_New
, outState
);
1315 static PyObject
*App_ApplyThemeBackground(PyObject
*_self
, PyObject
*_args
)
1317 PyObject
*_res
= NULL
;
1319 ThemeBackgroundKind inKind
;
1321 ThemeDrawState inState
;
1324 if (!PyArg_ParseTuple(_args
, "lO&lhb",
1326 PyMac_GetRect
, &bounds
,
1331 _err
= ApplyThemeBackground(inKind
,
1336 if (_err
!= noErr
) return PyMac_Error(_err
);
1342 static PyObject
*App_SetThemeTextColorForWindow(PyObject
*_self
, PyObject
*_args
)
1344 PyObject
*_res
= NULL
;
1350 if (!PyArg_ParseTuple(_args
, "O&bhb",
1351 WinObj_Convert
, &window
,
1356 _err
= SetThemeTextColorForWindow(window
,
1360 if (_err
!= noErr
) return PyMac_Error(_err
);
1366 static PyObject
*App_IsValidAppearanceFileType(PyObject
*_self
, PyObject
*_args
)
1368 PyObject
*_res
= NULL
;
1371 if (!PyArg_ParseTuple(_args
, "O&",
1372 PyMac_GetOSType
, &fileType
))
1374 _rv
= IsValidAppearanceFileType(fileType
);
1375 _res
= Py_BuildValue("b",
1380 static PyObject
*App_GetThemeBrushAsColor(PyObject
*_self
, PyObject
*_args
)
1382 PyObject
*_res
= NULL
;
1388 if (!PyArg_ParseTuple(_args
, "hhb",
1393 _err
= GetThemeBrushAsColor(inBrush
,
1397 if (_err
!= noErr
) return PyMac_Error(_err
);
1398 _res
= Py_BuildValue("O&",
1399 QdRGB_New
, &outColor
);
1403 static PyObject
*App_GetThemeTextColor(PyObject
*_self
, PyObject
*_args
)
1405 PyObject
*_res
= NULL
;
1407 ThemeTextColor inColor
;
1411 if (!PyArg_ParseTuple(_args
, "hhb",
1416 _err
= GetThemeTextColor(inColor
,
1420 if (_err
!= noErr
) return PyMac_Error(_err
);
1421 _res
= Py_BuildValue("O&",
1422 QdRGB_New
, &outColor
);
1426 #if TARGET_API_MAC_CARBON
1428 static PyObject
*App_GetThemeMetric(PyObject
*_self
, PyObject
*_args
)
1430 PyObject
*_res
= NULL
;
1432 ThemeMetric inMetric
;
1434 if (!PyArg_ParseTuple(_args
, "l",
1437 _err
= GetThemeMetric(inMetric
,
1439 if (_err
!= noErr
) return PyMac_Error(_err
);
1440 _res
= Py_BuildValue("l",
1446 static PyMethodDef App_methods
[] = {
1447 {"RegisterAppearanceClient", (PyCFunction
)App_RegisterAppearanceClient
, 1,
1449 {"UnregisterAppearanceClient", (PyCFunction
)App_UnregisterAppearanceClient
, 1,
1451 {"SetThemePen", (PyCFunction
)App_SetThemePen
, 1,
1452 "(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None"},
1453 {"SetThemeBackground", (PyCFunction
)App_SetThemeBackground
, 1,
1454 "(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None"},
1455 {"SetThemeTextColor", (PyCFunction
)App_SetThemeTextColor
, 1,
1456 "(ThemeTextColor inColor, SInt16 inDepth, Boolean inIsColorDevice) -> None"},
1457 {"SetThemeWindowBackground", (PyCFunction
)App_SetThemeWindowBackground
, 1,
1458 "(WindowPtr inWindow, ThemeBrush inBrush, Boolean inUpdate) -> None"},
1459 {"DrawThemeWindowHeader", (PyCFunction
)App_DrawThemeWindowHeader
, 1,
1460 "(Rect inRect, ThemeDrawState inState) -> None"},
1461 {"DrawThemeWindowListViewHeader", (PyCFunction
)App_DrawThemeWindowListViewHeader
, 1,
1462 "(Rect inRect, ThemeDrawState inState) -> None"},
1463 {"DrawThemePlacard", (PyCFunction
)App_DrawThemePlacard
, 1,
1464 "(Rect inRect, ThemeDrawState inState) -> None"},
1465 {"DrawThemeEditTextFrame", (PyCFunction
)App_DrawThemeEditTextFrame
, 1,
1466 "(Rect inRect, ThemeDrawState inState) -> None"},
1467 {"DrawThemeListBoxFrame", (PyCFunction
)App_DrawThemeListBoxFrame
, 1,
1468 "(Rect inRect, ThemeDrawState inState) -> None"},
1469 {"DrawThemeFocusRect", (PyCFunction
)App_DrawThemeFocusRect
, 1,
1470 "(Rect inRect, Boolean inHasFocus) -> None"},
1471 {"DrawThemePrimaryGroup", (PyCFunction
)App_DrawThemePrimaryGroup
, 1,
1472 "(Rect inRect, ThemeDrawState inState) -> None"},
1473 {"DrawThemeSecondaryGroup", (PyCFunction
)App_DrawThemeSecondaryGroup
, 1,
1474 "(Rect inRect, ThemeDrawState inState) -> None"},
1475 {"DrawThemeSeparator", (PyCFunction
)App_DrawThemeSeparator
, 1,
1476 "(Rect inRect, ThemeDrawState inState) -> None"},
1477 {"DrawThemeModelessDialogFrame", (PyCFunction
)App_DrawThemeModelessDialogFrame
, 1,
1478 "(Rect inRect, ThemeDrawState inState) -> None"},
1479 {"DrawThemeGenericWell", (PyCFunction
)App_DrawThemeGenericWell
, 1,
1480 "(Rect inRect, ThemeDrawState inState, Boolean inFillCenter) -> None"},
1481 {"DrawThemeFocusRegion", (PyCFunction
)App_DrawThemeFocusRegion
, 1,
1482 "(Boolean inHasFocus) -> None"},
1483 {"IsThemeInColor", (PyCFunction
)App_IsThemeInColor
, 1,
1484 "(SInt16 inDepth, Boolean inIsColorDevice) -> (Boolean _rv)"},
1485 {"GetThemeAccentColors", (PyCFunction
)App_GetThemeAccentColors
, 1,
1486 "() -> (CTabHandle outColors)"},
1487 {"DrawThemeMenuBarBackground", (PyCFunction
)App_DrawThemeMenuBarBackground
, 1,
1488 "(Rect inBounds, ThemeMenuBarState inState, UInt32 inAttributes) -> None"},
1489 {"GetThemeMenuBarHeight", (PyCFunction
)App_GetThemeMenuBarHeight
, 1,
1490 "() -> (SInt16 outHeight)"},
1491 {"DrawThemeMenuBackground", (PyCFunction
)App_DrawThemeMenuBackground
, 1,
1492 "(Rect inMenuRect, ThemeMenuType inMenuType) -> None"},
1493 {"GetThemeMenuBackgroundRegion", (PyCFunction
)App_GetThemeMenuBackgroundRegion
, 1,
1494 "(Rect inMenuRect, ThemeMenuType menuType) -> None"},
1495 {"DrawThemeMenuSeparator", (PyCFunction
)App_DrawThemeMenuSeparator
, 1,
1496 "(Rect inItemRect) -> None"},
1497 {"GetThemeMenuSeparatorHeight", (PyCFunction
)App_GetThemeMenuSeparatorHeight
, 1,
1498 "() -> (SInt16 outHeight)"},
1499 {"GetThemeMenuItemExtra", (PyCFunction
)App_GetThemeMenuItemExtra
, 1,
1500 "(ThemeMenuItemType inItemType) -> (SInt16 outHeight, SInt16 outWidth)"},
1501 {"GetThemeMenuTitleExtra", (PyCFunction
)App_GetThemeMenuTitleExtra
, 1,
1502 "(Boolean inIsSquished) -> (SInt16 outWidth)"},
1503 {"DrawThemeTabPane", (PyCFunction
)App_DrawThemeTabPane
, 1,
1504 "(Rect inRect, ThemeDrawState inState) -> None"},
1505 {"GetThemeTabRegion", (PyCFunction
)App_GetThemeTabRegion
, 1,
1506 "(Rect inRect, ThemeTabStyle inStyle, ThemeTabDirection inDirection) -> None"},
1507 {"SetThemeCursor", (PyCFunction
)App_SetThemeCursor
, 1,
1508 "(ThemeCursor inCursor) -> None"},
1509 {"SetAnimatedThemeCursor", (PyCFunction
)App_SetAnimatedThemeCursor
, 1,
1510 "(ThemeCursor inCursor, UInt32 inAnimationStep) -> None"},
1511 {"GetThemeScrollBarThumbStyle", (PyCFunction
)App_GetThemeScrollBarThumbStyle
, 1,
1512 "() -> (ThemeScrollBarThumbStyle outStyle)"},
1513 {"GetThemeScrollBarArrowStyle", (PyCFunction
)App_GetThemeScrollBarArrowStyle
, 1,
1514 "() -> (ThemeScrollBarArrowStyle outStyle)"},
1515 {"GetThemeCheckBoxStyle", (PyCFunction
)App_GetThemeCheckBoxStyle
, 1,
1516 "() -> (ThemeCheckBoxStyle outStyle)"},
1517 {"UseThemeFont", (PyCFunction
)App_UseThemeFont
, 1,
1518 "(ThemeFontID inFontID, ScriptCode inScript) -> None"},
1520 #if TARGET_API_MAC_CARBON
1521 {"DrawThemeTextBox", (PyCFunction
)App_DrawThemeTextBox
, 1,
1522 "(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Rect inBoundingBox, SInt16 inJust) -> None"},
1525 #if TARGET_API_MAC_CARBON
1526 {"TruncateThemeText", (PyCFunction
)App_TruncateThemeText
, 1,
1527 "(CFMutableStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, SInt16 inPixelWidthLimit, TruncCode inTruncWhere) -> (Boolean outTruncated)"},
1530 #if TARGET_API_MAC_CARBON
1531 {"GetThemeTextDimensions", (PyCFunction
)App_GetThemeTextDimensions
, 1,
1532 "(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Point ioBounds) -> (Point ioBounds, SInt16 outBaseline)"},
1535 #if TARGET_API_MAC_CARBON
1536 {"GetThemeTextShadowOutset", (PyCFunction
)App_GetThemeTextShadowOutset
, 1,
1537 "(ThemeFontID inFontID, ThemeDrawState inState) -> (Rect outOutset)"},
1539 {"DrawThemeScrollBarArrows", (PyCFunction
)App_DrawThemeScrollBarArrows
, 1,
1540 "(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)"},
1541 {"GetThemeScrollBarTrackRect", (PyCFunction
)App_GetThemeScrollBarTrackRect
, 1,
1542 "(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)"},
1543 {"HitTestThemeScrollBarArrows", (PyCFunction
)App_HitTestThemeScrollBarArrows
, 1,
1544 "(Rect scrollBarBounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz, Point ptHit) -> (Boolean _rv, Rect trackBounds, ControlPartCode partcode)"},
1545 {"DrawThemeScrollBarDelimiters", (PyCFunction
)App_DrawThemeScrollBarDelimiters
, 1,
1546 "(ThemeWindowType flavor, Rect inContRect, ThemeDrawState state, ThemeWindowAttributes attributes) -> None"},
1547 {"DrawThemeButton", (PyCFunction
)App_DrawThemeButton
, 1,
1548 "(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inNewInfo, ThemeButtonDrawInfo inPrevInfo, UInt32 inUserData) -> None"},
1549 {"GetThemeButtonRegion", (PyCFunction
)App_GetThemeButtonRegion
, 1,
1550 "(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inNewInfo) -> None"},
1551 {"GetThemeButtonContentBounds", (PyCFunction
)App_GetThemeButtonContentBounds
, 1,
1552 "(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inDrawInfo) -> (Rect outBounds)"},
1553 {"GetThemeButtonBackgroundBounds", (PyCFunction
)App_GetThemeButtonBackgroundBounds
, 1,
1554 "(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inDrawInfo) -> (Rect outBounds)"},
1555 {"PlayThemeSound", (PyCFunction
)App_PlayThemeSound
, 1,
1556 "(ThemeSoundKind kind) -> None"},
1557 {"BeginThemeDragSound", (PyCFunction
)App_BeginThemeDragSound
, 1,
1558 "(ThemeDragSoundKind kind) -> None"},
1559 {"EndThemeDragSound", (PyCFunction
)App_EndThemeDragSound
, 1,
1561 {"DrawThemeTickMark", (PyCFunction
)App_DrawThemeTickMark
, 1,
1562 "(Rect bounds, ThemeDrawState state) -> None"},
1563 {"DrawThemeChasingArrows", (PyCFunction
)App_DrawThemeChasingArrows
, 1,
1564 "(Rect bounds, UInt32 index, ThemeDrawState state, UInt32 eraseData) -> None"},
1565 {"DrawThemePopupArrow", (PyCFunction
)App_DrawThemePopupArrow
, 1,
1566 "(Rect bounds, ThemeArrowOrientation orientation, ThemePopupArrowSize size, ThemeDrawState state, UInt32 eraseData) -> None"},
1567 {"DrawThemeStandaloneGrowBox", (PyCFunction
)App_DrawThemeStandaloneGrowBox
, 1,
1568 "(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None"},
1569 {"DrawThemeStandaloneNoGrowBox", (PyCFunction
)App_DrawThemeStandaloneNoGrowBox
, 1,
1570 "(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None"},
1571 {"GetThemeStandaloneGrowBoxBounds", (PyCFunction
)App_GetThemeStandaloneGrowBoxBounds
, 1,
1572 "(Point origin, ThemeGrowDirection growDirection, Boolean isSmall) -> (Rect bounds)"},
1573 {"NormalizeThemeDrawingState", (PyCFunction
)App_NormalizeThemeDrawingState
, 1,
1575 {"GetThemeDrawingState", (PyCFunction
)App_GetThemeDrawingState
, 1,
1576 "() -> (ThemeDrawingState outState)"},
1577 {"ApplyThemeBackground", (PyCFunction
)App_ApplyThemeBackground
, 1,
1578 "(ThemeBackgroundKind inKind, Rect bounds, ThemeDrawState inState, SInt16 inDepth, Boolean inColorDev) -> None"},
1579 {"SetThemeTextColorForWindow", (PyCFunction
)App_SetThemeTextColorForWindow
, 1,
1580 "(WindowPtr window, Boolean isActive, SInt16 depth, Boolean isColorDev) -> None"},
1581 {"IsValidAppearanceFileType", (PyCFunction
)App_IsValidAppearanceFileType
, 1,
1582 "(OSType fileType) -> (Boolean _rv)"},
1583 {"GetThemeBrushAsColor", (PyCFunction
)App_GetThemeBrushAsColor
, 1,
1584 "(ThemeBrush inBrush, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)"},
1585 {"GetThemeTextColor", (PyCFunction
)App_GetThemeTextColor
, 1,
1586 "(ThemeTextColor inColor, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)"},
1588 #if TARGET_API_MAC_CARBON
1589 {"GetThemeMetric", (PyCFunction
)App_GetThemeMetric
, 1,
1590 "(ThemeMetric inMetric) -> (SInt32 outMetric)"},
1606 m
= Py_InitModule("_App", App_methods
);
1607 d
= PyModule_GetDict(m
);
1608 App_Error
= PyMac_GetOSErrException();
1609 if (App_Error
== NULL
||
1610 PyDict_SetItemString(d
, "Error", App_Error
) != 0)
1612 ThemeDrawingState_Type
.ob_type
= &PyType_Type
;
1613 Py_INCREF(&ThemeDrawingState_Type
);
1614 if (PyDict_SetItemString(d
, "ThemeDrawingStateType", (PyObject
*)&ThemeDrawingState_Type
) != 0)
1615 Py_FatalError("can't initialize ThemeDrawingStateType");
1618 /* ======================== End module _App ========================= */