示例#1
0
def _unpackAERecord(desc, codecs):
    # Unpack record to dict, converting keys from 4-letter codes to AEType instances and unpacking values.
    dct = {}
    for i in range(desc.AECountItems()):
        key, value = desc.AEGetNthDesc(i + 1, kAE.typeWildCard)
        if key == 'usrf':
            lst = _unpackAEList(value, codecs)
            for i in range(0, len(lst), 2):
                dct[lst[i]] = lst[i + 1]
        else:
            dct[AEType(key)] = codecs.unpack(value)
    return dct
示例#2
0
	def unpackaerecord(self, desc):
		# Unpack record to dict, converting keys from 4-letter codes to AEType instances and unpacking values.
		dct = {}
		for i in range(desc.count()):
			key, value = desc.getitem(i + 1, kae.typeWildCard)
			if key == 'usrf':
				lst = self.unpackaelist(value)
				for i in range(0, len(lst), 2):
					dct[lst[i]] = lst[i+1]
			else:
				dct[AEType(key)] = self.unpack(value)
		return dct
示例#3
0
	def unpackunknown(self, desc):
		"""Clients may override this to provide additional unpackers."""
		if desc.isrecord():
			rec = desc.coerce('reco')
			rec.setparam('pcls', self.pack(AEType(desc.type)))
			decoder = self.decoders.get('reco')
			if decoder:
				return decoder(rec)
			else:
				return rec
		else:
			return desc
示例#4
0
 lambda desc, codecs: macfile.Alias.makewithaedesc(desc),
 kAE.typeFSS:
 lambda desc, codecs: macfile.File.makewithaedesc(desc),
 kAE.typeFSRef:
 lambda desc, codecs: macfile.File.makewithaedesc(desc),
 _typeFileURL:
 lambda desc, codecs: macfile.File.makewithaedesc(desc),
 kAE.typeQDPoint:
 _unpackQDPoint,
 kAE.typeQDRectangle:
 _unpackQDRect,
 kAE.typeRGBColor:
 lambda desc, codecs: struct.unpack('HHH', desc.data),
 # ensure correct endianness in following
 kAE.typeType:
 lambda desc, codecs: AEType(
     struct.pack("L", *struct.unpack(">L", desc.data))),
 kAE.typeEnumeration:
 lambda desc, codecs: AEEnum(
     struct.pack("L", *struct.unpack(">L", desc.data))),
 kAE.typeProperty:
 lambda desc, codecs: AEProp(
     struct.pack("L", *struct.unpack(">L", desc.data))),
 kAE.typeKeyword:
 lambda desc, codecs: AEKey(
     struct.pack("L", *struct.unpack(">L", desc.data))),
 'evnt':
 lambda desc, codecs: AEEventName(
     struct.pack("LL", *struct.unpack(">LL", desc.data))),  # event name
 kAE.typeStyledText:
 lambda desc, codecs: _unpackUnicodeText(
     desc.AECoerceDesc(kAE.typeUnicodeText), codecs),
示例#5
0
	def unpacktype(self, desc):
		return AEType(fourcharcode(desc.data))
示例#6
0
    kAE.typeAlias:
    lambda desc, codecs: mactypes.Alias.makewithaedesc(desc),
    kAE.typeFSS:
    lambda desc, codecs: mactypes.File.makewithaedesc(desc),
    kAE.typeFSRef:
    lambda desc, codecs: mactypes.File.makewithaedesc(desc),
    _typeFileURL:
    lambda desc, codecs: mactypes.File.makewithaedesc(desc),
    kAE.typeQDPoint:
    _unpackQDPoint,
    kAE.typeQDRectangle:
    _unpackQDRect,
    kAE.typeRGBColor:
    lambda desc, codecs: struct.unpack('HHH', desc.data),
    # ensure correct endianness in following
    kAE.typeType:
    lambda desc, codecs: AEType(fourCharCode(desc.data)),
    kAE.typeEnumeration:
    lambda desc, codecs: AEEnum(fourCharCode(desc.data)),
    kAE.typeProperty:
    lambda desc, codecs: AEProp(fourCharCode(desc.data)),
    kAE.typeKeyword:
    lambda desc, codecs: AEKey(fourCharCode(desc.data)),
    kAE.typeStyledText:
    lambda desc, codecs: _unpackUnicodeText(
        desc.AECoerceDesc(kAE.typeUnicodeText), codecs),
    kAE.typeStyledUnicodeText:
    lambda desc, codecs: _unpackUnicodeText(
        desc.AECoerceDesc(kAE.typeUnicodeText), codecs),
}