feat: add node icons

This commit is contained in:
parker
2025-06-24 16:17:13 +01:00
parent 7f6b7d0573
commit b83388ee69
6 changed files with 48 additions and 2 deletions

View File

@@ -12,7 +12,7 @@ project(enzo_project)
# qt # qt
find_package(Qt6 REQUIRED COMPONENTS Core Widgets) find_package(Qt6 REQUIRED COMPONENTS Core Widgets SvgWidgets)
qt_standard_project_setup() qt_standard_project_setup()
@@ -28,9 +28,10 @@ qt_add_executable(${AppExec}
src/gui/network/NodeEdgeGraphic.cpp src/gui/network/NodeEdgeGraphic.cpp
src/gui/network/FloatingEdgeGraphic.cpp src/gui/network/FloatingEdgeGraphic.cpp
src/gui/network/DisplayFlagButton.cpp src/gui/network/DisplayFlagButton.cpp
src/gui/network/NodeIconGraphic.cpp
) )
target_link_libraries(${AppExec} PRIVATE Qt6::Core Qt6::Widgets) target_link_libraries(${AppExec} PRIVATE Qt6::Core Qt6::Widgets Qt6::SvgWidgets)
target_include_directories(${AppExec} PUBLIC src) target_include_directories(${AppExec} PUBLIC src)
# tests # tests

View File

@@ -55,6 +55,8 @@ Network::Network(QWidget* parent)
node4->setPos(50, -200); node4->setPos(50, -200);
scene_->addItem(node4); scene_->addItem(node4);
// scene_->addItem(new NodeEdgeGraphic(node1->getOutput(0), node2->getInput(0))); // scene_->addItem(new NodeEdgeGraphic(node1->getOutput(0), node2->getInput(0)));
// node1->addEdge(edge1); // node1->addEdge(edge1);

View File

@@ -8,6 +8,8 @@
#include "gui/network/SocketGraphic.h" #include "gui/network/SocketGraphic.h"
#include <QGraphicsScene> #include <QGraphicsScene>
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
#include <QGraphicsSvgItem>
#include "gui/network/NodeIconGraphic.h"
NodeGraphic::NodeGraphic(QGraphicsItem *parent) NodeGraphic::NodeGraphic(QGraphicsItem *parent)
: QGraphicsItem(parent) : QGraphicsItem(parent)
@@ -21,6 +23,17 @@ NodeGraphic::NodeGraphic(QGraphicsItem *parent)
initSockets(); initSockets();
initFlagButtons(); initFlagButtons();
initIcon();
}
void NodeGraphic::initIcon()
{
NodeIconGraphic* icon = new NodeIconGraphic("/home/parker/MyRepos/masters/static/node-icons/grid.svg", this);
float iconLeftPadding = 5;
float iconScale = 12;
icon->setScale(1.0f/icon->boundingRect().size().height()*iconScale);
icon->setPos(iconLeftPadding-iconScale/2.0f, -iconScale/2.0f);
} }
void NodeGraphic::initFlagButtons() void NodeGraphic::initFlagButtons()

View File

@@ -31,6 +31,7 @@ public:
private: private:
void initSockets(); void initSockets();
void initFlagButtons(); void initFlagButtons();
void initIcon();
std::vector<SocketGraphic*> inputs_; std::vector<SocketGraphic*> inputs_;
std::vector<SocketGraphic*> outputs_; std::vector<SocketGraphic*> outputs_;

View File

@@ -0,0 +1,17 @@
#include "gui/network/NodeIconGraphic.h"
#include <qgraphicssvgitem.h>
#include <QBrush>
#include <QPainter>
NodeIconGraphic::NodeIconGraphic(const QString &fileName, QGraphicsItem *parent)
: QGraphicsSvgItem(fileName, parent)
{
}
// void NodeIconGraphic::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
// {
//
// this->setProperty("color", QColor("red"));
// QGraphicsSvgItem::paint(painter, option, widget);
// }

View File

@@ -0,0 +1,12 @@
#pragma once
#include <QGraphicsSvgItem>
class NodeIconGraphic
: public QGraphicsSvgItem
{
public:
NodeIconGraphic(const QString &fileName, QGraphicsItem *parent = nullptr);
protected:
// void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override;
};