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

Iridient Developer 3.3.12 - Powerful ima...
Iridient Developer (was RAW Developer) is a powerful image-conversion application designed specifically for OS X. Iridient Developer gives advanced photographers total control over every aspect of... Read more
DxO PhotoLab 3.3.0.54 - Image enhancemen...
DxO PhotoLab (was DxO Optics Pro) provides a complete set of smart assisted corrections that you can manually fine-tune at any time. Take control on every aspect of your photos: effectively remove... Read more
Airfoil 5.9.1 - Send audio from any app...
Airfoil allows you to send any audio to AirPort Express units, Apple TVs, and even other Macs and PCs, all in sync! It's your audio - everywhere. With Airfoil you can take audio from any... Read more
TunnelBear 3.9.8 - Subscription-based pr...
TunnelBear is a subscription-based virtual private network (VPN) service and companion app, enabling you to browse the internet privately and securely. Features Browse privately - Secure your data... Read more
Things 3.12.4 - Elegant personal task ma...
Things is a task management solution that helps to organize your tasks in an elegant and intuitive way. Things combines powerful features with simplicity through the use of tags and its intelligent... Read more
Vitamin-R 3.17 - Personal productivity t...
Vitamin-R creates the optimal conditions for your brain to work at its best by structuring your work into short bursts of distraction-free, highly focused activity alternating with opportunities for... Read more
iMazing 2.11.6 - Complete iOS device man...
iMazing (was DiskAid) is the ultimate iOS device manager with capabilities far beyond what iTunes offers. With iMazing and your iOS device (iPhone, iPad, or iPod), you can: Copy music to and from... Read more
BBEdit 13.1 - Powerful text and HTML edi...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more
Apple Security Update 2020-003 - For mac...
Apple Security Update is recommended for all users and improves the security of OS X. For detailed information about the security content of this update, please visit lists security updates for... Read more
BetterTouchTool 3.379 - Customize multi-...
BetterTouchTool adds many new, fully customizable gestures to the Magic Mouse, Multi-Touch MacBook trackpad, and Magic Trackpad. These gestures are customizable: Magic Mouse: Pinch in / out (zoom)... Read more

Latest Forum Discussions

See All

