##// END OF EJS Templates
Separate the initialization of the properties of the graph of the update of the units of the graph....
Separate the initialization of the properties of the graph of the update of the units of the graph. The initialization of the properties is carried out when adding a variable in the graph, the update of the units is carried out when loading the data of this variable

File last commit:

r1118:f354146de80e
r1308:41b7c6aab8be
Show More
SelectionZoneAction.h
75 lines | 2.4 KiB | text/x-c | CLexer
#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)>;
using EnableFunction
= std::function<bool(const QVector<VisualizationSelectionZoneItem *> &item)>;
/**
* @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);
/**
* @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);
/// Sets the function which determine if the action should be enabled or disabled
void setEnableFunction(EnableFunction fun);
/// 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;
/// The name of the action
QString name() const noexcept;
/// The path in the sub menus, if any
QStringList subMenuList() const noexcept;
public slots:
/// Executes the action
void execute(const QVector<VisualizationSelectionZoneItem *> &item);
/// Returns true if the action is enabled
bool isEnabled(const QVector<VisualizationSelectionZoneItem *> &item);
private:
class SelectionZoneActionPrivate;
spimpl::unique_impl_ptr<SelectionZoneActionPrivate> impl;
};
#endif // SCIQLOP_SELECTIONZONEACTION_H