diff --git a/gui/include/Visualization/VisualizationWidget.h b/gui/include/Visualization/VisualizationWidget.h index 52285c2..ca74bdf 100644 --- a/gui/include/Visualization/VisualizationWidget.h +++ b/gui/include/Visualization/VisualizationWidget.h @@ -8,6 +8,7 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_VisualizationWidget) +class QMenu; class Variable; class VisualizationTabWidget; @@ -39,12 +40,11 @@ public: public slots: /** - * Displays a variable in a new graph of a new zone of the current tab - * @param variable the variable to display - * @todo this is a temporary method that will be replaced by own actions for each type of - * visualization widget + * Attaches to a menu the menu relating to the visualization of a variable + * @param menu the parent menu of the generated menu + * @param variable the variable for which to generate the menu */ - void displayVariable(std::shared_ptr variable) noexcept; + void attachVariableMenu(QMenu *menu, std::shared_ptr variable) noexcept; private: Ui::VisualizationWidget *ui; diff --git a/gui/src/Visualization/VisualizationWidget.cpp b/gui/src/Visualization/VisualizationWidget.cpp index c0467e6..cccc592 100644 --- a/gui/src/Visualization/VisualizationWidget.cpp +++ b/gui/src/Visualization/VisualizationWidget.cpp @@ -3,6 +3,7 @@ #include "Visualization/VisualizationGraphWidget.h" #include "Visualization/VisualizationTabWidget.h" #include "Visualization/VisualizationZoneWidget.h" +#include "Visualization/operations/GenerateVariableMenuOperation.h" #include "Visualization/qcustomplot.h" #include "ui_VisualizationWidget.h" @@ -121,16 +122,10 @@ QString VisualizationWidget::name() const return QStringLiteral("MainView"); } -void VisualizationWidget::displayVariable(std::shared_ptr variable) noexcept +void VisualizationWidget::attachVariableMenu(QMenu *menu, + std::shared_ptr variable) noexcept { - if (auto currentTab = dynamic_cast(ui->tabWidget->currentWidget())) { - if (!currentTab->createZone(variable)) { - qCCritical(LOG_VisualizationWidget()) - << tr("Can't display the variable : can't create a new zone in the current tab"); - } - } - else { - qCCritical(LOG_VisualizationWidget()) - << tr("Can't display the variable : there is no current tab"); - } + // Generates the actions that make it possible to visualize the variable + auto generateVariableMenuOperation = GenerateVariableMenuOperation{menu, variable}; + accept(&generateVariableMenuOperation); }