Example #1
0
property name : "hello"

on run
end

on open x
end

on baz()
end

on fub()
end
'''

scriptDesc = codecs.pack(script)

scriptID = osac.OSACompile(scriptDesc, kOSAModeCompileIntoContext, kOSANullScript)


print `codecs.unpack(osac.OSAGetHandlerNames(kOSAModeNull, scriptID))`

i = osac.OSAGetHandler(kOSAModeNull, scriptID, codecs.pack(AEEventName('aevtodoc')))
print i, `codecs.unpack(osac.OSADisplay(i, typeWildCard, kOSAModeNull))`

print `codecs.unpack(osac.OSAGetPropertyNames(kOSAModeNull, scriptID))`

o = osac.OSAGetProperty(kOSAModeNull, scriptID, codecs.pack('bar'))
print `codecs.unpack(osac.OSACoerceToDesc(o, typeWildCard, 0))`

Example #2
0
######################################################################
# PRIVATE
######################################################################

_codecs = Codecs()

def _extract(fn, type):
	try:
		desc = fn()
	except MacOS.Error, err:
		if err.args[0] != -192: # re-raise unless aete resource not found
			raise
		return []
	else:
		lst = _codecs.unpack(desc)
		if not isinstance(lst, list):
			lst = [lst]
		return [val for val in lst if isinstance(val, AEDesc) and val.type == type and val.data]


######################################################################
# PUBLIC
######################################################################

def getsdef(path):
	"""Get an application's terminology as sdef XML data, if available.
		path : str | unicode | FSRef -- full path to app
		Result : str | None -- XML data, or None if OS version < 10.4
	"""
	return OSATerminology.CopyScriptingDefinition(path)
osac.OSASetDefaultTarget(AECreateDesc(typeNull, ''))

scriptID = osac.OSACompile(scriptDesc, kOSAModeCompileIntoContext, 0)


def fn(ae):
    print
    print 'EVT', ` ae.type, ae.data[:64] + (ae.data[64:] and '...' or '') `
    #raise 'fuk'
    r = Application().event('aevtansr', {'----': 10000}).AEM_event
    print 'RES', ` r.type, r.data[:64] + (r.data[64:] and '...' or '') `
    print
    return r


osac.OSASetResumeDispatchProc(fn)
print osac.OSAGetResumeDispatchProc()
i = osac.OSAExecute(scriptID, 0, 0)
print ` codecs.unpack(osac.OSADisplay(i, typeWildCard, 0)) `

print osac.OSAGetResumeDispatchProc()
print ` codecs.unpack(osac.OSADoScript(scriptDesc, 0, typeChar, 0)) `

osac.OSASetResumeDispatchProc((kOSANoDispatch, 0))
print osac.OSAGetResumeDispatchProc()
print ` codecs.unpack(osac.OSADoScript(scriptDesc, 0, typeChar, 0)) `

osac.OSASetResumeDispatchProc((kOSAUseStandardDispatch, kOSADontUsePhac))
print osac.OSAGetResumeDispatchProc()
Example #4
0
print f


def c(ae, m, p, t):
    print
    print 'EVT', ` ae.type, ae.data[:64] + (ae.data[64:] and '...' or '') `

    try:
        r = f(ae, m, p, t)
    except Exception, e:
        print 'ERROR', e
        r = Application().event('aevtansr', {'errn': e[0]}).AEM_event
    print 'RES', ` r.type, r.data[:64] + (r.data[64:] and '...' or '') `
    print

    return r


osac.OSASetSendProc(c)

print ` codecs.unpack(osac.OSADoScript(scriptDesc, 0, typeChar, 0)) `

print osac.OSAGetSendProc()

print

osac.OSASetSendProc(f)

print ` codecs.unpack(osac.OSADoScript(scriptDesc, 0, typeChar, 0)) `

print osac.OSAGetSendProc()
Example #5
0
#!/usr/bin/env pythonw

from Carbon.Cm import OpenDefaultComponent
from CarbonX.OSA import OSAComponentInstance
from CarbonX.kOSA import *
from CarbonX.kAE import *
from aem import Codecs

codecs = Codecs()

osac = OSAComponentInstance(OpenDefaultComponent('osa ', 'ascr'))

script = '''tell app "Finder" to get folder 1 of home'''

scriptDesc = codecs.pack(script)

scriptID = osac.OSACompile(scriptDesc, kOSAModeNull, kOSANullScript)
resultID = osac.OSAExecute(scriptID, kOSANullScript, kOSAModeNull)

print ` codecs.unpack(osac.OSAGetSource(scriptID, typeWildCard)) `
print
print ` codecs.unpack(osac.OSADisplay(resultID, typeWildCard, kOSAModeNull)) `
print
print ` codecs.unpack(osac.OSACoerceToDesc(resultID, typeWildCard, 0)) `

osac.OSADispose(scriptID)
osac.OSADispose(resultID)
Example #6
0
# create an aem Codecs instance to pack and unpack AEDescs
codecs = Codecs()

# open an AppleScript component instance, and wrap it in an OSAComponentInstance to provide the OSA API (clumsy arrangement, but it does the job)
osac = OSAComponentInstance(OpenDefaultComponent('osa ', 'ascr'))

root = split(__file__)[0]
src = join(root, 'test.scpt')
dest = join(root, 'test_out.scpt')

id, storable = osac.OSALoadFile(src, kOSAModeNull)

print id, storable

print osac.OSAExecute(id, kOSANullScript, kOSAModeNull)

osac.OSAStoreFile(id, typeOSAGenericStorage, kOSAModeNull, dest)

print osac.OSALoadExecuteFile(src, kOSANullScript, kOSAModeNull)

print ` codecs.unpack(
    osac.OSADoScriptFile(src, kOSANullScript, typeWildCard, kOSAModeNull)) `

d = osac.OSAStore(id, typeOSAGenericStorage, kOSAModeNull)
print d

i = osac.OSALoadExecute(d, kOSANullScript, kOSAModeNull)
print i

print ` codecs.unpack(osac.OSADisplay(i, typeWildCard, kOSAModeNull)) `
Example #7
0
#!/usr/bin/env pythonw

from Carbon.Cm import OpenDefaultComponent
from CarbonX.OSA import OSAComponentInstance
from CarbonX.kOSA import *
from CarbonX.kAE import *
from aem import Codecs

codecs = Codecs()

osac = OSAComponentInstance(OpenDefaultComponent('osa ', 'ascr'))

script = '''tell app "Finder" to get folder 1 of home'''

scriptDesc = codecs.pack(script)

scriptID = osac.OSACompile(scriptDesc, kOSAModeNull, kOSANullScript)
resultID = osac.OSAExecute(scriptID, kOSANullScript, kOSAModeNull)


print `codecs.unpack(osac.OSAGetSource(scriptID, typeWildCard))`
print
print `codecs.unpack(osac.OSADisplay(resultID, typeWildCard, kOSAModeNull))`
print
print `codecs.unpack(osac.OSACoerceToDesc(resultID, typeWildCard, 0))`

osac.OSADispose(scriptID)
osac.OSADispose(resultID)
Example #8
0
on run
	beep 3
	return {"hello", "world"}
end

on open x
	beep 2
	return reverse of x
end
''')



scriptID = osac.OSACompile(scriptDesc, kOSAModeCompileIntoContext, 0)

print 'SOURCE:', `codecs.unpack(osac.OSAGetSource(scriptID, typeUnicodeText))`

print

event1 = Application().event('aevtoapp', {}).AEM_event
resultID = osac.OSAExecuteEvent(event1, scriptID, kOSAModeNull)

print 'DISPLAY:', `codecs.unpack(osac.OSADisplay(resultID, typeWildCard, 0))` # u'{"hello", "world"}'

print 'RESULT:', `codecs.unpack(osac.OSACoerceToDesc(resultID, typeWildCard, 0))` # ['hello', 'world']

print

event2 = Application().event('aevtodoc', {'----': [1, 2, 3]}).AEM_event
replyEvent = Application().event('aevtansr').AEM_event
osac.OSADoEvent(event2, scriptID, kOSAModeNull, replyEvent)
Example #9
0
property name : "hello"

on run
end

on open x
end

on baz()
end

on fub()
end
'''

scriptDesc = codecs.pack(script)

scriptID = osac.OSACompile(scriptDesc, kOSAModeCompileIntoContext,
                           kOSANullScript)

print ` codecs.unpack(osac.OSAGetHandlerNames(kOSAModeNull, scriptID)) `

i = osac.OSAGetHandler(kOSAModeNull, scriptID,
                       codecs.pack(AEEventName('aevtodoc')))
print i, ` codecs.unpack(osac.OSADisplay(i, typeWildCard, kOSAModeNull)) `

print ` codecs.unpack(osac.OSAGetPropertyNames(kOSAModeNull, scriptID)) `

o = osac.OSAGetProperty(kOSAModeNull, scriptID, codecs.pack('bar'))
print ` codecs.unpack(osac.OSACoerceToDesc(o, typeWildCard, 0)) `
Example #10
0
    return _osat.CopyScriptingDefinition(path)


def getaete(path):
    """Get an application's terminology as zero or more aete(s).
		path : str | unicode | FSSpec -- full path to app
		Result : list of str -- zero or more strings of binary aete data
	"""
    try:
        desc = _osat.GetAppTerminology(path)[0]
    except MacOS.Error, err:
        if err.args[0] == -192:  # aete resource not found
            aetes = []
        else:
            raise
    else:
        aetes = _codecs.unpack(desc)
        if not isinstance(aetes, list):
            aetes = [aetes]
        aetes = [aete for aete in aetes if aete != None
                 ]  # AS applets don't raise error -192 for some reason
    return aetes


def getaeut(code='ascr'):
    """Get a scripting component's built-in terminology (aeut)
		code : str -- 4-letter code indication component subtype (default: AppleScript)
		Result : str -- binary aeut data
	"""
    return _codecs.unpack(_osat.GetSysTerminology(code))
Example #11
0
scriptDesc = codecs.pack('''
on run
	beep 3
	return {"hello", "world"}
