diff --git a/core/include/Variable/VariableController.h b/core/include/Variable/VariableController.h index 9c02286..26bb00b 100644 --- a/core/include/Variable/VariableController.h +++ b/core/include/Variable/VariableController.h @@ -89,6 +89,8 @@ signals: /// validated, canceled, or failed) void acquisitionFinished(); + void variableAdded(const std::shared_ptr &variable); + public slots: /// Request the data loading of the variable whithin range void onRequestDataLoading(QVector > variables, const SqpRange &range, diff --git a/core/src/Variable/VariableController.cpp b/core/src/Variable/VariableController.cpp index 25ae998..916d0cb 100644 --- a/core/src/Variable/VariableController.cpp +++ b/core/src/Variable/VariableController.cpp @@ -373,6 +373,8 @@ VariableController::createVariable(const QString &name, const QVariantHash &meta // impl->processRequest(newVariable, range, varRequestId); // impl->updateVariableRequest(varRequestId); + emit variableAdded(newVariable); + return newVariable; } diff --git a/gui/src/Visualization/VisualizationTabWidget.cpp b/gui/src/Visualization/VisualizationTabWidget.cpp index e983b6a..383f384 100644 --- a/gui/src/Visualization/VisualizationTabWidget.cpp +++ b/gui/src/Visualization/VisualizationTabWidget.cpp @@ -375,10 +375,15 @@ void VisualizationTabWidget::VisualizationTabWidgetPrivate::dropProducts( return; } + auto context = new QObject{tabWidget}; + connect(&sqpApp->variableController(), &VariableController::variableAdded, context, + [this, index, tabWidget, context](auto variable) { + tabWidget->createZone({variable}, index); + delete context; // removes the connection + }, + Qt::QueuedConnection); + auto productData = productsMetaData.first().toHash(); QMetaObject::invokeMethod(&sqpApp->dataSourceController(), "requestVariable", Qt::QueuedConnection, Q_ARG(QVariantHash, productData)); - - - // TODO: add graph } diff --git a/gui/src/Visualization/VisualizationZoneWidget.cpp b/gui/src/Visualization/VisualizationZoneWidget.cpp index 830fb06..e7229cf 100644 --- a/gui/src/Visualization/VisualizationZoneWidget.cpp +++ b/gui/src/Visualization/VisualizationZoneWidget.cpp @@ -516,6 +516,14 @@ void VisualizationZoneWidget::dropMimeDataOnGraph(VisualizationDragWidget *dragW auto products = sqpApp->dataSourceController().productsDataForMimeData( mimeData->data(MIME_TYPE_PRODUCT_LIST)); + auto context = new QObject{this}; + connect(&sqpApp->variableController(), &VariableController::variableAdded, context, + [this, graphWidget, context](auto variable) { + graphWidget->addVariable(variable, graphWidget->graphRange()); + delete context; // removes the connection + }, + Qt::QueuedConnection); + auto productData = products.first().toHash(); QMetaObject::invokeMethod(&sqpApp->dataSourceController(), "requestVariable", Qt::QueuedConnection, Q_ARG(QVariantHash, productData)); @@ -630,10 +638,15 @@ void VisualizationZoneWidget::VisualizationZoneWidgetPrivate::dropProducts( return; } + auto context = new QObject{zoneWidget}; + connect(&sqpApp->variableController(), &VariableController::variableAdded, context, + [this, index, zoneWidget, context](auto variable) { + zoneWidget->createGraph(variable, index); + delete context; // removes the connection + }, + Qt::QueuedConnection); + auto productData = productsData.first().toHash(); QMetaObject::invokeMethod(&sqpApp->dataSourceController(), "requestVariable", Qt::QueuedConnection, Q_ARG(QVariantHash, productData)); - - - // TODO: add graph }