blob: da55b0648f2c03d5c48042b2ecab9e0ef8e38313 [file] [log] [blame]
Jack Jansen5a6fdcd2001-08-25 12:15:04 +00001from Carbon.Res import *
2from Carbon.Resources import *
Guido van Rossum17448e21995-01-30 11:53:55 +00003import MacOS
4
5READ = 1
6WRITE = 2
7smAllScripts = -3
8
Neal Norwitzce96f692006-03-17 06:49:51 +00009def raw_input(prompt):
10 import sys
11 sys.stdout.write(prompt)
12 sys.stdout.flush()
13 return sys.stdin.readline()
14
Guido van Rossum17448e21995-01-30 11:53:55 +000015def copyres(src, dst):
Tim Peters182b5ac2004-07-18 06:16:08 +000016 """Copy resource from src file to dst file."""
17
18 cur = CurResFile()
19 ctor, type = MacOS.GetCreatorAndType(src)
20 input = FSpOpenResFile(src, READ)
21 try:
22 FSpCreateResFile(dst, ctor, type, smAllScripts)
23 except:
24 raw_input("%s already exists... CR to write anyway! " % dst)
25 output = FSpOpenResFile(dst, WRITE)
26 UseResFile(input)
27 ntypes = Count1Types()
28 for itype in range(1, 1+ntypes):
29 type = Get1IndType(itype)
30 nresources = Count1Resources(type)
31 for ires in range(1, 1+nresources):
32 res = Get1IndResource(type, ires)
33 res.LoadResource()
34 id, type, name = res.GetResInfo()
35 size = res.SizeResource()
36 attrs = res.GetResAttrs()
37 print id, type, name, size, hex(attrs)
38 res.DetachResource()
39 UseResFile(output)
40 try:
41 res2 = Get1Resource(type, id)
Guido van Rossumb940e112007-01-10 16:19:56 +000042 except (RuntimeError, Res.Error) as msg:
Tim Peters182b5ac2004-07-18 06:16:08 +000043 res2 = None
44 if res2:
45 print "Duplicate type+id, not copied"
46 print (res2.size, res2.data)
47 print res2.GetResInfo()
48 if res2.HomeResFile() == output:
49 'OK'
50 elif res2.HomeResFile() == input:
51 'BAD!'
52 else:
53 print 'Home:', res2.HomeResFile()
54 else:
55 res.AddResource(type, id, name)
56 #res.SetResAttrs(attrs)
57 res.WriteResource()
58 UseResFile(input)
59 UseResFile(cur)
60 CloseResFile(output)
61 CloseResFile(input)
Guido van Rossum17448e21995-01-30 11:53:55 +000062
63copyres('::python.ยน.rsrc', '::foo.rsrc')