63 lines
1.2 KiB
Python
63 lines
1.2 KiB
Python
|
#
|
||
|
# Create 'Estr' resource from error dictionary
|
||
|
from Res import *
|
||
|
import Res
|
||
|
from Resources import *
|
||
|
import MacOS
|
||
|
import string
|
||
|
|
||
|
READ = 1
|
||
|
WRITE = 2
|
||
|
smAllScripts = -3
|
||
|
|
||
|
def Pstring(str):
|
||
|
if len(str) > 255:
|
||
|
raise ValueError, 'String too large'
|
||
|
return chr(len(str))+str
|
||
|
|
||
|
def writeestr(dst, edict):
|
||
|
"""Create Estr resource file given a dictionary of errors."""
|
||
|
|
||
|
|
||
|
FSpCreateResFile(dst, 'RSED', 'rsrc', smAllScripts)
|
||
|
output = FSpOpenResFile(dst, WRITE)
|
||
|
UseResFile(output)
|
||
|
for num in edict.keys():
|
||
|
res = Resource(Pstring(edict[num]))
|
||
|
res.AddResource('Estr', num, '')
|
||
|
res.WriteResource()
|
||
|
CloseResFile(output)
|
||
|
|
||
|
def parsefile(src):
|
||
|
fp = open(src)
|
||
|
lines = []
|
||
|
while 1:
|
||
|
x = fp.readline()
|
||
|
if not x:
|
||
|
break
|
||
|
x = x[:-1]
|
||
|
words = string.split(x)
|
||
|
if x[0] in (' ', '\t'):
|
||
|
# continuation line
|
||
|
x = string.join(words)
|
||
|
lines[-1] = lines[-1] + ' ' + x
|
||
|
else:
|
||
|
x = string.join(words)
|
||
|
lines.append(x)
|
||
|
dict = {}
|
||
|
for line in lines:
|
||
|
words = string.split(line)
|
||
|
index = eval(words[0])
|
||
|
if dict.has_key(index):
|
||
|
print '** Duplicate key:', index
|
||
|
x = string.join(words[2:])
|
||
|
if not x:
|
||
|
x = words[1]
|
||
|
dict[index] = x
|
||
|
return dict
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
dict = parsefile('errors.txt')
|
||
|
writeestr('errors.rsrc', dict)
|