[Pythonmac-SIG] using py-appscript

has hengist.podd at virgin.net
Thu Sep 11 14:32:28 CEST 2008


David Morley wrote:

 > I can use (Python) appscript  reasonably well, if I know exactly what
 > "components" I am looking for, e.g.,
 >
 > app('TextEdit').documents['Read Me'].paragraphs[1].get()
 >
 > But if I'm faced with a new application I don't know where to start.
 > Is there any way to interactively explore what is available?  
Something
 > like
 >    dir(app('TextEdit')) -> [..., "documents", ...]
 > to let me know that the app has document components
 >    app('TextEdit').documents.keys() -> [..., "Read Me", ...]
 > to let me know that "Read Me" is one of the documents
 > and so on.

Appscript is basically an RPC+query-driven IPC mechanism with a bunch  
of vaguely OO-like syntactic sugar on top to make it look nice.  
Because it deals in queries, not proxy objects (a la COM, CORBA, etc.)  
and relies heavily on Python's so-called "magic methods" to do its  
thing, it doesn't play very well with standard Python introspection  
and documentation tools such as dir() and help(). Instead it provides  
its own fairly powerful set of tools:

1. ASDictionary exports appscript-style application dictionaries in  
HTML format

2. ASTranslate converts application commands from AppleScript to  
appscript syntax

3. Appscript's built-in help method [1] allows you to explore an  
application's dictionary and object model interactively, e.g.:

	te = app('TextEdit')
	te.help() # show terminology for referenced object (in this case  
TextEdit's 'application' class)
	te.documents.name.help('-s') # show values of all document objects'  
name properties


And don't forget that you can retrieve referenced values via the get()  
command, e.g.:

	te.documents.name.get() # Tip: this can also be written as  
te.documents.name()


BTW, if you haven't done so already, I recommend reading the appscript  
manual (available on the appscript site or in the .tar.gz file  
release) to get an idea of how appscript and Apple event IPC in  
general works. (If it's not clear, drop us a note and I'll try to  
improve it.) The manual includes a chapter on the available help  
options and how to use them.

HTH

has

[1] Requires ASDictionary to be installed first.
-- 
Control AppleScriptable applications from Python, Ruby and ObjC:
http://appscript.sourceforge.net



More information about the Pythonmac-SIG mailing list