|
LMMS
|
#include <juce_PopupMenu.h>
Classes | |
| struct | Item |
| class | Options |
| class | MenuItemIterator |
| class | CustomComponent |
| class | CustomCallback |
| struct | LookAndFeelMethods |
| struct | HelperClasses |
Public Types | |
| enum | ColourIds { backgroundColourId = 0x1000700 , textColourId = 0x1000600 , headerTextColourId = 0x1000601 , highlightedBackgroundColourId = 0x1000900 , highlightedTextColourId = 0x1000800 } |
Public Member Functions | |
| PopupMenu ()=default | |
| PopupMenu (const PopupMenu &) | |
| ~PopupMenu () | |
| PopupMenu & | operator= (const PopupMenu &) |
| PopupMenu (PopupMenu &&) noexcept | |
| PopupMenu & | operator= (PopupMenu &&) noexcept |
| void | clear () |
| void | addItem (Item newItem) |
| void | addItem (String itemText, std::function< void()> action) |
| void | addItem (String itemText, bool isEnabled, bool isTicked, std::function< void()> action) |
| void | addItem (int itemResultID, String itemText, bool isEnabled=true, bool isTicked=false) |
| void | addItem (int itemResultID, String itemText, bool isEnabled, bool isTicked, const Image &iconToUse) |
| void | addItem (int itemResultID, String itemText, bool isEnabled, bool isTicked, std::unique_ptr< Drawable > iconToUse) |
| void | addCommandItem (ApplicationCommandManager *commandManager, CommandID commandID, String displayName={}, std::unique_ptr< Drawable > iconToUse={}) |
| void | addColouredItem (int itemResultID, String itemText, Colour itemTextColour, bool isEnabled=true, bool isTicked=false, const Image &iconToUse={}) |
| void | addColouredItem (int itemResultID, String itemText, Colour itemTextColour, bool isEnabled, bool isTicked, std::unique_ptr< Drawable > iconToUse) |
| void | addCustomItem (int itemResultID, std::unique_ptr< CustomComponent > customComponent, std::unique_ptr< const PopupMenu > optionalSubMenu=nullptr, const String &itemTitle={}) |
| void | addCustomItem (int itemResultID, Component &customComponent, int idealWidth, int idealHeight, bool triggerMenuItemAutomaticallyWhenClicked, std::unique_ptr< const PopupMenu > optionalSubMenu=nullptr, const String &itemTitle={}) |
| void | addSubMenu (String subMenuName, PopupMenu subMenu, bool isEnabled=true) |
| void | addSubMenu (String subMenuName, PopupMenu subMenu, bool isEnabled, const Image &iconToUse, bool isTicked=false, int itemResultID=0) |
| void | addSubMenu (String subMenuName, PopupMenu subMenu, bool isEnabled, std::unique_ptr< Drawable > iconToUse, bool isTicked=false, int itemResultID=0) |
| void | addSeparator () |
| void | addSectionHeader (String title) |
| void | addColumnBreak () |
| int | getNumItems () const noexcept |
| bool | containsCommandItem (int commandID) const |
| bool | containsAnyActiveItems () const noexcept |
| void | showMenuAsync (const Options &options) |
| void | showMenuAsync (const Options &options, ModalComponentManager::Callback *callback) |
| void | showMenuAsync (const Options &options, std::function< void(int)> callback) |
| void | setLookAndFeel (LookAndFeel *newLookAndFeel) |
| int | drawPopupMenuItem (Graphics &, int, int, bool, bool, bool, bool, bool, const String &, const String &, Image *, const Colour *) |
Static Public Member Functions | |
| static bool JUCE_CALLTYPE | dismissAllActiveMenus () |
Private Member Functions | |
| Component * | createWindow (const Options &, ApplicationCommandManager **) const |
| int | showWithOptionalCallback (const Options &, ModalComponentManager::Callback *, bool) |
Static Private Member Functions | |
| static void | setItem (CustomComponent &, const Item *) |
Private Attributes | |
| Array< Item > | items |
| WeakReference< LookAndFeel > | lookAndFeel |
Friends | |
| struct | HelperClasses |
| class | MenuBarComponent |
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:
@tags{GUI}
| enum juce::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()
|
default |
Creates an empty popup menu.
| juce::PopupMenu::PopupMenu | ( | const PopupMenu & | other | ) |
Creates a copy of another menu.
|
default |
Destructor.
|
noexcept |
Move constructor
| void juce::PopupMenu::addColouredItem | ( | int | itemResultID, |
| String | itemText, | ||
| Colour | itemTextColour, | ||
| bool | isEnabled, | ||
| bool | isTicked, | ||
| std::unique_ptr< Drawable > | iconToUse ) |
Appends a text item with a special colour.
This is the same as addItem(), but specifies a colour to use for the text, which will override the default colours that are used by the current look-and-feel. See addItem() for a description of the parameters.
| void juce::PopupMenu::addColouredItem | ( | int | itemResultID, |
| String | itemText, | ||
| Colour | itemTextColour, | ||
| bool | isEnabled = true, | ||
| bool | isTicked = false, | ||
| const Image & | iconToUse = {} ) |
Appends a text item with a special colour.
This is the same as addItem(), but specifies a colour to use for the text, which will override the default colours that are used by the current look-and-feel. See addItem() for a description of the parameters.
| void juce::PopupMenu::addColumnBreak | ( | ) |
Adds a column break to the menu, to help break it up into sections. Subsequent items will be placed in a new column, rather than being appended to the current column.
If a menu contains explicit column breaks, the menu will never add additional breaks.
| void juce::PopupMenu::addCommandItem | ( | ApplicationCommandManager * | commandManager, |
| CommandID | commandID, | ||
| String | displayName = {}, | ||
| std::unique_ptr< Drawable > | iconToUse = {} ) |
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 |
| iconToUse | an optional Drawable object to use as the icon to the left of the item. The menu will take ownership of this drawable object and will delete it later when no longer needed |
| void juce::PopupMenu::addCustomItem | ( | int | itemResultID, |
| Component & | customComponent, | ||
| int | idealWidth, | ||
| int | idealHeight, | ||
| bool | triggerMenuItemAutomaticallyWhenClicked, | ||
| std::unique_ptr< const PopupMenu > | optionalSubMenu = nullptr, | ||
| const String & | itemTitle = {} ) |
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. The caller must ensure that the passed-in component stays alive until after the menu has been hidden.
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.
itemTitle will be used as the fallback text for this item, and will be exposed to screen reader clients.
Note that native macOS menus do not support custom components.
| void juce::PopupMenu::addCustomItem | ( | int | itemResultID, |
| std::unique_ptr< CustomComponent > | customComponent, | ||
| std::unique_ptr< const PopupMenu > | optionalSubMenu = nullptr, | ||
| const String & | itemTitle = {} ) |
Appends a custom menu item.
This will add a user-defined component to use as a menu item.
Note that native macOS menus do not support custom components.
itemTitle will be used as the fallback text for this item, and will be exposed to screen reader clients.
| void juce::PopupMenu::addItem | ( | int | itemResultID, |
| String | itemText, | ||
| bool | isEnabled, | ||
| bool | isTicked, | ||
| const Image & | iconToUse ) |
Appends a new item with an icon.
| 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 a valid image, it will be displayed to the left of the item. |
| void juce::PopupMenu::addItem | ( | int | itemResultID, |
| String | itemText, | ||
| bool | isEnabled, | ||
| bool | isTicked, | ||
| std::unique_ptr< Drawable > | iconToUse ) |
Appends a new item with an icon.
| 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 | a Drawable object to use as the icon to the left of the item. The menu will take ownership of this drawable object and will delete it later when no longer needed |
| void juce::PopupMenu::addItem | ( | int | itemResultID, |
| String | itemText, | ||
| bool | isEnabled = true, | ||
| bool | isTicked = false ) |
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 |
Adds an item to the menu. You can call this method for full control over the item that is added, or use the other addItem helper methods if you want to pass arguments rather than creating an Item object.
| void juce::PopupMenu::addItem | ( | String | itemText, |
| bool | isEnabled, | ||
| bool | isTicked, | ||
| std::function< void()> | action ) |
Adds an item to the menu with an action callback.
Adds an item to the menu with an action callback.
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.
| void juce::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 multiple adjacent separators with a single one, so your code can be quite free and easy about adding these, and it'll always look ok.
| void juce::PopupMenu::addSubMenu | ( | String | subMenuName, |
| PopupMenu | subMenu, | ||
| bool | isEnabled, | ||
| const Image & | iconToUse, | ||
| bool | isTicked = false, | ||
| int | itemResultID = 0 ) |
Appends a sub-menu with an icon.
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 juce::PopupMenu::addSubMenu | ( | String | subMenuName, |
| PopupMenu | subMenu, | ||
| bool | isEnabled, | ||
| std::unique_ptr< Drawable > | iconToUse, | ||
| bool | isTicked = false, | ||
| int | itemResultID = 0 ) |
Appends a sub-menu with an icon.
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.
The iconToUse parameter is a Drawable object to use as the icon to the left of the item. The menu will take ownership of this drawable object and will delete it later when no longer needed
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 juce::PopupMenu::clear | ( | ) |
Resets the menu, removing all its items.
|
noexcept |
Returns true if the menu contains any items that can be used.
| bool juce::PopupMenu::containsCommandItem | ( | int | commandID | ) | const |
Returns true if the menu contains a command item that triggers the given command.
|
private |
|
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.
|
inline |
|
noexcept |
Returns the number of items that the menu currently contains. (This doesn't count separators).
Copies this menu from another one.
|
staticprivate |
| void juce::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 juce::PopupMenu::showMenuAsync | ( | const Options & | options, |
| ModalComponentManager::Callback * | callback ) |
Runs the menu asynchronously, with a user-provided callback that will receive the result.
Runs the menu asynchronously, with a user-provided callback that will receive the result.
|
private |
|
friend |
|
friend |
|
private |