Moved a bunch of routines from "blacklisted" to "graylisted", as they _are_
available in OSX (mach-o) but not in CarbonLib (neither on OSX or OS9).
diff --git a/Mac/Modules/ctl/_Ctlmodule.c b/Mac/Modules/ctl/_Ctlmodule.c
index b2ba986..d15ed90 100644
--- a/Mac/Modules/ctl/_Ctlmodule.c
+++ b/Mac/Modules/ctl/_Ctlmodule.c
@@ -311,6 +311,62 @@
 	return _res;
 }
 
+#if TARGET_API_MAC_OSX
+
+static PyObject *CtlObj_IsControlEnabled(ControlObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	Boolean _rv;
+#ifndef IsControlEnabled
+	PyMac_PRECHECK(IsControlEnabled);
+#endif
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_rv = IsControlEnabled(_self->ob_itself);
+	_res = Py_BuildValue("b",
+	                     _rv);
+	return _res;
+}
+#endif
+
+#if TARGET_API_MAC_OSX
+
+static PyObject *CtlObj_EnableControl(ControlObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+#ifndef EnableControl
+	PyMac_PRECHECK(EnableControl);
+#endif
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_err = EnableControl(_self->ob_itself);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+#endif
+
+#if TARGET_API_MAC_OSX
+
+static PyObject *CtlObj_DisableControl(ControlObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+#ifndef DisableControl
+	PyMac_PRECHECK(DisableControl);
+#endif
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_err = DisableControl(_self->ob_itself);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+#endif
+
 static PyObject *CtlObj_Draw1Control(ControlObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
@@ -2615,6 +2671,27 @@
 }
 #endif
 
+#if TARGET_API_MAC_OSX
+
+static PyObject *CtlObj_CopyDataBrowserEditText(ControlObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	CFStringRef text;
+#ifndef CopyDataBrowserEditText
+	PyMac_PRECHECK(CopyDataBrowserEditText);
+#endif
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_err = CopyDataBrowserEditText(_self->ob_itself,
+	                               &text);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CFStringRefObj_New, text);
+	return _res;
+}
+#endif
+
 #if TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_GetDataBrowserEditText(ControlObject *_self, PyObject *_args)
@@ -3795,6 +3872,21 @@
 	 "() -> None"},
 	{"SetControlVisibility", (PyCFunction)CtlObj_SetControlVisibility, 1,
 	 "(Boolean inIsVisible, Boolean inDoDraw) -> None"},
+
+#if TARGET_API_MAC_OSX
+	{"IsControlEnabled", (PyCFunction)CtlObj_IsControlEnabled, 1,
+	 "() -> (Boolean _rv)"},
+#endif
+
+#if TARGET_API_MAC_OSX
+	{"EnableControl", (PyCFunction)CtlObj_EnableControl, 1,
+	 "() -> None"},
+#endif
+
+#if TARGET_API_MAC_OSX
+	{"DisableControl", (PyCFunction)CtlObj_DisableControl, 1,
+	 "() -> None"},
+#endif
 	{"Draw1Control", (PyCFunction)CtlObj_Draw1Control, 1,
 	 "() -> None"},
 	{"GetBestControlRect", (PyCFunction)CtlObj_GetBestControlRect, 1,
@@ -4209,6 +4301,11 @@
 	 "(CFStringRef text) -> None"},
 #endif
 
+#if TARGET_API_MAC_OSX
+	{"CopyDataBrowserEditText", (PyCFunction)CtlObj_CopyDataBrowserEditText, 1,
+	 "() -> (CFStringRef text)"},
+#endif
+
 #if TARGET_API_MAC_CARBON
 	{"GetDataBrowserEditText", (PyCFunction)CtlObj_GetDataBrowserEditText, 1,
 	 "(CFMutableStringRef text) -> None"},
@@ -4971,6 +5068,41 @@
 }
 #endif
 
