Working on plugin menu items

This commit is contained in:
Brad Davis 2015-07-01 09:05:26 -07:00
parent ab1ae4aad5
commit 040f7c86ea
3 changed files with 20 additions and 4 deletions

View file

@ -4799,6 +4799,8 @@ const DisplayPlugin * Application::getActiveDisplayPlugin() const {
return ((Application*)this)->getActiveDisplayPlugin();
}
static QVector<QPair<QString, QString>> _currentDisplayPluginActions;
void Application::updateDisplayMode() {
auto menu = Menu::getInstance();
auto displayPlugins = getDisplayPlugins();
@ -4822,6 +4824,14 @@ void Application::updateDisplayMode() {
oldDisplayPlugin->removeEventFilter(qApp);
}
if (!_currentDisplayPluginActions.isEmpty()) {
auto menu = Menu::getInstance();
foreach(auto itemInfo, _currentDisplayPluginActions) {
menu->removeMenuItem(itemInfo.first, itemInfo.second);
}
_currentDisplayPluginActions.clear();
}
if (newDisplayPlugin) {
_offscreenContext->makeCurrent();
newDisplayPlugin->activate(this);
@ -4850,8 +4860,14 @@ void Application::updateDisplayMode() {
Q_ASSERT_X(_displayPlugin, "Application::updateDisplayMode", "could not find an activated display plugin");
}
void Application::addMenuItem(const QString& path, std::function<void()> onClicked, bool checkable, bool checked, const QString& groupName) {
void Application::addMenuItem(const QString& path, const QString& name, std::function<void()> onClicked, bool checkable, bool checked, const QString& groupName) {
auto menu = Menu::getInstance();
MenuWrapper* parentItem = menu->getMenu(path);
QAction* action = parentItem->addAction(name);
connect(action, &QAction::triggered, [=] {
onClicked();
});
_currentDisplayPluginActions.push_back({ path, name });
}
GlWindow* Application::getVisibleWindow() {

View file

@ -296,7 +296,7 @@ public:
virtual qreal getDevicePixelRatio();
// Plugin container support
virtual void addMenuItem(const QString& path, std::function<void()> onClicked, bool checkable, bool checked, const QString& groupName);
virtual void addMenuItem(const QString& path, const QString& name, std::function<void()> onClicked, bool checkable, bool checked, const QString& groupName);
virtual GlWindow* getVisibleWindow();
private:

View file

@ -6,6 +6,6 @@ class GlWindow;
class PluginContainer {
public:
virtual void addMenuItem(const QString& path, std::function<void()> onClicked, bool checkable = false, bool checked = false, const QString& groupName = "") = 0;
virtual void addMenuItem(const QString& path, const QString& name, std::function<void()> onClicked, bool checkable = false, bool checked = false, const QString& groupName = "") = 0;
virtual GlWindow* getVisibleWindow() = 0;
};