symbian-qemu-0.9.1-12/python-2.6.1/Mac/Demo/resources/copyres.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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')