2016-04-15 22:40:45 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QtCore/QUuid>
|
2015-12-10 14:29:59 +01:00
|
|
|
|
|
|
|
|
#include <QtWidgets/QGraphicsObject>
|
|
|
|
|
|
|
|
|
|
class QGraphicsSceneMouseEvent;
|
|
|
|
|
|
2017-01-30 10:31:43 +01:00
|
|
|
namespace QtNodes
|
|
|
|
|
{
|
|
|
|
|
|
2016-05-24 10:07:41 +02:00
|
|
|
class FlowScene;
|
2015-12-10 14:29:59 +01:00
|
|
|
class Connection;
|
|
|
|
|
class ConnectionGeometry;
|
2016-05-24 10:07:41 +02:00
|
|
|
class Node;
|
2015-12-10 14:29:59 +01:00
|
|
|
|
2016-04-16 19:13:02 +02:00
|
|
|
/// Graphic Object for connection. Adds itself to scene
|
2015-12-10 14:29:59 +01:00
|
|
|
class ConnectionGraphicsObject
|
|
|
|
|
: public QGraphicsObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2016-05-24 10:07:41 +02:00
|
|
|
ConnectionGraphicsObject(FlowScene &scene,
|
2017-01-08 11:42:16 -07:00
|
|
|
Connection &connection);
|
2016-05-24 10:07:41 +02:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
virtual
|
|
|
|
|
~ConnectionGraphicsObject();
|
2015-12-10 14:29:59 +01:00
|
|
|
|
2017-03-18 07:05:15 -06:00
|
|
|
enum { Type = UserType + 2 };
|
|
|
|
|
int
|
|
|
|
|
type() const override { return Type; }
|
|
|
|
|
|
2015-12-10 14:29:59 +01:00
|
|
|
public:
|
|
|
|
|
|
2017-01-08 11:42:16 -07:00
|
|
|
Connection&
|
2016-11-07 22:12:44 +01:00
|
|
|
connection();
|
2015-12-10 14:29:59 +01:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
QRectF
|
|
|
|
|
boundingRect() const override;
|
2015-12-11 14:53:53 +01:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
QPainterPath
|
|
|
|
|
shape() const override;
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
setGeometryChanged();
|
2016-05-24 10:07:41 +02:00
|
|
|
|
2016-09-22 09:56:42 +02:00
|
|
|
/// Updates the position of both ends
|
2016-11-07 22:12:44 +01:00
|
|
|
void
|
|
|
|
|
move();
|
2016-09-22 09:56:42 +02:00
|
|
|
|
2017-05-07 19:02:44 +02:00
|
|
|
void
|
|
|
|
|
lock(bool locked);
|
|
|
|
|
|
2015-12-10 14:29:59 +01:00
|
|
|
protected:
|
2016-04-16 19:13:02 +02:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
void
|
|
|
|
|
paint(QPainter* painter,
|
|
|
|
|
QStyleOptionGraphicsItem const* option,
|
|
|
|
|
QWidget* widget = 0) override;
|
2015-12-10 14:29:59 +01:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
void
|
|
|
|
|
mousePressEvent(QGraphicsSceneMouseEvent* event) override;
|
2015-12-11 12:47:50 +01:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
void
|
|
|
|
|
mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
|
2015-12-10 14:29:59 +01:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
void
|
|
|
|
|
mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
|
2015-12-10 14:29:59 +01:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
void
|
|
|
|
|
hoverEnterEvent(QGraphicsSceneHoverEvent* event) override;
|
2015-12-11 14:53:53 +01:00
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
void
|
|
|
|
|
hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override;
|
2016-04-16 19:13:02 +02:00
|
|
|
|
2015-12-10 14:29:59 +01:00
|
|
|
private:
|
|
|
|
|
|
2016-11-07 22:12:44 +01:00
|
|
|
void
|
|
|
|
|
addGraphicsEffect();
|
2016-04-16 19:13:02 +02:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
2016-05-24 10:07:41 +02:00
|
|
|
FlowScene & _scene;
|
|
|
|
|
|
2017-01-08 11:42:16 -07:00
|
|
|
Connection& _connection;
|
2015-12-10 14:29:59 +01:00
|
|
|
};
|
2017-01-30 10:31:43 +01:00
|
|
|
}
|