iVS3D v2.0.9
Loading...
Searching...
No Matches
pluginmanager.h
1#pragma once
2
3#include <QPluginLoader>
4#include <QHash>
5#include <QString>
6#include <QVector>
7#include <QObject>
8
9#include <optional>
10#include <memory>
11
12#include "ibase.h"
13#include "imask.h"
14#include "ipreview.h"
15#include "iselection.h"
16#include "pluginhandle.h"
17#include "pluginthread.h"
18
19class PluginManager : public QObject {
20 Q_OBJECT
21
22public:
24 static PluginManager& instance();
25
26 QStringList getPluginNames() const;
27 bool hasPlugin(const QString& name) const;
28 bool hasPreviewPlugin(const QString& name) const;
29 bool hasMaskPlugin(const QString& name) const;
30 bool hasSelectionPlugin(const QString& name) const;
31
32 std::shared_ptr<QWidget> getSettingsWidget(const QString& pluginName) const;
33 std::optional<PLUG::Error> getSettingsWidgetError(const QString& pluginName) const;
34
35 PLUG::ApplySettingsResult applyPluginSettings(
36 const QString& pluginName,
37 const QMap<QString, QVariant>& settings) const;
38 QMap<QString, QVariant> getPluginSettings(const QString& pluginName) const;
39 QString getPluginSettingsString(const QString& pluginName) const;
40
41 std::shared_ptr<PluginThread> getPluginThread() const;
42
51 QVector<QPair<QString, PLUG::Error>> loadSettingsWidgets();
52
53 void enableCuda(bool useCuda);
54
55private:
57 void loadPlugins();
58
59 QHash<QString, PluginHandle> m_plugins;
60 std::shared_ptr<PluginThread> m_pluginThread;
61};
Definition pluginmanager.h:19
QVector< QPair< QString, PLUG::Error > > loadSettingsWidgets()
loadSettingsWidgets asks each plugin to create its settings widget once.
Definition pluginmanager.cpp:89
tl::expected< void, Error > ApplySettingsResult
Type alias for the result of applying settings to a plugin, which can be either a successful void res...
Definition ibase.h:51