Standalone and "About..." menu
ambassador at fourthworld.com
Mon Oct 25 09:36:50 EDT 2010
René Micout wrote:
> When I create a standalone, LiveCode make automatically an "About..." menu in the application menubar...
> How can I pick this menu item ?
> on menuPick theItem
> if theItem is "About..." then
> end mousePick
> don't work
The LiveCode engine makes it very easy to create menu sets that
substantially conform to the HIGs on supported platforms, but difficult
to do anything non-standard.
In most apps, there is a "Preferences..." it at the end of the Edit
menu, and an "About..." item at the end of the Help menu.
That is, for Windows and Linux - on OS X the "About..." item appears
next to that OS's unique application menu, and the "Preferences..." item
is the second entry in that menu.
To allow you to make one menu bar that works on all supported platforms,
the engine moves the last item from the Help menu (presumed to be
"About...") and the last item from the Edit menu (presumed to be
"Preferences...") to their appropriate place in the application menu on
OS X; it leaves them in place for other OSes.
While your item may be named "Preferences..." (with three periods), once
rendered by the OS it becomes rendered as "Preferences…" (with an
ellipsis), and is identified internally as the argument to the menuPick
message as simply "Preferences". Oddly, this does not happen with the
About item, which is identified in the menuPick argument as you had
So in your menuPick handler for Help you'll want:
on menuPick pItem
answer "My Cool App"&cr& "Copyright 2010 by me"
case "Other Menu Items"
-- do stuff for those
But in Edit you'll need:
on menuPick pItem
case "Preferences" -- for OS X
case "Preferences..." -- for everything else
-- do prefs stuff
I tried to post a bug report on that, but got an error in Bugzilla. ;)
I'll try again later.
IIRC the Rev IDE used to automatically write appropriate case statements
for items you build with its Menu Builder utility, but checking this
just now it seems it no longer does, writing only one generic menuPick
handler with no individual case statements in it, so you're on your own.
It's also worth noting that the current LiveCode IDE does not write the
names of the "About..." and "Preferences..." items with the trailing
periods or even an ellipsis, so while the engine will at least render
the Prefs item correctly on OS X it doesn't render About or Prefs
correctly for other platforms.
Perhaps someone who uses the LC IDE might consider flagging that as a bug.
Here I've found it simpler to just roll my own menu bar, copying it into
stacks and adjusting its items as needed. Your mileage may vary;
contents may settle during shipping; items in mirror may be closer than
IMNSHO, most of the complaints about making menu bars in Rev would go
away if this small handful of inconsistencies was addressed. The
mechanism itself is fairly robust and does a good job of automatically
handling differences between OSes, but is made to appear more
complicated than it needs to be by these anomalies.
LiveCode training and consulting: http://www.fourthworld.com
Webzine for LiveCode developers: http://www.LiveCodeJournal.com
LiveCode Journal blog: http://LiveCodejournal.com/blog.irv
More information about the Use-livecode