2016-04-13 08:10:24 +02:00
|
|
|
#pragma once
|
2015-12-17 23:43:27 +01:00
|
|
|
|
|
|
|
|
#include <QtCore/QUuid>
|
|
|
|
|
#include <QtWidgets/QGraphicsObject>
|
|
|
|
|
|
|
|
|
|
#include "Connection.hpp"
|
|
|
|
|
|
|
|
|
|
#include "NodeGeometry.hpp"
|
|
|
|
|
#include "NodeState.hpp"
|
|
|
|
|
|
2017-01-30 10:31:43 +01:00
|
|
|
class QGraphicsProxyWidget;
|
|
|
|
|
|
|
|
|
|
namespace QtNodes
|
|
|
|
|
{
|
|
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
class NodeGraphicsScene;
|
2015-12-17 23:43:27 +01:00
|
|
|
class FlowItemEntry;
|
|
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
|
2015-12-17 23:43:27 +01:00
|
|
|
class NodeGraphicsObject : public QGraphicsObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
2020-02-03 23:31:42 +01:00
|
|
|
NodeGraphicsObject(NodeGraphicsScene &scene, NodeId node);
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
virtual ~NodeGraphicsObject();
|
2016-09-20 22:49:52 +02:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
NodeId nodeId() { return _nodeId; }
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
NodeId nodeId() const { return _nodeId; }
|
2017-05-07 19:02:44 +02:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
QRectF boundingRect() const override;
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void setGeometryChanged();
|
2016-08-21 17:41:34 +02:00
|
|
|
|
2016-05-24 10:07:41 +02:00
|
|
|
/// Visits all attached connections and corrects
|
|
|
|
|
/// their corresponding end points.
|
2020-02-03 23:31:42 +01:00
|
|
|
void moveConnections() const;
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2017-03-18 07:04:57 -06:00
|
|
|
enum { Type = UserType + 1 };
|
2017-04-22 14:29:30 +02:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
int type() const override { return Type; }
|
2017-03-18 07:04:57 -06:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void lock(bool locked = true);
|
2017-05-07 19:02:44 +02:00
|
|
|
|
2020-02-07 00:16:39 +01:00
|
|
|
void unlock() { lock(false); }
|
|
|
|
|
|
2015-12-17 23:43:27 +01:00
|
|
|
protected:
|
2020-02-03 23:31:42 +01:00
|
|
|
void paint(QPainter* painter,
|
|
|
|
|
QStyleOptionGraphicsItem const* option,
|
|
|
|
|
QWidget* widget = 0) override;
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
|
2016-09-20 15:22:05 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
|
2016-05-24 10:07:41 +02:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override;
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override;
|
2016-09-18 15:05:14 +02:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void hoverMoveEvent(QGraphicsSceneHoverEvent *) override;
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override;
|
2017-02-21 01:57:44 -08:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
void contextMenuEvent(QGraphicsSceneContextMenuEvent* event) override;
|
2015-12-17 23:43:27 +01:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
2020-02-07 00:16:39 +01:00
|
|
|
//void embedQWidget();
|
2015-12-17 23:43:27 +01:00
|
|
|
|
2020-02-03 23:31:42 +01:00
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
NodeGraphicsScene & _scene;
|
|
|
|
|
|
|
|
|
|
NodeId _nodeId;
|
2016-05-30 16:37:11 +02:00
|
|
|
|
2017-05-07 19:02:44 +02:00
|
|
|
bool _locked;
|
|
|
|
|
|
2016-05-30 16:37:11 +02:00
|
|
|
// either nullptr or owned by parent QGraphicsItem
|
|
|
|
|
QGraphicsProxyWidget * _proxyWidget;
|
2015-12-17 23:43:27 +01:00
|
|
|
};
|
2017-01-30 10:31:43 +01:00
|
|
|
}
|