#ifndef CCPLUGINUIMANAGER_H #define CCPLUGINUIMANAGER_H //########################################################################## //# # //# CLOUDCOMPARE # //# # //# This program is free software; you can redistribute it and/or modify # //# it under the terms of the GNU General Public License as published by # //# the Free Software Foundation; version 2 or later of the License. # //# # //# This program is distributed in the hope that it will be useful, # //# but WITHOUT ANY WARRANTY; without even the implied warranty of # //# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # //# GNU General Public License for more details. # //# # //# COPYRIGHT: CloudCompare project # //# # //########################################################################## #include #include #include class QAction; class QMenu; class QString; class QToolBar; class QWidget; class ccMainAppInterface; class ccPluginInterface; class ccStdPluginInterface; //! Plugin UI manager class ccPluginUIManager : public QObject { Q_OBJECT public: ccPluginUIManager( ccMainAppInterface *appInterface, QWidget *parent ); ~ccPluginUIManager() override = default; void init(); QMenu *pluginMenu() const; QMenu *shaderAndFilterMenu() const; QToolBar *mainPluginToolbar(); QList &additionalPluginToolbars(); QAction *actionShowMainPluginToolbar(); QToolBar *glFiltersToolbar(); QAction *actionShowGLFilterToolbar(); void updateMenus(); void handleSelectionChanged(); void showAboutDialog() const; private: void setupActions(); void setupMenus(); void addActionsToMenu( ccStdPluginInterface *stdPlugin, const QList &actions ); void setupToolbars(); void addActionsToToolBar( ccStdPluginInterface *stdPlugin, const QList &actions ); void enableGLFilter(); void disableGLFilter(); QWidget *m_parentWidget; // unfortunately we need this when creating new menus & toolbars ccMainAppInterface *m_appInterface; QMenu *m_pluginMenu; QMenu *m_glFilterMenu; QAction *m_actionRemoveFilter; QActionGroup m_glFilterActions; QList m_plugins; QToolBar *m_mainPluginToolbar; // if a plugin only has one action it goes here QList m_additionalPluginToolbars; // if a plugin has multiple actions it gets its own toolbar QAction *m_showPluginToolbar; QToolBar *m_glFiltersToolbar; QAction *m_showGLFilterToolbar; }; #endif