]> granicus.if.org Git - python/commitdiff
Integrated macfsn into macfs, and made the Standard File calls return the
authorJack Jansen <jack.jansen@cwi.nl>
Thu, 26 Dec 2002 21:09:39 +0000 (21:09 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Thu, 26 Dec 2002 21:09:39 +0000 (21:09 +0000)
correct FSSpec implementations.

Mac/Lib/macfs.py
Mac/Lib/macfsn.py [deleted file]

index a0aa0322513390d94746ee385502ed0279e12240..3cf56d033dc349551b39305db260eb7d505ae435 100644 (file)
@@ -2,6 +2,10 @@
 macfs and MACFS.
 """
 import sys
+import struct
+import Carbon.Res
+import Carbon.File
+import Nav
 
 # First step: ensure we also emulate the MACFS module, which contained
 # all the constants
@@ -11,19 +15,19 @@ sys.modules['MACFS'] = sys.modules[__name__]
 # Import all those constants
 from Carbon.Files import *
 from Carbon.Folders import *
-# Another method:
-from Carbon.Folder import FindFolder
 
 # For some obscure historical reason these are here too:
 READ = 1
 WRITE = 2
 smAllScripts = -3
 
-
-import Carbon.File
 # The old name of the error object:
 error = Carbon.File.Error
 
+#
+# The various objects macfs used to export. We override them here, because some
+# of the method names are subtly different.
+#
 class FSSpec(Carbon.File.FSSpec):
        def as_fsref(self):
                return FSRef(self)
@@ -72,12 +76,14 @@ class Alias(Carbon.File.Alias):
                return FSSpec(fss), changed
                
 from Carbon.File import FInfo
-       
+
+# Backward-compatible type names:
 FSSpecType = FSSpec
 FSRefType = FSRef
 AliasType = Alias
 FInfoType = FInfo
 
+# Global functions:
 def ResolveAliasFile(fss, chain=1):
        fss, isdir, isalias = Carbon.File.ResolveAliasFile(fss, chain)
        return FSSpec(fss), isdir, isalias
@@ -94,5 +100,132 @@ def FindApplication(*args):
 def NewAliasMinimalFromFullPath(path):
        return Alias(Carbon.File.NewAliasMinimalFromFullPath(path, '', ''))
        
-# Finally, install nav services
-import macfsn
\ No newline at end of file
+# Another global function:
+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)
+       
+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
+
+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
+       
+def SetFolder(folder):
+       global _curfolder
+       if _curfolder:
+               rv = _curfolder
+       else:
+               rv = None
+       _curfolder = FSSpec(folder)
+       return rv
+       
+def _handleSetFolder(args):
+       global _curfolder
+       if not _curfolder:
+               return
+       import aepack
+       fss = _curfolder
+       aedesc = aepack.pack(fss)
+       args['defaultLocation'] = aedesc
+       _curfolder = None
+       
+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
+       
diff --git a/Mac/Lib/macfsn.py b/Mac/Lib/macfsn.py
deleted file mode 100644 (file)
index 8f3203c..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-"""StandardFile compatability module: implement macfs StandardFile
-API calls with Navigation Services"""
-import macfs
-import struct
-from Carbon import Res
-try:
-       import Nav
-except ImportError:
-       Nav = None
-
-_curfolder = None
-_movablemodal = 1
-
-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 Res.Handle(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
-       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 = rr.selection[0]
-               else:
-                       fss = None
-                       good = 0
-##     if typehandle:
-##             typehandle.DisposeHandle()
-       return fss, good
-
-def _StandardPutFile(prompt, default=None):
-       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 = rr.selection[0]
-       return fss, good
-       
-def _SetFolder(folder):
-       global _curfolder
-       if _curfolder:
-               rv = _curfolder
-       else:
-               rv = None
-       _curfolder = macfs.FSSpec(folder)
-       return rv
-       
-def _handleSetFolder(args):
-       global _curfolder
-       if not _curfolder:
-               return
-       import aepack
-       fss = macfs.FSSpec(_curfolder)
-       aedesc = aepack.pack(fss)
-       args['defaultLocation'] = aedesc
-       _curfolder = None
-       
-def _GetDirectory(prompt=None):
-       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 = 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
-       _install()
-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)
-