|
YCP UI Widget Reference
Back to the widget index
MenuButton
|
Button with popup menu
|
|
Description
This is a widget that looks very much like a PushButton, but unlike
a PushButton it doesn't immediately start some action but opens a
popup menu from where the user can select an item that starts an action. Any
item may in turn open a submenu etc.
UserInput() returns the ID of a menu item if one was activated. It
will never return the ID of the MenuButton itself.
Style guide hint: Don't overuse this widget. Use it for dialogs that
provide lots of actions. Make the most frequently used actions accessible
via normal PushButtons. Move less frequently used actions
( e.g. "expert" actions ) into one or more MenuButtons. Don't nest
the popup menus too deep - the deeper the nesting, the more awkward the user
interface will be.
You can ( and should ) provide keybord shortcuts along with the button
label as well as for any menu item.
Arguments
string
|
label
|
|
itemList
|
menu
|
items
|
Special Properties
string
|
Label
|
the text on the MenuButton
|
Sample Usage
`MenuButton( "button label", [ `item( `id( `doit ), "& Do it" ), `item( `id( `something ), "& Something" ) ] );
Examples
{
// Build a dialog with one menu button.
// Wait the user selects a menu entry,
// then close the dialog and terminate.
// Please note it's pretty pointless to create menu entries without an ID -
// you'd never know what entry the user selected.
UI::OpenDialog(
`MenuButton( "&Create",
[
`item(`id(`folder), "&Folder" ),
`item(`id(`text), "&Text File" ),
`item(`id(`image), "&Image" )
]
)
);
any id = UI::UserInput();
UI::CloseDialog();
y2milestone( "Selected: %1", id );
}
|
{
// Build a dialog with one menu button with a submenu.
// Wait the user selects a menu entry,
// then close the dialog and terminate.
// Please note it's pretty pointless to create menu entries without an ID -
// you'd never know what entry the user selected.
UI::OpenDialog(
`MenuButton( "&Create",
[
`item(`id(`folder), "&Folder" ),
`menu( "&Document",
[
`item(`id(`text), "&Text File" ),
`item(`id(`image), "&Image" )
]
)
]
)
);
any id = UI::UserInput();
UI::CloseDialog();
y2milestone( "Selected: %1", id );
}
|
Back to the widget index
|