| # |
| # 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) |