Oct 98 Tips
Volume Number: 14 (1998)
Issue Number: 10
Column Tag: Tips & Tidbits
Oct 98 Tips & Tidbits
by Steve Sisak
MPW: Fun with SetKeys
MPW has a limitation on the number of characters that can be used in a SetKey script. The limit is 255 characters. To work around the limit, simply define an Alias to hold the script, and then use the alias in the SetKey command, like this:
Alias F14_Alias 'Echo "# The F14 key was pressed!"
SetKey F14 F14_Alias
Did you ever wish MPW had the feature, like Codewarrior does, in which you can step from error to error in the window, and have the environment display the offending line of source in a source code window, with just a single button click or keypress. Here's how I do it:
Alias Cmd_F14_Alias 'Find \*[èt ]*Fileâ; Lineâèn\ "{Worksheet}" ||
(beep; exit 0);(evaluate "''catenate "{Worksheet}".§''" =~
/[èt ]*File[ èt]*(â)®1[èt]*; Line[ èt]*([0-9]+)®2â/)
Sigmadev:null;If "{Windows}" !~ /â{®1}â/;Target "{®1}";End;
Find "{®2}" "{®1}" && Open "{®1}"'
SetKey Command-F14 Cmd_F14_Alias
This assumes that you have the build errors being written to your MPW worksheet. If you use some other file for said messages, like I do when I'm using ToolServer to do a build, then just change the window name in the script:
Alias F14_Alias 'Find \*[èt ]*Fileâ; Lineâèn\ "{MPW}Worksheet.TS" ||
(beep; exit 0);(evaluate "''catenate "{MPW}Worksheet.TS".§''"
=~ /[èt ]*File[>èt]*(â)®1[ èt]*; Line[ èt]*([0-9]+)®2â/)
Sigmadev:null;If "{Windows}" !~ /â{®1}â/;Target "{®1}";End;
Find "{®2}" "{®1}" && Open "{®1}"'
SetKey F14 F14_Alias
(Now you can see where the first tip was born...)
Here are a few other SetKey settings that I use to optimize my productivity:
SetKey Command-Escape 'Open "{Worksheet}"'
SetKey Command-Home 'Open "{Worksheet}"'
SetKey Option-Escape 'Open "{Target}"'
SetKey Option-Home 'Open "{Target}"'
Greg Branche, Apple Computer
gregb@apple.com
PowerPlant: ABalloon Helper Control Key Additon
ABalloonHelper additon - using the Control key as a 'hot' key for instant Balloon help. ABalloon is an excellent PowerPlant attachment class for Balloon Help by James W. Walker <mailto:jwwalker@kagi.com>. ABalloon is available for downloading at the Metrowerks web site <http://www.metrowerks.com>.
I added a few extra lines of code to ABalloon so that by pressing the Control key, Balloon help is instantly activated for all panes within the application that have an ABalloon attachment. Balloon help is deactivated when the Control key is released.
Here are the code snippets to add to ABalloon:
class ABalloonHelper : public LPeriodical
{
...
// new static variable to keep track of control key
static bool sCntrlKeyDown;
};
// Define and initialize static variables
...
bool ABalloonHelper::sCntrlKeyDown = false;
ABalloonHelper::SpendTime( const EventRecord &inMacEvent )
{
static Point sPrevWhere;
ABalloon* theABalloon = FindBalloonPane(inMacEvent.where);
// Start of new code
// hold down the Control key for quick Balloon Help access
KeyMap theKeyMap;
::GetKeys( theKeyMap );
if( ( theKeyMap[1] & 0x0008 ) && theABalloon ) {
// control key down and pane
if( !sCntrlKeyDown ) {
// control key was not previously down
if( !::HMGetBalloons() )
::HMSetBalloons(true);
sCntrlKeyDown = true;
}
} else {
// control key not down
if( sCntrlKeyDown ) {
// control key was previously down
::HMSetBalloons(false);
sCntrlKeyDown = false;
}
}
// End of new code
....
}
Bill Modesitt, Maui Software
bill@mauisoftware.com