# Script: NewRunMenu
# A dynamically customizable menu for sublaunching commonly used
files.
# To install, type NewRunMenu in the Worksheet window and hit Enter.
# This adds a "Run" menu to the MPW menu bar. It also creates a file
called
# UserStartup•RunMenu in the MPW folder (or the MPW PrefsFolder, if
using MPW
# 3.3 or newer), to re-create the menu each time you load MPW.
# UserStartup•RunMenu is updated every time you add an item to the
menu
# When you select Add Application, you can choose any application and
specify
# how it should appear on the menu. When you select Add Document,
you can
# select a document, an application to open it with, and how it
should
# appear on the menu.
# The Run menu does not provide for DELETING an item. To do that,
open the
# UserStartup•RunMenu file and delete the unwanted Addmenu lines.
# Important typographic notes:
# 1) The Add Application and Add Document menu item names start with
one space,
# so they sort alphabetically to the top of the menu.
# 2) The script for each AddMenu item is one long, continued command,
so
# most of the lines end with semi-colon ; and option-d ∂ characters.
# 3) Some of the prompt strings that appear in this script contain
underscores.
# I did this so they would be visible on a printed page. However, in
my
# working copy of the script, the underscores are replaced with
non-breaking
# spaces (typed in MPW as option-space). Strings containing
non-breaking
# spaces don't have to be placed in quotes.
# 4) Any place you see ... in this script, it really is 3 periods,
not the
# option-colon ellipsis character.
# 5) Quote " apostrophe ' and grave accent ` are not interchangeable!
Set Exit 0
DeleteMenu Run ∑ Dev:Null
# "Add Application..." presents a Standard GetFile dialog, filtered
for
# applications only. After you choose an application, it prompts you
for
# how the item should appear in the menu. The default is the full
path
# and filename, which I usually edit to just the filename.
AddMenu Run ' Add Application...' ∂
'Begin ; ∂
Set Exit 0 ; ∂
Set menuChanged 0 ; ∂
Set theAppl "`getfilename -b Add -m Select_ application... -t APPL`
; ∂
Exit If {theAppl} == "" ; ∂
Set menuItem "`request -d {theAppl}
How_should_the_menu_item_read...`" ; ∂
Exit If {menuItem} == "" ; AddMenu Run "{menuItem}" "{theAppl}" ; ∂
Set menuChanged 1 ; ∂
Unset theAppl ; ∂
Unset menuItem ; ∂
If ({menuChanged}) ; ∂
Set savedDir `Directory` ; ∂
Directory "{MPW}" ; ∂
Echo Set Exit 0 >"{PrefsFolder}"UserStartup•RunMenu ; ∂
Echo DeleteMenu Run ∂∑ Dev:Null >>
"{PrefsFolder}"UserStartup•RunMenu ; ∂
AddMenu Run | Sort -u -quote >>
"{PrefsFolder}"UserStartup•RunMenu ; ∂
Echo Set Exit 1 >> "{PrefsFolder}"UserStartup•RunMenu ; ∂
Execute "{PrefsFolder}"UserStartup•RunMenu ; ∂
Directory "{savedDir}" ; ∂
Unset savedDir ; ∂
End ; ∂
Unset menuChanged ; ∂
Set Exit 1 ; ∂
End ∑ Dev:Null'
# Add Document... works a lot like Add Application..., except that
you are
# prompted to select TWO files. The first can be any document, the
second
# must be an application which can open that document.
AddMenu Run ' Add Document...' ∂
'Begin ; ∂
Set Exit 0 ; ∂
Set menuChanged 0 ; ∂
Set theDoc "`getfilename -m Select_document_to_open...`" ; ∂
Exit If {theDoc} == "" ; ∂
Set theAppl "`getfilename -b With -m To_open_with... -t APPL`" ; ∂
Exit If {theAppl} == "" ; ∂
Set menuItem "`request -d {theDoc}
How_should_the_menu_item_read...`" ; ∂
Exit If {menuItem} == "" ; ∂
AddMenu Run "{menuItem}" "{theAppl} {theDoc}" ; ∂
Set menuChanged 1 ; ∂
Export menuChanged ; ∂
Unset theAppl ; ∂
Unset menuItem ; ∂
If ({menuChanged}) ; ∂
Set savedDir `Directory` ; ∂
Directory "{MPW}" ; ∂
Echo Set Exit 0 >"{PrefsFolder}"UserStartup•RunMenu ; ∂
Echo DeleteMenu Run ∂∑ Dev:Null >>
"{PrefsFolder}"UserStartup•RunMenu ; ∂
AddMenu Run | Sort -u -quote >>
"{PrefsFolder}"UserStartup•RunMenu ; ∂
Echo Set Exit 1 >> "{PrefsFolder}"UserStartup•RunMenu ; ∂
Execute "{PrefsFolder}"UserStartup•RunMenu ; ∂
Directory "{savedDir}" ; ∂
Unset savedDir ; ∂
End ; ∂
Unset menuChanged ; ∂
Set Exit 1 ; ∂
End ∑ Dev:Null'
# Add a separator line, which will appear between the default and
# configured menu items.
AddMenu Run '-' ''
# Create the UserStartup•RunMenu file. This will be placed in either
the
# MPW folder, or MPW's PrefsFolder if using MPW 3.3 or newer.
# The UserStartup•RunMenu contains all of the commands needed to
initialize
# the Run menu, without any formatting or script comments.
Set savedDir `Directory`
Directory "{MPW}
Echo Set Exit 0 > "{PrefsFolder}"UserStartup•RunMenu
Echo DeleteMenu Run ∂∑ Dev:Null >> "{PrefsFolder}"UserStartup•RunMenu
AddMenu Run >> "{PrefsFolder}"UserStartup•RunMenu
Echo Set Exit 1 >> "{PrefsFolder}"UserStartup•RunMenu
Directory "{savedDir}
Unset savedDir
# Announce completion
Alert -s Run Menu successfully installed.
# End of NewRunMenu script