diff --git a/gui/include/Variable/VariableInspectorWidget.h b/gui/include/Variable/VariableInspectorWidget.h index f46a380..6adb0a0 100644 --- a/gui/include/Variable/VariableInspectorWidget.h +++ b/gui/include/Variable/VariableInspectorWidget.h @@ -24,6 +24,17 @@ public: explicit VariableInspectorWidget(QWidget *parent = 0); virtual ~VariableInspectorWidget(); +signals: + /** + * Signal emitted before a menu concerning a variable 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 + * @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); + private: Ui::VariableInspectorWidget *ui; diff --git a/gui/src/Variable/VariableInspectorWidget.cpp b/gui/src/Variable/VariableInspectorWidget.cpp index 8b49751..0c8dfaa 100644 --- a/gui/src/Variable/VariableInspectorWidget.cpp +++ b/gui/src/Variable/VariableInspectorWidget.cpp @@ -39,7 +39,8 @@ void VariableInspectorWidget::onTableMenuRequested(const QPoint &pos) noexcept if (auto selectedVariable = model->variable(selectedIndex.row())) { QMenu tableMenu{}; - /// @todo ALX : make menu + // Emit a signal so that potential receivers can populate the menu before displaying it + emit tableMenuAboutToBeDisplayed(&tableMenu, selectedVariable); if (!tableMenu.isEmpty()) { tableMenu.exec(mapToGlobal(pos));