#ifndef SCIQLOP_VARIABLECONTROLLER_H #define SCIQLOP_VARIABLECONTROLLER_H #include #include #include class IDataProvider; class Variable; class VariableModel; Q_DECLARE_LOGGING_CATEGORY(LOG_VariableController) /** * @brief The VariableController class aims to handle the variables in SciQlop. */ class VariableController : public QObject { Q_OBJECT public: explicit VariableController(QObject *parent = 0); virtual ~VariableController(); VariableModel *variableModel() noexcept; signals: /// Signal emitted when a variable has been created void variableCreated(std::shared_ptr variable); public slots: /** * Creates a new variable and adds it to the model * @param name the name of the new variable * @param provider the data provider for the new variable */ void createVariable(const QString &name, std::shared_ptr provider) noexcept; void initialize(); void finalize(); private: void waitForFinish(); class VariableControllerPrivate; spimpl::unique_impl_ptr impl; }; #endif // SCIQLOP_VARIABLECONTROLLER_H