From b83388ee69842af2bffa29800c8417346cac8902 Mon Sep 17 00:00:00 2001 From: parker Date: Tue, 24 Jun 2025 16:17:13 +0100 Subject: [PATCH] feat: add node icons --- CMakeLists.txt | 5 +++-- src/gui/network/Network.cpp | 2 ++ src/gui/network/NodeGraphic.cpp | 13 +++++++++++++ src/gui/network/NodeGraphic.h | 1 + src/gui/network/NodeIconGraphic.cpp | 17 +++++++++++++++++ src/gui/network/NodeIconGraphic.h | 12 ++++++++++++ 6 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 src/gui/network/NodeIconGraphic.cpp create mode 100644 src/gui/network/NodeIconGraphic.h diff --git a/CMakeLists.txt b/CMakeLists.txt index cf92f5c..1eafd22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ project(enzo_project) # qt -find_package(Qt6 REQUIRED COMPONENTS Core Widgets) +find_package(Qt6 REQUIRED COMPONENTS Core Widgets SvgWidgets) qt_standard_project_setup() @@ -28,9 +28,10 @@ qt_add_executable(${AppExec} src/gui/network/NodeEdgeGraphic.cpp src/gui/network/FloatingEdgeGraphic.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) # tests diff --git a/src/gui/network/Network.cpp b/src/gui/network/Network.cpp index d51a69f..1a18cad 100644 --- a/src/gui/network/Network.cpp +++ b/src/gui/network/Network.cpp @@ -55,6 +55,8 @@ Network::Network(QWidget* parent) node4->setPos(50, -200); scene_->addItem(node4); + + // scene_->addItem(new NodeEdgeGraphic(node1->getOutput(0), node2->getInput(0))); // node1->addEdge(edge1); diff --git a/src/gui/network/NodeGraphic.cpp b/src/gui/network/NodeGraphic.cpp index 927b5ec..03afe51 100644 --- a/src/gui/network/NodeGraphic.cpp +++ b/src/gui/network/NodeGraphic.cpp @@ -8,6 +8,8 @@ #include "gui/network/SocketGraphic.h" #include #include +#include +#include "gui/network/NodeIconGraphic.h" NodeGraphic::NodeGraphic(QGraphicsItem *parent) : QGraphicsItem(parent) @@ -21,6 +23,17 @@ NodeGraphic::NodeGraphic(QGraphicsItem *parent) initSockets(); 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() diff --git a/src/gui/network/NodeGraphic.h b/src/gui/network/NodeGraphic.h index 88d6edf..d874030 100644 --- a/src/gui/network/NodeGraphic.h +++ b/src/gui/network/NodeGraphic.h @@ -31,6 +31,7 @@ public: private: void initSockets(); void initFlagButtons(); + void initIcon(); std::vector inputs_; std::vector outputs_; diff --git a/src/gui/network/NodeIconGraphic.cpp b/src/gui/network/NodeIconGraphic.cpp new file mode 100644 index 0000000..b16186f --- /dev/null +++ b/src/gui/network/NodeIconGraphic.cpp @@ -0,0 +1,17 @@ +#include "gui/network/NodeIconGraphic.h" +#include +#include +#include + +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); +// } diff --git a/src/gui/network/NodeIconGraphic.h b/src/gui/network/NodeIconGraphic.h new file mode 100644 index 0000000..3d0dae6 --- /dev/null +++ b/src/gui/network/NodeIconGraphic.h @@ -0,0 +1,12 @@ +#pragma once +#include + +class NodeIconGraphic +: public QGraphicsSvgItem +{ +public: + NodeIconGraphic(const QString &fileName, QGraphicsItem *parent = nullptr); +protected: + // void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; + +};