Online Book Reader

Home Category

AppleScript_ The Definitive Guide - Matt Neuburg [217]

By Root 1563 0
not in terms of System Events and AppleScript.

PreFab UI Browser

This inexpensive commercial utility is indispensable if you're going to be doing any serious GUI scripting. You can use a column browser or the mouse to reach the interface item you're interested in, and UI Browser tells you about the attributes of that item and the entire UI element hierarchy leading to it, and even generates AppleScript code for talking to it. Figure 24-1 shows how I used UI Browser to learn how to refer to the menu item of TextEdit for the preceding example code.

Figure 24-1. PreFab UI Browser exploring TextEdit's menu

GUI Scripting Examples


GUI scripting is something of an art, and needs either a big treatment providing the fruits of plentiful experience or a small treatment that shows a few useful examples and leaves you to explore further on your own. I've opted here for the latter; I'll just give a few practical examples of GUI scripting, without further elaboration.

First I'll show how to toggle File Sharing on and off through the System Preferences application. System Preferences itself is not particularly scriptable; all you can really do is go to the desired preference pane. GUI scripting does the rest:

tell application "System Preferences"

activate

set current pane to pane "com.apple.preferences.sharing"

end tell

tell application "System Events"

tell application process "System Preferences"

tell tab group 1 of window "Sharing"

click radio button "Services"

select row 1 of table 1 of scroll area 1

click button 1

end tell

end tell

end tell

Now let's work around the fact that TextEdit doesn't let you learn what text is selected. We can use GUI scripting to learn both what text is selected and where the selection is:

tell application "TextEdit" to activate

-- front window contains "this is a test of GUI scripting"; "test" is selected

tell application "System Events"

tell application process "TextEdit"

tell window 1

tell text area 1 of scroll area 1

get value of attribute "AXSelectedText" -- "test"

get value of attribute "AXSelectedTextRange" -- {11,14}

end tell

end tell

end tell

end tell

In this example, we work around the fact that you can't script TextEdit to close a window without saving it. The idea here is to close the window and allow the dialog to appear asking whether we want to save this document; when that happens, we press the Don't Save button using GUI scripting:

tell application "TextEdit"

activate

close window 1

end tell

tell application "System Events"

tell application process "TextEdit"

tell window 1

repeat while not (exists sheet 1)

delay 0.5

end repeat

click button "Don't Save" of sheet 1

end tell

end tell

end tell

Finally, we work around (sort of) the Dictionary application's not being scriptable:

set s to text returned of (display dialog "Word to define:" default answer "")

-- prestidigitation

tell application "Dictionary" to activate

open location "DICT:///" & (s as string)

tell application "System Events"

tell application process "Dictionary"

tell UI element 1 of scroll area 1 of scroll area 1 of group 1 of window 1

set s to value of it

end tell

end tell

end tell

s -- Dictionary

prestidigitation |?prest??dij??t? sh ?n| noun formal magic tricks performed as entertainment.

DERIVATIVES prestidigitator |-?dij??t?t?r| noun ORIGIN mid 19th cent.: from French, from

preste 'nimble' + Latin digitus 'finger' + -ation.

Chapter 25. Unix


Once upon a time, Apple's Mac OS operating system and the Unix operating system were two completely separate worlds, each with its own idea of what constituted "scripting." On Mac OS, there was AppleScript and the OSA. On Unix, there was the command line, shell scripting, and the various shell scripting languages such as Perl. Now, with Mac OS X, those two worlds are united; both kinds of "scripting" are present, and there is communication between them, in both directions. Thus, you can combine the power of Unix scripting with the power of AppleScript.

The way you call a Unix tool from AppleScript is

Return Main Page Previous Page Next Page

®Online Book Reader