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.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Coda 2.5.11 - One-window Web development...
Coda is a powerful Web editor that puts everything in one place. An editor. Terminal. CSS. Files. With Coda 2, we went beyond expectations. With loads of new, much-requested features, a few surprises... Read more
Bookends 12.5.7 - Reference management a...
Bookends is a full-featured bibliography/reference and information-management system for students and professionals. Access the power of Bookends directly from Mellel, Nisus Writer Pro, or MS Word (... Read more
Maya 2016 - Professional 3D modeling and...
Maya is an award-winning software and powerful, integrated 3D modeling, animation, visual effects, and rendering solution. Because Maya is based on an open architecture, all your work can be scripted... Read more
RapidWeaver 6.2.3 - Create template-base...
RapidWeaver is a next-generation Web design application to help you easily create professional-looking Web sites in minutes. No knowledge of complex code is required, RapidWeaver will take care of... Read more
MacFamilyTree 7.5.2 - Create and explore...
MacFamilyTree gives genealogy a facelift: it's modern, interactive, incredibly fast, and easy to use. We're convinced that generations of chroniclers would have loved to trade in their genealogy... Read more
Paragraphs 1.0.1 - Writing tool just for...
Paragraphs is an app just for writers. It was built for one thing and one thing only: writing. It gives you everything you need to create brilliant prose and does away with the rest. Everything in... Read more
BlueStacks App Player 0.9.21 - Run Andro...
BlueStacks App Player lets you run your Android apps fast and fullscreen on your Mac. Version 0.9.21: Note: Now requires OS X 10.8 or later running on a 64-bit Intel processor. Initial stable... Read more
Tweetbot 2.0.2 - Popular Twitter client....
Tweetbot is a full-featured OS X Twitter client with a lot of personality. Whether it's the meticulously-crafted interface, sounds and animation, or features like multiple timelines and column views... Read more
Apple iBooks Author 2.3 - Create and pub...
Apple iBooks Author helps you create and publish amazing Multi-Touch books for iPad. Now anyone can create stunning iBooks textbooks, cookbooks, history books, picture books, and more for iPad. All... Read more
NeoOffice 2014.12 - Mac-tailored, OpenOf...
NeoOffice is a complete office suite for OS X. With NeoOffice, users can view, edit, and save OpenOffice documents, PDF files, and most Microsoft Word, Excel, and PowerPoint documents. NeoOffice 3.x... Read more

Rage of Bahamut is Giving Almost All of...
The App Store isn't what it used to be back in 2012, so it's not unexpected to see some games changing their structures with the times. Now we can add Rage of Bahamut to that list with the recent announcement that the game is severely cutting back... | Read more »
Adventures of Pip (Games)
Adventures of Pip 1.0 Device: iOS iPhone Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: ** ONE WEEK ONLY — 66% OFF! *** “Adventures of Pip is a delightful little platformer full of charm, challenge and impeccable... | Read more »
Divide By Sheep - Tips, Tricks, and Stre...
Who would have thought splitting up sheep could be so involved? Anyone who’s played Divide by Sheep, that’s who! While we’re not about to give you complete solutions to everything (because that’s just cheating), we will happily give you some... | Read more »
NaturalMotion and Zynga Have Started Tea...
An official sequel to 2012's CSR Racing is officially on the way, with Zynga and NaturalMotion releasing a short teaser trailer to get everyone excited. Well, as excited as one can get from a trailer with no gameplay footage, anyway. [Read more] | Read more »
Grab a Friend and Pick up Overkill 3, Be...
Overkill 3 is a pretty enjoyable third-person shooter that was sort of begging for some online multiplayer. Fortunately the begging can stop, because its newest update has added an online co-op mode. [Read more] | Read more »
Scanner Pro's Newest Update Adds Au...
Scanner Pro is one of the most popular document scanning apps on iOS, thanks in no small part to its near-constant updates, I'm sure. Now we're up to update number six, and it adds some pretty handy new features. [Read more] | Read more »
Heroki (Games)
Heroki 1.0 Device: iOS Universal Category: Games Price: $7.99, Version: 1.0 (iTunes) Description: CLEAR THE SKIES FOR A NEW HERO!The peaceful sky village of Levantia is in danger! The dastardly Dr. N. Forchin and his accomplice,... | Read more »
Wars of the Roses (Games)
Wars of the Roses 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
TapMon Battle (Games)
TapMon Battle 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: It's time to battle!Tap! Tap! Tap! Try tap a egg to hatch a Tapmon!Do a battle with another tapmons using your hatched tapmons! *... | Read more »
Alchemic Dungeons (Games)
Alchemic Dungeons 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: ### Release Event! ### 2.99$->0.99$ for limited time! ### Roguelike Role Playing Game! ### Alchemic Dungeons is roguelike... | Read more »

Price Scanner via MacPrices.net

Canon PIXMA MG3620 Wireless Inkjet All-in-One...
Canon U.S.A., Inc. has announced the PIXMA MG3620 Wireless (1) Inkjet All-in-One (AIO) printer for high-quality photo and document printing. Built with convenience in mind for the everyday home user... Read more
July 4th Holiday Weekend 13-inch MacBook Pro...
Save up to $150 on the purchase of a new 2015 13″ Retina MacBook Pro at the following resellers this weekend. Shipping is free with each model: 2.7GHz/128GB MSRP $1299 2.7GHz/... Read more
27-inch 3.5GHz 5K iMac on sale for $2149, sav...
Best Buy has the 27″ 3.5GHz 5K iMac on sale for $2149.99. Choose free shipping or free local store pickup (if available). Sale price for online orders only, in-store prices may vary. Their price is $... Read more
Apple now offering refurbished 2015 11-inch...
The Apple Store is now offering Apple Certified Refurbished 2015 11″ MacBook Airs as well as 13″ MacBook Airs (the latest models), available for up to $180 off the cost of new models. An Apple one-... Read more
15-inch 2.5GHz Retina MacBook Pro on sale for...
Amazon.com has the 15″ 2.5GHz Retina MacBook Pro on sale for $2274 including free shipping. Their price is $225 off MSRP, and it’s the lowest price available for this model. Read more
Finally Safe To Upgrade To Yosemite’?
The reason I’ve held back from upgrading my MacBook Air from OS X 10.9 Mavericks to 10.10 Yosemite for nearly a year isn’t just procrastination. Among other bugs reported, there have been persistent... Read more
Logo Pop Free Vector Logo Design App For OS X...
128bit Technologies has released of Logo Pop Free 1.2 for Mac OS X, a vector based, full-fledged, logo design app available exclusively on the Mac App Store for the agreeable price of absolutely free... Read more
21-inch 1.4GHz iMac on sale for $999, save $1...
B&H Photo has new 21″ 1.4GHz iMac on sale for $999 including free shipping plus NY sales tax only. Their price is $100 off MSRP. Best Buy has the 21″ 1.4GHz iMac on sale for $999.99 on their... Read more
16GB iPad mini 3 on sale for $339, save $60
B&H Photo has the 16GB iPad mini 3 WiFi on sale for $339 including free shipping plus NY tax only. Their price is $60 off MSRP. Read more
Save up to $40 on iPad Air 2, NY tax only, fr...
B&H Photo has iPad Air 2s on sale for up to $40 off MSRP including free shipping plus NY sales tax only: - 16GB iPad Air 2 WiFi: $489 $10 off - 64GB iPad Air 2 WiFi: $559 $40 off - 128GB iPad Air... Read more

Jobs Board

Global Deployment Project Manager, *Apple*...
…international landscape is paramount to drive innovation, compliance, competition of Apple 's strengths, and talent planning. Manages the process, logistics, and systems Read more
*Apple* MAC Support Services Subject Matter...
Title: Apple MAC Support Services Subject Matter Expert Location: Pleasanton, CA Type of position: Temporary Contract for approximately 6 weeks Tasks The tasks for the Read more
*Apple* MAC Support Administrator - Net2Sour...
…solutions customized to client needs including staffing, training and technology Title Apple MAC Support Administrator Location Belmont, CA Duration 6+ Month Job Read more
*Apple* Certified Mac Technician - Updated 6...
…and friendly, hands-on technical support to customers troubleshooting and repairing Apple /Mac products with courtesy, speed and skill. Use your problem-solving skills Read more
*Apple* MAC Support Services Subject Matter...
…the best talent to create a competitive advantage. Currently, we are seeking an Apple MAC Support Services Subject Matter Expert for a long term contract in Pleasanton, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.