Files
Phillip Stephens d5b3c7defb Linux build fixes
2020-04-17 07:18:45 -07:00

96 lines
1.6 KiB
C++

#pragma once
#include <QtCore/QObject>
#include <nodes/NodeData>
#include <nodes/NodeDataModel>
#include <memory>
using QtNodes::PortType;
using QtNodes::PortIndex;
using QtNodes::NodeData;
using QtNodes::NodeDataType;
using QtNodes::NodeDataModel;
using QtNodes::NodeValidationState;
/// The class can potentially incapsulate any user data which
/// need to be transferred within the Node Editor graph
class MyNodeData : public NodeData
{
public:
NodeDataType
type() const override
{ return NodeDataType {QLatin1String("MyNodeData"), QLatin1String("My Node Data")}; }
};
//------------------------------------------------------------------------------
/// The model dictates the number of inputs and outputs for the Node.
/// In this example it has no logic.
class MyDataModel : public NodeDataModel
{
Q_OBJECT
public:
virtual
~MyDataModel() {}
public:
QString
caption() const override
{
return QString("My Data Model");
}
QString
name() const override
{
return QString("MyDataModel");
}
public:
QJsonObject
save() const override
{
QJsonObject modelJson;
modelJson["name"] = name();
return modelJson;
}
public:
unsigned int
nPorts(PortType) const override
{
return 3;
}
NodeDataType
dataType(PortType, PortIndex) const override
{
return MyNodeData().type();
}
std::shared_ptr<NodeData>
outData(PortIndex) override
{
return std::make_shared<MyNodeData>();
}
void
setInData(std::shared_ptr<NodeData>, int) override
{
//
}
QWidget *
embeddedWidget() override { return nullptr; }
};