/*! Returns the IActionContainter object that is know to the system under the given \a id. \sa ActionManager::createMenu() \sa ActionManager::createMenuBar() */ ActionContainer *ActionManager::actionContainer(Id id) { const ActionManagerPrivate::IdContainerMap::const_iterator it = d->m_idContainerMap.constFind(id); if (it == d->m_idContainerMap.constEnd()) { if (warnAboutFindFailures) qWarning() << "ActionManagerPrivate::actionContainer(): failed to find :" << id.name(); return 0; } return it.value(); }
/*! Creates a new menu with the given \a id. Returns a new ActionContainer that you can use to get the QMenu instance or to add menu items to the menu. The ActionManager owns the returned ActionContainer. Add your menu to some other menu or a menu bar via the ActionManager::actionContainer and ActionContainer::addMenu functions. */ ActionContainer *ActionManager::createMenu(Id id) { const ActionManagerPrivate::IdContainerMap::const_iterator it = d->m_idContainerMap.constFind(id); if (it != d->m_idContainerMap.constEnd()) return it.value(); MenuActionContainer *mc = new MenuActionContainer(id); d->m_idContainerMap.insert(id, mc); connect(mc, &QObject::destroyed, d, &ActionManagerPrivate::containerDestroyed); return mc; }
/*! Creates a new menu bar with the given \a id. Returns a new ActionContainer that you can use to get the QMenuBar instance or to add menus to the menu bar. The ActionManager owns the returned ActionContainer. */ ActionContainer *ActionManager::createMenuBar(Id id) { const ActionManagerPrivate::IdContainerMap::const_iterator it = d->m_idContainerMap.constFind(id); if (it != d->m_idContainerMap.constEnd()) return it.value(); QMenuBar *mb = new QMenuBar; // No parent (System menu bar on Mac OS X) mb->setObjectName(id.toString()); MenuBarActionContainer *mbc = new MenuBarActionContainer(id); mbc->setMenuBar(mb); d->m_idContainerMap.insert(id, mbc); connect(mbc, SIGNAL(destroyed()), d, SLOT(containerDestroyed())); return mbc; }
/*! Creates a new menu with the given \a id. Returns a new ActionContainer that you can use to get the QMenu instance or to add menu items to the menu. The ActionManager owns the returned ActionContainer. Add your menu to some other menu or a menu bar via the ActionManager::actionContainer and ActionContainer::addMenu functions. */ ActionContainer *ActionManager::createMenu(Id id) { const ActionManagerPrivate::IdContainerMap::const_iterator it = d->m_idContainerMap.constFind(id); if (it != d->m_idContainerMap.constEnd()) return it.value(); QMenu *m = new QMenu(ICore::mainWindow()); m->setObjectName(QLatin1String(id.name())); MenuActionContainer *mc = new MenuActionContainer(id); mc->setMenu(m); d->m_idContainerMap.insert(id, mc); connect(mc, SIGNAL(destroyed()), d, SLOT(containerDestroyed())); return mc; }