Apparently the code to forestall Tk eating events was too aggressive (Tk user input...
[python/dscho.git] / Mac / Lib / pythonprefs.py
blob0ae3e36915b213098e9ff12787400ba2eee809de
1 from preferences import *
3 # Names of Python resources
4 PREFNAME_NAME="PythonPreferenceFileName"
6 # Resource IDs in the preferences file
7 PATH_ID = 228
8 DIR_ID = 228
9 POPT_ID = 228
10 GUSI_ID = 10240
12 # Override IDs (in the applet)
13 OVERRIDE_PATH_ID = 229
14 OVERRIDE_DIR_ID = 229
15 OVERRIDE_POPT_ID = 229
16 OVERRIDE_GUSI_ID = 10241
18 # version
19 CUR_VERSION=7
21 preffilename = PstringLoader(AnyResLoader('STR ', resname=PREFNAME_NAME)).load()
22 pref_fss = preferencefile(preffilename, 'Pyth', 'pref')
24 class PoptLoader(VersionLoader):
25 def __init__(self, loader):
26 VersionLoader.__init__(self, "bbbbbbbbbbbbbb", loader)
28 def versioncheck(self, data):
29 if data[0] == CUR_VERSION:
30 return data
31 print 'old resource'
32 raise Error, "old resource"
34 class GusiLoader:
35 def __init__(self, loader):
36 self.loader = loader
37 self.data = None
39 def load(self):
40 self.data = self.loader.load()
41 while self.data[10:14] != '0181':
42 self.loader.delete(1)
43 self.loader.load()
44 tp = self.data[0:4]
45 cr = self.data[4:8]
46 flags = ord(self.data[9])
47 return cr, tp
49 def save(self, (cr, tp)):
50 flags = ord(self.data[9])
51 newdata = tp + cr + self.data[8:]
52 self.loader.save(newdata)
54 popt_default_default = NullLoader(chr(CUR_VERSION) + 8*'\0')
55 popt_default = AnyResLoader('Popt', POPT_ID, default=popt_default_default)
56 popt_loader = ResLoader(pref_fss, 'Popt', POPT_ID, default=popt_default)
57 popt = PoptLoader(popt_loader)
59 dir_default = AnyResLoader('alis', DIR_ID)
60 dir = ResLoader(pref_fss, 'alis', DIR_ID, default=dir_default)
62 gusi_default = AnyResLoader('GU\267I', GUSI_ID)
63 gusi_loader = ResLoader(pref_fss, 'GU\267I', GUSI_ID, default=gusi_default)
64 gusi = GusiLoader(gusi_loader)
66 path_default = AnyResLoader('STR#', PATH_ID)
67 path_loader = ResLoader(pref_fss, 'STR#', PATH_ID, default=path_default)
68 path = StrListLoader(path_loader)
70 class PythonOptions:
71 def __init__(self, popt=popt, dir=dir, gusi=gusi, path=path):
72 self.popt = popt
73 self.dir = dir
74 self.gusi = gusi
75 self.path = path
77 def load(self):
78 dict = {}
79 dict['path'] = self.path.load()
80 diralias = self.dir.load()
81 dirfss, dummy = macfs.RawAlias(diralias).Resolve()
82 dict['dir'] = dirfss
83 dict['creator'], dict['type'] = self.gusi.load()
84 flags = self.popt.load()
85 dict['version'], dict['inspect'], dict['verbose'], dict['optimize'], \
86 dict['unbuffered'], dict['debugging'], dummy, dict['keep_console'], \
87 dict['nointopt'], dict['noargs'], dict['tabwarn'], \
88 dict['nosite'], dict['nonavservice'], dict['delayconsole'] = flags
89 return dict
91 def save(self, dict):
92 self.path.save(dict['path'])
93 diralias = macfs.FSSpec(dict['dir']).NewAlias().data
94 self.dir.save(diralias)
95 self.gusi.save((dict['creator'], dict['type']))
96 flags = dict['version'], dict['inspect'], dict['verbose'], dict['optimize'], \
97 dict['unbuffered'], dict['debugging'], 0, dict['keep_console'], \
98 dict['nointopt'], dict['noargs'], dict['tabwarn'], \
99 dict['nosite'], dict['nonavservice'], dict['delayconsole']
100 self.popt.save(flags)
102 def AppletOptions(file):
103 fss = macfs.FSSpec(file)
104 a_popt = PoptLoader(ResLoader(fss, 'Popt', OVERRIDE_POPT_ID, default=popt_loader))
105 a_dir = ResLoader(fss, 'alis', OVERRIDE_DIR_ID, default=dir)
106 a_gusi = GusiLoader(
107 ResLoader(fss, 'GU\267I', OVERRIDE_GUSI_ID, default=gusi_loader))
108 a_path = StrListLoader(
109 ResLoader(fss, 'STR#', OVERRIDE_PATH_ID, default=path_loader))
110 return PythonOptions(a_popt, a_dir, a_gusi, a_path)
112 def _test():
113 import preferences
114 preferences.debug = 1
115 dict = PythonOptions().load()
116 for k in dict.keys():
117 print k, '\t', dict[k]
119 if __name__ == '__main__':
120 _test()