From e28c6678c3bcf6173bc9c386bf180a85ca3fc906 2017-06-22 08:33:06 From: Alexandre Leroux Date: 2017-06-22 08:33:06 Subject: [PATCH] Completes the method of creating a zone from a variable --- diff --git a/gui/include/Visualization/VisualizationTabWidget.h b/gui/include/Visualization/VisualizationTabWidget.h index b3f2087..51dac55 100644 --- a/gui/include/Visualization/VisualizationTabWidget.h +++ b/gui/include/Visualization/VisualizationTabWidget.h @@ -23,8 +23,13 @@ public: /// Add a zone widget void addZone(VisualizationZoneWidget *zoneWidget); - /// Create a zone using a Variable - VisualizationZoneWidget *createZone(); + /** + * Creates a zone using a variable. The variable will be displayed in a new graph of the new + * zone. + * @param variable the variable for which to create the zone + * @return the pointer to the created zone + */ + VisualizationZoneWidget *createZone(std::shared_ptr variable); /// Remove a zone void removeZone(VisualizationZoneWidget *zone); diff --git a/gui/src/Visualization/VisualizationTabWidget.cpp b/gui/src/Visualization/VisualizationTabWidget.cpp index 06acc44..ddc297d 100644 --- a/gui/src/Visualization/VisualizationTabWidget.cpp +++ b/gui/src/Visualization/VisualizationTabWidget.cpp @@ -3,6 +3,24 @@ #include "Visualization/VisualizationZoneWidget.h" +namespace { + +/// Generates a default name for a new zone, according to the number of zones already displayed in +/// the tab +QString defaultZoneName(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("Zone %1").arg(count + 1); +} + +} // namespace + struct VisualizationTabWidget::VisualizationTabWidgetPrivate { explicit VisualizationTabWidgetPrivate(const QString &name) : m_Name{name} {} @@ -27,11 +45,14 @@ void VisualizationTabWidget::addZone(VisualizationZoneWidget *zoneWidget) this->layout()->addWidget(zoneWidget); } -VisualizationZoneWidget *VisualizationTabWidget::createZone() +VisualizationZoneWidget *VisualizationTabWidget::createZone(std::shared_ptr variable) { - auto zoneWidget = new VisualizationZoneWidget{this}; + auto zoneWidget = new VisualizationZoneWidget{defaultZoneName(*layout()), this}; this->addZone(zoneWidget); + // Creates a new graph into the zone + zoneWidget->createGraph(variable); + return zoneWidget; }