Use new file dialogs.

This commit is contained in:
Jack Jansen 2003-01-26 20:35:47 +00:00
parent db5ab80411
commit df976caa34
3 changed files with 34 additions and 39 deletions

View File

@ -1,15 +1,13 @@
"""checktext - Check that a text file has macintosh-style newlines"""
import macfs
import sys
import EasyDialogs
import string
def main():
fsspec, ok = macfs.PromptGetFile('File to check end-of-lines in:', 'TEXT')
if not ok:
pathname = EasyDialogs.AskFileForOpen(message='File to check end-of-lines in:')
if not pathname:
sys.exit(0)
pathname = fsspec.as_pathname()
fp = open(pathname, 'rb')
try:
data = fp.read()

View File

@ -11,7 +11,6 @@ import sys
sys.stdout = sys.stderr
import os
import macfs
import MacOS
import EasyDialogs
import buildtools
@ -36,7 +35,7 @@ def buildapplet():
if not sys.argv[1:]:
filename = EasyDialogs.AskFileForOpen(message='Select Python source or applet:',
fileTypes=('TEXT', 'APPL'))
typeList=('TEXT', 'APPL'))
if not filename:
return
tp, tf = os.path.split(filename)
@ -86,7 +85,7 @@ def buildapplet():
verbose = 'default'
# Loop over all files to be processed
for filename in args:
cr, tp = MacOS.GetCreatorAndType(macfs.FSRef(filename))
cr, tp = MacOS.GetCreatorAndType(filename)
if tp == 'APPL':
buildtools.update(template, filename, dstfilename)
else:

View File

@ -7,29 +7,29 @@ Reading and understanding this code is left as an exercise to the reader.
"""
import MacOS
import EasyDialogs
import os
import string
import sys
import types
import StringIO
import macfs
import keyword
import macresource
from aetools import unpack
from Carbon.Res import *
DEFAULT_PACKAGEFOLDER=os.path.join(sys.prefix, 'Mac', 'Lib', 'lib-scriptpackages')
DEFAULT_PACKAGEFOLDER=os.path.join(sys.prefix, 'Lib', 'plat-mac', 'lib-scriptpackages')
def main():
if len(sys.argv) > 1:
for filename in sys.argv[1:]:
processfile(filename)
else:
fss, ok = macfs.PromptGetFile('Select file with aeut/aete resource:')
if not ok:
filename = EasyDialogs.AskFileForOpen(message='Select file with aeut/aete resource:')
if not filename:
sys.exit(0)
processfile(fss.as_pathname())
processfile(filename)
def processfile(fullname):
"""Process all resources in a single file"""
@ -231,8 +231,7 @@ def compileaete(aete, resinfo, fname):
"""Generate code for a full aete resource. fname passed for doc purposes"""
[version, language, script, suites] = aete
major, minor = divmod(version, 256)
fss = macfs.FSSpec(fname)
creatorsignature, dummy = fss.GetCreatorType()
creatorsignature, dummy = MacOS.GetCreatorAndType(fname)
packagename = identify(os.path.splitext(os.path.basename(fname))[0])
if language:
packagename = packagename+'_lang%d'%language
@ -240,39 +239,39 @@ def compileaete(aete, resinfo, fname):
packagename = packagename+'_script%d'%script
if len(packagename) > 27:
packagename = packagename[:27]
macfs.SetFolder(DEFAULT_PACKAGEFOLDER)
fss, ok = macfs.GetDirectory('Create and select package folder for %s'%packagename)
if not ok:
pathname = EasyDialogs.AskFolder(message='Create and select package folder for %s'%packagename,
defaultLocation=DEFAULT_PACKAGEFOLDER)
if not pathname:
return
pathname = fss.as_pathname()
packagename = os.path.split(os.path.normpath(pathname))[1]
fss, ok = macfs.GetDirectory('Package folder for base suite (usually StdSuites)')
if ok:
dirname, basepkgname = os.path.split(os.path.normpath(fss.as_pathname()))
basepkgname = EasyDialogs.AskFolder(message='Package folder for base suite (usually StdSuites)',
defaultLocation=DEFAULT_PACKAGEFOLDER)
if basepkgname:
dirname, basepkgname = os.path.split(os.path.normpath(basepkgname))
if not dirname in sys.path:
sys.path.insert(0, dirname)
basepackage = __import__(basepkgname)
else:
basepackage = None
macfs.SetFolder(pathname)
suitelist = []
allprecompinfo = []
allsuites = []
for suite in suites:
code, suite, fss, modname, precompinfo = precompilesuite(suite, basepackage)
code, suite, pathname, modname, precompinfo = precompilesuite(suite, basepackage)
if not code:
continue
allprecompinfo = allprecompinfo + precompinfo
suiteinfo = suite, fss, modname
suiteinfo = suite, pathname, modname
suitelist.append((code, modname))
allsuites.append(suiteinfo)
for suiteinfo in allsuites:
compilesuite(suiteinfo, major, minor, language, script, fname, basepackage, allprecompinfo)
fss, ok = macfs.StandardPutFile('Package module', '__init__.py')
if not ok:
initfilename = EasyDialogs.AskFileForSave(message='Package module',
savedFileName='__init__.py')
if not initfilename:
return
fp = open(fss.as_pathname(), 'w')
fss.SetCreatorType('Pyth', 'TEXT')
fp = open(initfilename, 'w')
MacOS.SetCreatorAndType(initfilename, 'Pyth', 'TEXT')
fp.write('"""\n')
fp.write("Package generated from %s\n"%fname)
if resinfo:
@ -339,11 +338,11 @@ def precompilesuite(suite, basepackage=None):
modname = identify(name)
if len(modname) > 28:
modname = modname[:27]
fss, ok = macfs.StandardPutFile('Python output file', modname+'.py')
if not ok:
pathname = EasyDialogs.AskFileForSave(message='Python output file',
savedFileName=modname+'.py')
if not pathname:
return None, None, None, None, None
pathname = fss.as_pathname()
modname = os.path.splitext(os.path.split(pathname)[1])[0]
if basepackage and basepackage._code_to_module.has_key(code):
@ -375,15 +374,14 @@ def precompilesuite(suite, basepackage=None):
precompinfo = objc.getprecompinfo(modname)
return code, suite, fss, modname, precompinfo
return code, suite, pathname, modname, precompinfo
def compilesuite((suite, fss, modname), major, minor, language, script, fname, basepackage, precompinfo):
def compilesuite((suite, pathname, modname), major, minor, language, script, fname, basepackage, precompinfo):
"""Generate code for a single suite"""
[name, desc, code, level, version, events, classes, comps, enums] = suite
pathname = fss.as_pathname()
fp = open(fss.as_pathname(), 'w')
fss.SetCreatorType('Pyth', 'TEXT')
fp = open(pathname, 'w')
MacOS.SetCreatorAndType(pathname, 'Pyth', 'TEXT')
fp.write('"""Suite %s: %s\n' % (ascii(name), ascii(desc)))
fp.write("Level %d, version %d\n\n" % (level, version))
@ -676,9 +674,9 @@ class ObjectCompiler:
self.namemappers.append(mapper)
def askdefinitionmodule(self, type, code):
fss, ok = macfs.PromptGetFile('Where is %s %s declared?'%(type, code))
if not ok: return
path, file = os.path.split(fss.as_pathname())
path = EasyDialogs.AskFileForSave(message='Where is %s %s declared?'%(type, code))
if not path: return
path, file = os.path.split(path)
modname = os.path.splitext(file)[0]
if not path in sys.path:
sys.path.insert(0, path)