-
Notifications
You must be signed in to change notification settings - Fork 947
Expand file tree
/
Copy pathmain.cpp
More file actions
69 lines (53 loc) · 2 KB
/
main.cpp
File metadata and controls
69 lines (53 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <QApplication>
#include <QFileDialog>
#include <QMenuBar>
#include <QObject>
#include <QVBoxLayout>
#include <QtNodes/DataFlowGraphModel>
#include <QtNodes/DataFlowGraphicsScene>
#include <QtNodes/GraphicsView>
#include <QtNodes/NodeDelegateModelRegistry>
#include <QtNodes/PluginInterface>
#include <QtNodes/PluginsManager>
using QtNodes::ConnectionStyle;
using QtNodes::DataFlowGraphicsScene;
using QtNodes::DataFlowGraphModel;
using QtNodes::GraphicsView;
using QtNodes::NodeDelegateModelRegistry;
using QtNodes::PluginInterface;
using QtNodes::PluginsManager;
void loadPluginsFromFolder()
{
PluginsManager *pluginsManager = PluginsManager::instance();
std::shared_ptr<NodeDelegateModelRegistry> registry = pluginsManager->registry();
// load plugins
pluginsManager->loadPlugins(QDir::cleanPath(QCoreApplication::applicationDirPath()
+ QDir::separator() + "plugins"),
QStringList() << "*.node"
<< "*.data");
for (auto l : pluginsManager->loaders()) {
PluginInterface *plugin = qobject_cast<PluginInterface *>(l.second->instance());
if (!plugin)
continue;
plugin->registerDataModels(registry);
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget mainWidget;
// Load plugins and register models
loadPluginsFromFolder();
QVBoxLayout *l = new QVBoxLayout(&mainWidget);
DataFlowGraphModel dataFlowGraphModel(PluginsManager::instance()->registry());
auto scene = new DataFlowGraphicsScene(dataFlowGraphModel, &mainWidget);
auto view = new GraphicsView(scene);
l->addWidget(view);
l->setContentsMargins(0, 0, 0, 0);
l->setSpacing(0);
QObject::connect(scene, &DataFlowGraphicsScene::sceneLoaded, view, &GraphicsView::centerScene);
mainWidget.setWindowTitle("Data Flow: Plugins Load");
mainWidget.resize(800, 600);
mainWidget.show();
return app.exec();
}