The 5 Best Mobile Real Time Strategy Gam...
Real-time strategy games feel like they’d be a perfect fit for mobile, but they’re trickier to pull off that you might think. The traditional mold of base-building and micro management can work on touch screens, but needs to be carefully honed so... | Read more »
Using your phone in a protest
I can't write about games today. There is a struggle happening in the streets right now and it needs everyone's attention. Here's some good info on how you can use your iOS device safely amidst a protest. | Read more »
Dungonian is a card-based dungeon crawle...
Dungonian is a card-based dungeon crawler from developer SandFish Games that only recently launched as a free-to-play title. It offers an extensive roster of playable heroes to collect and enemies to take down, and it's available right now for iOS... | Read more »
Steam Link Spotlight - Signs of the Sojo...
Steam Link Spotlight is a feature where we look at PC games that play exceptionally well using the Steam Link app. Our last entry was XCOM: Chimera Squad. Read about how it plays using Steam Link's new mouse and keyboard support over here. | Read more »
Steampunk Tower 2, DreamGate's sequ...
Steampunk Tower 2 is a DreamGate's follow up to their previous tower defence game. It's available now for both iOS and Android as a free-to-play title and will see players defending their lone base by kitting it out with a variety of turrets. [... | Read more »
Clash Royale: The Road to Legendary Aren...
Supercell recently celebrated its 10th anniversary and their best title, Clash Royale, is as good as it's ever been. Even for lapsed players, returning to the game is as easy as can be. If you want to join us in picking the game back up, we've put... | Read more »
Pokemon Go Fest 2020 will be a virtual e...
Niantic has announced that Pokemon Go Fest will still take place this year although understandably it won't be a physical event. Instead, it will become a virtual celebration and is set to be held on 25th and 26th July. [Read more] | Read more »
Marvel Future Fight's major May upd...
Marvel Future Fight's latest update has now landed, and it sounds like a big one. The focus this time around is on Marvel's Guardians of the Galaxy, and it introduces all-new characters, quests, and uniforms for players to collect. [Read more] | Read more »
SINoALICE, Yoko Taro and Pokelabo's...
Yoko Taro and developer Pokelabo's SINoALICE has now opened for pre-registration over on the App Store. It's already amassed 1.5 million Android pre-registrations, and it's currently slated to launch on July 1st. [Read more] | Read more »
Masketeers: Idle Has Fallen's lates...
Masketeers: Idle Has Fallen is the latest endeavour from Appxplore, the folks behind Crab War, Thor: War of Tapnarok and Light A Way. It's an idle RPG that's currently available for Android in Early Access and will head to iOS at a later date. [... | Read more »

Price Scanner via MacPrices.net

Apple’s new 2020 13″ MacBook Pros on sale for...
Apple reseller Abt Electronics has new 2020 13″ MacBook Pros on sale today for up to $140 off MSRP, starting at $1208. Shipping is free, and most configurations are in stock today. Note that Abt’s... Read more
Apple CEO Reacts To Nationwide Protests Over...
NEWS: 06.03.20 – With the recent death of a black man in the custody of a white police officer igniting outrage among Americans from all walks of life, which resulted in protests and civil unrest... Read more
At up to $420 off MSRP, these Certified Refur...
Apple has Certified Refurbished 2019 16″ MacBook Pros available for up to $420 off the cost of new models, starting at $2039. Each model features a new outer case, shipping is free, and an Apple 1-... Read more
Apple restocks refurbished 3rd generation 12....
Apple restocked select 3rd generation 12.9″ WiFi iPad Pros starting at only $699 and up to $330 off original MSRP. Each iPad comes with a standard Apple one-year warranty, outer cases are new, and... Read more
These wireless carriers are offering Apple’s...
Looking for a deal on Apple’s new iPhone SE? Apple itself offers the unlocked 64GB iPhone SE for $399 or $16.62/month. If you’re willing to try a new carrier, two of Apple’s wireless carriers are... Read more
Save $80 on the 64GB 10.5″ iPad Air with this...
Apple has 10.5″ 64GB WiFi iPad Airs models available for $80 off MSRP, Certified Refurbished. Each iPad comes with Apple’s standard one-year warranty and includes a new outer case. Shipping is free... Read more
Apple offers wide range of refurbished custom...
Save up to $7740 on a custom-configured Mac Pro with these Certified Refurbished models available at Apple. Each Mac Pro features a new outer case, free shipping, and includes Apple’s standard 1-year... Read more
Sale! $200 off on select 2020 13″ MacBook Pro...
Amazon has select 2020 13″ MacBook Pro configurations on sale today for $200 off Apple’s MSRP. Shipping is free. Be sure to purchase the MacBook Pro from Amazon, rather than a third-party seller, and... Read more
June 1 only: $100 off Apple’s iPhones at Boos...
Boost Mobile is offering Apple iPhone 11, 11 Pro, and iPhone 11 Pro Max models for $100 off MSRP with service. Their discount reduces the cost of an iPhone 11/64GB to $599, iPhone 11 Pro to $899 for... Read more
Sams Club Sales Event: $100 off every Apple W...
Sams Club is discounting all Apple Watch Series 5 models by $100 off Apple’s MSRP through June 3, 2020. Choose free shipping or free local store pickup (if available). Sale prices for online orders... Read more

Jobs Board

Security Officer ($23.00/Hourly) - *Apple*...
**Security Officer \($23\.00/Hourly\) \- Apple Store** **Description** About NMS Built on a culture of safety and integrity, NMSdelivers award\-winning, integrated Read more
*Apple* Service Desk Analyst - Zones LLC (Un...
Apple Service Desk Analyst Professional Services Albany, New York Apply Description Position OverviewAs a Service Desk Analyst, you will provide customer-friendly Read more
*Apple* Mac Desktop Support - Global Dimensi...
…Operate and support an Active Directory (AD) server-client environment for all Apple devices operating on the BUMED network + Leverage necessary industry enterprise Read more
*Apple* Mac Desktop Support - Global Dimensi...
…Operate and support an Active Directory (AD) server-client environment for all Apple devices operating on the BUMED network + Leverage necessary industry enterprise Read more
Surgical Technologist III, *Apple* Hill Sur...
Surgical Technologist III, Apple Hill Surgical Center - Full Time Tracking Code D5.29.2020 Job Description Surgical Technologist III Apple Hill Surgical Center Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.