diff --git a/gui/include/Visualization/operations/MenuBuilder.h b/gui/include/Visualization/operations/MenuBuilder.h index cb78fb7..c739162 100644 --- a/gui/include/Visualization/operations/MenuBuilder.h +++ b/gui/include/Visualization/operations/MenuBuilder.h @@ -25,11 +25,12 @@ public: void addAction(const QString &actionName, ActionFun actionFunction); /** - * Adds a new menu to the current menu + * Adds a new menu to the current menu and returns it * @param name the name of the menu * @param icon the icon of the menu (can be null) + * @returns the created menu, nullptr if it couldn't be created */ - void addMenu(const QString &name, const QIcon &icon = {}); + QMenu *addMenu(const QString &name, const QIcon &icon = {}); /// Adds a separator to the current menu. The separator is added only if the menu already /// contains entries diff --git a/gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp b/gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp index e7190da..41592e1 100644 --- a/gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp +++ b/gui/src/Visualization/operations/GenerateVariableMenuOperation.cpp @@ -21,7 +21,11 @@ struct GenerateVariableMenuOperation::GenerateVariableMenuOperationPrivate { void visitRootEnter() { // Creates the root menu - m_PlotMenuBuilder.addMenu(QObject::tr("Plot"), QIcon{":/icones/plot.png"}); + if (auto plotMenu + = m_PlotMenuBuilder.addMenu(QObject::tr("Plot"), QIcon{":/icones/plot.png"})) { + plotMenu->setEnabled(m_Variable && m_Variable->dataSeries() != nullptr); + } + m_UnplotMenuBuilder.addMenu(QObject::tr("Unplot"), QIcon{":/icones/unplot.png"}); } diff --git a/gui/src/Visualization/operations/MenuBuilder.cpp b/gui/src/Visualization/operations/MenuBuilder.cpp index 3d21803..cd45bde 100644 --- a/gui/src/Visualization/operations/MenuBuilder.cpp +++ b/gui/src/Visualization/operations/MenuBuilder.cpp @@ -12,13 +12,16 @@ MenuBuilder::MenuBuilder(QMenu *menu) } } -void MenuBuilder::addMenu(const QString &name, const QIcon &icon) +QMenu *MenuBuilder::addMenu(const QString &name, const QIcon &icon) { if (auto currMenu = currentMenu()) { - m_Menus.push(currMenu->addMenu(icon, name)); + auto menu = currMenu->addMenu(icon, name); + m_Menus.push(menu); + return menu; } else { qCCritical(LOG_MenuBuilder()) << QObject::tr("No current menu to attach the new menu"); + return nullptr; } }