diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 1995-08-09 15:16:58 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 1995-08-09 15:16:58 (GMT) |
commit | d8eb8a79456555385185782df350c39233104341 (patch) | |
tree | 9a27edba08f27c3a4bb2a497750b6daa9a9ad746 /Mac/scripts/ConfigurePython.py | |
parent | 9f0a17b83f0babee7743af03f594316a11907884 (diff) | |
download | cpython-d8eb8a79456555385185782df350c39233104341.zip cpython-d8eb8a79456555385185782df350c39233104341.tar.gz cpython-d8eb8a79456555385185782df350c39233104341.tar.bz2 |
MkPluginAliases - Scripts (AppleScript and Python) to create aliases
to PPC plugin libraries
fixfiletypes.py - Script to recursively set mac creator/type based on
extension
Diffstat (limited to 'Mac/scripts/ConfigurePython.py')
-rw-r--r-- | Mac/scripts/ConfigurePython.py | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/Mac/scripts/ConfigurePython.py b/Mac/scripts/ConfigurePython.py new file mode 100644 index 0000000..2f7d643 --- /dev/null +++ b/Mac/scripts/ConfigurePython.py @@ -0,0 +1,107 @@ +# This python script creates Finder aliases for all the +# dynamically-loaded modules that "live in" in a single +# shared library. +# It needs a fully functional non-dynamic python to work +# (since it creates aliases to stuff it needs itself), +# you should probably drag it onto your non-dynamic python. +# +# If you compare it to MkPluginAliases.as it also serves +# as a comparison between python and AppleScript:-) +# +# Jack Jansen, CWI, August 1995 + +import os +import macfs +import sys + +try: + import Res +except ImportError: + print """ +Res module not found, which probably means that you are trying +to execute this script with a dynamically-linked python. This will +not work, since the whole point of the script is to create aliases +for dynamically-linked python to use. Do one of the following: +- Run this script using a non-dynamic python +- Use MkPluginAliases.as (an AppleScript) +- Create the aliases by hand (see the source for a list).""" + sys.exit(1) + +import EasyDialogs + +goals = [ + ("mactcp.slb", "mactcpmodules.slb"), + ("macdnr.slb", "mactcpmodules.slb"), + ("AE.slb", "toolboxmodules.slb"), + ("Ctl.slb", "toolboxmodules.slb"), + ("Dlg.slb", "toolboxmodules.slb"), + ("Evt.slb", "toolboxmodules.slb"), + ("Menu.slb", "toolboxmodules.slb"), + ("Qd.slb", "toolboxmodules.slb"), + ("Res.slb", "toolboxmodules.slb"), + ("Snd.slb", "toolboxmodules.slb"), + ("Win.slb", "toolboxmodules.slb"), + ("imgcolormap.slb", "imgmodules.slb"), + ("imgformat.slb", "imgmodules.slb"), + ("imggif.slb", "imgmodules.slb"), + ("imgjpeg.slb", "imgmodules.slb"), + ("imgop.slb", "imgmodules.slb"), + ("imgpgm.slb", "imgmodules.slb"), + ("imgppm.slb", "imgmodules.slb"), + ("imgtiff.slb", "imgmodules.slb") +] + +# +# Not guaranteed to be correct or stay correct (Apple doesn't tell you +# how to do this), but it seems to work. +# +def mkalias(src, dst): + """Create a finder alias""" + srcfss = macfs.FSSpec(src) + dstfss = macfs.FSSpec(dst) + alias = srcfss.NewAlias() + srcfinfo = srcfss.GetFInfo() + + Res.FSpCreateResFile(dstfss, srcfinfo.Creator, srcfinfo.Type, -1) + h = Res.FSpOpenResFile(dstfss, 3) + resource = Res.Resource(alias.data) + resource.AddResource('alis', 0, '') + Res.CloseResFile(h) + + dstfinfo = dstfss.GetFInfo() + dstfinfo.Flags = dstfinfo.Flags|0x8000 # Alias flag + dstfss.SetFInfo(dstfinfo) + +def main(): + # Ask the user for the plugins directory + dir, ok = macfs.GetDirectory() + if not ok: sys.exit(0) + os.chdir(dir.as_pathname()) + + # Remove old .slb aliases and collect a list of .slb files + if EasyDialogs.AskYesNoCancel('Proceed with removing old aliases?') <= 0: + sys.exit(0) + LibFiles = [] + allfiles = os.listdir(':') + for f in allfiles: + if f[-4:] == '.slb': + finfo = macfs.FSSpec(f).GetFInfo() + if finfo.Flags & 0x8000: + os.unlink(f) + else: + LibFiles.append(f) + + print LibFiles + # Create the new aliases. + if EasyDialogs.AskYesNoCancel('Proceed with creating new ones?') <= 0: + sys.exit(0) + for dst, src in goals: + if src in LibFiles: + mkalias(src, dst) + else: + EasyDialogs.Message(dst+' not created: '+src+' not found') + + EasyDialogs.Message('All done!') + +if __name__ == '__main__': + main() |