diff --git a/gui/include/Visualization/VisualizationZoneWidget.h b/gui/include/Visualization/VisualizationZoneWidget.h index 0e03195..e049829 100644 --- a/gui/include/Visualization/VisualizationZoneWidget.h +++ b/gui/include/Visualization/VisualizationZoneWidget.h @@ -21,8 +21,12 @@ public: /// Add a graph widget void addGraph(VisualizationGraphWidget *graphWidget); - /// Create a graph using a Variable - VisualizationGraphWidget *createGraph(); + /** + * Creates a graph using a variable. The variable will be displayed in the new graph. + * @param variable the variable for which to create the graph + * @return the pointer to the created graph + */ + VisualizationGraphWidget *createGraph(std::shared_ptr variable); /// Remove a graph void removeGraph(VisualizationGraphWidget *graph); diff --git a/gui/src/Visualization/VisualizationZoneWidget.cpp b/gui/src/Visualization/VisualizationZoneWidget.cpp index f3e4a29..a57c84e 100644 --- a/gui/src/Visualization/VisualizationZoneWidget.cpp +++ b/gui/src/Visualization/VisualizationZoneWidget.cpp @@ -3,6 +3,24 @@ #include "Visualization/VisualizationGraphWidget.h" +namespace { + +/// Generates a default name for a new graph, according to the number of graphs already displayed in +/// the zone +QString defaultGraphName(const QLayout &layout) +{ + auto count = 0; + for (auto i = 0; i < layout.count(); ++i) { + if (dynamic_cast(layout.itemAt(i)->widget())) { + count++; + } + } + + return QObject::tr("Graph %1").arg(count + 1); +} + +} // namespace + VisualizationZoneWidget::VisualizationZoneWidget(const QString &name, QWidget *parent) : QWidget{parent}, ui{new Ui::VisualizationZoneWidget} { @@ -21,11 +39,14 @@ void VisualizationZoneWidget::addGraph(VisualizationGraphWidget *graphWidget) ui->visualizationZoneFrame->layout()->addWidget(graphWidget); } -VisualizationGraphWidget *VisualizationZoneWidget::createGraph() +VisualizationGraphWidget *VisualizationZoneWidget::createGraph(std::shared_ptr variable) { - auto graphWidget = new VisualizationGraphWidget{this}; + auto graphWidget = new VisualizationGraphWidget{ + defaultGraphName(*ui->visualizationZoneFrame->layout()), this}; this->addGraph(graphWidget); + graphWidget->addVariable(variable); + return graphWidget; }