diff options
Diffstat (limited to 'Doc/mac/scripting.tex')
-rw-r--r-- | Doc/mac/scripting.tex | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/Doc/mac/scripting.tex b/Doc/mac/scripting.tex deleted file mode 100644 index 5ec4978..0000000 --- a/Doc/mac/scripting.tex +++ /dev/null @@ -1,101 +0,0 @@ -\chapter{MacPython OSA Modules \label{scripting}} - -This chapter describes the current implementation of the Open Scripting -Architecure (OSA, also commonly referred to as AppleScript) for Python, allowing -you to control scriptable applications from your Python program, -and with a fairly pythonic interface. Development on this set of modules -has stopped, and a replacement is expected for Python 2.5. - -For a description of the various components of AppleScript and OSA, and -to get an understanding of the architecture and terminology, you should -read Apple's documentation. The "Applescript Language Guide" explains -the conceptual model and the terminology, and documents the standard -suite. The "Open Scripting Architecture" document explains how to use -OSA from an application programmers point of view. In the Apple Help -Viewer these books are located in the Developer Documentation, Core -Technologies section. - - -As an example of scripting an application, the following piece of -AppleScript will get the name of the frontmost \program{Finder} window -and print it: - -\begin{verbatim} -tell application "Finder" - get name of window 1 -end tell -\end{verbatim} - -In Python, the following code fragment will do the same: - -\begin{verbatim} -import Finder - -f = Finder.Finder() -print f.get(f.window(1).name) -\end{verbatim} - -As distributed the Python library includes packages that implement the -standard suites, plus packages that interface to a small number of -common applications. - -To send AppleEvents to an application you must first create the Python -package interfacing to the terminology of the application (what -\program{Script Editor} calls the "Dictionary"). This can be done from -within the \program{PythonIDE} or by running the -\file{gensuitemodule.py} module as a standalone program from the command -line. - -The generated output is a package with a number of modules, one for -every suite used in the program plus an \module{__init__} module to glue -it all together. The Python inheritance graph follows the AppleScript -inheritance graph, so if a program's dictionary specifies that it -includes support for the Standard Suite, but extends one or two verbs -with extra arguments then the output suite will contain a module -\module{Standard_Suite} that imports and re-exports everything from -\module{StdSuites.Standard_Suite} but overrides the methods that have -extra functionality. The output of \module{gensuitemodule} is pretty -readable, and contains the documentation that was in the original -AppleScript dictionary in Python docstrings, so reading it is a good -source of documentation. - -The output package implements a main class with the same name as the -package which contains all the AppleScript verbs as methods, with the -direct object as the first argument and all optional parameters as -keyword arguments. AppleScript classes are also implemented as Python -classes, as are comparisons and all the other thingies. - -The main -Python class implementing the verbs also allows access to the properties -and elements declared in the AppleScript class "application". In the -current release that is as far as the object orientation goes, so -in the example above we need to use -\code{f.get(f.window(1).name)} instead of the more Pythonic -\code{f.window(1).name.get()}. - - -If an AppleScript identifier is not a Python identifier the name is -mangled according to a small number of rules: -\begin{itemize} - \item spaces are replaced with underscores - \item other non-alphanumeric characters are replaced with - \code{_xx_} where \code{xx} is the hexadecimal character value - \item any Python reserved word gets an underscore appended -\end{itemize} - -Python also has support for creating scriptable applications -in Python, but -The following modules are relevant to MacPython AppleScript support: - -\localmoduletable - -In addition, support modules have been pre-generated for -\module{Finder}, \module{Terminal}, \module{Explorer}, -\module{Netscape}, \module{CodeWarrior}, \module{SystemEvents} and -\module{StdSuites}. - -\input{libgensuitemodule} -\input{libaetools} -\input{libaepack} -\input{libaetypes} -\input{libminiae} |