On 6-aug-2005, at 19:46, Kevin Dangoor wrote: > On 8/5/05, Bob Ippolito <[EMAIL PROTECTED]> wrote: > >> You may have to do that with a get URL apple event handler, see here: >> http://developer.apple.com/documentation/Cocoa/Conceptual/ >> Scriptability/Concepts/ScriptabilityOverview.html >> (you shouldn't need any Carbon) >> > > Before I go chasing around the Apple docs a bit more to see if I'm > registering the *correct* event handler, can you confirm if I'm doing > the right thing here? > > The first questionable thing is that the constant for the type of > event is defined in the Apple Events docs (and in the AppleEvents > python module) as 'gurl'. However, the Apple Event Manager method call > is asking for an unsigned long. Should I convert "gurl" to > 1735750252L?
The 'gurl' value is an long integer value, you should indeed convert it to 1735750252L. The Carbon modules in MacPython know about 4 character codes (such as 'gurl') and accept both integers in 4-byte strings in APIs that use 4 character codes. PyObjC doesn't implement this convienence conversion, basically because it doesn't know which APIs might accept 4 character codes. I'd do the conversion using struct.unpack: gurl_code = struct.unpack ('l', 'gurl')[0] > > Here's the objC example from Apple's doc: > [appleEventManager setEventHandler:self > andSelector:@selector(handleGetURLEvent:withReplyEvent:) > forEventClass:kAEInternetSuite andEventID:kAEISGetURL]; > > Here's my translation to Python: > sel = objc.selector > (MacController.handleGetURLEvent_withReplyEvent_, > signature="vO:O:") > > aem.setEventHandler_andSelector_forEventClass_andEventID_(self, > sel, > 1735750252L, 1735750252L) That's very wrong. You shouldn't call objc.selector unless you're defining a new method (in a class definition on the argument for objc.classAddMethods). The call to objc.selector should be in the class definition of MacController. I don't think this will help, if the method really has an object and selector argument you're program would have crashed when aem tried to call your method. A quick glance at the AppleEventManager docs tells my that the call to objc.selector is not needed, the signature argument is just plain wrong (you signature is for a method that returns void and has two arguments: and object and a SEL (method name)). One other thing: according to LaunchServicesConcepts.pdf (link below) the even code is 'GURL' (upper-case), which is different from 'gurl'. http://developer.apple.com/documentation/Carbon/Conceptual/ LaunchServicesConcepts/LaunchServicesConcepts.pdf > > This is in my application delegate's applicationWillFinishLaunching_ > method, which is where Apple recommended doing this. I can see that > this is getting called, but my handler itself doesn't get called. > > I'm testing by just doing "open <URL with my protocol>" at the > commandline, which does bring my app to the front but does not call my > handler method. Assuming all of the above is kosher, I'll do some more > digging around to make sure that this is, in fact, the specific > handler I want. Could you post your code? I've tried to avoid AppleScript related code upto know and can't even manage to bring my application to the front :-) > > Thanks for your help so far! > Kevin > _______________________________________________ > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > http://mail.python.org/mailman/listinfo/pythonmac-sig > _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig