Trying again to check it in. Changes to:
- Use Universal Headers as input
- Change addpack calls to not depend on Guido's disklayout
- Checkge testprograms to use new names for some functions
diff --git a/Mac/Lib/test/progressbar.py b/Mac/Lib/test/progressbar.py
index 59e0cc1..e165061 100644
--- a/Mac/Lib/test/progressbar.py
+++ b/Mac/Lib/test/progressbar.py
@@ -1,12 +1,12 @@
 # Progress dialog
 
 from addpack import addpack
-addpack('Demo')
+addpack('Tools')
 addpack('bgen')
 addpack('dlg')
 addpack('evt')
 
-from Dlg import GetNewDialog, ModalDialog, SetIText
+from Dlg import GetNewDialog, ModalDialog, SetDialogItemText
 
 count = 0
 
@@ -17,12 +17,12 @@
 
 def main():
 	d = GetNewDialog(256, -1)
-	tp, h, rect = d.GetDItem(2)
-	SetIText(h, "Progress...")
+	tp, h, rect = d.GetDialogItem(2)
+	SetDialogItemText(h, "Progress...")
 	for i in range(100):
 		if i%10 == 0:
 			str = "Progress...%d" % i
-			SetIText(h, str)
+			SetDialogItemText(h, str)
 			ModalDialog(filter)
 		for j in range(100): pass
 
diff --git a/Mac/Lib/test/tctl.py b/Mac/Lib/test/tctl.py
index 862eeb5..a255c56 100644
--- a/Mac/Lib/test/tctl.py
+++ b/Mac/Lib/test/tctl.py
@@ -5,6 +5,7 @@
 from Win import *
 from Evt import *
 import time
+import sys
 
 def main():
 	r = (40, 40, 400, 300)
@@ -12,6 +13,8 @@
 	w.DrawGrowIcon()
 	r = (40, 40, 100, 60)
 	c = NewControl(w, r, "SPAM!", 1, 0, 0, 1, 0, 0)
+	print 'Ok, try it...'
+	sys.exit(1)  # So we can see what happens...
 
 
 main()
diff --git a/Mac/Lib/test/tdlg.py b/Mac/Lib/test/tdlg.py
index d6fdd97..654a9a5 100644
--- a/Mac/Lib/test/tdlg.py
+++ b/Mac/Lib/test/tdlg.py
@@ -3,6 +3,9 @@
 # Python library.
 # The ID can be overridden by passing a second parameter.
 
+import addpack
+addpack.addpack(':Tools:bgen:evt')
+
 from Dlg import *
 from Events import *
 import string
@@ -17,8 +20,8 @@
 
 def message(str = "Hello, world!", id = ID):
 	d = GetNewDialog(id, -1)
-	tp, h, rect = d.GetDItem(2)
-	SetIText(h, str)
+	tp, h, rect = d.GetDialogItem(2)
+	SetDialogItemText(h, str)
 	while 1:
 		n = ModalDialog(f)
 		if n == 1: break
diff --git a/Mac/Lib/toolbox/Controls.py b/Mac/Lib/toolbox/Controls.py
index 0686580..af1747f 100644
--- a/Mac/Lib/toolbox/Controls.py
+++ b/Mac/Lib/toolbox/Controls.py
@@ -1,10 +1,14 @@
-# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Controls.h'
+# Generated from 'Moes:CW5 GOLD \304:Metrowerks C/C++ \304:Headers \304:Universal Headers 2.0a3 \304:Controls.h'
 
 pushButProc = 0
 checkBoxProc = 1
 radioButProc = 2
-useWFont = 8
 scrollBarProc = 16
+popupMenuProc = 1008
+useWFont = 8
+inLabel = 1
+inMenu = 2
+inTriangle = 4
 inButton = 10
 inCheckBox = 11
 inUpButton = 20
@@ -12,17 +16,34 @@
 inPageUp = 22
 inPageDown = 23
 inThumb = 129
-popupMenuProc = 1008
-inLabel = 1
-inMenu = 2
-inTriangle = 4
+kNoHiliteControlPart = 0
+kInLabelControlPart = 1
+kInMenuControlPart = 2
+kInTriangleControlPart = 4
+kInButtonControlPart = 10
+kInCheckBoxControlPart = 11
+kInUpButtonControlPart = 20
+kInDownButtonControlPart = 21
+kInPageUpControlPart = 22
+kInPageDownControlPart = 23
+kInIndicatorControlPart = 129
+kReservedControlPart = 254
+kControlInactiveControlPart = 255
+popupFixedWidth = 1 << 0
+popupVariableWidth = 1 << 1
+popupUseAddResMenu = 1 << 2
 popupUseWFont = 1 << 3
+popupTitleBold = 1 << 8
+popupTitleItalic = 1 << 9
+popupTitleUnderline = 1 << 10
 popupTitleOutline = 1 << 11
+popupTitleShadow = 1 << 12
+popupTitleCondense = 1 << 13
 popupTitleExtend = 1 << 14
+popupTitleNoStyle = 1 << 15
 popupTitleLeftJust = 0x00000000
 popupTitleCenterJust = 0x00000001
 popupTitleRightJust = 0x000000FF
-noConstraint = 0
 hAxisOnly = 1
 vAxisOnly = 2
 drawCntl = 0
@@ -36,6 +57,7 @@
 autoTrack = 8
 calcCntlRgn = 10
 calcThumbRgn = 11
+drawThumbOutline = 12
 cFrameColor = 0
 cBodyColor = 1
 cTextColor = 2
diff --git a/Mac/Lib/toolbox/Dialogs.py b/Mac/Lib/toolbox/Dialogs.py
index c31bfbe..66fea6b 100644
--- a/Mac/Lib/toolbox/Dialogs.py
+++ b/Mac/Lib/toolbox/Dialogs.py
@@ -1,4 +1,4 @@
-# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Dialogs.h'
+# Generated from 'Moes:CW5 GOLD \304:Metrowerks C/C++ \304:Headers \304:Universal Headers 2.0a3 \304:Dialogs.h'
 
 ctrlItem = 4
 btnCtrl = 0
@@ -16,6 +16,7 @@
 stopIcon = 0
 noteIcon = 1
 cautionIcon = 2
+kIDODialogItem = 24
 overlayDITL = 0
 appendDITLRight = 1
 appendDITLBottom = 2
diff --git a/Mac/Modules/ctl/Ctlmodule.c b/Mac/Modules/ctl/Ctlmodule.c
index fb1459a..6af76a5 100644
--- a/Mac/Modules/ctl/Ctlmodule.c
+++ b/Mac/Modules/ctl/Ctlmodule.c
@@ -56,7 +56,7 @@
 } ControlObject;
 
 PyObject *CtlObj_New(itself)
-	const ControlHandle itself;
+	ControlHandle itself;
 {
 	ControlObject *it;
 	if (itself == NULL) return PyMac_Error(resNotFound);
@@ -86,7 +86,7 @@
 	PyMem_DEL(self);
 }
 
