##// END OF EJS Templates
Uses new iterator in DataSeries.cpp...
Uses new iterator in DataSeries.cpp The code of the old iterator is deleted. The new iterator is now built from the Implementation of DataSeriesIteratorValue :: Impl for a DataSeries

File last commit:

r404:40749dfba67d
r596:96f73c42ec59
Show More
MenuBuilder.cpp
58 lines | 1.5 KiB | text/x-c | CppLexer
#include "Visualization/operations/MenuBuilder.h"
Q_LOGGING_CATEGORY(LOG_MenuBuilder, "MenuBuilder")
MenuBuilder::MenuBuilder(QMenu *menu)
{
if (menu) {
m_Menus.push(menu);
}
else {
qCCritical(LOG_MenuBuilder()) << QObject::tr("No parent menu has been defined");
}
}
QMenu *MenuBuilder::addMenu(const QString &name, const QIcon &icon)
{
if (auto currMenu = currentMenu()) {
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;
}
}
void MenuBuilder::addSeparator()
{
if (auto currMenu = currentMenu()) {
if (!currMenu->isEmpty()) {
currMenu->addSeparator();
}
}
else {
qCCritical(LOG_MenuBuilder()) << QObject::tr("No current menu to attach the separator");
}
}
void MenuBuilder::closeMenu()
{
if (!m_Menus.isEmpty()) {
if (auto closedMenu = m_Menus.pop()) {
// Purge menu : if the closed menu has no entries, we remove it from its parent (the
// current menu)
if (auto currMenu = currentMenu()) {
if (closedMenu->isEmpty()) {
currMenu->removeAction(closedMenu->menuAction());
}
}
}
}
}
QMenu *MenuBuilder::currentMenu() const
{
return !m_Menus.isEmpty() ? m_Menus.top() : nullptr;
}