| from Res import * |
| from Resources import * |
| import MacOS |
| |
| READ = 1 |
| WRITE = 2 |
| smAllScripts = -3 |
| |
| def copyres(src, dst): |
| """Copy resource from src file to dst file.""" |
| |
| cur = CurResFile() |
| ctor, type = MacOS.GetCreatorAndType(src) |
| input = FSpOpenResFile(src, READ) |
| try: |
| FSpCreateResFile(dst, ctor, type, smAllScripts) |
| except: |
| raw_input("%s already exists... CR to write anyway! " % dst) |
| output = FSpOpenResFile(dst, WRITE) |
| UseResFile(input) |
| ntypes = Count1Types() |
| for itype in range(1, 1+ntypes): |
| type = Get1IndType(itype) |
| nresources = Count1Resources(type) |
| for ires in range(1, 1+nresources): |
| res = Get1IndResource(type, ires) |
| res.LoadResource() |
| id, type, name = res.GetResInfo() |
| size = res.SizeResource() |
| attrs = res.GetResAttrs() |
| print id, type, name, size, hex(attrs) |
| res.DetachResource() |
| UseResFile(output) |
| try: |
| res2 = Get1Resource(type, id) |
| except (RuntimeError, Res.Error), msg: |
| res2 = None |
| if res2: |
| print "Duplicate type+id, not copied" |
| print (res2.size, res2.data) |
| print res2.GetResInfo() |
| if res2.HomeResFile() == output: |
| 'OK' |
| elif res2.HomeResFile() == input: |
| 'BAD!' |
| else: |
| print 'Home:', res2.HomeResFile() |
| else: |
| res.AddResource(type, id, name) |
| #res.SetResAttrs(attrs) |
| res.WriteResource() |
| UseResFile(input) |
| UseResFile(cur) |
| CloseResFile(output) |
| CloseResFile(input) |
| |
| copyres('::python.ยน.rsrc', '::foo.rsrc') |