+#if TARGET_API_MAC_OSX
+
+static PyObject *Ctl_CreateRelevanceBarControl(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	WindowPtr window;
+	Rect boundsRect;
+	SInt32 value;
+	SInt32 minimum;
+	SInt32 maximum;
+	ControlHandle outControl;
+#ifndef CreateRelevanceBarControl
+	PyMac_PRECHECK(CreateRelevanceBarControl);
+#endif
+	if (!PyArg_ParseTuple(_args, "O&O&lll",
+	                      WinObj_Convert, &window,
+	                      PyMac_GetRect, &boundsRect,
+	                      &value,
+	                      &minimum,
+	                      &maximum))
+		return NULL;
+	_err = CreateRelevanceBarControl(window,
+	                                 &boundsRect,
+	                                 value,
+	                                 minimum,
+	                                 maximum,
+	                                 &outControl);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CtlObj_New, outControl);
+	return _res;
+}
+#endif
+
 #if TARGET_API_MAC_CARBON
 
 static PyObject *Ctl_CreateLittleArrowsControl(PyObject *_self, PyObject *_args)
@@ -5734,6 +5866,70 @@
 }
 #endif
 
+#if TARGET_API_MAC_OSX
+
+static PyObject *Ctl_CreateDisclosureButtonControl(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	WindowPtr inWindow;
+	Rect inBoundsRect;
+	SInt32 inValue;
+	Boolean inAutoToggles;
+	ControlHandle outControl;
+#ifndef CreateDisclosureButtonControl
+	PyMac_PRECHECK(CreateDisclosureButtonControl);
+#endif
+	if (!PyArg_ParseTuple(_args, "O&O&lb",
+	                      WinObj_Convert, &inWindow,
+	                      PyMac_GetRect, &inBoundsRect,
+	                      &inValue,
+	                      &inAutoToggles))
+		return NULL;
+	_err = CreateDisclosureButtonControl(inWindow,
+	                                     &inBoundsRect,
+	                                     inValue,
+	                                     inAutoToggles,
+	                                     &outControl);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CtlObj_New, outControl);
+	return _res;
+}
+#endif
+
+#if TARGET_API_MAC_OSX
+
+static PyObject *Ctl_CreateRoundButtonControl(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	WindowPtr inWindow;
+	Rect inBoundsRect;
+	SInt16 inSize;
+	ControlButtonContentInfo inContent;
+	ControlHandle outControl;
+#ifndef CreateRoundButtonControl
+	PyMac_PRECHECK(CreateRoundButtonControl);
+#endif
+	if (!PyArg_ParseTuple(_args, "O&O&hO&",
+	                      WinObj_Convert, &inWindow,
+	                      PyMac_GetRect, &inBoundsRect,
+	                      &inSize,
+	                      ControlButtonContentInfo_Convert, &inContent))
+		return NULL;
+	_err = CreateRoundButtonControl(inWindow,
+	                                &inBoundsRect,
+	                                inSize,
+	                                &inContent,
+	                                &outControl);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CtlObj_New, outControl);
+	return _res;
+}
+#endif
+
 #if TARGET_API_MAC_CARBON
 
 static PyObject *Ctl_CreateDataBrowserControl(PyObject *_self, PyObject *_args)
@@ -5763,6 +5959,41 @@
 }
 #endif
 
+#if TARGET_API_MAC_OSX
+
+static PyObject *Ctl_CreateEditUnicodeTextControl(PyObject *_self, PyObject *_args)
+{
+	PyObject *_res = NULL;
+	OSStatus _err;
+	WindowPtr window;
+	Rect boundsRect;
+	CFStringRef text;
+	Boolean isPassword;
+	ControlFontStyleRec style;
+	ControlHandle outControl;
+#ifndef CreateEditUnicodeTextControl
+	PyMac_PRECHECK(CreateEditUnicodeTextControl);
+#endif
+	if (!PyArg_ParseTuple(_args, "O&O&O&bO&",
+	                      WinObj_Convert, &window,
+	                      PyMac_GetRect, &boundsRect,
+	                      CFStringRefObj_Convert, &text,
+	                      &isPassword,
+	                      ControlFontStyle_Convert, &style))
+		return NULL;
+	_err = CreateEditUnicodeTextControl(window,
+	                                    &boundsRect,
+	                                    text,
+	                                    isPassword,
+	                                    &style,
+	                                    &outControl);
+	if (_err != noErr) return PyMac_Error(_err);
+	_res = Py_BuildValue("O&",
+	                     CtlObj_New, outControl);
+	return _res;
+}
+#endif
+
 static PyObject *Ctl_FindControlUnderMouse(PyObject *_self, PyObject *_args)
 {
 	PyObject *_res = NULL;
@@ -5924,6 +6155,11 @@
 	 "(WindowPtr window, Rect boundsRect, SInt32 value, SInt32 minimum, SInt32 maximum, Boolean indeterminate) -> (ControlHandle outControl)"},
 #endif
 
