Spell out the arguments to AskFileForOpen and friends, so help() gives useful
help.
diff --git a/Lib/plat-mac/EasyDialogs.py b/Lib/plat-mac/EasyDialogs.py
index 8d33a09..119adfa 100644
--- a/Lib/plat-mac/EasyDialogs.py
+++ b/Lib/plat-mac/EasyDialogs.py
@@ -4,6 +4,10 @@
 AskString(prompt, default) -- ask for a string, display OK and Cancel buttons.
 AskPassword(prompt, default) -- like AskString(), but shows text as bullets.
 AskYesNoCancel(question, default) -- display a question and Yes, No and Cancel buttons.
+GetArgv(optionlist, commandlist) -- fill a sys.argv-like list using a dialog
+AskFileForOpen(...) -- Ask the user for an existing file 
+AskFileForSave(...) -- Ask the user for an output file
+AskFolder(...) -- Ask the user to select a folder
 bar = Progress(label, maxvalue) -- Display a progress bar
 bar.set(value) -- Set value
 bar.inc( *amount ) -- increment value by amount (default=1)
@@ -31,6 +35,10 @@
 import macresource
 import os
 
+__all__ = ['Message', 'AskString', 'AskPassword', 'AskYesNoCancel',
+	'GetArgv', 'AskFileForOpen', 'AskFileForSave', 'AskFolder',
+	'Progress']
+	
 _initialized = 0
 
 def _initialize():
@@ -549,49 +557,13 @@
 			apply(MacOS.SchedParams, appsw)
 		del d
 
-def _mktypelist(typelist):
-	# Workaround for OSX typeless files:
-	if 'TEXT' in typelist and not '\0\0\0\0' in typelist:
-		typelist = typelist + ('\0\0\0\0',)
-	if not typelist:
-		return None
-	data = 'Pyth' + struct.pack("hh", 0, len(typelist))
-	for type in typelist:
-		data = data+type
-	return Carbon.Res.Handle(data)
-	
-_ALLOWED_KEYS = {
-	'version':1,
-	'defaultLocation':1,
-	'dialogOptionFlags':1,
-	'location':1,
-	'clientName':1,
-	'windowTitle':1,
-	'actionButtonLabel':1,
-	'cancelButtonLabel':1,
-	'savedFileName':1,
-	'message':1,
-	'preferenceKey':1,
-	'popupExtension':1,
-	'eventProc':1,
-	'previewProc':1,
-	'filterProc':1,
-	'typeList':1,
-	'fileType':1,
-	'fileCreator':1,
-	# Our extension:
-	'wanted':1,
-	'multiple':1,
-}
-
-def _process_Nav_args(argsargs, allowed, dftflags):
+def _process_Nav_args(dftflags, **args):
 	import aepack
 	import Carbon.AE
 	import Carbon.File
-	args = argsargs.copy()
 	for k in args.keys():
-		if not allowed.has_key(k):
-			raise TypeError, "Unknown keyword argument: %s" % repr(k)
+		if args[k] is None:
+			del args[k]
 	# Set some defaults, and modify some arguments
 	if not args.has_key('dialogOptionFlags'):
 		args['dialogOptionFlags'] = dftflags
@@ -618,9 +590,37 @@
 		del args['wanted']
 	return args, tpwanted
 	
-def AskFileForOpen(**args):
+def AskFileForOpen(
+		version=None,
+		defaultLocation=None,
+		dialogOptionFlags=None,
+		location=None,
+		clientName=None,
+		windowTitle=None,
+		actionButtonLabel=None,
+		cancelButtonLabel=None,
+		message=None,
+		preferenceKey=None,
+		popupExtension=None,
+		eventProc=None,
+		previewProc=None,
+		filterProc=None,
+		typeList=None,
+		wanted=None,
+		multiple=None):
+	"""Display a dialog asking the user for a file to open.
+	
+	wanted is the return type wanted: FSSpec, FSRef, unicode or string (default)
+	the other arguments can be looked up in Apple's Navigation Services documentation"""
+		
 	default_flags = 0x56 # Or 0xe4?
-	args, tpwanted = _process_Nav_args(args, _ALLOWED_KEYS, default_flags) 
+	args, tpwanted = _process_Nav_args(default_flags, version=version,
+		defaultLocation=defaultLocation, dialogOptionFlags=dialogOptionFlags,
+		location=location,clientName=clientName,windowTitle=windowTitle,
+		actionButtonLabel=actionButtonLabel,cancelButtonLabel=cancelButtonLabel,
+		message=message,preferenceKey=preferenceKey,
+		popupExtension=popupExtension,eventProc=eventProc,previewProc=previewProc,
+		filterProc=filterProc,typeList=typeList,wanted=wanted,multiple=multiple) 
 	try:
 		rr = Nav.NavChooseFile(args)
 		good = 1
@@ -640,9 +640,38 @@
 		return tpwanted(rr.selection_fsr[0].FSRefMakePath(), 'utf8')
 	raise TypeError, "Unknown value for argument 'wanted': %s" % repr(tpwanted)
 
-def AskFileForSave(**args):
+def AskFileForSave(
+		version=None,
+		defaultLocation=None,
+		dialogOptionFlags=None,
+		location=None,
+		clientName=None,
+		windowTitle=None,
+		actionButtonLabel=None,
+		cancelButtonLabel=None,
+		savedFileName=None,
+		message=None,
+		preferenceKey=None,
+		popupExtension=None,
+		eventProc=None,
+		fileType=None,
+		fileCreator=None,
+		wanted=None,
+		multiple=None):
+	"""Display a dialog asking the user for a filename to save to.
+	
+	wanted is the return type wanted: FSSpec, FSRef, unicode or string (default)
+	the other arguments can be looked up in Apple's Navigation Services documentation"""
+		
+
 	default_flags = 0x07
-	args, tpwanted = _process_Nav_args(args, _ALLOWED_KEYS, default_flags) 
+	args, tpwanted = _process_Nav_args(default_flags, version=version,
+		defaultLocation=defaultLocation, dialogOptionFlags=dialogOptionFlags,
+		location=location,clientName=clientName,windowTitle=windowTitle,
+		actionButtonLabel=actionButtonLabel,cancelButtonLabel=cancelButtonLabel,
+		savedFileName=savedFileName,message=message,preferenceKey=preferenceKey,
+		popupExtension=popupExtension,fileType=fileType,fileCreator=fileCreator,
+		wanted=wanted,multiple=multiple) 
 	try:
 		rr = Nav.NavPutFile(args)
 		good = 1
@@ -669,9 +698,35 @@
 		return tpwanted(fullpath)
 	raise TypeError, "Unknown value for argument 'wanted': %s" % repr(tpwanted)
 		
-def AskFolder(**args):
+def AskFolder(
+		version=None,
+		defaultLocation=None,
+		dialogOptionFlags=None,
+		location=None,
+		clientName=None,
+		windowTitle=None,
+		actionButtonLabel=None,
+		cancelButtonLabel=None,
+		message=None,
+		preferenceKey=None,
+		popupExtension=None,
+		eventProc=None,
+		filterProc=None,
+		wanted=None,
+		multiple=None):
+	"""Display a dialog asking the user for select a folder.
+	
+	wanted is the return type wanted: FSSpec, FSRef, unicode or string (default)
+	the other arguments can be looked up in Apple's Navigation Services documentation"""
+		
 	default_flags = 0x17
-	args, tpwanted = _process_Nav_args(args, _ALLOWED_KEYS, default_flags) 
+	args, tpwanted = _process_Nav_args(default_flags, version=version,
+		defaultLocation=defaultLocation, dialogOptionFlags=dialogOptionFlags,
+		location=location,clientName=clientName,windowTitle=windowTitle,
+		actionButtonLabel=actionButtonLabel,cancelButtonLabel=cancelButtonLabel,
+		message=message,preferenceKey=preferenceKey,
+		popupExtension=popupExtension,eventProc=eventProc,filterProc=filterProc,
+		wanted=wanted,multiple=multiple) 
 	try:
 		rr = Nav.NavChooseFolder(args)
 		good = 1