def GetMarkers(rec, current_time=0): markers = rec.markers.get() mrks = [] for m in markers: p = m['position'] l = m[aem.AEType('leng')] if p > current_time: mrks.append((p, p + l)) return mrks
from CarbonX import kAE from CarbonX.AE import AECreateList, AECreateDesc import aem from genericreference import GenericReference from terminology import tablesforapp, tablesfordata, kProperty, kElement, kCommand from referencerenderer import renderreference from keywordwrapper import Keyword ###################################################################### # PRIVATE ###################################################################### # Codecs _keyAECompOperator = aem.AEType(kAE.keyAECompOperator) _keyAEObject1 = aem.AEType(kAE.keyAEObject1) _keyAEObject2 = aem.AEType(kAE.keyAEObject2) _kTypeCompDescriptorOperators = { kAE.kAEGreaterThan: 'AS__gt__', kAE.kAEGreaterThanEquals: 'AS__ge__', kAE.kAEEquals: 'AS__eq__', kAE.kAELessThan: 'AS__lt__', kAE.kAELessThanEquals: 'AS__le__', kAE.kAEBeginsWith: 'startswith', kAE.kAEEndsWith: 'endswith', kAE.kAEContains: 'contains' } #######
def customSendProc(event, modeFlags, priority, timeout): args = [] # unpack required attributes eventcode, target = _unpackEventAttributes(event) try: # get app instance and associated data if not _appCache.has_key((target.type, target.data)): if target.type != kAE.typeProcessSerialNumber: raise OSAError( 10000, "Can't identify application (target descriptor not typeProcessSerialNumber)" ) app = appscript.app( _pathToAppByPSN(*struct.unpack('LL', target.data))) appData = app.AS_appdata commandsbycode = dict([ (data[1][0], (name, dict([(v, k) for (k, v) in data[1][-1].items()]))) for (name, data) in appData.referencebyname.items() if data[0] == 'c' ]) _appCache[(target.type, target.data)] = (app, appData, commandsbycode) app, appData, commandsbycode = _appCache[(target.type, target.data)] # unpack parameters params = appData.unpack(event.AECoerceDesc(kAE.typeAERecord)) resultType = params.pop(aem.AEType('rtyp'), None) directParam = params.pop(aem.AEType('----'), None) # apply special cases if eventcode == 'corecrel' and params.has_key(aem.AEType('insh')): # Special case: if 'make' command has an 'at' parameter, use 'at' parameter as target reference target = params.pop(aem.AEType('insh')) elif eventcode == 'coresetd': # Special case: for 'set' command, use direct parameter as target reference and use 'to' parameter for direct argument target = directParam directParam = params.pop(aem.AEType('data')) elif isinstance(directParam, appscript.reference.Reference): # Special case: if direct parameter is a reference, use this as target reference target = directParam directParam = None else: target = app # build command and arguments list commandName, argNames = commandsbycode[eventcode] if directParam is not None: args.append( ` directParam `) for key, val in params.items(): args.append('%s=%r' % (argNames[key.code], val)) if resultType: args.append('resulttype=%r' % resultType) if modeFlags & kAE.kAEWaitReply != kAE.kAEWaitReply: args.append('waitreply=False') if timeout != -1: args.append('timeout=%i' % (timeout / 60)) # result! out('%r.%s(%s)' % (target, commandName, ', '.join(args))) except Exception, e: import traceback traceback.print_exc() out('Untranslated event %r' % eventcode)