def __init__(self, path, res_name_or_index): resref = MyOpenResFile(path) Res.UseResFile(resref) if isinstance(res_name_or_index, basestring): res = Res.Get1NamedResource('sfnt', res_name_or_index) else: res = Res.Get1IndResource('sfnt', res_name_or_index) self.file = StringIO(res.data) Res.CloseResFile(resref) self.name = path
def __init__(self, path, res_name_or_index): resref = MyOpenResFile(path) Res.UseResFile(resref) if type(res_name_or_index) == type(""): res = Res.Get1NamedResource('sfnt', res_name_or_index) else: res = Res.Get1IndResource('sfnt', res_name_or_index) self.file = cStringIO.StringIO(res.data) Res.CloseResFile(resref) self.name = path
def list1resources(): ntypes = Res.Count1Types() for itype in range(1, 1+ntypes): type = Res.Get1IndType(itype) print "Type:", repr(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 copyres(input, output, skiptypes, skipowner, progress=None): ctor = None alltypes = [] Res.UseResFile(input) ntypes = Res.Count1Types() progress_type_inc = 50 / ntypes for itype in range(1, 1 + ntypes): type = Res.Get1IndType(itype) if type in skiptypes: continue alltypes.append(type) nresources = Res.Count1Resources(type) progress_cur_inc = progress_type_inc / nresources for ires in range(1, 1 + nresources): res = Res.Get1IndResource(type, ires) id, type, name = res.GetResInfo() lcname = string.lower(name) if lcname == OWNERNAME and id == 0: if skipowner: continue else: ctor = type size = res.size attrs = res.GetResAttrs() if progress: progress.label('Copy %s %d %s' % (type, id, name)) progress.inc(progress_cur_inc) res.LoadResource() res.DetachResource() Res.UseResFile(output) try: res2 = Res.Get1Resource(type, id) except MacOS.Error: res2 = None if res2: if progress: progress.label('Overwrite %s %d %s' % (type, id, name)) progress.inc(0) res2.RemoveResource() res.AddResource(type, id, name) res.WriteResource() attrs = attrs | res.GetResAttrs() res.SetResAttrs(attrs) Res.UseResFile(input) return (alltypes, ctor)
def dataFromFile(pathOrFSSpec, nameOrID="", resType='NFNT'): from Carbon import Res resref = Res.FSOpenResFile(pathOrFSSpec, 1) # readonly try: Res.UseResFile(resref) if not nameOrID: # just take the first in the file res = Res.Get1IndResource(resType, 1) elif type(nameOrID) == types.IntType: res = Res.Get1Resource(resType, nameOrID) else: res = Res.Get1NamedResource(resType, nameOrID) theID, theType, name = res.GetResInfo() data = res.data finally: Res.CloseResFile(resref) return data
def getFONDs(self): FONDcount = Res.Count1Resources('FOND') for i in range(FONDcount): fond = FontFamily(Res.Get1IndResource('FOND', i + 1), self.mode) self.fonds.append(fond)
# List all resources
"""tools for BuildApplet and BuildApplication"""
"""Creation of PYC resources"""