|
- /*
- ==============================================================================
-
- This file is part of the JUCE library.
- Copyright (c) 2015 - ROLI Ltd.
-
- Permission is granted to use this software under the terms of either:
- a) the GPL v2 (or any later version)
- b) the Affero GPL v3
-
- Details of these licenses can be found at: www.gnu.org/licenses
-
- JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- ------------------------------------------------------------------------------
-
- To release a closed-source product which uses JUCE, commercial licenses are
- available: visit www.juce.com for more information.
-
- ==============================================================================
- */
-
- #ifndef JUCE_APPLICATIONCOMMANDINFO_H_INCLUDED
- #define JUCE_APPLICATIONCOMMANDINFO_H_INCLUDED
-
-
- //==============================================================================
- /**
- Holds information describing an application command.
-
- This object is used to pass information about a particular command, such as its
- name, description and other usage flags.
-
- When an ApplicationCommandTarget is asked to provide information about the commands
- it can perform, this is the structure gets filled-in to describe each one.
-
- @see ApplicationCommandTarget, ApplicationCommandTarget::getCommandInfo(),
- ApplicationCommandManager
- */
- struct JUCE_API ApplicationCommandInfo
- {
- //==============================================================================
- explicit ApplicationCommandInfo (CommandID commandID) noexcept;
-
- //==============================================================================
- /** Sets a number of the structures values at once.
-
- The meanings of each of the parameters is described below, in the appropriate
- member variable's description.
- */
- void setInfo (const String& shortName,
- const String& description,
- const String& categoryName,
- int flags) noexcept;
-
- /** An easy way to set or remove the isDisabled bit in the structure's flags field.
-
- If isActive is true, the flags member has the isDisabled bit cleared; if isActive
- is false, the bit is set.
- */
- void setActive (bool isActive) noexcept;
-
- /** An easy way to set or remove the isTicked bit in the structure's flags field.
- */
- void setTicked (bool isTicked) noexcept;
-
- /** Handy method for adding a keypress to the defaultKeypresses array.
-
- This is just so you can write things like:
- @code
- myinfo.addDefaultKeypress ('s', ModifierKeys::commandModifier);
- @endcode
- instead of
- @code
- myinfo.defaultKeypresses.add (KeyPress ('s', ModifierKeys::commandModifier));
- @endcode
- */
- void addDefaultKeypress (int keyCode, ModifierKeys modifiers) noexcept;
-
- //==============================================================================
- /** The command's unique ID number.
- */
- CommandID commandID;
-
- /** A short name to describe the command.
-
- This should be suitable for use in menus, on buttons that trigger the command, etc.
-
- You can use the setInfo() method to quickly set this and some of the command's
- other properties.
- */
- String shortName;
-
- /** A longer description of the command.
-
- This should be suitable for use in contexts such as a KeyMappingEditorComponent or
- pop-up tooltip describing what the command does.
-
- You can use the setInfo() method to quickly set this and some of the command's
- other properties.
- */
- String description;
-
- /** A named category that the command fits into.
-
- You can give your commands any category you like, and these will be displayed in
- contexts such as the KeyMappingEditorComponent, where the category is used to group
- commands together.
-
- You can use the setInfo() method to quickly set this and some of the command's
- other properties.
- */
- String categoryName;
-
- /** A list of zero or more keypresses that should be used as the default keys for
- this command.
-
- Methods such as KeyPressMappingSet::resetToDefaultMappings() will use the keypresses in
- this list to initialise the default set of key-to-command mappings.
-
- @see addDefaultKeypress
- */
- Array<KeyPress> defaultKeypresses;
-
- //==============================================================================
- /** Flags describing the ways in which this command should be used.
-
- A bitwise-OR of these values is stored in the ApplicationCommandInfo::flags
- variable.
- */
- enum CommandFlags
- {
- /** Indicates that the command can't currently be performed.
-
- The ApplicationCommandTarget::getCommandInfo() method must set this flag if it's
- not currently permissable to perform the command. If the flag is set, then
- components that trigger the command, e.g. PopupMenu, may choose to grey-out the
- command or show themselves as not being enabled.
-
- @see ApplicationCommandInfo::setActive
- */
- isDisabled = 1 << 0,
-
- /** Indicates that the command should have a tick next to it on a menu.
-
- If your command is shown on a menu and this is set, it'll show a tick next to
- it. Other components such as buttons may also use this flag to indicate that it
- is a value that can be toggled, and is currently in the 'on' state.
-
- @see ApplicationCommandInfo::setTicked
- */
- isTicked = 1 << 1,
-
- /** If this flag is present, then when a KeyPressMappingSet invokes the command,
- it will call the command twice, once on key-down and again on key-up.
-
- @see ApplicationCommandTarget::InvocationInfo
- */
- wantsKeyUpDownCallbacks = 1 << 2,
-
- /** If this flag is present, then a KeyMappingEditorComponent will not display the
- command in its list.
- */
- hiddenFromKeyEditor = 1 << 3,
-
- /** If this flag is present, then a KeyMappingEditorComponent will display the
- command in its list, but won't allow the assigned keypress to be changed.
- */
- readOnlyInKeyEditor = 1 << 4,
-
- /** If this flag is present and the command is invoked from a keypress, then any
- buttons or menus that are also connected to the command will not flash to
- indicate that they've been triggered.
- */
- dontTriggerVisualFeedback = 1 << 5
- };
-
- /** A bitwise-OR of the values specified in the CommandFlags enum.
-
- You can use the setInfo() method to quickly set this and some of the command's
- other properties.
- */
- int flags;
- };
-
-
- #endif // JUCE_APPLICATIONCOMMANDINFO_H_INCLUDED
|