Loading...
Searching...
No Matches
score-plugin-clap/Clap/ApplicationPlugin.hpp
1#pragma once
2#include <score/plugins/application/GUIApplicationPlugin.hpp>
3
4#include <QObject>
5#include <QWebSocketServer>
6
7#include <memory>
8#include <vector>
9#include <map>
10#include <verdigris>
11
12namespace Library
13{
14class ProcessesItemModel;
15}
16
17class QProcess;
18
19namespace Clap
20{
22{
23 QString path;
24 QString id;
25 QString name;
26 QString vendor;
27 QString version;
28 QString url;
29 QString manual_url;
30 QString support_url;
31 QString description;
32
33 QList<QString> features;
34 bool valid{};
35};
36
38 : public QObject
40{
41 W_OBJECT(ApplicationPlugin)
42
43public:
46
47 void initialize() override;
48
49 const std::vector<PluginInfo>& plugins() const noexcept { return m_plugins; }
50
51public:
52 void pluginsChanged() W_SIGNAL(pluginsChanged);
53
54private:
55 void rescanPlugins();
56 void scanNextBatch();
57 void processIncomingMessage(const QString& txt);
58 void addPlugin(const QString& path, const QJsonObject& obj);
59 void addInvalidPlugin(const QString& path);
60
61 QWebSocketServer m_wsServer;
62 std::map<int, QProcess*> m_processes;
63 std::vector<QString> m_pluginQueue;
64 int m_processCount{0};
65 static constexpr int max_in_flight = 8;
66
67 std::vector<PluginInfo> m_plugins;
68};
69}
70
71Q_DECLARE_METATYPE(Clap::PluginInfo)
72Q_DECLARE_METATYPE(std::vector<Clap::PluginInfo>)
Definition score-plugin-clap/Clap/ApplicationPlugin.hpp:40
void initialize() override
initialize
Definition score-plugin-clap/Clap/ApplicationPlugin.cpp:85
Used to extend the software with application-wide data.
Definition GUIApplicationPlugin.hpp:89
Definition score-plugin-clap/Clap/ApplicationPlugin.hpp:22
Specializes ApplicationContext with the QMainWindow.
Definition GUIApplicationContext.hpp:15