[OS X TeX] Flashmode-Alpha Trial version

Jon Guyer jguyer at his.com
Wed Jan 5 13:12:59 CET 2005


On Jan 4, 2005, at 1:45 PM, Claus Gerhardt wrote:

> The developers of AlphaX obviously never thought that AlphaX itsself 
> might be the target of Applescripts.

With gratuitous and uniformed cracks like that, it sure makes me glad I 
offered to help. 8^P

>  Alpha's Applescript dictionary contains only a minimal amount of 
> classes and commands;

Ultimately, Alpha is scripted in Tcl, not in AppleScript. You can 
control and query absolutely every aspect of Alpha via the AppleScript 
"DoScript" command.

You also can easily add in any way you like to Alpha's 
AppleEvent/AppleScript interface *dynamically, at runtime* with a 
little bit of Tcl code.

> Notice that 'Enable access for assistive devices' has to be checked in 
> 'Universal Access'.

??? That's certainly no requirement on Alpha's part.

> It would be more satisfactory, if the following Applescript commands 
> (and properties) could be implemented in AlphaX (considered only as 
> target)
>
> 1. get path of front document --unix path

That's not good AppleScript. This is:

set f to file of front document
get POSIX path of f

Paths are not properties of documents, they're properties of files. 
Files are (possibly) properties of documents.

Add the following to your prefs.tcl file (Config -> Preferences -> Edit 
Prefs File) and hit command-L:

-----

tclAE::installEventHandler core getd aeom::handleGet

proc aeom::handleGet {theAppleEvent theReplyAE} {
     set objDesc [tclAE::getKeyDesc $theAppleEvent ----]
     set token [tclAE::resolve $objDesc]
     switch -- [tclAE::getDescType $token] {
         "CHAR" {
             set text [eval getText [tclAE::getData $token]]
             tclAE::putKeyData $theReplyAE ---- utf8 $text
         }
         "WIND" {
             tclAE::putKeyDesc $theReplyAE ---- $objDesc
         }
         "FILE" {
             set fileDesc [tclAE::build::path [tclAE::getData $token]]
             tclAE::putKeyDesc $theReplyAE ---- $fileDesc
         }
         default {
             error -code –1708
         }
     }
}

tclAE::installObjectAccessor prop WIND aeom::accessor::prop<WIND

proc aeom::accessor::prop<WIND {desiredClass containerToken 
containerClass keyForm keyData theToken} {
     set win [tclAE::getData $containerToken ****]

     switch -- [tclAE::getData $keyData type] {
         "file" {
             if {[win::IsFile $win file]} {
                 tclAE::replaceDescData $theToken FILE $file
             } else {
                 error -code –1728
             }
         }
         default {
             error -code –1708
         }
     }
}

# fixes a bug in the shipping version
proc aeom::accessor::cwin<null {desiredClass containerToken 
containerClass keyForm keyData theToken} {
     set wins [winNames]

     switch -- $keyForm {
         "name" {
             set winNum [lsearch $wins [tclAE::getData $keyData TEXT]]
             if {$winNum < 0} {
                 error -code –1728
             }
         }
         "indx" {
             # absolute positions are 1-based
             set winNum [expr {[tclAE::getData $keyData long] - 1}]

             if {($winNum >= [llength $wins]) || ($winNum < 0)} {
                 error -code –1728
             }
         }
         default {
             error -code –1708
         }
     }
     tclAE::replaceDescData $theToken WIND [lindex [winNames -f] $winNum]
}

----

At least at present, you can't write

get POSIX path of file of front document

I'm not sure whether this is a failing in the AppleEvent Object Model 
(I think so) or a problem in Alpha's AEOM resolution code.


> 2. if document texName is modified then

... something got lost here...

--------------------- Info ---------------------
Mac-TeX Website: http://www.esm.psu.edu/mac-tex/
           & FAQ: http://latex.yauh.de/faq/
TeX FAQ: http://www.tex.ac.uk/faq
List Post: <mailto:MacOSX-TeX at email.esm.psu.edu>





More information about the macostex-archives mailing list