»Core Development>Code coverage>Mac/Demo/resources/copyres.py

Python code coverage for Mac/Demo/resources/copyres.py

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