From 54b9ce1c4f400239eda936972e2133dffb242344 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Sat, 18 Dec 1999 16:57:33 +0000 Subject: [PATCH] StandardFile compatability routines. For the time being calling macfsn._install() will install these in macfs (if Navigation is available). --- Mac/Lib/macfsn.py | 130 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 Mac/Lib/macfsn.py diff --git a/Mac/Lib/macfsn.py b/Mac/Lib/macfsn.py new file mode 100644 index 00000000000..dcff677fceb --- /dev/null +++ b/Mac/Lib/macfsn.py @@ -0,0 +1,130 @@ +"""StandardFile compatability module: implement macfs StandardFile +API calls with Navigation Services""" +import macfs +import struct +import Res +try: + import Nav +except ImportError: + Nav = None + +_curfolder = None +_movablemodal = 1 + +def _mktypelist(typelist): + if not typelist: + return None + data = 'Pyth' + struct.pack("hh", 0, len(typelist)) + for type in typelist: + data = data+type + return Res.Resource(data) + +def _StandardGetFile(*typelist): + return apply(_PromptGetFile, (None,)+typelist) + +def _PromptGetFile(prompt, *typelist): + 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 + try: + rr = Nav.NavChooseFile(args) + good = 1 + except Nav.error, arg: + good = 0 + fss = macfs.FSSpec(':cancelled') + else: + fss = rr.selection[0] +## if typehandle: +## typehandle.DisposeHandle() + return fss, good + +def _StandardPutFile(prompt, default=None): + args = {} + flags = 0x57 + if prompt: + args['message'] = prompt + args['preferenceKey'] = 'PyMC' + if _movablemodal: + args['eventProc'] = None + try: + rr = Nav.NavPutFile(args) + good = 1 + except Nav.error, arg: + good = 0 + fss = macfs.FSSpec(':cancelled') + else: + fss = rr.selection[0] + return fss, good + +def _SetFolder(folder): + global _curfolder + if _curfolder: + rv = _curfolder + else: + _curfolder = macfs.FSSpec(":") + _curfolder = macfs.FSSpec(folder) + return rv + +def _GetDirectory(prompt=None): + args = {} + flags = 0x57 + if prompt: + args['message'] = prompt + args['preferenceKey'] = 'PyMC' + if _movablemodal: + args['eventProc'] = None + try: + rr = Nav.NavChooseFolder(args) + good = 1 + except Nav.error, arg: + good = 0 + fss = macfs.FSSpec(':cancelled') + else: + fss = rr.selection[0] + return fss, good + +def _install(): + macfs.StandardGetFile = StandardGetFile + macfs.PromptGetFile = PromptGetFile + macfs.StandardPutFile = StandardPutFile + macfs.SetFolder = SetFolder + macfs.GetDirectory = GetDirectory + +if Nav and Nav.NavServicesAvailable(): + StandardGetFile = _StandardGetFile + PromptGetFile = _PromptGetFile + StandardPutFile = _StandardPutFile + SetFolder = _SetFolder + GetDirectory = _GetDirectory +else: + from macfs import StandardGetFile, PromptGetFile, StandardPutFile, SetFolder, GetDirectory + + +if __name__ == '__main__': + print 'Testing StandardGetFile' + fss, ok = StandardGetFile() + print '->', fss, ok + print 'Testing StandardGetFile("TEXT")' + fss, ok = StandardGetFile("TEXT") + print '->', fss, ok + print 'Testing PromptGetFile' + fss, ok = PromptGetFile("prompt") + print '->', fss, ok + print 'Testing StandardPutFile("the prompt", "default")' + fss, ok = StandardPutFile("the prompt", "default") + print '->', fss, ok + print 'Testing GetDirectory("another prompt")' + fss, ok = GetDirectory("Another prompt") + print '->', fss, ok + import sys + sys.exit(1) +