diff options
Diffstat (limited to 'Mac/Lib/macfs.py')
-rw-r--r-- | Mac/Lib/macfs.py | 231 |
1 files changed, 0 insertions, 231 deletions
diff --git a/Mac/Lib/macfs.py b/Mac/Lib/macfs.py deleted file mode 100644 index 3cf56d0..0000000 --- a/Mac/Lib/macfs.py +++ /dev/null @@ -1,231 +0,0 @@ -"""macfs - Pure Python module designed to be backward compatible with -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 - -sys.modules['MACFS'] = sys.modules[__name__] - -# Import all those constants -from Carbon.Files import * -from Carbon.Folders import * - -# For some obscure historical reason these are here too: -READ = 1 -WRITE = 2 -smAllScripts = -3 - -# 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) - - def NewAlias(self, src=None): - return Alias(Carbon.File.NewAlias(src, self)) - - def GetCreatorType(self): - finfo = self.FSpGetFInfo() - return finfo.Creator, finfo.Type - - def SetCreatorType(self, ctor, tp): - finfo = self.FSpGetFInfo() - finfo.Creator = ctor - finfo.Type = tp - self.FSpSetFInfo(finfo) - - def GetFInfo(self): - return self.FSpGetFInfo() - - def SetFInfo(self, info): - return self.FSpSetFInfo(info) - - def GetDates(self): - import os - statb = os.stat(self.as_pathname()) - return statb.st_ctime, statb.st_mtime, 0 - - def SetDates(self, *dates): - print "FSSpec.SetDates no longer implemented" - -class FSRef(Carbon.File.FSRef): - def as_fsspec(self): - return FSSpec(self) - -class Alias(Carbon.File.Alias): - - def GetInfo(self, index): - return self.GetAliasInfo(index) - - def Update(self, *args): - print "Alias.Update not yet implemented" - - def Resolve(self, src=None): - fss, changed = self.ResolveAlias(src) - 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 - -def RawFSSpec(data): - return FSSpec(rawdata=data) - -def RawAlias(data): - return Alias(rawdata=data) - -def FindApplication(*args): - raise NotImplementedError, "FindApplication no longer implemented" - -def NewAliasMinimalFromFullPath(path): - return Alias(Carbon.File.NewAliasMinimalFromFullPath(path, '', '')) - -# 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 - |