Bob Ippolito wrote:
On Jan 29, 2005, at 19:40, Joachim Mårtensson wrote:
Hello everyone.
I am trying to figure out how to send appleevents to an external program. What I want to accomplish is to open a text document in a editor that supports the external editor protocol as described here http://www.codingmonkeys.de/techpubs/externaleditor/ pbxexternaleditor.html.
Here is my code so far, What am I doing wrong? _filePath is the path to the file and _lnnum is the line number where I want to place the caret. I am using PyObjc but no api in cocoa seems to exist so I use various other modules.
PyObjC can use AppleScript with the NSAppleScript class <http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ ObjC_classic/Classes/NSAppleScript.html>. However, the best way to send Apple Events from Python is probably appscript <http://freespace.virgin.net/hamish.sanderson/appscript.html>. The standard library support for Apple Events is very... raw, so I wouldn't recommend that approach to anyone :)
-bob
Ok thanks, I downloaded the aem module from the page you linked. Everything works fine except for the placing of the caret.
I have tried various ways to get this c-structure to work.
struct SelectionRange
{
short unused1; // 0 (not used)
short lineNum; // line to select (<0 to specify range)
long startRange; // start of selection range (if line < 0)
long endRange; // end of selection range (if line < 0)
long unused2; // 0 (not used)
long theDate; // modification date/time
};
This is what I have come up with so far. What is the proper way of passing the struct?
def openInExternalEditor(self, _filePath, _lnnum):
from aem.send import Application
import struct
from Carbon.File import FSSpec
SelectionRange=struct.pack('hhllll', 0, int(_lnnum), 0,0,0,0)
Application('/Applications/TextMate.app').event('aevt','odoc',{'----':FSSpec(_filePath),'sopk':`SelectionRange`}).send()
_______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig