TweetFollow Us on Twitter

MPW Menus
Volume Number:9
Issue Number:10
Column Tag:MPW Workshop

Dynamically Customizable Menu in MPW

Launching applications from an MPW Script

By Lee D. Rimar, Absoft Corporation

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

When I first started programming on the Macintosh, the text editor I used had a “Transfer” menu for launching other applications. When I switched to MPW a few years ago, I missed this feature. This was before the advent of System 7 with its “Apple Menu Items” folder, so I had to create my own solution.

Because it is easy to add custom menus to MPW, I created a special “Run” menu. This menu initially had only 2 items: “Add Application...” and “Add Document...”. These let you add commonly used applications and documents to the Run menu.

Each of the “Add...” items also updates a UserStartup•RunMenu file, which reloads the menu each time you launch MPW. Apart from its general usefulness, there is a technically interesting side to this script. To keep the Run menu in alphabetical order, the UserStartup•RunMenu file is automatically sorted, rewritten, and executed every time you add an item to Run menu. You don’t often see “self-modifying” gymnastics like this in a scripting language.

I usually use the Run menu to launch my word processor or communications software with a specific setting file, from inside of MPW. I could do the same thing from the System 7 Apple menu, but I find the Run menu easier to maintain. Also, I sometimes intentionally kill the Finder under System 7 to get extra memory for MPW and other programs. Without Finder running, custom items on the Apple Menu are unavailable.

To create your own Run menu and UserStartup•RunMenu file, the MPW script below should be copied to your MPW folder as “NewRunMenu,” and executed just once.

# 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 user
# 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

A word of warning: If you plan to type this in from the magazine pages, you may be in for a rough time. The MPW scripting language is powerful, but it can be a typographic nightmare. A single character error can give bizarre results, and may be very hard to track down.

This is an excellent reason to buy MacTech magazine source code on disk, or to power up the modem and download this file. If you don’t have an account any place where MacTech source code is available, you can also find this script on the Absoft Technical Support BBS, at 313-853-0000.

 
AAPL
$99.02
Apple Inc.
+1.35
MSFT
$43.97
Microsoft Corpora
-0.53
GOOG
$590.60
Google Inc.
+1.58

MacTech Search:
Community Search:

Software Updates via MacUpdate

OS X Yosemite Wallpaper 1.0 - Desktop im...
OS X Yosemite Wallpaper is the gorgeous new background image for Apple's upcoming OS X 10.10 Yosemite. This wallpaper is available for all screen resolutions with a source file that measures 5,418... Read more
Acorn 4.4 - Bitmap image editor. (Demo)
Acorn is a new image editor built with one goal in mind - simplicity. Fast, easy, and fluid, Acorn provides the options you'll need without any overhead. Acorn feels right, and won't drain your bank... Read more
Bartender 1.2.20 - Organize your menu ba...
Bartender lets you organize your menu bar apps. Features: Lets you tidy your menu bar apps how you want. See your menu bar apps when you want. Hide the apps you need to run, but do not need to... Read more
TotalFinder 1.6.2 - Adds tabs, hotkeys,...
TotalFinder is a universally acclaimed navigational companion for your Mac. Enhance your Mac's Finder with features so smart and convenient, you won't believe you ever lived without them. Tab-based... Read more
Vienna 3.0.0 RC 2 :be5265e: - RSS and At...
Vienna is a freeware and Open-Source RSS/Atom newsreader with article storage and management via a SQLite database, written in Objective-C and Cocoa, for the OS X operating system. It provides... Read more
VLC Media Player 2.1.5 - Popular multime...
VLC Media Player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, MP3, OGG, ...) as well as DVDs, VCDs, and various streaming protocols. It... Read more
Default Folder X 4.6.7 - Enhances Open a...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click... Read more
TinkerTool 5.3 - Expanded preference set...
TinkerTool is an application that gives you access to additional preference settings Apple has built into Mac OS X. This allows to activate hidden features in the operating system and in some of the... Read more
Audio Hijack Pro 2.11.0 - Record and enh...
Audio Hijack Pro drastically changes the way you use audio on your computer, giving you the freedom to listen to audio when you want and how you want. Record and enhance any audio with Audio Hijack... Read more
Intermission 1.1.1 - Pause and rewind li...
Intermission allows you to pause and rewind live audio from any application on your Mac. Intermission will buffer up to 3 hours of audio, allowing users to skip through any assortment of audio... Read more

Latest Forum Discussions

See All

Traps n’ Gemstones Review
Traps n’ Gemstones Review By Campbell Bird on July 28th, 2014 Our Rating: :: CASTLEVANIA JONESUniversal App - Designed for iPhone and iPad Fight mummies, dig tunnels, and ride a runaway minecart to discover ancient secrets in this... | Read more »
The Phantom PI Mission Apparition Review
The Phantom PI Mission Apparition Review By Jordan Minor on July 28th, 2014 Our Rating: :: GHOSTS BUSTEDUniversal App - Designed for iPhone and iPad The Phantom PI is an exceedingly clever and well-crafted adventure game.   | Read more »
More Stubies Are Coming Your Way in a Ne...
More Stubies Are Coming Your Way in a New Update Posted by Jessica Fisher on July 28th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
The Great Prank War Review
The Great Prank War Review By Nadia Oxford on July 28th, 2014 Our Rating: :: PRANKING IS SERIOUS BUSINESSUniversal App - Designed for iPhone and iPad Though short, The Great Prank War offers an interesting and fun mix of action and... | Read more »
Marvel Contest of Champions Announced at...
Marvel Contest of Champions Announced at Comic-Con Posted by Jennifer Allen on July 28th, 2014 [ permalink ] Announced over the weekend at San Diego Comic-Con was the fairly exciting looking Marvel Contest of Champions. | Read more »
Teenage Mutant Ninja Turtles Review
Teenage Mutant Ninja Turtles Review By Jennifer Allen on July 28th, 2014 Our Rating: :: DULL SWIPINGUniversal App - Designed for iPhone and iPad The pizza power is weak when it comes to this Teenage Mutant Ninja Turtles game.   | Read more »
Exploration Focused Puzzle Game Beatbudd...
Exploration Focused Puzzle Game Beatbuddy Set to Make Transition from PC to iOS this September Posted by Jennifer Allen on July 28th, 2014 [ permalink ] | Read more »
PlanetHD
PlanetHD By Nadia Oxford on July 28th, 2014 Our Rating: :: SPACE MADNESSUniversal App - Designed for iPhone and iPad PlanetHD will keep players busy for a while, though its unpredictable physics are a handful to deal with.   | Read more »
This Week at 148Apps: July 21-25, 2014
Another Week of Expert App Reviews   At 148Apps, we help you sort through the great ocean of apps to find the ones we think you’ll like and the ones you’ll need. Our top picks become Editor’s Choice, our stamp of approval for apps with that little... | Read more »
Reddme for iPhone - The Reddit Client (...
Reddme for iPhone - The Reddit Client 1.0 Device: iOS iPhone Category: News Price: $.99, Version: 1.0 (iTunes) Description: Reddme for iPhone is an iOS 7-optimized Reddit client that offers a refreshing new way to experience Reddit... | Read more »

Price Scanner via MacPrices.net

13-inch 2.5GHz MacBook Pro on sale for $1099,...
Best Buy has the 13″ 2.5GHz MacBook Pro available for $1099.99 on their online store. Choose free shipping or free instant local store pickup (if available). Their price is $100 off MSRP. Price is... Read more
Roundup of Apple refurbished MacBook Pros, th...
The Apple Store has Apple Certified Refurbished 13″ and 15″ MacBook Pros available for up to $400 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free. Their prices... Read more
Record Mac Shipments In Q2/14 Confound Analys...
A Seeking Alpha Trefis commentary notes that Apple’s fiscal Q3 2014 results released July 22, beat market predictions on earnings, although revenues were slightly lower than anticipated. Apple’s Mac’... Read more
Intel To Launch Core M Silicon For Use In Not...
Digitimes’ Monica Chen and Joseph Tsai, report that Intel will launch 14nm-based Core M series processors specifically for use in fanless notebook/tablet 2-in-1 models in Q4 2014, with many models to... Read more
Apple’s 2014 Back to School promotion: $100 g...
 Apple’s 2014 Back to School promotion includes a free $100 App Store Gift Card with the purchase of any new Mac (Mac mini excluded), or a $50 Gift Card with the purchase of an iPad or iPhone,... Read more
iMacs on sale for $150 off MSRP, $250 off for...
Best Buy has iMacs on sale for up to $160 off MSRP for a limited time. Choose free home shipping or free instant local store pickup (if available). Prices are valid for online orders only, in-store... Read more
Mac minis on sale for $100 off MSRP, starting...
Best Buy has Mac minis on sale for $100 off MSRP. Choose free shipping or free instant local store pickup. Prices are for online orders only, in-store prices may vary: 2.5GHz Mac mini: $499.99 2.3GHz... Read more
Global Tablet Market Grows 11% in Q2/14 Notwi...
Worldwide tablet sales grew 11.0 percent year over year in the second quarter of 2014, with shipments reaching 49.3 million units according to preliminary data from the International Data Corporation... Read more
New iPhone 6 Models to Have Staggered Release...
Digitimes’ Cage Chao and Steve Shen report that according to unnamed sources in Apple’s upstream iPhone supply chain, the new 5.5-inch iPhone will be released several months later than the new 4.7-... Read more
New iOS App Helps People Feel Good About thei...
Mobile shoppers looking for big savings at their favorite stores can turn to the Goodshop app, a new iOS app with the latest coupons and deals at more than 5,000 online stores. In addition to being a... Read more

Jobs Board

*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
Sr. Product Leader, *Apple* Store Apps - Ap...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
WW Sales Program Manager, *Apple* Online St...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.