Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- `menu_click`, by Jacob Rus, September 2006
- --
- -- Accepts a list of form: `{"Finder", "View", "Arrange By", "Date"}`
- -- Execute the specified menu item. In this case, assuming the Finder
- -- is the active application, arranging the frontmost folder by date.
- on menu_click(mList)
- -- Validate our input
- if mList's length < 3 then error "Menu list is not long enough"
- -- Set these variables for clarity and brevity later on
- set appName to item 1 of mList
- set topMenu to item 2 of mList
- set r to (items 3 through (mList's length) of mList)
- -- This overly-long line calls the menu_recurse function with
- -- two arguments: r, and a reference to the top-level menu
- tell app "System Events" to my menu_click_recurse(r, ((process appName)'s (menu bar 1)'s (menu bar item topMenu)'s (menu topMenu)))
- end menu_click
- on menu_click_recurse(mList,parentObject)
- -- `f` = first item, `r` = rest of items
- set f to item 1 of mList
- if mList's length > 1 then set r to (items 2 through (mList's length) of mList)
- -- either actually click the menu item, or recurse again
- tell app "System Events"
- if mList's length is 1 then
- click parentObject's menu item f
- else
- my menu_click_recurse(r, (parentObject's (menu item f)'s (menu f)))
- end if
- end tell
- end recurse
- --========================================================================--
- --========================================================================--
- -- To show how amazingly much better this function is than the way that
- -- Apple expects users to use
- -- my new way
- menu_click({"TextEdit", "Edit", "Speech", "Start Speaking"})
- -- the old way:
- tell app "System Events"
- tell ((process "TextEdit")'s (menu bar 1)'s (menu bar item "Edit")'s (menu "Edit")'s (menu item "Speech")'s (menu "Speech")) to click menu item "New"
- end tell
- -- or Apple's way on apple.com:
- tell app "System Events"
- tell process "TextEdit"
- tell menu bar 1
- tell menu bar item "Edit"
- tell menu "Edit"
- tell menu item "Speech"
- tell menu "Speech"
- click menu item "Start Speaking"
- end tell
- end tell
- end tell
- end tell
- end tell
- end tell
- end tell
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement