feat: add node selection

This commit is contained in:
parker
2025-08-12 03:35:19 +01:00
parent 08ddd09c04
commit 675e08928b
3 changed files with 28 additions and 5 deletions

View File

@@ -408,6 +408,15 @@ void Network::mouseReleaseEvent(QMouseEvent *event)
{ {
moveNodeBuffer.clear(); moveNodeBuffer.clear();
state_=State::DEFAULT; state_=State::DEFAULT;
if(
QGraphicsItem* clickedNode = itemOfType<NodeGraphic>(hoverItems);
clickedNode &&
QLineF(event->pos(), leftMouseStart).length()<5.0f)
{
NodeGraphic* node = static_cast<NodeGraphic*>(clickedNode);
node->toggleSelected();
}
} }
else if(floatingEdge_ && hoverSocket) else if(floatingEdge_ && hoverSocket)
{ {

View File

@@ -154,6 +154,21 @@ QRectF NodeGraphic::boundingRect() const
return boundRect; return boundRect;
} }
void NodeGraphic::setSelected(bool selected)
{
selected_=selected;
update();
}
bool NodeGraphic::toggleSelected()
{
bool selected = !selected_;
setSelected(selected);
return selected;
}
void NodeGraphic::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) void NodeGraphic::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{ {
// default outline // default outline
@@ -169,6 +184,7 @@ void NodeGraphic::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
QBrush whiteBrush = QBrush("white"); QBrush whiteBrush = QBrush("white");
painter->setBrush(QBrush(QColor("#1b1b1b"))); painter->setBrush(QBrush(QColor("#1b1b1b")));
if(selected_) painter->setPen(QPen(QColor("#fee046"), 2));
painter->drawRoundedRect(bodyRect_, 5, 5); painter->drawRoundedRect(bodyRect_, 5, 5);
painter->setPen(QPen(QColor("white"))); painter->setPen(QPen(QColor("white")));

View File

@@ -22,14 +22,12 @@ public:
QPointF getSocketScenePosition(int socketIndex, enzo::nt::SocketIOType socketType); QPointF getSocketScenePosition(int socketIndex, enzo::nt::SocketIOType socketType);
QRectF getBodyRect(); QRectF getBodyRect();
void setDisplayFlag(bool state); void setDisplayFlag(bool state);
void setSelected(bool selected);
bool toggleSelected();
// void addEdge(NodeEdgeGraphic* edge);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
// void setInputEdge(NodeEdgeGraphic* edge, int indx);
// void setOutputEdge(NodeEdgeGraphic* edge, int indx);
@@ -44,7 +42,7 @@ private:
std::vector<SocketGraphic*> outputs_; std::vector<SocketGraphic*> outputs_;
// std::vector<NodeEdgeGraphic*> edges_; // std::vector<NodeEdgeGraphic*> edges_;
bool selected_=false;
std::string titleText_=""; std::string titleText_="";
std::string subTitleText_=""; std::string subTitleText_="";
int maxTitleLen_=10; int maxTitleLen_=10;