| 
									
										
										
										
											1997-09-08 13:26:36 +00:00
										 |  |  | from preferences import * | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Names of Python resources | 
					
						
							|  |  |  | PREFNAME_NAME="PythonPreferenceFileName" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Resource IDs in the preferences file | 
					
						
							| 
									
										
										
										
											1998-01-06 16:48:49 +00:00
										 |  |  | PATH_ID = 228 | 
					
						
							|  |  |  | DIR_ID = 228 | 
					
						
							|  |  |  | POPT_ID = 228 | 
					
						
							| 
									
										
										
										
											1997-09-08 13:26:36 +00:00
										 |  |  | GUSI_ID = 10240 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Override IDs (in the applet) | 
					
						
							| 
									
										
										
										
											1998-01-06 16:48:49 +00:00
										 |  |  | OVERRIDE_PATH_ID = 229 | 
					
						
							|  |  |  | OVERRIDE_DIR_ID = 229 | 
					
						
							|  |  |  | OVERRIDE_POPT_ID = 229 | 
					
						
							| 
									
										
										
										
											1997-09-08 13:26:36 +00:00
										 |  |  | OVERRIDE_GUSI_ID = 10241 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # version | 
					
						
							| 
									
										
										
										
											1997-09-09 13:51:17 +00:00
										 |  |  | CUR_VERSION=4 | 
					
						
							| 
									
										
										
										
											1997-09-08 13:26:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | preffilename = PstringLoader(AnyResLoader('STR ', resname=PREFNAME_NAME)).load() | 
					
						
							|  |  |  | pref_fss = preferencefile(preffilename, 'Pyth', 'pref') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PoptLoader(VersionLoader): | 
					
						
							|  |  |  | 	def __init__(self, loader): | 
					
						
							| 
									
										
										
										
											1997-09-09 13:51:17 +00:00
										 |  |  | 		VersionLoader.__init__(self, "bbbbbbbbbbbb", loader) | 
					
						
							| 
									
										
										
										
											1997-09-08 13:26:36 +00:00
										 |  |  | 		 | 
					
						
							|  |  |  | 	def versioncheck(self, data): | 
					
						
							|  |  |  | 		if data[0] == CUR_VERSION: | 
					
						
							|  |  |  | 			return data | 
					
						
							|  |  |  | 		print 'old resource' | 
					
						
							|  |  |  | 		raise Error, "old resource" | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | class GusiLoader: | 
					
						
							|  |  |  | 	def __init__(self, loader): | 
					
						
							|  |  |  | 		self.loader = loader | 
					
						
							|  |  |  | 		self.data = None | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 	def load(self): | 
					
						
							|  |  |  | 		self.data = self.loader.load() | 
					
						
							|  |  |  | 		while self.data[10:14] != '0181': | 
					
						
							|  |  |  | 			self.loader.delete(1) | 
					
						
							|  |  |  | 			self.loader.load() | 
					
						
							|  |  |  | 		tp = self.data[0:4] | 
					
						
							|  |  |  | 		cr = self.data[4:8] | 
					
						
							|  |  |  | 		flags = ord(self.data[9]) | 
					
						
							|  |  |  | 		delay = ((flags & 0x20) == 0x20) | 
					
						
							|  |  |  | 		return cr, tp, delay | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 	def save(self, (cr, tp, delay)): | 
					
						
							|  |  |  | 		flags = ord(self.data[9]) | 
					
						
							|  |  |  | 		if delay: | 
					
						
							|  |  |  | 			flags = flags | 0x20 | 
					
						
							|  |  |  | 		else: | 
					
						
							|  |  |  | 			flags = flags & ~0x20 | 
					
						
							|  |  |  | 		newdata = tp + cr + self.data[8] + chr(flags) + self.data[10:] | 
					
						
							|  |  |  | 		self.loader.save(newdata) | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | popt_default_default = NullLoader(chr(CUR_VERSION) + 8*'\0') | 
					
						
							|  |  |  | popt_default = AnyResLoader('Popt', POPT_ID, default=popt_default_default) | 
					
						
							|  |  |  | popt_loader = ResLoader(pref_fss, 'Popt', POPT_ID, default=popt_default) | 
					
						
							|  |  |  | popt = PoptLoader(popt_loader) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dir_default = AnyResLoader('alis', DIR_ID) | 
					
						
							|  |  |  | dir = ResLoader(pref_fss, 'alis', DIR_ID, default=dir_default) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gusi_default = AnyResLoader('GU\267I', GUSI_ID) | 
					
						
							|  |  |  | gusi_loader = ResLoader(pref_fss, 'GU\267I', GUSI_ID, default=gusi_default) | 
					
						
							|  |  |  | gusi = GusiLoader(gusi_loader) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | path_default = AnyResLoader('STR#', PATH_ID) | 
					
						
							|  |  |  | path_loader = ResLoader(pref_fss, 'STR#', PATH_ID, default=path_default) | 
					
						
							|  |  |  | path = StrListLoader(path_loader) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PythonOptions: | 
					
						
							|  |  |  | 	def __init__(self, popt=popt, dir=dir, gusi=gusi, path=path): | 
					
						
							|  |  |  | 		self.popt = popt | 
					
						
							|  |  |  | 		self.dir = dir | 
					
						
							|  |  |  | 		self.gusi = gusi | 
					
						
							|  |  |  | 		self.path = path | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 	def load(self): | 
					
						
							|  |  |  | 		dict = {} | 
					
						
							|  |  |  | 		dict['path'] = self.path.load() | 
					
						
							|  |  |  | 		diralias = self.dir.load() | 
					
						
							|  |  |  | 		dirfss, dummy = macfs.RawAlias(diralias).Resolve() | 
					
						
							|  |  |  | 		dict['dir'] = dirfss | 
					
						
							|  |  |  | 		dict['creator'], dict['type'], dict['delayconsole'] = self.gusi.load() | 
					
						
							|  |  |  | 		flags = self.popt.load() | 
					
						
							|  |  |  | 		dict['version'], dict['inspect'], dict['verbose'], dict['optimize'], \ | 
					
						
							|  |  |  | 			dict['unbuffered'], dict['debugging'], dict['keepopen'], dict['keeperror'], \ | 
					
						
							| 
									
										
										
										
											1997-09-09 13:51:17 +00:00
										 |  |  | 			dict['nointopt'], dict['noargs'], dict['oldexc'], \ | 
					
						
							|  |  |  | 			dict['nosite'] = flags | 
					
						
							| 
									
										
										
										
											1997-09-08 13:26:36 +00:00
										 |  |  | 		return dict | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 	def save(self, dict): | 
					
						
							|  |  |  | 		self.path.save(dict['path']) | 
					
						
							|  |  |  | 		diralias = macfs.FSSpec(dict['dir']).NewAlias().data | 
					
						
							|  |  |  | 		self.dir.save(diralias) | 
					
						
							|  |  |  | 		self.gusi.save((dict['creator'], dict['type'], dict['delayconsole'])) | 
					
						
							|  |  |  | 		flags = dict['version'], dict['inspect'], dict['verbose'], dict['optimize'], \ | 
					
						
							|  |  |  | 			dict['unbuffered'], dict['debugging'], dict['keepopen'], dict['keeperror'], \ | 
					
						
							| 
									
										
										
										
											1997-09-09 13:51:17 +00:00
										 |  |  | 			dict['nointopt'], dict['noargs'], dict['oldexc'], \ | 
					
						
							|  |  |  | 			dict['nosite'] | 
					
						
							| 
									
										
										
										
											1997-09-08 13:26:36 +00:00
										 |  |  | 		self.popt.save(flags) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def AppletOptions(file): | 
					
						
							|  |  |  | 	fss = macfs.FSSpec(file) | 
					
						
							|  |  |  | 	a_popt = PoptLoader(ResLoader(fss, 'Popt', OVERRIDE_POPT_ID, default=popt_loader)) | 
					
						
							|  |  |  | 	a_dir = ResLoader(fss, 'alis', OVERRIDE_DIR_ID, default=dir) | 
					
						
							| 
									
										
										
										
											1998-01-06 12:11:48 +00:00
										 |  |  | 	a_gusi = GusiLoader( | 
					
						
							|  |  |  | 			ResLoader(fss, 'GU\267I', OVERRIDE_GUSI_ID, default=gusi_loader)) | 
					
						
							|  |  |  | 	a_path = StrListLoader( | 
					
						
							|  |  |  | 			ResLoader(fss, 'STR#', OVERRIDE_PATH_ID, default=path_loader)) | 
					
						
							| 
									
										
										
										
											1997-09-08 13:26:36 +00:00
										 |  |  | 	return PythonOptions(a_popt, a_dir, a_gusi, a_path) | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | def _test(): | 
					
						
							|  |  |  | 	import preferences | 
					
						
							|  |  |  | 	preferences.debug = 1 | 
					
						
							|  |  |  | 	dict = PythonOptions().load() | 
					
						
							|  |  |  | 	for k in dict.keys(): | 
					
						
							|  |  |  | 		print k, '\t', dict[k] | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  | 	_test() | 
					
						
							|  |  |  | 	 |