diff --git a/app/src/MainWindow.cpp b/app/src/MainWindow.cpp index 3e6f828..1c1c4ca 100644 --- a/app/src/MainWindow.cpp +++ b/app/src/MainWindow.cpp @@ -189,9 +189,11 @@ MainWindow::MainWindow(QWidget *parent) // potentially attach a menu to the variable's menu to do so before this menu is displayed. // The order of connections is also important, since it determines the order in which each // widget will attach its menu - connect(m_Ui->variableInspectorWidget, - SIGNAL(tableMenuAboutToBeDisplayed(QMenu *, std::shared_ptr)), m_Ui->view, - SLOT(attachVariableMenu(QMenu *, std::shared_ptr)), Qt::DirectConnection); + connect( + m_Ui->variableInspectorWidget, + SIGNAL(tableMenuAboutToBeDisplayed(QMenu *, const QVector > &)), + m_Ui->view, SLOT(attachVariableMenu(QMenu *, const QVector > &)), + Qt::DirectConnection); /* QLopGUI::registerMenuBar(menuBar()); this->setWindowIcon(QIcon(":/sciqlopLOGO.svg")); diff --git a/gui/include/Variable/VariableInspectorWidget.h b/gui/include/Variable/VariableInspectorWidget.h index cc6faee..56fa387 100644 --- a/gui/include/Variable/VariableInspectorWidget.h +++ b/gui/include/Variable/VariableInspectorWidget.h @@ -29,14 +29,15 @@ public: signals: /** - * Signal emitted before a menu concerning a variable is displayed. It is used for other widgets + * Signal emitted before a menu concerning variables is displayed. It is used for other widgets * to complete the menu. * @param tableMenu the menu to be completed - * @param variable the variable concerned by the menu + * @param variables the variables concerned by the menu * @remarks To make the dynamic addition of menus work, the connections to this signal must be * in Qt :: DirectConnection */ - void tableMenuAboutToBeDisplayed(QMenu *tableMenu, std::shared_ptr variable); + void tableMenuAboutToBeDisplayed(QMenu *tableMenu, + const QVector > &variables); private: Ui::VariableInspectorWidget *ui; diff --git a/gui/include/Visualization/VisualizationWidget.h b/gui/include/Visualization/VisualizationWidget.h index 2321bbd..874203d 100644 --- a/gui/include/Visualization/VisualizationWidget.h +++ b/gui/include/Visualization/VisualizationWidget.h @@ -30,11 +30,12 @@ public: public slots: /** - * Attaches to a menu the menu relating to the visualization of a variable + * Attaches to a menu the menu relative to the visualization of variables * @param menu the parent menu of the generated menu - * @param variable the variable for which to generate the menu + * @param variables the variables for which to generate the menu */ - void attachVariableMenu(QMenu *menu, std::shared_ptr variable) noexcept; + void attachVariableMenu(QMenu *menu, + const QVector > &variables) noexcept; private: Ui::VisualizationWidget *ui; diff --git a/gui/src/Variable/VariableInspectorWidget.cpp b/gui/src/Variable/VariableInspectorWidget.cpp index 7a32aff..dc0e91b 100644 --- a/gui/src/Variable/VariableInspectorWidget.cpp +++ b/gui/src/Variable/VariableInspectorWidget.cpp @@ -60,7 +60,6 @@ void VariableInspectorWidget::onTableMenuRequested(const QPoint &pos) noexcept QMenu tableMenu{}; // Emits a signal so that potential receivers can populate the menu before displaying it - /// @todo ALX : handles list of variables in the signal emit tableMenuAboutToBeDisplayed(&tableMenu, selectedVariables); if (!tableMenu.isEmpty()) { diff --git a/gui/src/Visualization/VisualizationWidget.cpp b/gui/src/Visualization/VisualizationWidget.cpp index 8f04c44..77eec9c 100644 --- a/gui/src/Visualization/VisualizationWidget.cpp +++ b/gui/src/Visualization/VisualizationWidget.cpp @@ -106,10 +106,24 @@ QString VisualizationWidget::name() const return QStringLiteral("MainView"); } -void VisualizationWidget::attachVariableMenu(QMenu *menu, - std::shared_ptr variable) noexcept +void VisualizationWidget::attachVariableMenu( + QMenu *menu, const QVector > &variables) noexcept { - // Generates the actions that make it possible to visualize the variable - auto generateVariableMenuOperation = GenerateVariableMenuOperation{menu, variable}; - accept(&generateVariableMenuOperation); + // Menu is generated only if there is a single variable + if (variables.size() == 1) { + if (auto variable = variables.first()) { + // Generates the actions that make it possible to visualize the variable + auto generateVariableMenuOperation = GenerateVariableMenuOperation{menu, variable}; + accept(&generateVariableMenuOperation); + } + else { + qCCritical(LOG_VisualizationWidget()) << tr( + "Can't generate the menu relative to the visualization: the variable is null"); + } + } + else { + qCDebug(LOG_VisualizationWidget()) + << tr("No generation of the menu related to the visualization: several variables are " + "selected"); + } }