fix: edge positioning to sockets
This commit is contained in:
@@ -128,8 +128,12 @@ void Network::socketClicked(SocketGraphic* socket, QMouseEvent *event)
|
|||||||
// connect to opposite type
|
// connect to opposite type
|
||||||
else if (socket->getIO()!=startSocket_->getIO())
|
else if (socket->getIO()!=startSocket_->getIO())
|
||||||
{
|
{
|
||||||
NodeEdgeGraphic* newEdge = new NodeEdgeGraphic(startSocket_, socket);
|
auto inputSocket = startSocket_->getIO()==SocketGraphic::SocketType::Input ? startSocket_ : socket;
|
||||||
newEdge->setPos(startSocket_->scenePos(), socket->scenePos());
|
auto outputSocket = socket->getIO()==SocketGraphic::SocketType::Output ? socket : startSocket_;
|
||||||
|
|
||||||
|
NodeEdgeGraphic* newEdge = new NodeEdgeGraphic(inputSocket, outputSocket);
|
||||||
|
|
||||||
|
newEdge->setPos(inputSocket->scenePos(), outputSocket->scenePos());
|
||||||
scene_->addItem(newEdge);
|
scene_->addItem(newEdge);
|
||||||
destroyFloatingEdge();
|
destroyFloatingEdge();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ void NodeEdgeGraphic::updatePath()
|
|||||||
path_.clear();
|
path_.clear();
|
||||||
path_.moveTo(pos1_);
|
path_.moveTo(pos1_);
|
||||||
path_.lineTo(pos2_);
|
path_.lineTo(pos2_);
|
||||||
|
update();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,27 +34,28 @@ void NodeEdgeGraphic::setPos(QPointF pos1, QPointF pos2)
|
|||||||
{
|
{
|
||||||
pos1_ = pos1;
|
pos1_ = pos1;
|
||||||
pos2_ = pos2;
|
pos2_ = pos2;
|
||||||
|
prepareGeometryChange();
|
||||||
updatePath();
|
updatePath();
|
||||||
// prepareGeometryChange();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeEdgeGraphic::setStartPos(QPointF pos)
|
void NodeEdgeGraphic::setStartPos(QPointF pos)
|
||||||
{
|
{
|
||||||
pos1_ = pos;
|
pos1_ = pos;
|
||||||
|
prepareGeometryChange();
|
||||||
updatePath();
|
updatePath();
|
||||||
// prepareGeometryChange();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeEdgeGraphic::setEndPos(QPointF pos)
|
void NodeEdgeGraphic::setEndPos(QPointF pos)
|
||||||
{
|
{
|
||||||
pos2_ = pos;
|
pos2_ = pos;
|
||||||
|
prepareGeometryChange();
|
||||||
updatePath();
|
updatePath();
|
||||||
// prepareGeometryChange();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF NodeEdgeGraphic::boundingRect() const
|
QRectF NodeEdgeGraphic::boundingRect() const
|
||||||
{
|
{
|
||||||
// std::cout << "bounds set" << socket1_->scenePos().x() << " " << socket1_->scenePos().y() << " " << socket2_->scenePos().x() << " " << socket2_->scenePos().y() << "\n";
|
// std::cout << "bounds set" << socket1_->scenePos().x() << " " << socket1_->scenePos().y() << " " << socket2_->scenePos().x() << " " << socket2_->scenePos().y() << "\n";
|
||||||
|
// QRectF boundRect_ = QRectF(socket1_->scenePos(), socket1_->scenePos()).normalized();
|
||||||
QRectF boundRect_ = QRectF(pos1_, pos2_).normalized();
|
QRectF boundRect_ = QRectF(pos1_, pos2_).normalized();
|
||||||
return boundRect_;
|
return boundRect_;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "gui/network/SocketGraphic.h"
|
#include "gui/network/SocketGraphic.h"
|
||||||
|
#include <QGraphicsScene>
|
||||||
|
|
||||||
NodeGraphic::NodeGraphic(QGraphicsItem *parent)
|
NodeGraphic::NodeGraphic(QGraphicsItem *parent)
|
||||||
: QGraphicsItem(parent)
|
: QGraphicsItem(parent)
|
||||||
|
|||||||
@@ -40,8 +40,15 @@ void SocketGraphic::posChanged(QPointF pos)
|
|||||||
for(auto* edge : edges_)
|
for(auto* edge : edges_)
|
||||||
{
|
{
|
||||||
// edge->setPos(startSocket_->scenePos(), socket->scenePos());
|
// edge->setPos(startSocket_->scenePos(), socket->scenePos());
|
||||||
|
if(type_==SocketType::Input)
|
||||||
|
{
|
||||||
edge->setStartPos(this->scenePos());
|
edge->setStartPos(this->scenePos());
|
||||||
}
|
}
|
||||||
|
else if(type_==SocketType::Output)
|
||||||
|
{
|
||||||
|
edge->setEndPos(this->scenePos());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user