Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
plugin_manager.h
1#pragma once
2
3#include <QDir>
4#include <QJsonArray>
5#include <QPluginLoader>
6#include <QWidget>
7
8#include "compiler/pipeline.h"
9#include "iplugin.h"
10#include "json.h"
11#include "keys.h"
12#include "logging.h"
13#include "result.h"
14#include "widgets/settings_manager.h"
15
16class QComboBox;
17class HostServices;
18namespace maki
19{
21}
22
26class PluginManager : public QObject
27{
28 Q_OBJECT
29
30public:
31 struct Plugin
32 {
33 QSharedPointer<QPluginLoader> loader;
34 maki::IPlugin* plugin;
35 };
36
42 PluginManager(maki::PipelineActionRegistry* registry, Pipeline* pipeline, QObject* parent = nullptr);
43
47 virtual ~PluginManager();
48
57 VoidResult start(const PluginSettings& settings, HostServices* services);
58
64 maki::IPlugin* currentPlugin() const;
65
72 maki::IPlugin* pluginByLanguage(const QString& language) const;
73
77 void settingsChanged(const PluginSettings& settings, HostServices* services);
78
88 VoidResult reloadPlugin(const QString& pluginName, HostServices* services);
89
90signals:
91
92 void pluginAdded(const Plugin& plugin) const;
93
94private:
95 maki::IPlugin* mPlugin;
96 QVector<Plugin> mPlugins;
98
99 Pipeline::Info mInfo;
101 QString mProgressId;
103
114 VoidResult loadPlugin(const QDir& pluginDir, const maki::Manifest& path, HostServices* services, PluginSettings::Status status);
115
122 bool setPlugin(const QString& language);
123
130 Result<maki::Manifest> getPluginManifest(const QDir& path) const;
131
138 VoidResult loadPluginLibraryDir(const maki::Manifest& manifest);
139
146 VoidResult installPlugin(const maki::Manifest& manifest);
147
154 int getPluginIndex(const QString& pluginName) const;
155
163 VoidResult deregisterPlugin(const Plugin& plugin);
164
165 QWidget* progressContent();
166};
Interface for a document.
Definition host_services.h:22
Executes and manages a sequence of external processes.
Definition pipeline.h:22
QString mProgressId
Pipeline responsible for installation processes.
Definition plugin_manager.h:101
VoidResult loadPlugin(const QDir &pluginDir, const maki::Manifest &path, HostServices *services, PluginSettings::Status status)
Loads a plugin from a directory and populates the menu, combo box, and services.
Definition plugin_manager.cpp:157
VoidResult deregisterPlugin(const Plugin &plugin)
Deregisters a plugin from the manager and updates the menu and combo box.
Definition plugin_manager.cpp:372
bool setPlugin(const QString &language)
Sets the current plugin based on a language identifier.
Definition plugin_manager.cpp:235
maki::IPlugin * currentPlugin() const
Retrieves the currently selected plugin.
Definition plugin_manager.cpp:262
int getPluginIndex(const QString &pluginName) const
Retrieves the index of a plugin in the manager's list by name.
Definition plugin_manager.cpp:363
Pipeline * mPipeline
Holds information regarding the current generation pipeline.
Definition plugin_manager.h:100
PluginManager(maki::PipelineActionRegistry *registry, Pipeline *pipeline, QObject *parent=nullptr)
Constructs a new PluginManager object.
Definition plugin_manager.cpp:28
Result< maki::Manifest > getPluginManifest(const QDir &path) const
Retrieves the manifest of a plugin from a directory.
Definition plugin_manager.cpp:217
VoidResult installPlugin(const maki::Manifest &manifest)
Run the plugin installation steps.
Definition plugin_manager.cpp:312
VoidResult reloadPlugin(const QString &pluginName, HostServices *services)
Reloads a given plugin.
Definition plugin_manager.cpp:418
maki::PipelineActionRegistry * mRegistry
List of all plugins managed by this manager.
Definition plugin_manager.h:97
VoidResult start(const PluginSettings &settings, HostServices *services)
Starts the plugin manager and populates the menu, combo box, and services.
Definition plugin_manager.cpp:94
void settingsChanged(const PluginSettings &settings, HostServices *services)
Updates the plugins when a setting changes.
Definition plugin_manager.cpp:329
bool mIsRunning
Holds the id of the progress widget.
Definition plugin_manager.h:102
VoidResult loadPluginLibraryDir(const maki::Manifest &manifest)
Loads a plugin library directory.
Definition plugin_manager.cpp:276
maki::IPlugin * pluginByLanguage(const QString &language) const
Retrieves a plugin by its language.
Definition plugin_manager.cpp:267
QVector< Plugin > mPlugins
Pointer to the currently selected plugin.
Definition plugin_manager.h:96
Definition plugin_action_registry.h:13
Contains UI helper widgets and layout grouping utilities used by MAKI.
Definition generator.h:10
Definition pipeline.h:51
Definition plugin_manager.h:32
Holds information about a plugin.
Definition settings_manager.h:109
Status
The list of plugin settings.
Definition settings_manager.h:115