end

on open x
	beep 2
	return reverse of x
end
''')

scriptID = osac.OSACompile(scriptDesc, kOSAModeCompileIntoContext, 0)

print 'SOURCE:', ` codecs.unpack(osac.OSAGetSource(scriptID,
                                                   typeUnicodeText)) `

print

event1 = Application().event('aevtoapp', {}).AEM_event
resultID = osac.OSAExecuteEvent(event1, scriptID, kOSAModeNull)

print 'DISPLAY:', ` codecs.unpack(osac.OSADisplay(
    resultID, typeWildCard, 0)) `  # u'{"hello", "world"}'

print 'RESULT:', ` codecs.unpack(
    osac.OSACoerceToDesc(resultID, typeWildCard, 0)) `  # ['hello', 'world']

print

event2 = Application().event('aevtodoc', {'----': [1, 2, 3]}).AEM_event
Example #12
0
#!/usr/bin/env pythonw

from Carbon.Cm import OpenDefaultComponent
from CarbonX.OSA import OSAComponentInstance
from CarbonX.kAE import *
from aem import Codecs

# create an aem Codecs instance to pack and unpack AEDescs
codecs = Codecs()

# open an AppleScript component instance, and wrap it in an OSAComponentInstance to provide the OSA API (clumsy arrangement, but it does the job)
osac = OSAComponentInstance(OpenDefaultComponent('osa ', 'ascr'))

# define some AppleScript source code
script = '''
set s to "hello" & space & "world"
say s using "Zarvox"
return s
'''

# pack source code into an AEDesc
scriptDesc = codecs.pack(script)

# compile and run script, returning its result
resultDesc = osac.OSADoScript(scriptDesc, 0, typeChar, 0)
# unpack result
print ` codecs.unpack(resultDesc) `  # '"hello world"'
Example #13
0
#!/usr/bin/env pythonw

from Carbon.Cm import OpenDefaultComponent
from CarbonX.OSA import OSAComponentInstance
from CarbonX.kAE import *
from aem import Codecs

# create an aem Codecs instance to pack and unpack AEDescs
codecs = Codecs()

# open an AppleScript component instance, and wrap it in an OSAComponentInstance to provide the OSA API (clumsy arrangement, but it does the job)
osac = OSAComponentInstance(OpenDefaultComponent('osa ', 'ascr'))

# define some AppleScript source code
script = '''
set s to "hello" & space & "world"
say s using "Zarvox"
return s
'''

# pack source code into an AEDesc
scriptDesc = codecs.pack(script)

# compile and run script, returning its result
resultDesc = osac.OSADoScript(scriptDesc, 0, typeChar, 0)
# unpack result
print `codecs.unpack(resultDesc)` # '"hello world"'
Example #14
0


def fn(ae):
	print
	print 'EVT', `ae.type, ae.data[:64] + (ae.data[64:] and '...' or '')`
	#raise 'fuk'
	r = Application().event('aevtansr', {'----':10000}).AEM_event
	print 'RES', `r.type, r.data[:64] + (r.data[64:] and '...' or '')`
	print
	return r



osac.OSASetResumeDispatchProc(fn)
print osac.OSAGetResumeDispatchProc()
i = osac.OSAExecute(scriptID, 0, 0)
print `codecs.unpack(osac.OSADisplay(i, typeWildCard, 0))`


print osac.OSAGetResumeDispatchProc()
print `codecs.unpack(osac.OSADoScript(scriptDesc, 0, typeChar, 0))`

osac.OSASetResumeDispatchProc((kOSANoDispatch, 0))
print osac.OSAGetResumeDispatchProc()
print `codecs.unpack(osac.OSADoScript(scriptDesc, 0, typeChar, 0))`

osac.OSASetResumeDispatchProc((kOSAUseStandardDispatch, kOSADontUsePhac))
print osac.OSAGetResumeDispatchProc()

Example #15
0
#!/usr/bin/env pythonw

from CarbonX.OSA import OSAComponentInstance
from Carbon.Cm import OpenDefaultComponent
from CarbonX.kAE import *
from CarbonX.kOSA import *
from aem import Codecs, AEType
from sys import exit
from pprint import pprint

codecs = Codecs()

ascr = OSAComponentInstance(OpenDefaultComponent('osa ', 'ascr'))

names = codecs.unpack(ascr.ASGetSourceStyleNames(kOSAModeNull))
values = codecs.unpack(ascr.ASGetSourceStyles())
#print `st.type, st.data`
pprint(zip(names, values))

values[0][AEType('ptsz')] = 42

ascr.ASSetSourceStyles(codecs.pack(values))
values = codecs.unpack(ascr.ASGetSourceStyles())
pprint(zip(names, values))
Example #16
0
from aem import Codecs

# create an aem Codecs instance to pack and unpack AEDescs
codecs = Codecs()

# open an AppleScript component instance, and wrap it in an OSAComponentInstance to provide the OSA API (clumsy arrangement, but it does the job)
osac = OSAComponentInstance(OpenDefaultComponent('osa ', 'ascr'))

root = split(__file__)[0]
src = join(root, 'test.scpt')
dest = join(root, 'test_out.scpt')

id, storable = osac.OSALoadFile(src, kOSAModeNull)

print id, storable

print osac.OSAExecute(id, kOSANullScript, kOSAModeNull)

osac.OSAStoreFile(id, typeOSAGenericStorage, kOSAModeNull, dest)

print osac.OSALoadExecuteFile(src, kOSANullScript, kOSAModeNull)

print `codecs.unpack(osac.OSADoScriptFile(src, kOSANullScript, typeWildCard, kOSAModeNull))`

d = osac.OSAStore(id, typeOSAGenericStorage, kOSAModeNull)
print d

i = osac.OSALoadExecute(d, kOSANullScript, kOSAModeNull)
print i

print `codecs.unpack(osac.OSADisplay(i, typeWildCard, kOSAModeNull))`
scpt = OSAComponentInstance(OpenDefaultComponent("osa ", "scpt"))
ascr = OSAComponentInstance(OpenDefaultComponent("osa ", "ascr"))

# print `codecs.unpack(osac.OSAScriptingComponentName())`

# print `codecs.unpack(scpt.ASGetSourceStyleNames(kOSAModeNull))`

# osac.OSASetDefaultScriptingComponent('McPy')

# print `osac.OSAGetDefaultScriptingComponent()`

# exit()
# print dir(OpenDefaultComponent('osa ', 'scpt'))

id = scpt.OSACompile(codecs.pack("2+2"), 0, 0)

id = scpt.OSACompile(codecs.pack("2+2"), 0, 0)


id2, ascr2 = scpt.OSAGenericToRealID(id)
print id2, codecs.unpack(ascr2.OSAScriptingComponentName())

print ascr2.OSAExecute(id2, 0, 0)

id3 = scpt.OSARealToGenericID(id2, ascr2)

r = scpt.OSAExecute(id3, 0, 0)
print ` codecs.unpack(scpt.OSADisplay(r, typeBest, 0)) `

print "Done."
Example #18
0

f = osac.OSAGetCreateProc()

print f


def c(*args): # (AEEventClass theAEEventClass, AEEventID theAEEventID, AEAddressDesc target, AEReturnID returnID, AETransactionID transactionID) -> (AppleEvent result)
	print args
	#raise 'test error'
	return f(*args)
	return AECreateAppleEvent(*args)


osac.OSASetCreateProc(c)


print `codecs.unpack(osac.OSADoScript(scriptDesc, 0, typeChar, 0))`


print osac.OSAGetCreateProc()

print

osac.OSASetCreateProc(f)

print `codecs.unpack(osac.OSADoScript(scriptDesc, 0, typeChar, 0))`



print osac.OSAGetCreateProc()
Example #19
0
		Result : str | None -- XML data, or None if OS version < 10.4
	"""
	return _osat.CopyScriptingDefinition(path)

def getaete(path):
	"""Get an application's terminology as zero or more aete(s).
		path : str | unicode | FSSpec -- full path to app
		Result : list of str -- zero or more strings of binary aete data
	"""
	try:
		desc = _osat.GetAppTerminology(path)[0]
	except MacOS.Error, err:
		if err.args[0] == -192: # aete resource not found
			aetes = []
		else:
			raise
	else:
		aetes = _codecs.unpack(desc)
		if not isinstance(aetes, list):
			aetes = [aetes]
		aetes = [aete for aete in aetes if aete != None] # AS applets don't raise error -192 for some reason
	return aetes

def getaeut(code='ascr'):
	"""Get a scripting component's built-in terminology (aeut)
		code : str -- 4-letter code indication component subtype (default: AppleScript)
		Result : str -- binary aeut data
	"""
	return _codecs.unpack(_osat.GetSysTerminology(code))

Example #20
0
#!/usr/bin/env pythonw

from CarbonX.OSA import OSAComponentInstance
from Carbon.Cm import OpenDefaultComponent
from CarbonX.kAE import *
from CarbonX.kOSA import *
from aem import Codecs, AEType
from sys import exit
from pprint import pprint

codecs = Codecs()

ascr = OSAComponentInstance(OpenDefaultComponent('osa ', 'ascr'))


names = codecs.unpack(ascr.ASGetSourceStyleNames(kOSAModeNull))
values = codecs.unpack(ascr.ASGetSourceStyles())
#print `st.type, st.data`
pprint(zip(names, values))

values[0][AEType('ptsz')] = 42

ascr.ASSetSourceStyles(codecs.pack(values))
values = codecs.unpack(ascr.ASGetSourceStyles())
pprint(zip(names, values))