diff options
Diffstat (limited to 'Mac/Demo/resources/listres.py')
-rw-r--r-- | Mac/Demo/resources/listres.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Mac/Demo/resources/listres.py b/Mac/Demo/resources/listres.py new file mode 100644 index 0000000..a0b2423 --- /dev/null +++ b/Mac/Demo/resources/listres.py @@ -0,0 +1,60 @@ +# List all resources + +import Res +from Resources import * + +def list1resources(): + ntypes = Res.Count1Types() + for itype in range(1, 1+ntypes): + type = Res.Get1IndType(itype) + print "Type:", `type` + nresources = Res.Count1Resources(type) + for i in range(1, 1 + nresources): + Res.SetResLoad(0) + res = Res.Get1IndResource(type, i) + Res.SetResLoad(1) + info(res) + +def listresources(): + ntypes = Res.CountTypes() + for itype in range(1, 1+ntypes): + type = Res.GetIndType(itype) + print "Type:", `type` + nresources = Res.CountResources(type) + for i in range(1, 1 + nresources): + Res.SetResLoad(0) + res = Res.GetIndResource(type, i) + Res.SetResLoad(1) + info(res) + +def info(res): + print res.GetResInfo(), res.SizeResource(), decodeattrs(res.GetResAttrs()) + +attrnames = { + resChanged: 'Changed', + resPreload: 'Preload', + resProtected: 'Protected', + resLocked: 'Locked', + resPurgeable: 'Purgeable', + resSysHeap: 'SysHeap', +} + +def decodeattrs(attrs): + names = [] + for bit in range(16): + mask = 1<<bit + if attrs & mask: + if attrnames.has_key(mask): + names.append(attrnames[mask]) + else: + names.append(hex(mask)) + return names + +def test(): + print "=== Local resourcess ===" + list1resources() + print "=== All resources ===" + listresources() + +if __name__ == '__main__': + test() |