#ifndef SCIQLOP_SELECTIONZONEACTION_H #define SCIQLOP_SELECTIONZONEACTION_H #include #include #include #include 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 &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); /// The name of the action QString name() const noexcept; public slots: /// Executes the action void execute(const QVector &item); private: class SelectionZoneActionPrivate; spimpl::unique_impl_ptr impl; }; #endif // SCIQLOP_SELECTIONZONEACTION_H