SelectionZoneAction.h
75 lines
| 2.4 KiB
| text/x-c
|
CLexer
r1076 | #ifndef SCIQLOP_SELECTIONZONEACTION_H | |||
#define SCIQLOP_SELECTIONZONEACTION_H | ||||
#include <Common/spimpl.h> | ||||
#include <QLoggingCategory> | ||||
#include <QObject> | ||||
#include <functional> | ||||
class VisualizationSelectionZoneItem; | ||||
Q_DECLARE_LOGGING_CATEGORY(LOG_SelectionZoneAction) | ||||
/** | ||||
* @brief The SelectionZoneAction class represents an action on a selection zone in the | ||||
* visualization. | ||||
* | ||||
* The action is a function that will be executed when the slot execute() is called. | ||||
*/ | ||||
class SelectionZoneAction : public QObject { | ||||
Q_OBJECT | ||||
public: | ||||
/// Signature of the function associated to the action | ||||
using ExecuteFunction | ||||
= std::function<void(const QVector<VisualizationSelectionZoneItem *> &item)>; | ||||
r1080 | using EnableFunction | |||
= std::function<bool(const QVector<VisualizationSelectionZoneItem *> &item)>; | ||||
r1076 | /** | |||
* @param name the name of the action, displayed to the user | ||||
* @param fun the function that will be called when the action is executed | ||||
* @sa execute() | ||||
*/ | ||||
explicit SelectionZoneAction(const QString &name, ExecuteFunction fun); | ||||
r1083 | /** | |||
* @param name the name of the action, displayed to the user | ||||
* @param subMenusList the list of sub menus where the action should be inserted | ||||
* @param fun the function that will be called when the action is executed | ||||
* @sa execute() | ||||
*/ | ||||
explicit SelectionZoneAction(const QStringList &subMenuList, const QString &name, | ||||
ExecuteFunction fun); | ||||
r1080 | /// Sets the function which determine if the action should be enabled or disabled | |||
void setEnableFunction(EnableFunction fun); | ||||
r1082 | /// Sets the shortcut displayed by the action. | |||
/// Note: The shortcut is only displayed and not active because it is not permanently stored | ||||
void setDisplayedShortcut(const QKeySequence &shortcut); | ||||
QKeySequence displayedShortcut() const; | ||||
r1076 | /// The name of the action | |||
QString name() const noexcept; | ||||
r1083 | /// The path in the sub menus, if any | |||
QStringList subMenuList() const noexcept; | ||||
r1076 | public slots: | |||
/// Executes the action | ||||
void execute(const QVector<VisualizationSelectionZoneItem *> &item); | ||||
r1080 | /// Returns true if the action is enabled | |||
bool isEnabled(const QVector<VisualizationSelectionZoneItem *> &item); | ||||
r1076 | private: | |||
class SelectionZoneActionPrivate; | ||||
spimpl::unique_impl_ptr<SelectionZoneActionPrivate> impl; | ||||
}; | ||||
#endif // SCIQLOP_SELECTIONZONEACTION_H | ||||