GUI Milestone 1
This commit is contained in:
parent
4fc36822ba
commit
f46f9542b4
7 changed files with 593 additions and 19 deletions
73
gui/WarpGraphModel.h
Normal file
73
gui/WarpGraphModel.h
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
#pragma once
|
||||
|
||||
#include <warppipe/warppipe.hpp>
|
||||
|
||||
#include <QtNodes/AbstractGraphModel>
|
||||
#include <QtNodes/ConnectionIdUtils>
|
||||
|
||||
#include <QHash>
|
||||
#include <QPointF>
|
||||
#include <QSize>
|
||||
#include <QString>
|
||||
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
struct WarpNodeData {
|
||||
warppipe::NodeInfo info;
|
||||
std::vector<warppipe::PortInfo> inputPorts;
|
||||
std::vector<warppipe::PortInfo> outputPorts;
|
||||
};
|
||||
|
||||
class WarpGraphModel : public QtNodes::AbstractGraphModel {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WarpGraphModel(warppipe::Client *client, QObject *parent = nullptr);
|
||||
|
||||
QtNodes::NodeId newNodeId() override;
|
||||
std::unordered_set<QtNodes::NodeId> allNodeIds() const override;
|
||||
std::unordered_set<QtNodes::ConnectionId> allConnectionIds(
|
||||
QtNodes::NodeId nodeId) const override;
|
||||
std::unordered_set<QtNodes::ConnectionId> connections(
|
||||
QtNodes::NodeId nodeId, QtNodes::PortType portType,
|
||||
QtNodes::PortIndex portIndex) const override;
|
||||
bool connectionExists(QtNodes::ConnectionId const connectionId) const override;
|
||||
QtNodes::NodeId addNode(QString const nodeType = QString()) override;
|
||||
bool connectionPossible(QtNodes::ConnectionId const connectionId) const override;
|
||||
void addConnection(QtNodes::ConnectionId const connectionId) override;
|
||||
bool nodeExists(QtNodes::NodeId const nodeId) const override;
|
||||
QVariant nodeData(QtNodes::NodeId nodeId, QtNodes::NodeRole role) const override;
|
||||
bool setNodeData(QtNodes::NodeId nodeId, QtNodes::NodeRole role,
|
||||
QVariant value) override;
|
||||
QVariant portData(QtNodes::NodeId nodeId, QtNodes::PortType portType,
|
||||
QtNodes::PortIndex portIndex,
|
||||
QtNodes::PortRole role) const override;
|
||||
bool setPortData(QtNodes::NodeId nodeId, QtNodes::PortType portType,
|
||||
QtNodes::PortIndex portIndex, QVariant const &value,
|
||||
QtNodes::PortRole role = QtNodes::PortRole::Data) override;
|
||||
bool deleteConnection(QtNodes::ConnectionId const connectionId) override;
|
||||
bool deleteNode(QtNodes::NodeId const nodeId) override;
|
||||
QJsonObject saveNode(QtNodes::NodeId const) const override;
|
||||
void loadNode(QJsonObject const &) override;
|
||||
|
||||
void refreshFromClient();
|
||||
const WarpNodeData *warpNodeData(QtNodes::NodeId nodeId) const;
|
||||
QtNodes::NodeId qtNodeIdForPw(uint32_t pwNodeId) const;
|
||||
|
||||
private:
|
||||
static QString captionForNode(const warppipe::NodeInfo &info);
|
||||
QPointF nextPosition() const;
|
||||
|
||||
warppipe::Client *m_client = nullptr;
|
||||
QtNodes::NodeId m_nextNodeId = 1;
|
||||
|
||||
std::unordered_map<QtNodes::NodeId, WarpNodeData> m_nodes;
|
||||
std::unordered_map<uint32_t, QtNodes::NodeId> m_pwToQt;
|
||||
|
||||
std::unordered_set<QtNodes::ConnectionId> m_connections;
|
||||
std::unordered_map<uint32_t, QtNodes::ConnectionId> m_linkIdToConn;
|
||||
|
||||
std::unordered_map<QtNodes::NodeId, QPointF> m_positions;
|
||||
std::unordered_map<QtNodes::NodeId, QSize> m_sizes;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue