summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2003-01-21 14:38:32 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2003-01-21 14:38:32 (GMT)
commit3032fe6b21580a20fb1688145aae9477d7f9a38a (patch)
treef3f4e9bc766d5ec43898f24fdef28015eb88bed7
parent38752819807917d3b81432a02cf7a97d316ed79c (diff)
downloadcpython-3032fe6b21580a20fb1688145aae9477d7f9a38a.zip
cpython-3032fe6b21580a20fb1688145aae9477d7f9a38a.tar.gz
cpython-3032fe6b21580a20fb1688145aae9477d7f9a38a.tar.bz2
Spell out the arguments to AskFileForOpen and friends, so help() gives useful
help.
-rw-r--r--Lib/plat-mac/EasyDialogs.py145
1 files changed, 100 insertions, 45 deletions
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 @@ Message(msg) -- display a message and an OK button.
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 Carbon.File
import macresource
import os
+__all__ = ['Message', 'AskString', 'AskPassword', 'AskYesNoCancel',
+ 'GetArgv', 'AskFileForOpen', 'AskFileForSave', 'AskFolder',
+ 'Progress']
+
_initialized = 0
def _initialize():
@@ -549,49 +557,13 @@ def GetArgv(optionlist=None, commandlist=None, addoldfile=1, addnewfile=1, addfo
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 @@ def _process_Nav_args(argsargs, allowed, dftflags):
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 @@ def AskFileForOpen(**args):
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 @@ def AskFileForSave(**args):
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