[Python-checkins] python/dist/src/Mac/scripts gensuitemodule.py,1.31,1.32

jackjansen@users.sourceforge.net jackjansen@users.sourceforge.net
Fri, 21 Mar 2003 08:28:17 -0800


Update of /cvsroot/python/python/dist/src/Mac/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv6872

Modified Files:
	gensuitemodule.py 
Log Message:
Got rid of the "enum not found" interaction, and added code to allow
overriding the creator signature.


Index: gensuitemodule.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/scripts/gensuitemodule.py,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -d -r1.31 -r1.32
*** gensuitemodule.py	21 Mar 2003 16:07:39 -0000	1.31
--- gensuitemodule.py	21 Mar 2003 16:28:09 -0000	1.32
***************
*** 34,37 ****
--- 34,38 ----
  --base package   Use another base package in stead of default StdSuites (-b)
  --edit old=new   Edit suite names, use empty new to skip a suite (-e)
+ --creator code   Set creator code for package (-c)
  """)
  	sys.exit(1)
***************
*** 39,44 ****
  def main():
  	if len(sys.argv) > 1:
! 		SHORTOPTS = "rb:o:e:"
! 		LONGOPTS = ("resource", "base=", "output=", "edit=")
  		try:
  			opts, args = getopt.getopt(sys.argv[1:], SHORTOPTS, LONGOPTS)
--- 40,45 ----
  def main():
  	if len(sys.argv) > 1:
! 		SHORTOPTS = "rb:o:e:c:"
! 		LONGOPTS = ("resource", "base=", "output=", "edit=", "creator=")
  		try:
  			opts, args = getopt.getopt(sys.argv[1:], SHORTOPTS, LONGOPTS)
***************
*** 50,53 ****
--- 51,55 ----
  		output = None
  		edit_modnames = []
+ 		creatorsignature = None
  		
  		for o, a in opts:
***************
*** 63,66 ****
--- 65,74 ----
  					usage()
  				edit_modnames.append(split)
+ 			if o in ('-c', '--creator'):
+ 				if len(a) != 4:
+ 					sys.stderr.write("creator must be 4-char string\n")
+ 					sys.exit(1)
+ 				creatorsignature = a
+ 				
  					
  		if output and len(args) > 1:
***************
*** 70,74 ****
  		for filename in args:
  			process_func(filename, output=output, basepkgname=basepkgname, 
! 				edit_modnames=edit_modnames)
  	else:
  		# The dialogOptionFlags below allows selection of .app bundles.
--- 78,82 ----
  		for filename in args:
  			process_func(filename, output=output, basepkgname=basepkgname, 
! 				edit_modnames=edit_modnames, creatorsignature=creatorsignature)
  	else:
  		# The dialogOptionFlags below allows selection of .app bundles.
***************
*** 85,89 ****
  			processfile_fromresource(filename)
  
! def processfile_fromresource(fullname, output=None, basepkgname=None, edit_modnames=None):
  	"""Process all resources in a single file"""
  	cur = CurResFile()
--- 93,98 ----
  			processfile_fromresource(filename)
  
! def processfile_fromresource(fullname, output=None, basepkgname=None, 
! 		edit_modnames=None, creatorsignature=None):
  	"""Process all resources in a single file"""
  	cur = CurResFile()
***************
*** 113,119 ****
  	UseResFile(cur)
  	compileaetelist(aetelist, fullname, output=output, 
! 		basepkgname=basepkgname, edit_modnames=edit_modnames)
  
! def processfile(fullname, output=None, basepkgname=None, edit_modnames=None):
  	"""Ask an application for its terminology and process that"""
  	aedescobj, launched = OSATerminology.GetSysTerminology(fullname)
--- 122,130 ----
  	UseResFile(cur)
  	compileaetelist(aetelist, fullname, output=output, 
! 		basepkgname=basepkgname, edit_modnames=edit_modnames,
! 		creatorsignature=creatorsignature)
  
! def processfile(fullname, output=None, basepkgname=None, 
! 		edit_modnames=None, creatorsignature=None):
  	"""Ask an application for its terminology and process that"""
  	aedescobj, launched = OSATerminology.GetSysTerminology(fullname)
***************
*** 129,138 ****
  	aedata = raw[0]
  	aete = decode(aedata.data)
! 	compileaete(aete, None, fullname, output=output, basepkgname=basepkgname)
  
! def compileaetelist(aetelist, fullname, output=None, basepkgname=None, edit_modnames=None):
  	for aete, resinfo in aetelist:
  		compileaete(aete, resinfo, fullname, output=output, 
! 			basepkgname=basepkgname, edit_modnames=edit_modnames)
  		
  def decode(data):
--- 140,152 ----
  	aedata = raw[0]
  	aete = decode(aedata.data)
! 	compileaete(aete, None, fullname, output=output, basepkgname=basepkgname,
! 		creatorsignature=creatorsignature)
  
! def compileaetelist(aetelist, fullname, output=None, basepkgname=None, 
! 			edit_modnames=None, creatorsignature=None):
  	for aete, resinfo in aetelist:
  		compileaete(aete, resinfo, fullname, output=output, 
! 			basepkgname=basepkgname, edit_modnames=edit_modnames,
! 			creatorsignature=creatorsignature)
  		
  def decode(data):
***************
*** 299,307 ****
  	]
  
! def compileaete(aete, resinfo, fname, output=None, basepkgname=None, edit_modnames=None):
  	"""Generate code for a full aete resource. fname passed for doc purposes"""
  	[version, language, script, suites] = aete
  	major, minor = divmod(version, 256)
! 	creatorsignature, dummy = MacOS.GetCreatorAndType(fname)
  	packagename = identify(os.path.splitext(os.path.basename(fname))[0])
  	if language:
--- 313,323 ----
  	]
  
! def compileaete(aete, resinfo, fname, output=None, basepkgname=None, 
! 		edit_modnames=None, creatorsignature=None):
  	"""Generate code for a full aete resource. fname passed for doc purposes"""
  	[version, language, script, suites] = aete
  	major, minor = divmod(version, 256)
! 	if not creatorsignature:
! 		creatorsignature, dummy = MacOS.GetCreatorAndType(fname)
  	packagename = identify(os.path.splitext(os.path.basename(fname))[0])
  	if language:
***************
*** 345,349 ****
  		allsuites.append(suiteinfo)
  	for suiteinfo in allsuites:
! 		compilesuite(suiteinfo, major, minor, language, script, fname, basepackage, allprecompinfo)
  	initfilename = os.path.join(output, '__init__.py')
  	fp = open(initfilename, 'w')
--- 361,366 ----
  		allsuites.append(suiteinfo)
  	for suiteinfo in allsuites:
! 		compilesuite(suiteinfo, major, minor, language, script, fname, basepackage, 
! 				allprecompinfo, interact=(edit_modnames is None))
  	initfilename = os.path.join(output, '__init__.py')
  	fp = open(initfilename, 'w')
***************
*** 444,448 ****
  		findenumsinevent(event, enumsneeded)
  
! 	objc = ObjectCompiler(None, basemodule)
  	for cls in classes:
  		objc.compileclass(cls)
--- 461,465 ----
  		findenumsinevent(event, enumsneeded)
  
! 	objc = ObjectCompiler(None, basemodule, interact=(edit_modnames is None))
  	for cls in classes:
  		objc.compileclass(cls)
***************
*** 463,467 ****
  	return code, suite, pathname, modname, 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
--- 480,485 ----
  	return code, suite, pathname, modname, precompinfo
  
! def compilesuite((suite, pathname, modname), major, minor, language, script, 
! 		fname, basepackage, precompinfo, interact=1):
  	"""Generate code for a single suite"""
  	[name, desc, code, level, version, events, classes, comps, enums] = suite
***************
*** 501,505 ****
  		fp.write("\tpass\n\n")
  
! 	objc = ObjectCompiler(fp, basemodule, precompinfo)
  	for cls in classes:
  		objc.compileclass(cls)
--- 519,523 ----
  		fp.write("\tpass\n\n")
  
! 	objc = ObjectCompiler(fp, basemodule, precompinfo, interact=interact)
  	for cls in classes:
  		objc.compileclass(cls)
***************
*** 655,659 ****
  class CodeNameMapper:
  	
! 	def __init__(self):
  		self.code2name = {
  			"property" : {},
--- 673,677 ----
  class CodeNameMapper:
  	
! 	def __init__(self, interact=1):
  		self.code2name = {
  			"property" : {},
***************
*** 670,673 ****
--- 688,692 ----
  		self.modulename = None
  		self.star_imported = 0
+ 		self.can_interact = interact
  		
  	def addnamecode(self, type, name, code):
***************
*** 713,720 ****
  			
  class ObjectCompiler:
! 	def __init__(self, fp, basesuite=None, othernamemappers=None):
  		self.fp = fp
  		self.basesuite = basesuite
! 		self.namemappers = [CodeNameMapper()]
  		if othernamemappers:
  			self.othernamemappers = othernamemappers[:]
--- 732,740 ----
  			
  class ObjectCompiler:
! 	def __init__(self, fp, basesuite=None, othernamemappers=None, interact=1):
  		self.fp = fp
  		self.basesuite = basesuite
! 		self.can_interact = interact
! 		self.namemappers = [CodeNameMapper(self.can_interact)]
  		if othernamemappers:
  			self.othernamemappers = othernamemappers[:]
***************
*** 722,726 ****
  			self.othernamemappers = []
  		if basesuite:
! 			basemapper = CodeNameMapper()
  			basemapper.addmodule(basesuite, '', 1)
  			self.namemappers.append(basemapper)
--- 742,746 ----
  			self.othernamemappers = []
  		if basesuite:
! 			basemapper = CodeNameMapper(self.can_interact)
  			basemapper.addmodule(basesuite, '', 1)
  			self.namemappers.append(basemapper)
***************
*** 756,764 ****
  					m = None
  				if not m: return None, None, None
! 				mapper = CodeNameMapper()
  				mapper.addmodule(m, m.__name__, 0)
  				self.namemappers.append(mapper)
  	
  	def askdefinitionmodule(self, type, code):
  		path = EasyDialogs.AskFileForSave(message='Where is %s %s declared?'%(type, code))
  		if not path: return
--- 776,787 ----
  					m = None
  				if not m: return None, None, None
! 				mapper = CodeNameMapper(self.can_interact)
  				mapper.addmodule(m, m.__name__, 0)
  				self.namemappers.append(mapper)
  	
  	def askdefinitionmodule(self, type, code):
+ 		if not self.can_interact:
+ 			print "** No definition for %s '%s' found" % (type, code)
+ 			return None
  		path = EasyDialogs.AskFileForSave(message='Where is %s %s declared?'%(type, code))
  		if not path: return