History

Working on plugin menu items

Brad Davis committed 11 years ago

Commit 040f7c81 parent ab1ae4a3 files · +20 −4Browse files

Showing the changes to interface/src/Application.cpp (1 of 3 files). Show all

Unified · Split

interface/src/Application.cpp+18−2
@@ -4799,6 +4799,8 @@ const DisplayPlugin * Application::getActiveDisplayPlugin() const { · 4798 unmodified lines
47994799 return ((Application*)this)->getActiveDisplayPlugin();
48004800 }
48014801
4802+static QVector<QPair<QString, QString>> _currentDisplayPluginActions;
4803+
48024804 void Application::updateDisplayMode() {
48034805 auto menu = Menu::getInstance();
48044806 auto displayPlugins = getDisplayPlugins();
@@ -4822,6 +4824,14 @@ void Application::updateDisplayMode() { · 17 unmodified lines
48224824 oldDisplayPlugin->removeEventFilter(qApp);
48234825 }
48244826
4827+ if (!_currentDisplayPluginActions.isEmpty()) {
4828+ auto menu = Menu::getInstance();
4829+ foreach(auto itemInfo, _currentDisplayPluginActions) {
4830+ menu->removeMenuItem(itemInfo.first, itemInfo.second);
4831+ }
4832+ _currentDisplayPluginActions.clear();
4833+ }
4834+
48254835 if (newDisplayPlugin) {
48264836 _offscreenContext->makeCurrent();
48274837 newDisplayPlugin->activate(this);
@@ -4850,8 +4860,14 @@ void Application::updateDisplayMode() { · 22 unmodified lines
48504860 Q_ASSERT_X(_displayPlugin, "Application::updateDisplayMode", "could not find an activated display plugin");
48514861 }
48524862
4853−void Application::addMenuItem(const QString& path, std::function<void()> onClicked, bool checkable, bool checked, const QString& groupName) {
4854−
4863+void Application::addMenuItem(const QString& path, const QString& name, std::function<void()> onClicked, bool checkable, bool checked, const QString& groupName) {
4864+ auto menu = Menu::getInstance();
4865+ MenuWrapper* parentItem = menu->getMenu(path);
4866+ QAction* action = parentItem->addAction(name);
4867+ connect(action, &QAction::triggered, [=] {
4868+ onClicked();
4869+ });
4870+ _currentDisplayPluginActions.push_back({ path, name });
48554871 }
48564872
48574873 GlWindow* Application::getVisibleWindow() {