-static PyObject *CtlObj_SetCTitle(_self, _args)
+static PyObject *CtlObj_SetControlTitle(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -95,14 +95,14 @@
 	if (!PyArg_ParseTuple(_args, "O&",
 	                      PyMac_GetStr255, title))
 		return NULL;
-	SetCTitle(_self->ob_itself,
-	          title);
+	SetControlTitle(_self->ob_itself,
+	                title);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *CtlObj_GetCTitle(_self, _args)
+static PyObject *CtlObj_GetControlTitle(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -111,8 +111,8 @@
 	if (!PyArg_ParseTuple(_args, "O&",
 	                      PyMac_GetStr255, title))
 		return NULL;
-	GetCTitle(_self->ob_itself,
-	          title);
+	GetControlTitle(_self->ob_itself,
+	                title);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
@@ -224,7 +224,7 @@
 	return _res;
 }
 
-static PyObject *CtlObj_SetCtlValue(_self, _args)
+static PyObject *CtlObj_SetControlValue(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -233,14 +233,14 @@
 	if (!PyArg_ParseTuple(_args, "h",
 	                      &theValue))
 		return NULL;
-	SetCtlValue(_self->ob_itself,
-	            theValue);
+	SetControlValue(_self->ob_itself,
+	                theValue);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *CtlObj_GetCtlValue(_self, _args)
+static PyObject *CtlObj_GetControlValue(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -248,13 +248,13 @@
 	short _rv;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	_rv = GetCtlValue(_self->ob_itself);
+	_rv = GetControlValue(_self->ob_itself);
 	_res = Py_BuildValue("h",
 	                     _rv);
 	return _res;
 }
 
-static PyObject *CtlObj_SetCtlMin(_self, _args)
+static PyObject *CtlObj_SetControlMinimum(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -263,14 +263,14 @@
 	if (!PyArg_ParseTuple(_args, "h",
 	                      &minValue))
 		return NULL;
-	SetCtlMin(_self->ob_itself,
-	          minValue);
+	SetControlMinimum(_self->ob_itself,
+	                  minValue);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *CtlObj_GetCtlMin(_self, _args)
+static PyObject *CtlObj_GetControlMinimum(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -278,13 +278,13 @@
 	short _rv;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	_rv = GetCtlMin(_self->ob_itself);
+	_rv = GetControlMinimum(_self->ob_itself);
 	_res = Py_BuildValue("h",
 	                     _rv);
 	return _res;
 }
 
-static PyObject *CtlObj_SetCtlMax(_self, _args)
+static PyObject *CtlObj_SetControlMaximum(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -293,14 +293,14 @@
 	if (!PyArg_ParseTuple(_args, "h",
 	                      &maxValue))
 		return NULL;
-	SetCtlMax(_self->ob_itself,
-	          maxValue);
+	SetControlMaximum(_self->ob_itself,
+	                  maxValue);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *CtlObj_GetCtlMax(_self, _args)
+static PyObject *CtlObj_GetControlMaximum(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -308,13 +308,13 @@
 	short _rv;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	_rv = GetCtlMax(_self->ob_itself);
+	_rv = GetControlMaximum(_self->ob_itself);
 	_res = Py_BuildValue("h",
 	                     _rv);
 	return _res;
 }
 
-static PyObject *CtlObj_SetCRefCon(_self, _args)
+static PyObject *CtlObj_SetControlReference(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -323,14 +323,14 @@
 	if (!PyArg_ParseTuple(_args, "l",
 	                      &data))
 		return NULL;
-	SetCRefCon(_self->ob_itself,
-	           data);
+	SetControlReference(_self->ob_itself,
+	                    data);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *CtlObj_GetCRefCon(_self, _args)
+static PyObject *CtlObj_GetControlReference(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
 {
@@ -338,12 +338,26 @@
 	long _rv;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	_rv = GetCRefCon(_self->ob_itself);
+	_rv = GetControlReference(_self->ob_itself);
 	_res = Py_BuildValue("l",
 	                     _rv);
 	return _res;
 }
 
+static PyObject *CtlObj_SetControlAction(_self, _args)
+	ControlObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	SetControlAction(_self->ob_itself,
+	                 (ControlActionUPP)0);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+
 static PyObject *CtlObj_DragControl(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
@@ -386,6 +400,20 @@
 	return _res;
 }
 
+static PyObject *CtlObj_GetControlVariant(_self, _args)
+	ControlObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	short _rv;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_rv = GetControlVariant(_self->ob_itself);
+	_res = Py_BuildValue("h",
+	                     _rv);
+	return _res;
+}
+
 static PyObject *CtlObj_TrackControl(_self, _args)
 	ControlObject *_self;
 	PyObject *_args;
@@ -404,24 +432,10 @@
 	return _res;
 }
 
-static PyObject *CtlObj_GetCVariant(_self, _args)
-	ControlObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	short _rv;
-	if (!PyArg_ParseTuple(_args, ""))
-		return NULL;
-	_rv = GetCVariant(_self->ob_itself);
-	_res = Py_BuildValue("h",
-	                     _rv);
-	return _res;
-}
-
 static PyMethodDef CtlObj_methods[] = {
-	{"SetCTitle", (PyCFunction)CtlObj_SetCTitle, 1,
+	{"SetControlTitle", (PyCFunction)CtlObj_SetControlTitle, 1,
 	 "(Str255 title) -> None"},
-	{"GetCTitle", (PyCFunction)CtlObj_GetCTitle, 1,
+	{"GetControlTitle", (PyCFunction)CtlObj_GetControlTitle, 1,
 	 "(Str255 title) -> None"},
 	{"DisposeControl", (PyCFunction)CtlObj_DisposeControl, 1,
 	 "() -> None"},
@@ -437,30 +451,32 @@
 	 "(short h, short v) -> None"},
 	{"SizeControl", (PyCFunction)CtlObj_SizeControl, 1,
 	 "(short w, short h) -> None"},
-	{"SetCtlValue", (PyCFunction)CtlObj_SetCtlValue, 1,
+	{"SetControlValue", (PyCFunction)CtlObj_SetControlValue, 1,
 	 "(short theValue) -> None"},
-	{"GetCtlValue", (PyCFunction)CtlObj_GetCtlValue, 1,
+	{"GetControlValue", (PyCFunction)CtlObj_GetControlValue, 1,
 	 "() -> (short _rv)"},
-	{"SetCtlMin", (PyCFunction)CtlObj_SetCtlMin, 1,
+	{"SetControlMinimum", (PyCFunction)CtlObj_SetControlMinimum, 1,
 	 "(short minValue) -> None"},
-	{"GetCtlMin", (PyCFunction)CtlObj_GetCtlMin, 1,
+	{"GetControlMinimum", (PyCFunction)CtlObj_GetControlMinimum, 1,
 	 "() -> (short _rv)"},
-	{"SetCtlMax", (PyCFunction)CtlObj_SetCtlMax, 1,
+	{"SetControlMaximum", (PyCFunction)CtlObj_SetControlMaximum, 1,
 	 "(short maxValue) -> None"},
-	{"GetCtlMax", (PyCFunction)CtlObj_GetCtlMax, 1,
+	{"GetControlMaximum", (PyCFunction)CtlObj_GetControlMaximum, 1,
 	 "() -> (short _rv)"},
-	{"SetCRefCon", (PyCFunction)CtlObj_SetCRefCon, 1,
+	{"SetControlReference", (PyCFunction)CtlObj_SetControlReference, 1,
 	 "(long data) -> None"},
-	{"GetCRefCon", (PyCFunction)CtlObj_GetCRefCon, 1,
+	{"GetControlReference", (PyCFunction)CtlObj_GetControlReference, 1,
 	 "() -> (long _rv)"},
+	{"SetControlAction", (PyCFunction)CtlObj_SetControlAction, 1,
+	 "() -> None"},
 	{"DragControl", (PyCFunction)CtlObj_DragControl, 1,
 	 "(Point startPt, Rect limitRect, Rect slopRect, short axis) -> None"},
 	{"TestControl", (PyCFunction)CtlObj_TestControl, 1,
 	 "(Point thePt) -> (short _rv)"},
+	{"GetControlVariant", (PyCFunction)CtlObj_GetControlVariant, 1,
+	 "() -> (short _rv)"},
 	{"TrackControl", (PyCFunction)CtlObj_TrackControl, 1,
 	 "(Point thePoint) -> (short _rv)"},
-	{"GetCVariant", (PyCFunction)CtlObj_GetCVariant, 1,
-	 "() -> (short _rv)"},
 	{NULL, NULL, 0}
 };
 
@@ -580,22 +596,6 @@
 	return _res;
 }
 
-static PyObject *Ctl_UpdtControl(_self, _args)
-	PyObject *_self;
-	PyObject *_args;
-{
-	PyObject *_res = NULL;
-	WindowPtr theWindow;
-	if (!PyArg_ParseTuple(_args, "O&",
-	                      WinObj_Convert, &theWindow))
-		return NULL;
-	UpdtControl(theWindow,
-	            theWindow->visRgn);
-	Py_INCREF(Py_None);
-	_res = Py_None;
-	return _res;
-}
-
 static PyObject *Ctl_UpdateControls(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -643,8 +643,6 @@
 	 "(WindowPtr theWindow) -> None"},
 	{"DrawControls", (PyCFunction)Ctl_DrawControls, 1,
 	 "(WindowPtr theWindow) -> None"},
-	{"UpdtControl", (PyCFunction)Ctl_UpdtControl, 1,
-	 "(WindowPtr theWindow) -> None"},
 	{"UpdateControls", (PyCFunction)Ctl_UpdateControls, 1,
 	 "(WindowPtr theWindow) -> None"},
 	{"FindControl", (PyCFunction)Ctl_FindControl, 1,
diff --git a/Mac/Modules/ctl/ctlgen.py b/Mac/Modules/ctl/ctlgen.py
index 0a355cf..85fc6c7 100644
--- a/Mac/Modules/ctl/ctlgen.py
+++ b/Mac/Modules/ctl/ctlgen.py
@@ -1,7 +1,7 @@
-# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Controls.h'
+# Generated from 'Moes:CW5 GOLD \304:Metrowerks C/C++ \304:Headers \304:Universal Headers 2.0a3 \304:Controls.h'
 
-f = Function(ControlHandle, 'NewControl',
-    (WindowPtr, 'theWindow', InMode),
+f = Function(ControlRef, 'NewControl',
+    (WindowRef, 'theWindow', InMode),
     (Rect_ptr, 'boundsRect', InMode),
     (ConstStr255Param, 'title', InMode),
     (Boolean, 'visible', InMode),
@@ -13,132 +13,132 @@
 )
 functions.append(f)
 
-f = Method(void, 'SetCTitle',
-    (ControlHandle, 'theControl', InMode),
+f = Method(void, 'SetControlTitle',
+    (ControlRef, 'theControl', InMode),
     (ConstStr255Param, 'title', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'GetCTitle',
-    (ControlHandle, 'theControl', InMode),
+f = Method(void, 'GetControlTitle',
+    (ControlRef, 'theControl', InMode),
     (Str255, 'title', InMode),
 )
 methods.append(f)
 
-f = Function(ControlHandle, 'GetNewControl',
+f = Function(ControlRef, 'GetNewControl',
     (short, 'controlID', InMode),
-    (WindowPtr, 'owner', InMode),
+    (WindowRef, 'owner', InMode),
 )
 functions.append(f)
 
 f = Method(void, 'DisposeControl',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
 )
 methods.append(f)
 
 f = Function(void, 'KillControls',
-    (WindowPtr, 'theWindow', InMode),
+    (WindowRef, 'theWindow', InMode),
 )
 functions.append(f)
 
 f = Method(void, 'HideControl',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
 )
 methods.append(f)
 
 f = Method(void, 'ShowControl',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
 )
 methods.append(f)
 
 f = Function(void, 'DrawControls',
-    (WindowPtr, 'theWindow', InMode),
+    (WindowRef, 'theWindow', InMode),
 )
 functions.append(f)
 
 f = Method(void, 'Draw1Control',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
 )
 methods.append(f)
 
 f = Method(void, 'HiliteControl',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
     (short, 'hiliteState', InMode),
 )
 methods.append(f)
 
-f = Function(void, 'UpdtControl',
-    (WindowPtr, 'theWindow', InMode),
-    (RgnHandle, 'updateRgn', InMode),
-)
-functions.append(f)
-
 f = Function(void, 'UpdateControls',
-    (WindowPtr, 'theWindow', InMode),
+    (WindowRef, 'theWindow', InMode),
     (RgnHandle, 'updateRgn', InMode),
 )
 functions.append(f)
 
 f = Method(void, 'MoveControl',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
     (short, 'h', InMode),
     (short, 'v', InMode),
 )
 methods.append(f)
 
 f = Method(void, 'SizeControl',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
     (short, 'w', InMode),
     (short, 'h', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'SetCtlValue',
-    (ControlHandle, 'theControl', InMode),
+f = Method(void, 'SetControlValue',
+    (ControlRef, 'theControl', InMode),
     (short, 'theValue', InMode),
 )
 methods.append(f)
 
-f = Method(short, 'GetCtlValue',
-    (ControlHandle, 'theControl', InMode),
+f = Method(short, 'GetControlValue',
+    (ControlRef, 'theControl', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'SetCtlMin',
-    (ControlHandle, 'theControl', InMode),
+f = Method(void, 'SetControlMinimum',
+    (ControlRef, 'theControl', InMode),
     (short, 'minValue', InMode),
 )
 methods.append(f)
 
-f = Method(short, 'GetCtlMin',
-    (ControlHandle, 'theControl', InMode),
+f = Method(short, 'GetControlMinimum',
+    (ControlRef, 'theControl', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'SetCtlMax',
-    (ControlHandle, 'theControl', InMode),
+f = Method(void, 'SetControlMaximum',
+    (ControlRef, 'theControl', InMode),
     (short, 'maxValue', InMode),
 )
 methods.append(f)
 
-f = Method(short, 'GetCtlMax',
-    (ControlHandle, 'theControl', InMode),
+f = Method(short, 'GetControlMaximum',
+    (ControlRef, 'theControl', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'SetCRefCon',
-    (ControlHandle, 'theControl', InMode),
+f = Method(void, 'SetControlReference',
+    (ControlRef, 'theControl', InMode),
     (long, 'data', InMode),
 )
 methods.append(f)
 
-f = Method(long, 'GetCRefCon',
-    (ControlHandle, 'theControl', InMode),
+f = Method(long, 'GetControlReference',
+    (ControlRef, 'theControl', InMode),
+)
+methods.append(f)
+
+f = Method(void, 'SetControlAction',
+    (ControlRef, 'theControl', InMode),
+    (FakeType('(ControlActionUPP)0'), 'actionProc', InMode),
 )
 methods.append(f)
 
 f = Method(void, 'DragControl',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
     (Point, 'startPt', InMode),
     (Rect_ptr, 'limitRect', InMode),
     (Rect_ptr, 'slopRect', InMode),
@@ -147,27 +147,27 @@
 methods.append(f)
 
 f = Method(short, 'TestControl',
-    (ControlHandle, 'theControl', InMode),
+    (ControlRef, 'theControl', InMode),
     (Point, 'thePt', InMode),
 )
 methods.append(f)
 
-f = Method(short, 'TrackControl',
-    (ControlHandle, 'theControl', InMode),
-    (Point, 'thePoint', InMode),
-    (FakeType('(ControlActionUPP)0'), 'actionProc', InMode),
-)
-methods.append(f)
-
 f = Function(short, 'FindControl',
     (Point, 'thePoint', InMode),
-    (WindowPtr, 'theWindow', InMode),
+    (WindowRef, 'theWindow', InMode),
     (ExistingControlHandle, 'theControl', OutMode),
 )
 functions.append(f)
 
-f = Method(short, 'GetCVariant',
-    (ControlHandle, 'theControl', InMode),
+f = Method(short, 'GetControlVariant',
+    (ControlRef, 'theControl', InMode),
+)
+methods.append(f)
+
+f = Method(short, 'TrackControl',
+    (ControlRef, 'theControl', InMode),
+    (Point, 'thePoint', InMode),
+    (FakeType('(ControlActionUPP)0'), 'actionProc', InMode),
 )
 methods.append(f)
 
diff --git a/Mac/Modules/ctl/ctlscan.py b/Mac/Modules/ctl/ctlscan.py
index f104e8d..e36db2c 100644
--- a/Mac/Modules/ctl/ctlscan.py
+++ b/Mac/Modules/ctl/ctlscan.py
@@ -1,4 +1,6 @@
 # Scan <Controls.h>, generating ctlgen.py.
+import addpack
+addpack.addpack(':Tools:bgen:bgen')
 
 from scantools import Scanner
 
@@ -20,7 +22,7 @@
 		listname = "functions"
 		if arglist:
 			t, n, m = arglist[0]
-			if t == "ControlHandle" and m == "InMode":
+			if t in ("ControlHandle", "ControlRef") and m == "InMode":
 				classname = "Method"
 				listname = "methods"
 		return classname, listname
@@ -35,6 +37,7 @@
 	def makeblacklisttypes(self):
 		return [
 			'ProcPtr',
+			'ControlActionUPP',
 			'CCTabHandle',
 			'AuxCtlHandle',
 			]
@@ -51,9 +54,13 @@
 			# For TrackControl
 			([("ProcPtr", "actionProc", "InMode")],
 			 [("FakeType('(ControlActionUPP)0')", "*", "*")]),
+			([("ControlActionUPP", "actionProc", "InMode")],
+			 [("FakeType('(ControlActionUPP)0')", "*", "*")]),
 			
 			([("ControlHandle", "*", "OutMode")],
 			 [("ExistingControlHandle", "*", "*")]),
+			([("ControlRef", "*", "OutMode")],	# Ditto, for Universal Headers
+			 [("ExistingControlHandle", "*", "*")]),
 			]
 
 if __name__ == "__main__":
diff --git a/Mac/Modules/ctl/ctlsupport.py b/Mac/Modules/ctl/ctlsupport.py
index 97b1f33..9846631 100644
--- a/Mac/Modules/ctl/ctlsupport.py
+++ b/Mac/Modules/ctl/ctlsupport.py
@@ -5,6 +5,9 @@
 
 import string
 
+import addpack
+addpack.addpack(':Tools:bgen:bgen')
+
 # Declarations that change for each manager
 MACHEADERFILE = 'Controls.h'		# The Apple header file
 MODNAME = 'Ctl'				# The name of the module
@@ -22,6 +25,7 @@
 # Create the type objects
 
 ControlHandle = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX)
+ControlRef = ControlHandle
 ExistingControlHandle = OpaqueByValueType(OBJECTTYPE, "CtlObj_WhichControl", "BUG")
 
 RgnHandle = FakeType("theWindow->visRgn") # XXX
diff --git a/Mac/Modules/dlg/Dlgmodule.c b/Mac/Modules/dlg/Dlgmodule.c
index b297e1c..f1010a2 100644
--- a/Mac/Modules/dlg/Dlgmodule.c
+++ b/Mac/Modules/dlg/Dlgmodule.c
@@ -172,7 +172,7 @@
 	return _res;
 }
 
-static PyObject *DlgObj_GetDItem(_self, _args)
+static PyObject *DlgObj_GetDialogItem(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
@@ -184,11 +184,11 @@
 	if (!PyArg_ParseTuple(_args, "h",
 	                      &itemNo))
 		return NULL;
-	GetDItem(_self->ob_itself,
-	         itemNo,
-	         &itemType,
-	         &item,
-	         &box);
+	GetDialogItem(_self->ob_itself,
+	              itemNo,
+	              &itemType,
+	              &item,
+	              &box);
 	_res = Py_BuildValue("hO&O&",
 	                     itemType,
 	                     ResObj_New, item,
@@ -196,7 +196,7 @@
 	return _res;
 }
 
-static PyObject *DlgObj_SetDItem(_self, _args)
+static PyObject *DlgObj_SetDialogItem(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
@@ -211,17 +211,17 @@
 	                      ResObj_Convert, &item,
 	                      PyMac_GetRect, &box))
 		return NULL;
-	SetDItem(_self->ob_itself,
-	         itemNo,
-	         itemType,
-	         item,
-	         &box);
+	SetDialogItem(_self->ob_itself,
+	              itemNo,
+	              itemType,
+	              item,
+	              &box);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *DlgObj_HideDItem(_self, _args)
+static PyObject *DlgObj_HideDialogItem(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
@@ -230,14 +230,14 @@
 	if (!PyArg_ParseTuple(_args, "h",
 	                      &itemNo))
 		return NULL;
-	HideDItem(_self->ob_itself,
-	          itemNo);
+	HideDialogItem(_self->ob_itself,
+	               itemNo);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *DlgObj_ShowDItem(_self, _args)
+static PyObject *DlgObj_ShowDialogItem(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
@@ -246,14 +246,14 @@
 	if (!PyArg_ParseTuple(_args, "h",
 	                      &itemNo))
 		return NULL;
-	ShowDItem(_self->ob_itself,
-	          itemNo);
+	ShowDialogItem(_self->ob_itself,
+	               itemNo);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *DlgObj_SelIText(_self, _args)
+static PyObject *DlgObj_SelectDialogItemText(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
@@ -266,16 +266,16 @@
 	                      &strtSel,
 	                      &endSel))
 		return NULL;
-	SelIText(_self->ob_itself,
-	         itemNo,
-	         strtSel,
-	         endSel);
+	SelectDialogItemText(_self->ob_itself,
+	                     itemNo,
+	                     strtSel,
+	                     endSel);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *DlgObj_FindDItem(_self, _args)
+static PyObject *DlgObj_FindDialogItem(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
@@ -285,60 +285,60 @@
 	if (!PyArg_ParseTuple(_args, "O&",
 	                      PyMac_GetPoint, &thePt))
 		return NULL;
-	_rv = FindDItem(_self->ob_itself,
-	                thePt);
+	_rv = FindDialogItem(_self->ob_itself,
+	                     thePt);
 	_res = Py_BuildValue("h",
 	                     _rv);
 	return _res;
 }
 
-static PyObject *DlgObj_DlgCut(_self, _args)
+static PyObject *DlgObj_DialogCut(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	DlgCut(_self->ob_itself);
+	DialogCut(_self->ob_itself);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *DlgObj_DlgPaste(_self, _args)
+static PyObject *DlgObj_DialogPaste(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	DlgPaste(_self->ob_itself);
+	DialogPaste(_self->ob_itself);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *DlgObj_DlgCopy(_self, _args)
+static PyObject *DlgObj_DialogCopy(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	DlgCopy(_self->ob_itself);
+	DialogCopy(_self->ob_itself);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *DlgObj_DlgDelete(_self, _args)
+static PyObject *DlgObj_DialogDelete(_self, _args)
 	DialogObject *_self;
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	DlgDelete(_self->ob_itself);
+	DialogDelete(_self->ob_itself);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
@@ -393,30 +393,104 @@
 	return _res;
 }
 
+static PyObject *DlgObj_StdFilterProc(_self, _args)
+	DialogObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Boolean _rv;
+	EventRecord event;
+	short itemHit;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_rv = StdFilterProc(_self->ob_itself,
+	                    &event,
+	                    &itemHit);
+	_res = Py_BuildValue("bO&h",
+	                     _rv,
+	                     PyMac_BuildEventRecord, &event,
+	                     itemHit);
+	return _res;
+}
+
+static PyObject *DlgObj_SetDialogDefaultItem(_self, _args)
+	DialogObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	OSErr _err;
+	short newItem;
+	if (!PyArg_ParseTuple(_args, "h",
+	                      &newItem))
+		return NULL;
+	_err = SetDialogDefaultItem(_self->ob_itself,
+	                            newItem);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+
+static PyObject *DlgObj_SetDialogCancelItem(_self, _args)
+	DialogObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	OSErr _err;
+	short newItem;
+	if (!PyArg_ParseTuple(_args, "h",
+	                      &newItem))
+		return NULL;
+	_err = SetDialogCancelItem(_self->ob_itself,
+	                           newItem);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+
+static PyObject *DlgObj_SetDialogTracksCursor(_self, _args)
+	DialogObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	OSErr _err;
+	Boolean tracks;
+	if (!PyArg_ParseTuple(_args, "b",
+	                      &tracks))
+		return NULL;
+	_err = SetDialogTracksCursor(_self->ob_itself,
+	                             tracks);
+	if (_err != noErr) return PyMac_Error(_err);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+	return _res;
+}
+
 static PyMethodDef DlgObj_methods[] = {
 	{"DrawDialog", (PyCFunction)DlgObj_DrawDialog, 1,
 	 "() -> None"},
 	{"UpdateDialog", (PyCFunction)DlgObj_UpdateDialog, 1,
 	 "() -> None"},
-	{"GetDItem", (PyCFunction)DlgObj_GetDItem, 1,
+	{"GetDialogItem", (PyCFunction)DlgObj_GetDialogItem, 1,
 	 "(short itemNo) -> (short itemType, Handle item, Rect box)"},
-	{"SetDItem", (PyCFunction)DlgObj_SetDItem, 1,
+	{"SetDialogItem", (PyCFunction)DlgObj_SetDialogItem, 1,
 	 "(short itemNo, short itemType, Handle item, Rect box) -> None"},
-	{"HideDItem", (PyCFunction)DlgObj_HideDItem, 1,
+	{"HideDialogItem", (PyCFunction)DlgObj_HideDialogItem, 1,
 	 "(short itemNo) -> None"},
-	{"ShowDItem", (PyCFunction)DlgObj_ShowDItem, 1,
+	{"ShowDialogItem", (PyCFunction)DlgObj_ShowDialogItem, 1,
 	 "(short itemNo) -> None"},
-	{"SelIText", (PyCFunction)DlgObj_SelIText, 1,
+	{"SelectDialogItemText", (PyCFunction)DlgObj_SelectDialogItemText, 1,
 	 "(short itemNo, short strtSel, short endSel) -> None"},
-	{"FindDItem", (PyCFunction)DlgObj_FindDItem, 1,
+	{"FindDialogItem", (PyCFunction)DlgObj_FindDialogItem, 1,
 	 "(Point thePt) -> (short _rv)"},
-	{"DlgCut", (PyCFunction)DlgObj_DlgCut, 1,
+	{"DialogCut", (PyCFunction)DlgObj_DialogCut, 1,
 	 "() -> None"},
-	{"DlgPaste", (PyCFunction)DlgObj_DlgPaste, 1,
+	{"DialogPaste", (PyCFunction)DlgObj_DialogPaste, 1,
 	 "() -> None"},
-	{"DlgCopy", (PyCFunction)DlgObj_DlgCopy, 1,
+	{"DialogCopy", (PyCFunction)DlgObj_DialogCopy, 1,
 	 "() -> None"},
-	{"DlgDelete", (PyCFunction)DlgObj_DlgDelete, 1,
+	{"DialogDelete", (PyCFunction)DlgObj_DialogDelete, 1,
 	 "() -> None"},
 	{"AppendDITL", (PyCFunction)DlgObj_AppendDITL, 1,
 	 "(Handle theHandle, DITLMethod method) -> None"},
@@ -424,6 +498,14 @@
 	 "() -> (short _rv)"},
 	{"ShortenDITL", (PyCFunction)DlgObj_ShortenDITL, 1,
 	 "(short numberItems) -> None"},
+	{"StdFilterProc", (PyCFunction)DlgObj_StdFilterProc, 1,
+	 "() -> (Boolean _rv, EventRecord event, short itemHit)"},
+	{"SetDialogDefaultItem", (PyCFunction)DlgObj_SetDialogDefaultItem, 1,
+	 "(short newItem) -> None"},
+	{"SetDialogCancelItem", (PyCFunction)DlgObj_SetDialogCancelItem, 1,
+	 "(short newItem) -> None"},
+	{"SetDialogTracksCursor", (PyCFunction)DlgObj_SetDialogTracksCursor, 1,
+	 "(Boolean tracks) -> None"},
 	{NULL, NULL, 0}
 };
 
@@ -541,12 +623,12 @@
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
-	PyObject* filterProc;
+	PyObject* modalFilter;
 	short itemHit;
 	if (!PyArg_ParseTuple(_args, "O",
-	                      &filterProc))
+	                      &modalFilter))
 		return NULL;
-	ModalDialog(NewModalFilterProc(Dlg_PassFilterProc(filterProc)),
+	ModalDialog(NewModalFilterProc(Dlg_PassFilterProc(modalFilter)),
 	            &itemHit);
 	_res = Py_BuildValue("h",
 	                     itemHit);
@@ -598,13 +680,13 @@
 	PyObject *_res = NULL;
 	short _rv;
 	short alertID;
-	PyObject* filterProc;
+	PyObject* modalFilter;
 	if (!PyArg_ParseTuple(_args, "hO",
 	                      &alertID,
-	                      &filterProc))
+	                      &modalFilter))
 		return NULL;
 	_rv = Alert(alertID,
-	            NewModalFilterProc(Dlg_PassFilterProc(filterProc)));
+	            NewModalFilterProc(Dlg_PassFilterProc(modalFilter)));
 	_res = Py_BuildValue("h",
 	                     _rv);
 	return _res;
@@ -617,13 +699,13 @@
 	PyObject *_res = NULL;
 	short _rv;
 	short alertID;
-	PyObject* filterProc;
+	PyObject* modalFilter;
 	if (!PyArg_ParseTuple(_args, "hO",
 	                      &alertID,
-	                      &filterProc))
+	                      &modalFilter))
 		return NULL;
 	_rv = StopAlert(alertID,
-	                NewModalFilterProc(Dlg_PassFilterProc(filterProc)));
+	                NewModalFilterProc(Dlg_PassFilterProc(modalFilter)));
 	_res = Py_BuildValue("h",
 	                     _rv);
 	return _res;
@@ -636,13 +718,13 @@
 	PyObject *_res = NULL;
 	short _rv;
 	short alertID;
-	PyObject* filterProc;
+	PyObject* modalFilter;
 	if (!PyArg_ParseTuple(_args, "hO",
 	                      &alertID,
-	                      &filterProc))
+	                      &modalFilter))
 		return NULL;
 	_rv = NoteAlert(alertID,
-	                NewModalFilterProc(Dlg_PassFilterProc(filterProc)));
+	                NewModalFilterProc(Dlg_PassFilterProc(modalFilter)));
 	_res = Py_BuildValue("h",
 	                     _rv);
 	return _res;
@@ -655,19 +737,19 @@
 	PyObject *_res = NULL;
 	short _rv;
 	short alertID;
-	PyObject* filterProc;
+	PyObject* modalFilter;
 	if (!PyArg_ParseTuple(_args, "hO",
 	                      &alertID,
-	                      &filterProc))
+	                      &modalFilter))
 		return NULL;
 	_rv = CautionAlert(alertID,
-	                   NewModalFilterProc(Dlg_PassFilterProc(filterProc)));
+	                   NewModalFilterProc(Dlg_PassFilterProc(modalFilter)));
 	_res = Py_BuildValue("h",
 	                     _rv);
 	return _res;
 }
 
-static PyObject *Dlg_GetIText(_self, _args)
+static PyObject *Dlg_GetDialogItemText(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
 {
@@ -677,14 +759,14 @@
 	if (!PyArg_ParseTuple(_args, "O&",
 	                      ResObj_Convert, &item))
 		return NULL;
-	GetIText(item,
-	         text);
+	GetDialogItemText(item,
+	                  text);
 	_res = Py_BuildValue("O&",
 	                     PyMac_BuildStr255, text);
 	return _res;
 }
 
-static PyObject *Dlg_SetIText(_self, _args)
+static PyObject *Dlg_SetDialogItemText(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
 {
@@ -695,14 +777,14 @@
 	                      ResObj_Convert, &item,
 	                      PyMac_GetStr255, text))
 		return NULL;
-	SetIText(item,
-	         text);
+	SetDialogItemText(item,
+	                  text);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *Dlg_NewCDialog(_self, _args)
+static PyObject *Dlg_NewColorDialog(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
 {
@@ -726,43 +808,57 @@
 	                      &refCon,
 	                      ResObj_Convert, &items))
 		return NULL;
-	_rv = NewCDialog((void *)0,
-	                 &boundsRect,
-	                 title,
-	                 visible,
-	                 procID,
-	                 behind,
-	                 goAwayFlag,
-	                 refCon,
-	                 items);
+	_rv = NewColorDialog((void *)0,
+	                     &boundsRect,
+	                     title,
+	                     visible,
+	                     procID,
+	                     behind,
+	                     goAwayFlag,
+	                     refCon,
+	                     items);
 	_res = Py_BuildValue("O&",
 	                     DlgObj_New, _rv);
 	return _res;
 }
 
-static PyObject *Dlg_ResetAlrtStage(_self, _args)
+static PyObject *Dlg_GetAlertStage(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	short _rv;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	_rv = GetAlertStage();
+	_res = Py_BuildValue("h",
+	                     _rv);
+	return _res;
+}
+
+static PyObject *Dlg_ResetAlertStage(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
 	if (!PyArg_ParseTuple(_args, ""))
 		return NULL;
-	ResetAlrtStage();
+	ResetAlertStage();
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
 }
 
-static PyObject *Dlg_SetDAFont(_self, _args)
+static PyObject *Dlg_SetDialogFont(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
 {
 	PyObject *_res = NULL;
-	short fontNum;
+	short value;
 	if (!PyArg_ParseTuple(_args, "h",
-	                      &fontNum))
+	                      &value))
 		return NULL;
-	SetDAFont(fontNum);
+	SetDialogFont(value);
 	Py_INCREF(Py_None);
 	_res = Py_None;
 	return _res;
@@ -776,29 +872,31 @@
 	{"ParamText", (PyCFunction)Dlg_ParamText, 1,
 	 "(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None"},
 	{"ModalDialog", (PyCFunction)Dlg_ModalDialog, 1,
-	 "(PyObject* filterProc) -> (short itemHit)"},
+	 "(PyObject* modalFilter) -> (short itemHit)"},
 	{"IsDialogEvent", (PyCFunction)Dlg_IsDialogEvent, 1,
 	 "(EventRecord theEvent) -> (Boolean _rv)"},
 	{"DialogSelect", (PyCFunction)Dlg_DialogSelect, 1,
 	 "(EventRecord theEvent) -> (Boolean _rv, DialogPtr theDialog, short itemHit)"},
 	{"Alert", (PyCFunction)Dlg_Alert, 1,
-	 "(short alertID, PyObject* filterProc) -> (short _rv)"},
+	 "(short alertID, PyObject* modalFilter) -> (short _rv)"},
 	{"StopAlert", (PyCFunction)Dlg_StopAlert, 1,
-	 "(short alertID, PyObject* filterProc) -> (short _rv)"},
+	 "(short alertID, PyObject* modalFilter) -> (short _rv)"},
 	{"NoteAlert", (PyCFunction)Dlg_NoteAlert, 1,
-	 "(short alertID, PyObject* filterProc) -> (short _rv)"},
+	 "(short alertID, PyObject* modalFilter) -> (short _rv)"},
 	{"CautionAlert", (PyCFunction)Dlg_CautionAlert, 1,
-	 "(short alertID, PyObject* filterProc) -> (short _rv)"},
-	{"GetIText", (PyCFunction)Dlg_GetIText, 1,
+	 "(short alertID, PyObject* modalFilter) -> (short _rv)"},
+	{"GetDialogItemText", (PyCFunction)Dlg_GetDialogItemText, 1,
 	 "(Handle item) -> (Str255 text)"},
-	{"SetIText", (PyCFunction)Dlg_SetIText, 1,
+	{"SetDialogItemText", (PyCFunction)Dlg_SetDialogItemText, 1,
 	 "(Handle item, Str255 text) -> None"},
-	{"NewCDialog", (PyCFunction)Dlg_NewCDialog, 1,
+	{"NewColorDialog", (PyCFunction)Dlg_NewColorDialog, 1,
 	 "(Rect boundsRect, Str255 title, Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon, Handle items) -> (DialogPtr _rv)"},
-	{"ResetAlrtStage", (PyCFunction)Dlg_ResetAlrtStage, 1,
+	{"GetAlertStage", (PyCFunction)Dlg_GetAlertStage, 1,
+	 "() -> (short _rv)"},
+	{"ResetAlertStage", (PyCFunction)Dlg_ResetAlertStage, 1,
 	 "() -> None"},
-	{"SetDAFont", (PyCFunction)Dlg_SetDAFont, 1,
-	 "(short fontNum) -> None"},
+	{"SetDialogFont", (PyCFunction)Dlg_SetDialogFont, 1,
+	 "(short value) -> None"},
 	{NULL, NULL, 0}
 };
 
diff --git a/Mac/Modules/dlg/dlggen.py b/Mac/Modules/dlg/dlggen.py
index bd65cd0..c6ae362 100644
--- a/Mac/Modules/dlg/dlggen.py
+++ b/Mac/Modules/dlg/dlggen.py
@@ -1,22 +1,22 @@
-# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Dialogs.h'
+# Generated from 'Moes:CW5 GOLD \304:Metrowerks C/C++ \304:Headers \304:Universal Headers 2.0a3 \304:Dialogs.h'
 
-f = Function(DialogPtr, 'NewDialog',
+f = Function(DialogRef, 'NewDialog',
     (NullStorage, 'wStorage', InMode),
     (Rect_ptr, 'boundsRect', InMode),
     (ConstStr255Param, 'title', InMode),
     (Boolean, 'visible', InMode),
     (short, 'procID', InMode),
-    (WindowPtr, 'behind', InMode),
+    (WindowRef, 'behind', InMode),
     (Boolean, 'goAwayFlag', InMode),
     (long, 'refCon', InMode),
     (Handle, 'itmLstHndl', InMode),
 )
 functions.append(f)
 
-f = Function(DialogPtr, 'GetNewDialog',
+f = Function(DialogRef, 'GetNewDialog',
     (short, 'dialogID', InMode),
     (NullStorage, 'dStorage', InMode),
-    (WindowPtr, 'behind', InMode),
+    (WindowRef, 'behind', InMode),
 )
 functions.append(f)
 
@@ -29,7 +29,7 @@
 functions.append(f)
 
 f = Function(void, 'ModalDialog',
-    (ModalFilterProcPtr, 'filterProc', InMode),
+    (ModalFilterUPP, 'modalFilter', InMode),
     (short, 'itemHit', OutMode),
 )
 functions.append(f)
@@ -47,42 +47,42 @@
 functions.append(f)
 
 f = Method(void, 'DrawDialog',
-    (DialogPtr, 'theDialog', InMode),
+    (DialogRef, 'theDialog', InMode),
 )
 methods.append(f)
 
 f = Method(void, 'UpdateDialog',
-    (DialogPtr, 'theDialog', InMode),
+    (DialogRef, 'theDialog', InMode),
     (RgnHandle, 'updateRgn', InMode),
 )
 methods.append(f)
 
 f = Function(short, 'Alert',
     (short, 'alertID', InMode),
-    (ModalFilterProcPtr, 'filterProc', InMode),
+    (ModalFilterUPP, 'modalFilter', InMode),
 )
 functions.append(f)
 
 f = Function(short, 'StopAlert',
     (short, 'alertID', InMode),
-    (ModalFilterProcPtr, 'filterProc', InMode),
+    (ModalFilterUPP, 'modalFilter', InMode),
 )
 functions.append(f)
 
 f = Function(short, 'NoteAlert',
     (short, 'alertID', InMode),
-    (ModalFilterProcPtr, 'filterProc', InMode),
+    (ModalFilterUPP, 'modalFilter', InMode),
 )
 functions.append(f)
 
 f = Function(short, 'CautionAlert',
     (short, 'alertID', InMode),
-    (ModalFilterProcPtr, 'filterProc', InMode),
+    (ModalFilterUPP, 'modalFilter', InMode),
 )
 functions.append(f)
 
-f = Method(void, 'GetDItem',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(void, 'GetDialogItem',
+    (DialogRef, 'theDialog', InMode),
     (short, 'itemNo', InMode),
     (short, 'itemType', OutMode),
     (Handle, 'item', OutMode),
@@ -90,8 +90,8 @@
 )
 methods.append(f)
 
-f = Method(void, 'SetDItem',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(void, 'SetDialogItem',
+    (DialogRef, 'theDialog', InMode),
     (short, 'itemNo', InMode),
     (short, 'itemType', InMode),
     (Handle, 'item', InMode),
@@ -99,101 +99,130 @@
 )
 methods.append(f)
 
-f = Method(void, 'HideDItem',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(void, 'HideDialogItem',
+    (DialogRef, 'theDialog', InMode),
     (short, 'itemNo', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'ShowDItem',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(void, 'ShowDialogItem',
+    (DialogRef, 'theDialog', InMode),
     (short, 'itemNo', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'SelIText',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(void, 'SelectDialogItemText',
+    (DialogRef, 'theDialog', InMode),
     (short, 'itemNo', InMode),
     (short, 'strtSel', InMode),
     (short, 'endSel', InMode),
 )
 methods.append(f)
 
-f = Function(void, 'GetIText',
+f = Function(void, 'GetDialogItemText',
     (Handle, 'item', InMode),
     (Str255, 'text', OutMode),
 )
 functions.append(f)
 
-f = Function(void, 'SetIText',
+f = Function(void, 'SetDialogItemText',
     (Handle, 'item', InMode),
     (ConstStr255Param, 'text', InMode),
 )
 functions.append(f)
 
-f = Method(short, 'FindDItem',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(short, 'FindDialogItem',
+    (DialogRef, 'theDialog', InMode),
     (Point, 'thePt', InMode),
 )
 methods.append(f)
 
-f = Function(DialogPtr, 'NewCDialog',
+f = Function(DialogRef, 'NewColorDialog',
     (NullStorage, 'dStorage', InMode),
     (Rect_ptr, 'boundsRect', InMode),
     (ConstStr255Param, 'title', InMode),
     (Boolean, 'visible', InMode),
     (short, 'procID', InMode),
-    (WindowPtr, 'behind', InMode),
+    (WindowRef, 'behind', InMode),
     (Boolean, 'goAwayFlag', InMode),
     (long, 'refCon', InMode),
     (Handle, 'items', InMode),
 )
 functions.append(f)
 
-f = Function(void, 'ResetAlrtStage',
+f = Function(short, 'GetAlertStage',
 )
 functions.append(f)
 
-f = Method(void, 'DlgCut',
-    (DialogPtr, 'theDialog', InMode),
+f = Function(void, 'ResetAlertStage',
+)
+functions.append(f)
+
+f = Method(void, 'DialogCut',
+    (DialogRef, 'theDialog', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'DlgPaste',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(void, 'DialogPaste',
+    (DialogRef, 'theDialog', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'DlgCopy',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(void, 'DialogCopy',
+    (DialogRef, 'theDialog', InMode),
 )
 methods.append(f)
 
-f = Method(void, 'DlgDelete',
-    (DialogPtr, 'theDialog', InMode),
+f = Method(void, 'DialogDelete',
+    (DialogRef, 'theDialog', InMode),
 )
 methods.append(f)
 
-f = Function(void, 'SetDAFont',
-    (short, 'fontNum', InMode),
+f = Function(void, 'SetDialogFont',
+    (short, 'value', InMode),
 )
 functions.append(f)
 
 f = Method(void, 'AppendDITL',
-    (DialogPtr, 'theDialog', InMode),
+    (DialogRef, 'theDialog', InMode),
     (Handle, 'theHandle', InMode),
     (DITLMethod, 'method', InMode),
 )
 methods.append(f)
 
 f = Method(short, 'CountDITL',
-    (DialogPtr, 'theDialog', InMode),
+    (DialogRef, 'theDialog', InMode),
 )
 methods.append(f)
 
 f = Method(void, 'ShortenDITL',
-    (DialogPtr, 'theDialog', InMode),
+    (DialogRef, 'theDialog', InMode),
     (short, 'numberItems', InMode),
 )
 methods.append(f)
 
+f = Method(Boolean, 'StdFilterProc',
+    (DialogRef, 'theDialog', InMode),
+    (EventRecord, 'event', OutMode),
+    (short, 'itemHit', OutMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'SetDialogDefaultItem',
+    (DialogRef, 'theDialog', InMode),
+    (short, 'newItem', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'SetDialogCancelItem',
+    (DialogRef, 'theDialog', InMode),
+    (short, 'newItem', InMode),
+)
+methods.append(f)
+
+f = Method(OSErr, 'SetDialogTracksCursor',
+    (DialogRef, 'theDialog', InMode),
+    (Boolean, 'tracks', InMode),
+)
+methods.append(f)
+
diff --git a/Mac/Modules/dlg/dlgscan.py b/Mac/Modules/dlg/dlgscan.py
index d0cf144..6738828 100644
--- a/Mac/Modules/dlg/dlgscan.py
+++ b/Mac/Modules/dlg/dlgscan.py
@@ -1,5 +1,8 @@
 # Scan an Apple header file, generating a Python file of generator calls.
 
+import addpack
+addpack.addpack(':Tools:bgen:bgen')
+
 from scantools import Scanner
 
 LONG = "Dialogs"
@@ -24,7 +27,7 @@
 		listname = "functions"
 		if arglist:
 			t, n, m = arglist[0]
-			if t == "DialogPtr" and m == "InMode":
+			if t in ("DialogPtr", "DialogRef") and m == "InMode":
 				classname = "Method"
 				listname = "methods"
 		return classname, listname
@@ -42,6 +45,7 @@
 			'FreeAlert',
 			'CouldDialog',
 			'FreeDialog',
+			'GetStdFilterProc',
 			]
 
 	def makeblacklisttypes(self):
@@ -66,6 +70,8 @@
 			
 			([("DialogPtr", "*", "OutMode")],
 			 [("ExistingDialogPtr", "*", "*")]),
+			([("DialogRef", "*", "OutMode")],
+			 [("ExistingDialogPtr", "*", "*")]),
 			]
 
 if __name__ == "__main__":
diff --git a/Mac/Modules/dlg/dlgsupport.py b/Mac/Modules/dlg/dlgsupport.py
index d3491fe..8761ea8 100644
--- a/Mac/Modules/dlg/dlgsupport.py
+++ b/Mac/Modules/dlg/dlgsupport.py
@@ -3,14 +3,19 @@
 # It execs the file dlggen.py which contain the function definitions
 # (dlggen.py was generated by dlgscan.py, scanning the <Dialogs.h> header file).
 
+import addpack
+addpack.addpack(':Tools:bgen:bgen')
+
 from macsupport import *
 
 # Create the type objects
 
 DialogPtr = OpaqueByValueType("DialogPtr", "DlgObj")
+DialogRef = DialogPtr
 
 ModalFilterProcPtr = InputOnlyType("PyObject*", "O")
 ModalFilterProcPtr.passInput = lambda name: "NewModalFilterProc(Dlg_PassFilterProc(%s))" % name
+ModalFilterUPP = ModalFilterProcPtr
 
 RgnHandle = FakeType("_self->ob_itself->visRgn") # XXX
 
diff --git a/Tools/bgen/bgen/bgenBuffer.py b/Tools/bgen/bgen/bgenBuffer.py
index b7abe9d..af9fb19 100644
--- a/Tools/bgen/bgen/bgenBuffer.py
+++ b/Tools/bgen/bgen/bgenBuffer.py
@@ -68,9 +68,9 @@
 		       self.size)
 		Output("goto %s__error__;", name)
 		OutRbrace()
-		self.transferSize()
+		self.transferSize(name)
 	
-	def transferSize():
+	def transferSize(self, name):
 		Output("%s__len__ = %s__in_len__;", name, name)
 
 	def passOutput(self, name):
@@ -174,7 +174,7 @@
 	def getargsArgs(self, name):
 		return "(char **)&%s__in__, &%s__in_len__" % (name, name)
 	
-	def transferSize(self):
+	def transferSize(self, name):
 		pass
 	
 	def passInput(self, name):
diff --git a/Tools/bgen/bgen/macsupport.py b/Tools/bgen/bgen/macsupport.py
index 4839cb6..f17bb96 100644
--- a/Tools/bgen/bgen/macsupport.py
+++ b/Tools/bgen/bgen/macsupport.py
@@ -32,11 +32,15 @@
 # Handles (always resources in our case)
 Handle = OpaqueByValueType("Handle", "ResObj")
 MenuHandle = OpaqueByValueType("MenuHandle", "MenuObj")
+MenuRef = MenuHandle
 ControlHandle = OpaqueByValueType("ControlHandle", "CtlObj")
+ControlRef = ControlHandle
 
 # Windows and Dialogs
 WindowPtr = OpaqueByValueType("WindowPtr", "WinObj")
+WindowRef = WindowPtr
 DialogPtr = OpaqueByValueType("DialogPtr", "DlgObj")
+DialogRef = DialogPtr
 ExistingWindowPtr = OpaqueByValueType("WindowPtr", "WinObj_WhichWindow", "BUG")
 ExistingDialogPtr = OpaqueByValueType("DialogPtr", "WinObj_WhichWindow", "BUG")
 
@@ -137,8 +141,8 @@
 
 _SetOutputFileName = SetOutputFileName # Save original
 def SetOutputFileName(file = None):
-	"Set the output file name and set its creator&type to KAHL&TEXT"
+	"Set the output file name and set its creator&type to MPCC&TEXT"
 	_SetOutputFileName(file)
 	if file:
 		import MacOS
-		MacOS.SetCreatorAndType(file, 'KAHL', 'TEXT')
+		MacOS.SetCreatorAndType(file, 'MPCC', 'TEXT')
diff --git a/Tools/bgen/bgen/scantools.py b/Tools/bgen/bgen/scantools.py
index ff76d6c..3d546d8 100644
--- a/Tools/bgen/bgen/scantools.py
+++ b/Tools/bgen/bgen/scantools.py
@@ -27,8 +27,10 @@
 	MacOS = None
 
 # Default preferences
-CREATOR = 'KAHL'		# My favorite text editor on the Mac
-INCLUDEDIR = "D:Development:THINK C:Mac #includes:Apple #includes:"
+#CREATOR = 'KAHL'		# Guido's favorite text editor on the Mac
+#INCLUDEDIR = "D:Development:THINK C:Mac #includes:Apple #includes:"
+CREATOR = 'MPCC'		# Jack's favorite text editor on the Mac
+INCLUDEDIR = "Moes:CW5 GOLD Ä:Metrowerks C/C++ Ä:Headers Ä:Universal Headers 2.0a3 Ä:"
 
 
 Error = "scantools.Error"
@@ -203,9 +205,9 @@
 		self.includepath = [':', INCLUDEDIR]
 
 	def initpatterns(self):
-		self.head_pat = "^pascal[ \t]+" # XXX Mac specific!
+		self.head_pat = "^extern pascal[ \t]+" # XXX Mac specific!
 		self.tail_pat = "[;={}]"
-		self.type_pat = "pascal[ \t\n]+\(<type>[a-zA-Z0-9_]+\)[ \t\n]+"
+		self.type_pat = "pascal[ \t\n]+\(<type>[a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)[ \t\n]+"
 		self.name_pat = "\(<name>[a-zA-Z0-9_]+\)[ \t\n]*"
 		self.args_pat = "(\(<args>\([^(;=)]+\|([^(;=)]*)\)*\))"
 		self.whole_pat = self.type_pat + self.name_pat + self.args_pat