diff --git a/core/include/Variable/Variable.h b/core/include/Variable/Variable.h index 55ba6c9..d67e115 100644 --- a/core/include/Variable/Variable.h +++ b/core/include/Variable/Variable.h @@ -3,6 +3,8 @@ #include +#include + class IDataSeries; class QString; @@ -24,4 +26,7 @@ private: spimpl::unique_impl_ptr impl; }; +// Required for using shared_ptr in signals/slots +Q_DECLARE_METATYPE(std::shared_ptr) + #endif // SCIQLOP_VARIABLE_H diff --git a/core/include/Visualization/VisualizationController.h b/core/include/Visualization/VisualizationController.h index 09a53ff..5a34df3 100644 --- a/core/include/Visualization/VisualizationController.h +++ b/core/include/Visualization/VisualizationController.h @@ -10,6 +10,7 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_VisualizationController) class DataSourceItem; +class Variable; /** * @brief The VisualizationController class aims to make the link between SciQlop and its plugins. @@ -25,6 +26,9 @@ public: virtual ~VisualizationController(); public slots: + /// Slot called when a variable has been created in SciQlop + void onVariableCreated(std::shared_ptr variable) noexcept; + /// Manage init/end of the controller void initialize(); void finalize(); diff --git a/core/src/Visualization/VisualizationController.cpp b/core/src/Visualization/VisualizationController.cpp index d87cbee..6e3bcc6 100644 --- a/core/src/Visualization/VisualizationController.cpp +++ b/core/src/Visualization/VisualizationController.cpp @@ -1,5 +1,7 @@ #include +#include + #include #include @@ -27,6 +29,12 @@ VisualizationController::~VisualizationController() this->waitForFinish(); } +void VisualizationController::onVariableCreated(std::shared_ptr variable) noexcept +{ + /// @todo ALX : make new graph for the variable + qCDebug(LOG_VisualizationController()) << "new variable to display"; +} + void VisualizationController::initialize() { qCDebug(LOG_VisualizationController()) << tr("VisualizationController init") diff --git a/gui/src/SqpApplication.cpp b/gui/src/SqpApplication.cpp index 0df84d4..8f2d0fa 100644 --- a/gui/src/SqpApplication.cpp +++ b/gui/src/SqpApplication.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -26,6 +27,12 @@ public: m_VariableController.get(), SLOT(createVariable(const QString &, std::shared_ptr))); + // VariableController <-> VisualizationController + qRegisterMetaType >(); + connect(m_VariableController.get(), SIGNAL(variableCreated(std::shared_ptr)), + m_VisualizationController.get(), + SLOT(onVariableCreated(std::shared_ptr))); + m_DataSourceController->moveToThread(&m_DataSourceControllerThread); m_VariableController->moveToThread(&m_VariableControllerThread); m_VisualizationController->moveToThread(&m_VisualizationControllerThread); @@ -73,7 +80,6 @@ SqpApplication::SqpApplication(int &argc, char **argv) connect(&impl->m_VisualizationControllerThread, &QThread::finished, impl->m_VisualizationController.get(), &VisualizationController::finalize); - impl->m_DataSourceControllerThread.start(); impl->m_VariableControllerThread.start(); impl->m_VisualizationControllerThread.start();