ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvPluginManager.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <QObject>
11 #include <QVector>
12 
13 #include "CVAppCommon.h"
14 
15 class ccPluginInterface;
16 
18 using ccPluginInterfaceList = QVector<ccPluginInterface*>;
19 
20 class CVAPPCOMMON_LIB_API ccPluginManager : public QObject {
21  Q_OBJECT
22 
23 public:
24  ~ccPluginManager() override = default;
25 
26  static ccPluginManager& get();
27 
28  void setPaths(const QStringList& paths);
29  QStringList pluginPaths();
30 
31  void loadPlugins();
32 
34 
35  bool isEnabled(const ccPluginInterface* plugin) const;
36  void setPluginEnabled(const ccPluginInterface* plugin, bool enabled);
37 
38 protected:
39  explicit ccPluginManager(QObject* parent = nullptr);
40 
41 private:
42  void loadFromPathsAndAddToList();
43 
44  QStringList disabledPluginIIDs() const;
45 
46  QStringList m_pluginPaths;
47  ccPluginInterfaceList m_pluginList;
48 };
#define CVAPPCOMMON_LIB_API
Definition: CVAppCommon.h:15
Standard ECV plugin interface.
ccPluginManager(QObject *parent=nullptr)
~ccPluginManager() override=default
ccPluginInterfaceList & pluginList()
void setPaths(const QStringList &paths)
bool isEnabled(const ccPluginInterface *plugin) const
QStringList pluginPaths()
void setPluginEnabled(const ccPluginInterface *plugin, bool enabled)
static ccPluginManager & get()
QVector< ccPluginInterface * > ccPluginInterfaceList
Simply a list of.