From a017ecc9b2011a9436bf115125817cf65f320565 2017-06-22 12:29:16 From: Alexandre Leroux Date: 2017-06-22 12:29:16 Subject: [PATCH] Implements accept() method of visualization widgets --- diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index d754b59..b1eb3a5 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -59,7 +59,9 @@ void VisualizationGraphWidget::addVariable(std::shared_ptr variable) void VisualizationGraphWidget::accept(IVisualizationWidgetVisitor *visitor) { - // TODO: manage the visitor + if (visitor) { + visitor->visit(this); + } } void VisualizationGraphWidget::close() diff --git a/gui/src/Visualization/VisualizationTabWidget.cpp b/gui/src/Visualization/VisualizationTabWidget.cpp index ca8e38c..2f4355b 100644 --- a/gui/src/Visualization/VisualizationTabWidget.cpp +++ b/gui/src/Visualization/VisualizationTabWidget.cpp @@ -63,7 +63,21 @@ void VisualizationTabWidget::removeZone(VisualizationZoneWidget *zone) void VisualizationTabWidget::accept(IVisualizationWidgetVisitor *visitor) { - // TODO: manage the visitor + if (visitor) { + visitor->visitEnter(this); + + // Apply visitor to zone children + for (auto i = 0; i < layout()->count(); ++i) { + if (auto item = layout()->itemAt(i)) { + if (auto visualizationZoneWidget + = dynamic_cast(item->widget())) { + visualizationZoneWidget->accept(visitor); + } + } + } + + visitor->visitLeave(this); + } } void VisualizationTabWidget::close() diff --git a/gui/src/Visualization/VisualizationWidget.cpp b/gui/src/Visualization/VisualizationWidget.cpp index d80b982..fbdb222 100644 --- a/gui/src/Visualization/VisualizationWidget.cpp +++ b/gui/src/Visualization/VisualizationWidget.cpp @@ -84,7 +84,19 @@ void VisualizationWidget::removeTab(VisualizationTabWidget *tab) void VisualizationWidget::accept(IVisualizationWidgetVisitor *visitor) { - // TODO: manage the visitor + if (visitor) { + visitor->visitEnter(this); + + // Apply visitor for tab children + for (auto i = 0; i < ui->tabWidget->count(); ++i) { + if (auto visualizationTabWidget + = dynamic_cast(ui->tabWidget->widget(i))) { + visualizationTabWidget->accept(visitor); + } + } + + visitor->visitLeave(this); + } } void VisualizationWidget::close() diff --git a/gui/src/Visualization/VisualizationZoneWidget.cpp b/gui/src/Visualization/VisualizationZoneWidget.cpp index 0bafc25..88fb39d 100644 --- a/gui/src/Visualization/VisualizationZoneWidget.cpp +++ b/gui/src/Visualization/VisualizationZoneWidget.cpp @@ -57,7 +57,22 @@ void VisualizationZoneWidget::removeGraph(VisualizationGraphWidget *graph) void VisualizationZoneWidget::accept(IVisualizationWidgetVisitor *visitor) { - // TODO: manage the visitor + if (visitor) { + visitor->visitEnter(this); + + // Apply visitor to graph children + auto layout = ui->visualizationZoneFrame->layout(); + for (auto i = 0; i < layout->count(); ++i) { + if (auto item = layout->itemAt(i)) { + if (auto visualizationGraphWidget + = dynamic_cast(item->widget())) { + visualizationGraphWidget->accept(visitor); + } + } + } + + visitor->visitLeave(this); + } } void VisualizationZoneWidget::close()