From: Kevin W. <kw...@co...> - 2010-04-21 23:19:35
|
On 4/18/10 12:59 AM, Kevin Walzer wrote: > Hi all, > > I'm taking another stab at adding some Services functionality to my Tk > apps, i.e. access the Services menu and sending some selected data from > my Tk apps to another application. I've actually got a rather hackish > implementation of my apps as service providers (using Service bundles > that call the apps via AppleScript), but I can't get the other > half--accessing the Services menu from my apps--to work. > > I've been through all the Cocoa docs, and I think I'm doing the > appropriate setup: subclassing NSView, adding a custom subview to Tk > widgets (as I am doing, successfully, with TkDND), implementing > Tk_GetSelection to get the current text selection, and implementing the > NSServices methods below to declare text (NSStringPBoardType) as the > appropridate data: > > + (void) initialize; > > - (BOOL)writeSelectionToPasteboard:(NSPasteboard *)pb types:(NSArray > *)types; > - (id)validRequestorForSendType:(NSString *)sendType > returnType:(NSString *)returnType; > > Unfortunately, I'm not able to access the Services menu at > all--everything's grayed out. > > I'm wondering if it's simply not possible for non-Cocoa widgets to > access this functionality. My code seems correctly organized, at least > based on the Cocoa docs, my experience with TkDND, and everything else: > I can find no obvious errors. The Tk text widget is not a subclass of > NSTextView, so it doesn't automatically hook into the Services menu, but > adding a subview to it doesn't seem to work. > > I'll post my code if requested, but my last posting about this got no > comments from anyone... > > --Kevin > Setting the first responder on my view has allowed me access the Service menu: //make sure the view accepts events - (BOOL)acceptsFirstResponder { return YES; } - (BOOL)becomeFirstResponder { return YES; } Full, open-source release of this package to come in the near future. --Kevin -- Kevin Walzer Code by Kevin http://www.codebykevin.com |