I'm having a harder time than expected integrating aemreceive into my
application class.
While aemreceive's example code is admirably clear and the docs are
thorough, they are geared for procedural code, and I keep tripping over
scoping issues in trying to integrate the library into a more OO setting.
Here's where things stand:
First, I simply import aemreceive into my app class. Next, I wrap its
"installeventhandler" function into a class method, cf:
def installeventhandler (self,
eventcallback,
eventcode,
*parameterdefinitions):
aemreceive.installeventhandler(eventcallback, eventcode,
*parameterdefinitions, codecs=aem.Codecs())
Next, in my app class's __init__ method, I install the event handler
like so:
self.installeventhandler(self.getDomain,
'CoKvdman',
('----', 'self',
aemreceive.kae.typeUnicodeText),
('----', 'domain',
aemreceive.kae.typeUnicodeText)
)
This actually builds and runs the application without any complaints
about "self" being undefined. However, I still can't actually get data
from my Apple Event. As it's currently set up, I get this error from
AppleScript:
"Required parameter '----' is missing."
I'm not clear on what this means. According to the aemreceive docs, I
need to provide a tuple for each parameter included. This means two,
i.e. "self" and "domain," as outlined above. I don't know what the
missing parameter is.
This doesn't *look* right to me: "self" prepends the "getDomain" method
and actually shouldn't be included in the parameter setup as well, by my
logic. However, the application crashes if I change "self.getDomain" to
"getDomain" because, of course, "getDomain" is not defined.
Any guidance in getting the parameters for the event handlers correctly
fleshed out would be much appreciated. In particular, I'm not sure where
"self" should go, nor am I even certain if
aemreceive.kae.typeUnicodeText is the correct data type for that.
I hope I don't sound too frustrated. Apple Events are very complicated,
and has's work on making them accessible via this higher-level interface
is admirable. Tk-Aqua's built-in "do-script" functionality is easier to
use, and is very flexible in the sense that it allows you to execute
*any* Tcl code, but aemreceive allows you to provide a real AppleScript
interface to Python commands (you don't have to call raw Python code
from AppleScript). There's a richer Tcl interface to Apple Events called
TclAE, but it's more low-level and complex, and and it's only minimally
maintained, so the extensive work needed to make it 64-bit capable has
not yet been done.
So, thanks again to has for his good work on this! And looking forward
to additional advice on the package.
Best,
Kevin
--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com
_______________________________________________
Pythonmac-SIG maillist - Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig