Creates and displays a popup-menu. More...
Classes | |
| class | CustomComponent |
| A user-defined component that can be used as an item in a popup menu. More... | |
| class | MenuItemIterator |
| Allows you to iterate through the items in a pop-up menu, and examine their properties. More... | |
| class | Options |
| Class used to create a set of options to pass to the show() method. More... | |
Public Types | |
| enum | ColourIds { backgroundColourId = 0x1000700, textColourId = 0x1000600, headerTextColourId = 0x1000601, highlightedBackgroundColourId = 0x1000900, highlightedTextColourId = 0x1000800 } |
| A set of colour IDs to use to change the colour of various aspects of the menu. More... | |
Public Member Functions | |
| PopupMenu () | |
| Creates an empty popup menu. | |
| PopupMenu (const PopupMenu &other) | |
| Creates a copy of another menu. | |
| ~PopupMenu () | |
| Destructor. | |
| PopupMenu & | operator= (const PopupMenu &other) |
| Copies this menu from another one. | |
| void | clear () |
| Resets the menu, removing all its items. | |
| void | addItem (int itemResultID, const String &itemText, bool isEnabled=true, bool isTicked=false, const Image &iconToUse=Image::null) |
| Appends a new text item for this menu to show. | |
| void | addCommandItem (ApplicationCommandManager *commandManager, int commandID, const String &displayName=String::empty) |
| Adds an item that represents one of the commands in a command manager object. | |
| void | addColouredItem (int itemResultID, const String &itemText, const Colour &itemTextColour, bool isEnabled=true, bool isTicked=false, const Image &iconToUse=Image::null) |
| Appends a text item with a special colour. | |
| void | addCustomItem (int itemResultID, Component *customComponent, int idealWidth, int idealHeight, bool triggerMenuItemAutomaticallyWhenClicked, const PopupMenu *optionalSubMenu=nullptr) |
| Appends a custom menu item that can't be used to trigger a result. | |
| void | addSubMenu (const String &subMenuName, const PopupMenu &subMenu, bool isEnabled=true, const Image &iconToUse=Image::null, bool isTicked=false, int itemResultID=0) |
| Appends a sub-menu. | |
| void | addSeparator () |
| Appends a separator to the menu, to help break it up into sections. | |
| void | addSectionHeader (const String &title) |
| Adds a non-clickable text item to the menu. | |
| int | getNumItems () const noexcept |
| Returns the number of items that the menu currently contains. | |
| bool | containsCommandItem (int commandID) const |
| Returns true if the menu contains a command item that triggers the given command. | |
| bool | containsAnyActiveItems () const noexcept |
| Returns true if the menu contains any items that can be used. | |
| void | showMenuAsync (const Options &options, ModalComponentManager::Callback *callback) |
| Runs the menu asynchronously, with a user-provided callback that will receive the result. | |
| void | setLookAndFeel (LookAndFeel *newLookAndFeel) |
| Specifies a look-and-feel for the menu and any sub-menus that it has. | |
| void | addCustomItem (int itemResultID, CustomComponent *customComponent, const PopupMenu *optionalSubMenu=nullptr) |
| Appends a custom menu item. | |
Static Public Member Functions | |
| static bool JUCE_CALLTYPE | dismissAllActiveMenus () |
| Closes any menus that are currently open. | |
Creates and displays a popup-menu.
To show a popup-menu, you create one of these, add some items to it, then call its show() method, which returns the id of the item the user selects.
E.g.
Submenus are easy too:
| enum PopupMenu::ColourIds |
A set of colour IDs to use to change the colour of various aspects of the menu.
These constants can be used either via the LookAndFeel::setColour() method for the look and feel that is set for this menu with setLookAndFeel()
| backgroundColourId |
The colour to fill the menu's background with. |
| textColourId |
The colour for normal menu item text, (unless the colour is specified when the item is added). |
| headerTextColourId |
The colour for section header item text (see the addSectionHeader() method). |
| highlightedBackgroundColourId |
The colour to fill the background of the currently highlighted menu item. |
| highlightedTextColourId |
The colour to use for the text of the currently highlighted item. |
| PopupMenu::PopupMenu | ( | ) |
Creates an empty popup menu.
| PopupMenu::PopupMenu | ( | const PopupMenu & | other | ) |
Creates a copy of another menu.
| PopupMenu::~PopupMenu | ( | ) |
Destructor.
| void PopupMenu::clear | ( | ) |
Resets the menu, removing all its items.
| void PopupMenu::addItem | ( | int | itemResultID, |
| const String & | itemText, | ||
| bool | isEnabled = true, |
||
| bool | isTicked = false, |
||
| const Image & | iconToUse = Image::null |
||
| ) |
Appends a new text item for this menu to show.
| itemResultID | the number that will be returned from the show() method if the user picks this item. The value should never be zero, because that's used to indicate that the user didn't select anything. |
| itemText | the text to show. |
| isEnabled | if false, the item will be shown 'greyed-out' and can't be picked |
| isTicked | if true, the item will be shown with a tick next to it |
| iconToUse | if this is non-zero, it should be an image that will be displayed to the left of the item. This method will take its own copy of the image passed-in, so there's no need to keep it hanging around. |
Referenced by StandaloneFilterWindow::buttonClicked().
| void PopupMenu::addCommandItem | ( | ApplicationCommandManager * | commandManager, |
| int | commandID, | ||
| const String & | displayName = String::empty |
||
| ) |
Adds an item that represents one of the commands in a command manager object.
| commandManager | the manager to use to trigger the command and get information about it |
| commandID | the ID of the command |
| displayName | if this is non-empty, then this string will be used instead of the command's registered name |
| void PopupMenu::addColouredItem | ( | int | itemResultID, |
| const String & | itemText, | ||
| const Colour & | itemTextColour, | ||
| bool | isEnabled = true, |
||
| bool | isTicked = false, |
||
| const Image & | iconToUse = Image::null |
||
| ) |
| void PopupMenu::addCustomItem | ( | int | itemResultID, |
| Component * | customComponent, | ||
| int | idealWidth, | ||
| int | idealHeight, | ||
| bool | triggerMenuItemAutomaticallyWhenClicked, | ||
| const PopupMenu * | optionalSubMenu = nullptr |
||
| ) |
Appends a custom menu item that can't be used to trigger a result.
This will add a user-defined component to use as a menu item. Unlike the addCustomItem() method that takes a PopupMenu::CustomComponent, this version can't trigger a result from it, so doesn't take a menu ID. It also doesn't delete the component when it's finished, so it's the caller's responsibility to manage the component that is passed-in.
if triggerMenuItemAutomaticallyWhenClicked is true, the menu itself will handle detection of a mouse-click on your component, and use that to trigger the menu ID specified in itemResultID. If this is false, the menu item can't be triggered, so itemResultID is not used.
| void PopupMenu::addSubMenu | ( | const String & | subMenuName, |
| const PopupMenu & | subMenu, | ||
| bool | isEnabled = true, |
||
| const Image & | iconToUse = Image::null, |
||
| bool | isTicked = false, |
||
| int | itemResultID = 0 |
||
| ) |
Appends a sub-menu.
If the menu that's passed in is empty, it will appear as an inactive item. If the itemResultID argument is non-zero, then the sub-menu item itself can be clicked to trigger it as a command.
| void PopupMenu::addSeparator | ( | ) |
Appends a separator to the menu, to help break it up into sections.
The menu class is smart enough not to display separators at the top or bottom of the menu, and it will replace mutliple adjacent separators with a single one, so your code can be quite free and easy about adding these, and it'll always look ok.
Referenced by StandaloneFilterWindow::buttonClicked().
| void PopupMenu::addSectionHeader | ( | const String & | title | ) |
Adds a non-clickable text item to the menu.
This is a bold-font items which can be used as a header to separate the items into named groups.
|
noexcept |
Returns the number of items that the menu currently contains.
(This doesn't count separators).
| bool PopupMenu::containsCommandItem | ( | int | commandID | ) | const |
Returns true if the menu contains a command item that triggers the given command.
|
noexcept |
Returns true if the menu contains any items that can be used.
| void PopupMenu::showMenuAsync | ( | const Options & | options, |
| ModalComponentManager::Callback * | callback | ||
| ) |
Runs the menu asynchronously, with a user-provided callback that will receive the result.
|
static |
Closes any menus that are currently open.
This might be useful if you have a situation where your window is being closed by some means other than a user action, and you'd like to make sure that menus aren't left hanging around.
| void PopupMenu::setLookAndFeel | ( | LookAndFeel * | newLookAndFeel | ) |
Specifies a look-and-feel for the menu and any sub-menus that it has.
This can be called before show() if you need a customised menu. Be careful not to delete the LookAndFeel object before the menu has been deleted.
| void PopupMenu::addCustomItem | ( | int | itemResultID, |
| CustomComponent * | customComponent, | ||
| const PopupMenu * | optionalSubMenu = nullptr |
||
| ) |
Appends a custom menu item.
This will add a user-defined component to use as a menu item. The component passed in will be deleted by this menu when it's no longer needed.