mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Oops... I Inadvertently lost their cvs files...
This commit is contained in:
parent
0f7af3f795
commit
bb653772f5
4 changed files with 908 additions and 0 deletions
63
Mac/Lib/test/tell.py
Normal file
63
Mac/Lib/test/tell.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
# (Slightly less) primitive operations for sending Apple Events to applications.
|
||||
# This could be the basis of a Script Editor like application.
|
||||
|
||||
from AE import *
|
||||
from AppleEvents import *
|
||||
import aetools
|
||||
import types
|
||||
|
||||
class TalkTo:
|
||||
def __init__(self, signature):
|
||||
"""Create a communication channel with a particular application.
|
||||
|
||||
For now, the application must be given by its 4-character signature
|
||||
(because I don't know yet how to do other target types).
|
||||
"""
|
||||
if type(signature) != types.StringType or len(signature) != 4:
|
||||
raise TypeError, "signature should be 4-char string"
|
||||
self.target = AECreateDesc(typeApplSignature, signature)
|
||||
self.send_flags = kAEWaitReply
|
||||
self.send_priority = kAENormalPriority
|
||||
self.send_timeout = kAEDefaultTimeout
|
||||
def newevent(self, code, subcode, parameters = {}, attributes = {}):
|
||||
event = AECreateAppleEvent(code, subcode, self.target,
|
||||
kAutoGenerateReturnID, kAnyTransactionID)
|
||||
aetools.packevent(event, parameters, attributes)
|
||||
return event
|
||||
def sendevent(self, event):
|
||||
reply = event.AESend(self.send_flags, self.send_priority,
|
||||
self.send_timeout)
|
||||
parameters, attributes = aetools.unpackevent(reply)
|
||||
return reply, parameters, attributes
|
||||
|
||||
def send(self, code, subcode, parameters = {}, attributes = {}):
|
||||
return self.sendevent(self.newevent(code, subcode, parameters, attributes))
|
||||
|
||||
def activate(self):
|
||||
# Send undocumented but easily reverse engineered 'activate' command
|
||||
self.send('misc', 'actv')
|
||||
|
||||
|
||||
# This object is equivalent to "selection" in AppleScript
|
||||
# (in the core suite, if that makes a difference):
|
||||
get_selection = aetools.Property('sele', None)
|
||||
|
||||
# Test program. You can make it do what you want by passing parameters.
|
||||
# The default gets the selection from Quill (Scriptable Text Editor).
|
||||
|
||||
def test(app = 'quil', suite = 'core', id = 'getd', arg = get_selection):
|
||||
t = TalkTo(app)
|
||||
t.activate()
|
||||
if arg:
|
||||
dict = {'----': arg}
|
||||
else:
|
||||
dict = {}
|
||||
reply, parameters, attributes = t.send(suite, id, dict)
|
||||
print reply, parameters
|
||||
if parameters.has_key('----'): print "returns:", str(parameters['----'])
|
||||
|
||||
|
||||
test()
|
||||
# So we can see it:
|
||||
import sys
|
||||
sys.exit(1)
|
Loading…
Add table
Add a link
Reference in a new issue