+#if TARGET_API_MAC_OSX
+	{"CreateRelevanceBarControl", (PyCFunction)Ctl_CreateRelevanceBarControl, 1,
+	 "(WindowPtr window, Rect boundsRect, SInt32 value, SInt32 minimum, SInt32 maximum) -> (ControlHandle outControl)"},
+#endif
+
 #if TARGET_API_MAC_CARBON
 	{"CreateLittleArrowsControl", (PyCFunction)Ctl_CreateLittleArrowsControl, 1,
 	 "(WindowPtr window, Rect boundsRect, SInt32 value, SInt32 minimum, SInt32 maximum, SInt32 increment) -> (ControlHandle outControl)"},
@@ -6039,10 +6275,25 @@
 	 "(WindowPtr window, Rect boundsRect, SInt16 contentResID, Boolean autoScroll, UInt32 delayBeforeAutoScroll, UInt32 delayBetweenAutoScroll, UInt16 autoScrollAmount) -> (ControlHandle outControl)"},
 #endif
 
+#if TARGET_API_MAC_OSX
+	{"CreateDisclosureButtonControl", (PyCFunction)Ctl_CreateDisclosureButtonControl, 1,
+	 "(WindowPtr inWindow, Rect inBoundsRect, SInt32 inValue, Boolean inAutoToggles) -> (ControlHandle outControl)"},
+#endif
+
+#if TARGET_API_MAC_OSX
+	{"CreateRoundButtonControl", (PyCFunction)Ctl_CreateRoundButtonControl, 1,
+	 "(WindowPtr inWindow, Rect inBoundsRect, SInt16 inSize, ControlButtonContentInfo inContent) -> (ControlHandle outControl)"},
+#endif
+
 #if TARGET_API_MAC_CARBON
 	{"CreateDataBrowserControl", (PyCFunction)Ctl_CreateDataBrowserControl, 1,
 	 "(WindowPtr window, Rect boundsRect, OSType style) -> (ControlHandle outControl)"},
 #endif
+
+#if TARGET_API_MAC_OSX
+	{"CreateEditUnicodeTextControl", (PyCFunction)Ctl_CreateEditUnicodeTextControl, 1,
+	 "(WindowPtr window, Rect boundsRect, CFStringRef text, Boolean isPassword, ControlFontStyleRec style) -> (ControlHandle outControl)"},
+#endif
 	{"FindControlUnderMouse", (PyCFunction)Ctl_FindControlUnderMouse, 1,
 	 "(Point inWhere, WindowPtr inWindow) -> (ControlHandle _rv, SInt16 outPart)"},
 	{"as_Control", (PyCFunction)Ctl_as_Control, 1,
diff --git a/Mac/Modules/ctl/ctlscan.py b/Mac/Modules/ctl/ctlscan.py
index 70b2866..61f79eb 100644
--- a/Mac/Modules/ctl/ctlscan.py
+++ b/Mac/Modules/ctl/ctlscan.py
@@ -88,15 +88,6 @@
 			'GetControlPropertySize',
 			'SendControlMessage', # Parameter changed from long to void* from UH3.3 to UH3.4
 			'CreateTabsControl',  # wrote manually
-			# these are part of Carbon, yet not in CarbonLib; OSX-only
-			'CreateRoundButtonControl',
-			'CreateDisclosureButtonControl',
-			'CreateRelevanceBarControl',
-			'DisableControl',
-			'EnableControl',
-			'IsControlEnabled',
-			'CreateEditUnicodeTextControl',
-			'CopyDataBrowserEditText',
 			
 			# too lazy for now
 			'GetImageWellContentInfo',
@@ -252,7 +243,18 @@
 				'SetControlBounds',
 				'SetControlPopupMenuHandle',
 				'SetControlPopupMenuID',
-			])]
+			]),
+			('#if TARGET_API_MAC_OSX', [
+				'CreateRoundButtonControl',
+				'CreateDisclosureButtonControl',
+				'CreateRelevanceBarControl',
+				'DisableControl',
+				'EnableControl',
+				'IsControlEnabled',
+				'CreateEditUnicodeTextControl',
+				'CopyDataBrowserEditText',
+			]),
+			]
 			
 	def makeblacklisttypes(self):
 		return [