From 87af69bdce8a2e082d813f8e43e5ab0c71b3d3b7 2017-07-04 07:23:22 From: Alexandre Leroux Date: 2017-07-04 07:23:22 Subject: [PATCH] Unplot menu (5): adds contains() method to an IVariableContainer The method will be used to generate an action in the 'unplot' menu, depending on whether or not the container contains the variable --- diff --git a/gui/include/Visualization/IVariableContainer.h b/gui/include/Visualization/IVariableContainer.h index fa4791b..ac49faa 100644 --- a/gui/include/Visualization/IVariableContainer.h +++ b/gui/include/Visualization/IVariableContainer.h @@ -13,6 +13,9 @@ public: /// Checks if the container can handle the variable passed in parameter virtual bool canDrop(const Variable &variable) const = 0; + + /// Checks if the container contains the variable passed in parameter + virtual bool contains(const Variable &variable) const = 0; }; diff --git a/gui/include/Visualization/VisualizationGraphWidget.h b/gui/include/Visualization/VisualizationGraphWidget.h index 28673a8..ef0e800 100644 --- a/gui/include/Visualization/VisualizationGraphWidget.h +++ b/gui/include/Visualization/VisualizationGraphWidget.h @@ -35,6 +35,7 @@ public: // IVisualizationWidget interface void accept(IVisualizationWidgetVisitor *visitor) override; bool canDrop(const Variable &variable) const override; + bool contains(const Variable &variable) const override; QString name() const override; void updateDisplay(std::shared_ptr variable); diff --git a/gui/include/Visualization/VisualizationTabWidget.h b/gui/include/Visualization/VisualizationTabWidget.h index d4816ef..ca9b4c8 100644 --- a/gui/include/Visualization/VisualizationTabWidget.h +++ b/gui/include/Visualization/VisualizationTabWidget.h @@ -38,6 +38,7 @@ public: // IVisualizationWidget interface void accept(IVisualizationWidgetVisitor *visitor) override; bool canDrop(const Variable &variable) const override; + bool contains(const Variable &variable) const override; QString name() const override; private: diff --git a/gui/include/Visualization/VisualizationWidget.h b/gui/include/Visualization/VisualizationWidget.h index 874203d..ca05116 100644 --- a/gui/include/Visualization/VisualizationWidget.h +++ b/gui/include/Visualization/VisualizationWidget.h @@ -26,6 +26,7 @@ public: // IVisualizationWidget interface void accept(IVisualizationWidgetVisitor *visitor) override; bool canDrop(const Variable &variable) const override; + bool contains(const Variable &variable) const override; QString name() const override; public slots: diff --git a/gui/include/Visualization/VisualizationZoneWidget.h b/gui/include/Visualization/VisualizationZoneWidget.h index 7732a9f..da13188 100644 --- a/gui/include/Visualization/VisualizationZoneWidget.h +++ b/gui/include/Visualization/VisualizationZoneWidget.h @@ -35,6 +35,7 @@ public: // IVisualizationWidget interface void accept(IVisualizationWidgetVisitor *visitor) override; bool canDrop(const Variable &variable) const override; + bool contains(const Variable &variable) const override; QString name() const override; private: diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index 2c37585..d96af5b 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -141,6 +141,18 @@ bool VisualizationGraphWidget::canDrop(const Variable &variable) const return true; } +bool VisualizationGraphWidget::contains(const Variable &variable) const +{ + // Finds the variable among the keys of the map + auto variablePtr = &variable; + auto findVariable + = [variablePtr](const auto &entry) { return variablePtr == entry.first.get(); }; + + auto end = impl->m_VariableToPlotMultiMap.cend(); + auto it = std::find_if(impl->m_VariableToPlotMultiMap.cbegin(), end, findVariable); + return it != end; +} + QString VisualizationGraphWidget::name() const { return ui->graphNameLabel->text(); diff --git a/gui/src/Visualization/VisualizationTabWidget.cpp b/gui/src/Visualization/VisualizationTabWidget.cpp index 6040c45..f516cbb 100644 --- a/gui/src/Visualization/VisualizationTabWidget.cpp +++ b/gui/src/Visualization/VisualizationTabWidget.cpp @@ -93,6 +93,12 @@ bool VisualizationTabWidget::canDrop(const Variable &variable) const return true; } +bool VisualizationTabWidget::contains(const Variable &variable) const +{ + Q_UNUSED(variable); + return false; +} + QString VisualizationTabWidget::name() const { return impl->m_Name; diff --git a/gui/src/Visualization/VisualizationWidget.cpp b/gui/src/Visualization/VisualizationWidget.cpp index 77eec9c..315e12f 100644 --- a/gui/src/Visualization/VisualizationWidget.cpp +++ b/gui/src/Visualization/VisualizationWidget.cpp @@ -101,6 +101,12 @@ bool VisualizationWidget::canDrop(const Variable &variable) const return false; } +bool VisualizationWidget::contains(const Variable &variable) const +{ + Q_UNUSED(variable); + return false; +} + QString VisualizationWidget::name() const { return QStringLiteral("MainView"); diff --git a/gui/src/Visualization/VisualizationZoneWidget.cpp b/gui/src/Visualization/VisualizationZoneWidget.cpp index 7fe59b7..355dbf4 100644 --- a/gui/src/Visualization/VisualizationZoneWidget.cpp +++ b/gui/src/Visualization/VisualizationZoneWidget.cpp @@ -99,6 +99,12 @@ bool VisualizationZoneWidget::canDrop(const Variable &variable) const return true; } +bool VisualizationZoneWidget::contains(const Variable &variable) const +{ + Q_UNUSED(variable); + return false; +} + QString VisualizationZoneWidget::name() const { return ui->zoneNameLabel->text();