1 | from Carbon.Res import *
|
---|
2 | from Carbon.Resources import *
|
---|
3 | import MacOS
|
---|
4 |
|
---|
5 | READ = 1
|
---|
6 | WRITE = 2
|
---|
7 | smAllScripts = -3
|
---|
8 |
|
---|
9 | def copyres(src, dst):
|
---|
10 | """Copy resource from src file to dst file."""
|
---|
11 |
|
---|
12 | cur = CurResFile()
|
---|
13 | ctor, type = MacOS.GetCreatorAndType(src)
|
---|
14 | input = FSpOpenResFile(src, READ)
|
---|
15 | try:
|
---|
16 | FSpCreateResFile(dst, ctor, type, smAllScripts)
|
---|
17 | except:
|
---|
18 | raw_input("%s already exists... CR to write anyway! " % dst)
|
---|
19 | output = FSpOpenResFile(dst, WRITE)
|
---|
20 | UseResFile(input)
|
---|
21 | ntypes = Count1Types()
|
---|
22 | for itype in range(1, 1+ntypes):
|
---|
23 | type = Get1IndType(itype)
|
---|
24 | nresources = Count1Resources(type)
|
---|
25 | for ires in range(1, 1+nresources):
|
---|
26 | res = Get1IndResource(type, ires)
|
---|
27 | res.LoadResource()
|
---|
28 | id, type, name = res.GetResInfo()
|
---|
29 | size = res.SizeResource()
|
---|
30 | attrs = res.GetResAttrs()
|
---|
31 | print id, type, name, size, hex(attrs)
|
---|
32 | res.DetachResource()
|
---|
33 | UseResFile(output)
|
---|
34 | try:
|
---|
35 | res2 = Get1Resource(type, id)
|
---|
36 | except (RuntimeError, Res.Error), msg:
|
---|
37 | res2 = None
|
---|
38 | if res2:
|
---|
39 | print "Duplicate type+id, not copied"
|
---|
40 | print (res2.size, res2.data)
|
---|
41 | print res2.GetResInfo()
|
---|
42 | if res2.HomeResFile() == output:
|
---|
43 | 'OK'
|
---|
44 | elif res2.HomeResFile() == input:
|
---|
45 | 'BAD!'
|
---|
46 | else:
|
---|
47 | print 'Home:', res2.HomeResFile()
|
---|
48 | else:
|
---|
49 | res.AddResource(type, id, name)
|
---|
50 | #res.SetResAttrs(attrs)
|
---|
51 | res.WriteResource()
|
---|
52 | UseResFile(input)
|
---|
53 | UseResFile(cur)
|
---|
54 | CloseResFile(output)
|
---|
55 | CloseResFile(input)
|
---|
56 |
|
---|
57 | copyres('::python.¹.rsrc', '::foo.rsrc')
|
---|