summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2003-01-21 15:31:16 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2003-01-21 15:31:16 (GMT)
commit01524d0462793bf352c7518136460e453a738d33 (patch)
tree89a574b8d3000c3636802bf98849c8d1517ba389
parentcb100d16e3e7c368179a8b507afd5534c5681eb6 (diff)
downloadcpython-01524d0462793bf352c7518136460e453a738d33.zip
cpython-01524d0462793bf352c7518136460e453a738d33.tar.gz
cpython-01524d0462793bf352c7518136460e453a738d33.tar.bz2
Implemented StandardGetFile and friends with the new EasyDialogs file
dialogs.
-rw-r--r--Lib/plat-mac/macfs.py116
1 files changed, 20 insertions, 96 deletions
diff --git a/Lib/plat-mac/macfs.py b/Lib/plat-mac/macfs.py
index b0132ae..b960ed4 100644
--- a/Lib/plat-mac/macfs.py
+++ b/Lib/plat-mac/macfs.py
@@ -132,125 +132,49 @@ from Carbon.Folder import FindFolder
# Finally the old Standard File routine emulators.
#
-_movablemodal = 0
_curfolder = None
-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)
-
def StandardGetFile(*typelist):
"""Ask for an input file, optionally specifying 4-char file types that are
allowable"""
- return apply(PromptGetFile, (None,)+typelist)
+ return PromptGetFile('', *typelist)
def PromptGetFile(prompt, *typelist):
"""Ask for an input file giving the user a prompt message. Optionally you can
specifying 4-char file types that are allowable"""
- args = {}
- flags = 0x56
- typehandle = _mktypelist(typelist)
- if typehandle:
- args['typeList'] = typehandle
- else:
- flags = flags | 0x01
- if prompt:
- args['message'] = prompt
- args['preferenceKey'] = 'PyMC'
- if _movablemodal:
- args['eventProc'] = None
- args['dialogOptionFlags'] = flags
- _handleSetFolder(args)
- try:
- rr = Nav.NavChooseFile(args)
- good = 1
- except Nav.error, arg:
- if arg[0] != -128: # userCancelledErr
- raise Nav.error, arg
- good = 0
- fss = None
- else:
- if rr.selection:
- fss = FSSpec(rr.selection[0])
- else:
- fss = None
- good = 0
-## if typehandle:
-## typehandle.DisposeHandle()
- return fss, good
+ import EasyDialogs
+ if not typelist:
+ typelist = None
+ fss = EasyDialogs.AskFileForOpen(message=prompt, wanted=FSSpec,
+ typeList=typelist, defaultLocation=_handleSetFolder())
+ return fss, not fss is None
def StandardPutFile(prompt, default=None):
"""Ask the user for an output file, with a prompt. Optionally you cn supply a
default output filename"""
- args = {}
- flags = 0x07
- if prompt:
- args['message'] = prompt
- args['preferenceKey'] = 'PyMC'
- if _movablemodal:
- args['eventProc'] = None
- if default:
- args['savedFileName'] = default
- args['dialogOptionFlags'] = flags
- _handleSetFolder(args)
- try:
- rr = Nav.NavPutFile(args)
- good = 1
- except Nav.error, arg:
- if arg[0] != -128: # userCancelledErr
- raise Nav.error, arg
- good = 0
- fss = None
- else:
- fss = FSSpec(rr.selection[0])
- return fss, good
+ import EasyDialogs
+ fss = EasyDialogs.AskFileForSave(wanted=FSSpec, message=prompt,
+ savedFileName=default, defaultLocation=_handleSetFolder())
+ return fss, not fss is None
def SetFolder(folder):
global _curfolder
if _curfolder:
- rv = _curfolder
+ rv = FSSpec(_curfolder)
else:
rv = None
- _curfolder = FSSpec(folder)
+ _curfolder = folder
return rv
-def _handleSetFolder(args):
+def _handleSetFolder():
global _curfolder
- if not _curfolder:
- return
- import aepack
- fss = _curfolder
- aedesc = aepack.pack(fss)
- args['defaultLocation'] = aedesc
+ rv = _curfolder
_curfolder = None
+ return rv
def GetDirectory(prompt=None):
"""Ask the user to select a folder. Optionally you can give a prompt."""
- args = {}
- flags = 0x17
- if prompt:
- args['message'] = prompt
- args['preferenceKey'] = 'PyMC'
- if _movablemodal:
- args['eventProc'] = None
- args['dialogOptionFlags'] = flags
- _handleSetFolder(args)
- try:
- rr = Nav.NavChooseFolder(args)
- good = 1
- except Nav.error, arg:
- if arg[0] != -128: # userCancelledErr
- raise Nav.error, arg
- good = 0
- fss = None
- else:
- fss = FSSpec(rr.selection[0])
- return fss, good
-
+ import EasyDialogs
+ fss = EasyDialogs.AskFolder(message=prompt, wanted=FSSpec,
+ defaultLocation=_handleSetFolder())
+ return fss, not fss is None