From 0aa87edcd4177c33ab2e2ae3c45f77132c82ad67 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Tue, 17 Oct 2023 10:00:22 +0200 Subject: [PATCH 01/27] Fix CMake warnings --- CMakeLists.txt | 14 +++----------- examples/calculator/CMakeLists.txt | 4 ++-- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2dc02dbb0..7b4e75bf8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,10 @@ cmake_minimum_required(VERSION 3.8) -cmake_policy(SET CMP0072 NEW) # new in 3.11. The NEW behavior for this policy is to set OpenGL_GL_PREFERENCE to GLVND. -cmake_policy(SET CMP0068 NEW) # new in 3.9. The NEW behavior of this policy is to ignore the RPATH settings for install_name on macOS. - - project(QtNodesLibrary CXX) -set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") + +set(CMAKE_CXX_STANDARD 11) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) set(CMAKE_DISABLE_SOURCE_CHANGES ON) @@ -188,12 +186,6 @@ if(NOT "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC") ) endif() -if(QT_NODES_DEVELOPER_DEFAULTS) - target_compile_features(QtNodes PUBLIC cxx_std_14) - set_target_properties(QtNodes PROPERTIES CXX_EXTENSIONS OFF) -endif() - - set_target_properties(QtNodes PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib diff --git a/examples/calculator/CMakeLists.txt b/examples/calculator/CMakeLists.txt index 60d2d14d7..dae6ee3b4 100644 --- a/examples/calculator/CMakeLists.txt +++ b/examples/calculator/CMakeLists.txt @@ -17,7 +17,7 @@ set(CALC_HEADER_FILES add_executable(calculator ${CALC_SOURCE_FILES} - ${CALC_HEAEDR_FILES} + ${CALC_HEADER_FILES} ) target_link_libraries(calculator QtNodes) @@ -33,7 +33,7 @@ set(HEADLESS_CALC_SOURCE_FILES add_executable(headless_calculator ${HEADLESS_CALC_SOURCE_FILES} - ${CALC_HEAEDR_FILES} + ${CALC_HEADER_FILES} ) target_link_libraries(headless_calculator QtNodes) From 94be99556853170295c6c53f0c5d54d3f39f84bf Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Tue, 17 Oct 2023 10:00:56 +0200 Subject: [PATCH 02/27] Fix MSVC warnings --- src/AbstractGraphModel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AbstractGraphModel.cpp b/src/AbstractGraphModel.cpp index 10709b7e8..5fb7c5d66 100644 --- a/src/AbstractGraphModel.cpp +++ b/src/AbstractGraphModel.cpp @@ -31,7 +31,7 @@ void AbstractGraphModel::portsAboutToBeDeleted(NodeId const nodeId, } } - std::size_t const nRemovedPorts = clampedLast - first + 1; + PortIndex const nRemovedPorts = clampedLast - first + 1; for (PortIndex portIndex = clampedLast + 1; portIndex < portCount; ++portIndex) { std::unordered_set conns = connections(nodeId, portType, portIndex); @@ -75,7 +75,7 @@ void AbstractGraphModel::portsAboutToBeInserted(NodeId const nodeId, if (last < first) return; - std::size_t const nNewPorts = last - first + 1; + PortIndex const nNewPorts = last - first + 1; for (PortIndex portIndex = first; portIndex < portCount; ++portIndex) { std::unordered_set conns = connections(nodeId, portType, portIndex); From c96829b3bc1f28db6b6c7edf44bca32631386c8c Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 13:27:33 +0200 Subject: [PATCH 03/27] Add calculator_test to test a QML form that integrate node editor --- CMakeLists.txt | 2 +- examples/CMakeLists.txt | 2 + examples/calculator_qml/AdditionModel.hpp | 39 ++++ examples/calculator_qml/CMakeLists.txt | 33 +++ examples/calculator_qml/DecimalData.hpp | 29 +++ examples/calculator_qml/DivisionModel.hpp | 74 ++++++ .../calculator_qml/MathOperationDataModel.cpp | 42 ++++ .../calculator_qml/MathOperationDataModel.hpp | 47 ++++ .../calculator_qml/MultiplicationModel.hpp | 44 ++++ .../calculator_qml/NumberDisplayDataModel.cpp | 71 ++++++ .../calculator_qml/NumberDisplayDataModel.hpp | 54 +++++ .../calculator_qml/NumberSourceDataModel.cpp | 110 +++++++++ .../calculator_qml/NumberSourceDataModel.hpp | 64 ++++++ examples/calculator_qml/QmlWrapper.cpp | 211 ++++++++++++++++++ examples/calculator_qml/QmlWrapper.hpp | 47 ++++ examples/calculator_qml/StringData.hpp | 29 +++ examples/calculator_qml/StringDataModel.cpp | 1 + examples/calculator_qml/StringDataModel.hpp | 61 +++++ examples/calculator_qml/SubtractionModel.hpp | 67 ++++++ examples/calculator_qml/main.cpp | 54 +++++ examples/calculator_qml/main.qml | 86 +++++++ examples/calculator_qml/main.qrc | 5 + include/QtNodes/internal/GraphicsView.hpp | 6 + src/GraphicsView.cpp | 47 ++++ 24 files changed, 1224 insertions(+), 1 deletion(-) create mode 100644 examples/calculator_qml/AdditionModel.hpp create mode 100644 examples/calculator_qml/CMakeLists.txt create mode 100644 examples/calculator_qml/DecimalData.hpp create mode 100644 examples/calculator_qml/DivisionModel.hpp create mode 100644 examples/calculator_qml/MathOperationDataModel.cpp create mode 100644 examples/calculator_qml/MathOperationDataModel.hpp create mode 100644 examples/calculator_qml/MultiplicationModel.hpp create mode 100644 examples/calculator_qml/NumberDisplayDataModel.cpp create mode 100644 examples/calculator_qml/NumberDisplayDataModel.hpp create mode 100644 examples/calculator_qml/NumberSourceDataModel.cpp create mode 100644 examples/calculator_qml/NumberSourceDataModel.hpp create mode 100644 examples/calculator_qml/QmlWrapper.cpp create mode 100644 examples/calculator_qml/QmlWrapper.hpp create mode 100644 examples/calculator_qml/StringData.hpp create mode 100644 examples/calculator_qml/StringDataModel.cpp create mode 100644 examples/calculator_qml/StringDataModel.hpp create mode 100644 examples/calculator_qml/SubtractionModel.hpp create mode 100644 examples/calculator_qml/main.cpp create mode 100644 examples/calculator_qml/main.qml create mode 100644 examples/calculator_qml/main.qrc diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b4e75bf8..35b726dc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ else() find_package(QT NAMES Qt5 REQUIRED COMPONENTS Widgets) endif() -find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Gui OpenGL) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Gui OpenGL Quick) message(STATUS "QT_VERSION: ${QT_VERSION}, QT_DIR: ${QT_DIR}") if (${QT_VERSION} VERSION_LESS 5.11.0) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 49494da2e..3f9217296 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -16,3 +16,5 @@ add_subdirectory(dynamic_ports) add_subdirectory(lock_nodes_and_connections) +add_subdirectory(calculator_qml) + diff --git a/examples/calculator_qml/AdditionModel.hpp b/examples/calculator_qml/AdditionModel.hpp new file mode 100644 index 000000000..b172b6ae5 --- /dev/null +++ b/examples/calculator_qml/AdditionModel.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include "DecimalData.hpp" +#include "MathOperationDataModel.hpp" + +#include + +#include +#include + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class AdditionModel : public MathOperationDataModel +{ +public: + ~AdditionModel() = default; + +public: + QString caption() const override { return QStringLiteral("Addition"); } + + QString name() const override { return QStringLiteral("Addition"); } + +private: + void compute() override + { + PortIndex const outPortIndex = 0; + + auto n1 = _number1.lock(); + auto n2 = _number2.lock(); + + if (n1 && n2) { + _result = std::make_shared(n1->number() + n2->number()); + } else { + _result.reset(); + } + + Q_EMIT dataUpdated(outPortIndex); + } +}; diff --git a/examples/calculator_qml/CMakeLists.txt b/examples/calculator_qml/CMakeLists.txt new file mode 100644 index 000000000..3f3ec5b35 --- /dev/null +++ b/examples/calculator_qml/CMakeLists.txt @@ -0,0 +1,33 @@ +set(CALC_SOURCE_FILES + main.cpp MathOperationDataModel.cpp NumberDisplayDataModel.cpp + NumberSourceDataModel.cpp StringDataModel.cpp QmlWrapper.cpp) + +set(CALC_HEADER_FILES + AdditionModel.hpp + DivisionModel.hpp + DecimalData.hpp + MathOperationDataModel.hpp + NumberDisplayDataModel.hpp + NumberSourceDataModel.hpp + SubtractionModel.hpp + StringDataModel.hpp + StringData.hpp + QmlWrapper.hpp) + +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTOUIC ON) +cmake_policy(SET CMP0071 NEW) + +qt_standard_project_setup(REQUIRES 6.5) + +qt_add_resources(QT_RESOURCES "main.qrc") +qt_add_executable(calculator_qml ${CALC_SOURCE_FILES} ${CALC_HEADER_FILES} + ${QT_RESOURCES}) + +qt_add_qml_module( + calculator_qml VERSION 1.0 URI hello QML_FILES main.qml # FramedImage.qml RESOURCES + # img/world.png +) + +target_link_libraries(calculator_qml PRIVATE Qt6::Gui Qt6::Quick QtNodes) diff --git a/examples/calculator_qml/DecimalData.hpp b/examples/calculator_qml/DecimalData.hpp new file mode 100644 index 000000000..bd337d248 --- /dev/null +++ b/examples/calculator_qml/DecimalData.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +/// The class can potentially incapsulate any user data which +/// need to be transferred within the Node Editor graph +class DecimalData : public NodeData +{ +public: + DecimalData() + : _number(0.0) + {} + + DecimalData(double const number) + : _number(number) + {} + + NodeDataType type() const override { return NodeDataType{"decimal", "Decimal"}; } + + double number() const { return _number; } + + QString numberAsText() const { return QString::number(_number, 'f'); } + +private: + double _number; +}; diff --git a/examples/calculator_qml/DivisionModel.hpp b/examples/calculator_qml/DivisionModel.hpp new file mode 100644 index 000000000..9018450c8 --- /dev/null +++ b/examples/calculator_qml/DivisionModel.hpp @@ -0,0 +1,74 @@ +#pragma once + +#include "DecimalData.hpp" +#include "MathOperationDataModel.hpp" + +#include + +#include +#include + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class DivisionModel : public MathOperationDataModel +{ +public: + virtual ~DivisionModel() {} + +public: + QString caption() const override { return QStringLiteral("Division"); } + + bool portCaptionVisible(PortType portType, PortIndex portIndex) const override + { + Q_UNUSED(portType); + Q_UNUSED(portIndex); + return true; + } + + QString portCaption(PortType portType, PortIndex portIndex) const override + { + switch (portType) { + case PortType::In: + if (portIndex == 0) + return QStringLiteral("Dividend"); + else if (portIndex == 1) + return QStringLiteral("Divisor"); + + break; + + case PortType::Out: + return QStringLiteral("Result"); + + default: + break; + } + return QString(); + } + + QString name() const override { return QStringLiteral("Division"); } + +private: + void compute() override + { + PortIndex const outPortIndex = 0; + + auto n1 = _number1.lock(); + auto n2 = _number2.lock(); + + if (n2 && (n2->number() == 0.0)) { + //modelValidationState = NodeValidationState::Error; + //modelValidationError = QStringLiteral("Division by zero error"); + _result.reset(); + } else if (n1 && n2) { + //modelValidationState = NodeValidationState::Valid; + //modelValidationError = QString(); + _result = std::make_shared(n1->number() / n2->number()); + } else { + //modelValidationState = NodeValidationState::Warning; + //modelValidationError = QStringLiteral("Missing or incorrect inputs"); + _result.reset(); + } + + Q_EMIT dataUpdated(outPortIndex); + } +}; diff --git a/examples/calculator_qml/MathOperationDataModel.cpp b/examples/calculator_qml/MathOperationDataModel.cpp new file mode 100644 index 000000000..f6a3a26d0 --- /dev/null +++ b/examples/calculator_qml/MathOperationDataModel.cpp @@ -0,0 +1,42 @@ +#include "MathOperationDataModel.hpp" + +#include "DecimalData.hpp" + +unsigned int MathOperationDataModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 2; + else + result = 1; + + return result; +} + +NodeDataType MathOperationDataModel::dataType(PortType, PortIndex) const +{ + return DecimalData().type(); +} + +std::shared_ptr MathOperationDataModel::outData(PortIndex) +{ + return std::static_pointer_cast(_result); +} + +void MathOperationDataModel::setInData(std::shared_ptr data, PortIndex portIndex) +{ + auto numberData = std::dynamic_pointer_cast(data); + + if (!data) { + Q_EMIT dataInvalidated(0); + } + + if (portIndex == 0) { + _number1 = numberData; + } else { + _number2 = numberData; + } + + compute(); +} diff --git a/examples/calculator_qml/MathOperationDataModel.hpp b/examples/calculator_qml/MathOperationDataModel.hpp new file mode 100644 index 000000000..6d279642b --- /dev/null +++ b/examples/calculator_qml/MathOperationDataModel.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include + +#include +#include +#include + +#include + +class DecimalData; + +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class MathOperationDataModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~MathOperationDataModel() = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override { return nullptr; } + +protected: + virtual void compute() = 0; + +protected: + std::weak_ptr _number1; + std::weak_ptr _number2; + + std::shared_ptr _result; +}; diff --git a/examples/calculator_qml/MultiplicationModel.hpp b/examples/calculator_qml/MultiplicationModel.hpp new file mode 100644 index 000000000..127ae4011 --- /dev/null +++ b/examples/calculator_qml/MultiplicationModel.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include + +#include +#include + +#include "MathOperationDataModel.hpp" + +#include "DecimalData.hpp" + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class MultiplicationModel : public MathOperationDataModel +{ +public: + virtual ~MultiplicationModel() {} + +public: + QString caption() const override { return QStringLiteral("Multiplication"); } + + QString name() const override { return QStringLiteral("Multiplication"); } + +private: + void compute() override + { + PortIndex const outPortIndex = 0; + + auto n1 = _number1.lock(); + auto n2 = _number2.lock(); + + if (n1 && n2) { + //modelValidationState = NodeValidationState::Valid; + //modelValidationError = QString(); + _result = std::make_shared(n1->number() * n2->number()); + } else { + //modelValidationState = NodeValidationState::Warning; + //modelValidationError = QStringLiteral("Missing or incorrect inputs"); + _result.reset(); + } + + Q_EMIT dataUpdated(outPortIndex); + } +}; diff --git a/examples/calculator_qml/NumberDisplayDataModel.cpp b/examples/calculator_qml/NumberDisplayDataModel.cpp new file mode 100644 index 000000000..5086050c8 --- /dev/null +++ b/examples/calculator_qml/NumberDisplayDataModel.cpp @@ -0,0 +1,71 @@ +#include "NumberDisplayDataModel.hpp" + +#include + +NumberDisplayDataModel::NumberDisplayDataModel() + : _label{nullptr} +{} + +unsigned int NumberDisplayDataModel::nPorts(PortType portType) const +{ + unsigned int result = 1; + + switch (portType) { + case PortType::In: + result = 1; + break; + + case PortType::Out: + result = 0; + + default: + break; + } + + return result; +} + +NodeDataType NumberDisplayDataModel::dataType(PortType, PortIndex) const +{ + return DecimalData().type(); +} + +std::shared_ptr NumberDisplayDataModel::outData(PortIndex) +{ + std::shared_ptr ptr; + return ptr; +} + +void NumberDisplayDataModel::setInData(std::shared_ptr data, PortIndex portIndex) +{ + _numberData = std::dynamic_pointer_cast(data); + + if (!_label) + return; + + if (_numberData) { + _label->setText(_numberData->numberAsText()); + } else { + _label->clear(); + } + + _label->adjustSize(); +} + +QWidget *NumberDisplayDataModel::embeddedWidget() +{ + if (!_label) { + _label = new QLabel(); + _label->setMargin(3); + } + + return _label; +} + +double NumberDisplayDataModel::number() const +{ + if (_numberData) + return _numberData->number(); + + return 0.0; +} diff --git a/examples/calculator_qml/NumberDisplayDataModel.hpp b/examples/calculator_qml/NumberDisplayDataModel.hpp new file mode 100644 index 000000000..78f984f5f --- /dev/null +++ b/examples/calculator_qml/NumberDisplayDataModel.hpp @@ -0,0 +1,54 @@ +#pragma once + +#include + +#include + +#include + +#include "DecimalData.hpp" + +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +class QLabel; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class NumberDisplayDataModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + NumberDisplayDataModel(); + + ~NumberDisplayDataModel() = default; + +public: + QString caption() const override { return QStringLiteral("Result"); } + + bool captionVisible() const override { return false; } + + QString name() const override { return QStringLiteral("Result"); } + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + double number() const; + +private: + std::shared_ptr _numberData; + + QLabel *_label; +}; diff --git a/examples/calculator_qml/NumberSourceDataModel.cpp b/examples/calculator_qml/NumberSourceDataModel.cpp new file mode 100644 index 000000000..f6a7ca55d --- /dev/null +++ b/examples/calculator_qml/NumberSourceDataModel.cpp @@ -0,0 +1,110 @@ +#include "NumberSourceDataModel.hpp" + +#include "DecimalData.hpp" + +#include +#include +#include + +NumberSourceDataModel::NumberSourceDataModel() + : _lineEdit{nullptr} + , _number(std::make_shared(0.0)) +{} + +QJsonObject NumberSourceDataModel::save() const +{ + QJsonObject modelJson = NodeDelegateModel::save(); + + modelJson["number"] = QString::number(_number->number()); + + return modelJson; +} + +void NumberSourceDataModel::load(QJsonObject const &p) +{ + QJsonValue v = p["number"]; + + if (!v.isUndefined()) { + QString strNum = v.toString(); + + bool ok; + double d = strNum.toDouble(&ok); + if (ok) { + _number = std::make_shared(d); + + if (_lineEdit) + _lineEdit->setText(strNum); + } + } +} + +unsigned int NumberSourceDataModel::nPorts(PortType portType) const +{ + unsigned int result = 1; + + switch (portType) { + case PortType::In: + result = 0; + break; + + case PortType::Out: + result = 1; + + default: + break; + } + + return result; +} + +void NumberSourceDataModel::onTextEdited(QString const &str) +{ + bool ok = false; + + double number = str.toDouble(&ok); + + if (ok) { + _number = std::make_shared(number); + + Q_EMIT dataUpdated(0); + + } else { + Q_EMIT dataInvalidated(0); + } +} + +NodeDataType NumberSourceDataModel::dataType(PortType, PortIndex) const +{ + return DecimalData().type(); +} + +std::shared_ptr NumberSourceDataModel::outData(PortIndex) +{ + return _number; +} + +QWidget *NumberSourceDataModel::embeddedWidget() +{ + if (!_lineEdit) { + _lineEdit = new QLineEdit(); + + _lineEdit->setValidator(new QDoubleValidator()); + _lineEdit->setMaximumSize(_lineEdit->sizeHint()); + + connect(_lineEdit, &QLineEdit::textChanged, this, &NumberSourceDataModel::onTextEdited); + + _lineEdit->setText(QString::number(_number->number())); + } + + return _lineEdit; +} + +void NumberSourceDataModel::setNumber(double n) +{ + _number = std::make_shared(n); + + Q_EMIT dataUpdated(0); + + if (_lineEdit) + _lineEdit->setText(QString::number(_number->number())); +} diff --git a/examples/calculator_qml/NumberSourceDataModel.hpp b/examples/calculator_qml/NumberSourceDataModel.hpp new file mode 100644 index 000000000..8ae4e324a --- /dev/null +++ b/examples/calculator_qml/NumberSourceDataModel.hpp @@ -0,0 +1,64 @@ +#pragma once + +#include + +#include + +#include + +class DecimalData; + +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +class QLineEdit; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class NumberSourceDataModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + NumberSourceDataModel(); + + virtual ~NumberSourceDataModel() {} + +public: + QString caption() const override { return QStringLiteral("Number Source"); } + + bool captionVisible() const override { return false; } + + QString name() const override { return QStringLiteral("NumberSource"); } + +public: + QJsonObject save() const override; + + void load(QJsonObject const &p) override; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr, PortIndex) override {} + + QWidget *embeddedWidget() override; + +public: + void setNumber(double number); + +private Q_SLOTS: + + void onTextEdited(QString const &string); + +private: + std::shared_ptr _number; + + QLineEdit *_lineEdit; +}; diff --git a/examples/calculator_qml/QmlWrapper.cpp b/examples/calculator_qml/QmlWrapper.cpp new file mode 100644 index 000000000..4ab10bd65 --- /dev/null +++ b/examples/calculator_qml/QmlWrapper.cpp @@ -0,0 +1,211 @@ +#include "QmlWrapper.hpp" + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "AdditionModel.hpp" +#include "DivisionModel.hpp" +#include "MultiplicationModel.hpp" +#include "NumberDisplayDataModel.hpp" +#include "NumberSourceDataModel.hpp" +#include "StringDataModel.hpp" +#include "SubtractionModel.hpp" + +using QtNodes::ConnectionStyle; +using QtNodes::DataFlowGraphicsScene; +using QtNodes::DataFlowGraphModel; +using QtNodes::GraphicsView; +using QtNodes::NodeDelegateModelRegistry; + +using QtNodes::NodeDelegateModelRegistry; + +QuickPaintedView::QuickPaintedView(QQuickItem *parent) + : QQuickPaintedItem(parent) +{ + //! NOTE It is necessary that when UI scaling is displayed without a blur + setAntialiasing(false); + setSmooth(false); +} + +QSGNode *QuickPaintedView::updatePaintNode(QSGNode *old, UpdatePaintNodeData *data) +{ + std::cout << "updatePaintNode\n" << std::flush; + //! NOTE It is necessary that when UI scaling is displayed without a blur + setTextureSize(QSize(width(), height())); + QSGNode *n = QQuickPaintedItem::updatePaintNode(old, data); + update(); // Endless loop + return n; +} + +WidgetView::WidgetView(QQuickItem *parent) + : QuickPaintedView(parent) +{ + setFlag(QQuickItem::ItemAcceptsDrops, true); + setFlag(QQuickItem::ItemHasContents, true); + + setAcceptHoverEvents(true); + setAcceptedMouseButtons(Qt::AllButtons); +} + +void WidgetView::paint(QPainter *painter) +{ + if (qWidget()) { + qWidget()->render(painter, + QPoint(), + QRegion(), + QWidget::DrawWindowBackground | QWidget::DrawChildren); + } +} + +bool WidgetView::event(QEvent *event) +{ + if (!m_widget) { + return QQuickItem::event(event); + } + + bool ok = true; + + switch (event->type()) { + case QEvent::HoverEnter: + case QEvent::HoverMove: + case QEvent::HoverLeave: + ok = handleHoverEvent(dynamic_cast(event)); + break; + case QEvent::MouseButtonPress: { + setFocus(true); + ok = m_widget->handleEvent(event); + break; + } + default: + ok = m_widget->handleEvent(event); + break; + } + + if (ok) { + std::cout << "update\n" << std::flush; + update(); + } + else + { + std::cout << "update fails\n" << std::flush; + } + + return ok; +} + +bool WidgetView::handleHoverEvent(QHoverEvent *event) +{ + auto convertEventType = [](QEvent::Type type) { + static const QMap types{{QEvent::HoverLeave, QEvent::Leave}, + {QEvent::HoverEnter, QEvent::Enter}, + {QEvent::HoverMove, QEvent::MouseMove}}; + + return types[type]; + }; + + QEvent::Type convertedType = convertEventType(event->type()); + + if (convertedType == QEvent::MouseMove) { + QMouseEvent *mouseEvent = new QMouseEvent(convertedType, + event->position(), + event->scenePosition(), + event->globalPosition(), + event->button(), + event->buttons(), + event->modifiers(), + Qt::MouseEventSource::MouseEventNotSynthesized, + event->pointingDevice()); + mouseEvent->setAccepted(event->isAccepted()); + mouseEvent->setTimestamp(event->timestamp()); + bool ok = m_widget->handleEvent(mouseEvent); + setCursor(m_widget->cursor()); + return ok; + } + + QEvent newEvent(convertedType); + newEvent.setAccepted(event->isAccepted()); + + return QCoreApplication::sendEvent(m_widget, &newEvent); +} + +void WidgetView::componentComplete() +{ + QQuickItem::componentComplete(); + + setWidget(); + + connect(this, &QQuickItem::widthChanged, [this]() { updateSizeConstraints(); }); + + connect(this, &QQuickItem::heightChanged, [this]() { updateSizeConstraints(); }); +} + +QWidget *WidgetView::qWidget() const +{ + //return m_widget ? m_widget->qWidget() : nullptr; + return m_widget; +} + +void WidgetView::updateSizeConstraints() +{ + if (qWidget()) { + qWidget()->setFixedSize(width(), height()); + } +} + +static std::shared_ptr registerDataModels() +{ + auto ret = std::make_shared(); + ret->registerModel("Sources"); + + ret->registerModel("Displays"); + + ret->registerModel("Operators"); + + ret->registerModel("Operators"); + + ret->registerModel("Operators"); + + ret->registerModel("Operators"); + + ret->registerModel("Sources"); + + return ret; +} + +void WidgetView::setWidget() +{ + std::shared_ptr registry = registerDataModels(); + + m_model = new DataFlowGraphModel(registry); + + m_widget_scene = new DataFlowGraphicsScene(*m_model, nullptr); + + m_widget = new GraphicsView(m_widget_scene); // Comp + + updateSizeConstraints(); + + QObject::connect(m_widget_scene, + &DataFlowGraphicsScene::sceneLoaded, + m_widget, + &GraphicsView::centerScene); + + QFile file("C:/temp/ttt.flow"); + + file.open(QIODevice::ReadOnly); + + m_widget_scene->clearScene(); + + QByteArray const wholeFile = file.readAll(); + + m_model->load(QJsonDocument::fromJson(wholeFile).object()); + + m_widget->centerScene(); +} + diff --git a/examples/calculator_qml/QmlWrapper.hpp b/examples/calculator_qml/QmlWrapper.hpp new file mode 100644 index 000000000..5af3050d3 --- /dev/null +++ b/examples/calculator_qml/QmlWrapper.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +using QtNodes::GraphicsView; +using QtNodes::DataFlowGraphicsScene; +using QtNodes::DataFlowGraphModel; + +class QuickPaintedView : public QQuickPaintedItem +{ + Q_OBJECT +public: + QuickPaintedView(QQuickItem *parent = nullptr); + +protected: + QSGNode *updatePaintNode(QSGNode *old, UpdatePaintNodeData *d) override; +}; + +class WidgetView : public QuickPaintedView +{ + Q_OBJECT + +public: + explicit WidgetView(QQuickItem *parent = nullptr); + +protected: + void componentComplete() override; + +private: + void paint(QPainter *painter) override; + bool event(QEvent *event) override; + bool handleHoverEvent(QHoverEvent *event); + bool handleMouseEvent(QMouseEvent *event); + + QWidget *qWidget() const; + void updateSizeConstraints(); + + void setWidget(); + + GraphicsView *m_widget = nullptr; + DataFlowGraphicsScene *m_widget_scene = nullptr; + DataFlowGraphModel *m_model = nullptr; +}; diff --git a/examples/calculator_qml/StringData.hpp b/examples/calculator_qml/StringData.hpp new file mode 100644 index 000000000..a4be2f8c7 --- /dev/null +++ b/examples/calculator_qml/StringData.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +/// The class can potentially incapsulate any user data which +/// need to be transferred within the Node Editor graph +class StringData : public NodeData +{ +public: + StringData() + : _text() + {} + + StringData(QString const text) + : _text(text) + {} + + NodeDataType type() const override { return NodeDataType{"string", "String"}; } + + QString number() const { return _text; } + + QString numberAsText() const { return _text; } + +private: + QString _text; +}; diff --git a/examples/calculator_qml/StringDataModel.cpp b/examples/calculator_qml/StringDataModel.cpp new file mode 100644 index 000000000..a891735c6 --- /dev/null +++ b/examples/calculator_qml/StringDataModel.cpp @@ -0,0 +1 @@ +#include "StringDataModel.hpp" diff --git a/examples/calculator_qml/StringDataModel.hpp b/examples/calculator_qml/StringDataModel.hpp new file mode 100644 index 000000000..1636cff91 --- /dev/null +++ b/examples/calculator_qml/StringDataModel.hpp @@ -0,0 +1,61 @@ +#pragma once + +#include +#include +#include "StringData.hpp" + +using QtNodes::PortType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::NodeDataType; +using QtNodes::NodeData; + +class StringDataModel : public NodeDelegateModel +{ + Q_OBJECT +public: + StringDataModel() = default; + virtual QString caption() const {return _text->numberAsText();} + virtual QString name() const {return "Text";}; + virtual unsigned int nPorts(PortType portType) const { + unsigned int result = 1; + + switch (portType) { + case PortType::In: + result = 0; + break; + + case PortType::Out: + result = 1; + break; + + default: + break; + } + + return result; + } + + virtual NodeDataType dataType(PortType portType, PortIndex portIndex) const { + switch (portType) { + case PortType::In: + return StringData().type(); + + case PortType::Out: + return StringData().type(); + case PortType::None: + default: + return{}; + } + } + virtual void setInData(std::shared_ptr nodeData, PortIndex const portIndex) { + } + + virtual std::shared_ptr outData(PortIndex const port) { + return std::static_pointer_cast(_text); + } + virtual QWidget *embeddedWidget() {return nullptr;} + +private: + std::shared_ptr _text = std::make_shared("Hello"); +}; diff --git a/examples/calculator_qml/SubtractionModel.hpp b/examples/calculator_qml/SubtractionModel.hpp new file mode 100644 index 000000000..ce6e926e3 --- /dev/null +++ b/examples/calculator_qml/SubtractionModel.hpp @@ -0,0 +1,67 @@ +#pragma once + +#include +#include + +#include + +#include "MathOperationDataModel.hpp" + +#include "DecimalData.hpp" + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class SubtractionModel : public MathOperationDataModel +{ +public: + virtual ~SubtractionModel() {} + +public: + QString caption() const override { return QStringLiteral("Subtraction"); } + + virtual bool portCaptionVisible(PortType portType, PortIndex portIndex) const override + { + Q_UNUSED(portType); + Q_UNUSED(portIndex); + return true; + } + + virtual QString portCaption(PortType portType, PortIndex portIndex) const override + { + switch (portType) { + case PortType::In: + if (portIndex == 0) + return QStringLiteral("Minuend"); + else if (portIndex == 1) + return QStringLiteral("Subtrahend"); + + break; + + case PortType::Out: + return QStringLiteral("Result"); + + default: + break; + } + return QString(); + } + + QString name() const override { return QStringLiteral("Subtraction"); } + +private: + void compute() override + { + PortIndex const outPortIndex = 0; + + auto n1 = _number1.lock(); + auto n2 = _number2.lock(); + + if (n1 && n2) { + _result = std::make_shared(n1->number() - n2->number()); + } else { + _result.reset(); + } + + Q_EMIT dataUpdated(outPortIndex); + } +}; diff --git a/examples/calculator_qml/main.cpp b/examples/calculator_qml/main.cpp new file mode 100644 index 000000000..4df3d65f0 --- /dev/null +++ b/examples/calculator_qml/main.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "QmlWrapper.hpp" +using QtNodes::ConnectionStyle; + +static void setStyle() +{ + ConnectionStyle::setConnectionStyle( + R"( + { + "ConnectionStyle": { + "ConstructionColor": "gray", + "NormalColor": "black", + "SelectedColor": "gray", + "SelectedHaloColor": "deepskyblue", + "HoveredColor": "deepskyblue", + + "LineWidth": 3.0, + "ConstructionLineWidth": 2.0, + "PointDiameter": 10.0, + + "UseDataDefinedColors": true + } + } + )"); +} + +int main(int argc, char *argv[]) +{ + qputenv("QT_QUICK_BACKEND", "software"); + QApplication app(argc, argv); + + setStyle(); + + qmlRegisterType("bk", 0, 0, "WidgetView"); + + QQmlApplicationEngine engine; + const QUrl url("qrc:/hello/main.qml"); + engine.load(url); + + return app.exec(); +} diff --git a/examples/calculator_qml/main.qml b/examples/calculator_qml/main.qml new file mode 100644 index 000000000..6e891700d --- /dev/null +++ b/examples/calculator_qml/main.qml @@ -0,0 +1,86 @@ +import QtQuick +import QtQuick.Window +import QtCharts +import bk + +Window { + width: 1500 + height: 1000 + visible: true + + ChartView { + id: myChart + width: 200 + height: 200 + margins.left: 0 + legend.visible: false + + ValueAxis { + id: valueAxisX + min: -1 + max: 14 + tickCount: max - min + 1 + minorTickCount: 1 + labelFormat: "%.0f" + } + + ValueAxis { + id: valueAxisY + min: 0 + max: 14 + tickCount: max - min + 1 + labelsVisible: false + } + + LineSeries { + name: "Line" + XYPoint { + x: 0 + y: 0 + } + XYPoint { + x: 1.1 + y: 2.1 + } + XYPoint { + x: 1.9 + y: 3.3 + } + XYPoint { + x: 2.1 + y: 2.1 + } + XYPoint { + x: 2.9 + y: 4.9 + } + XYPoint { + x: 3.4 + y: 3.0 + } + XYPoint { + x: 4.1 + y: 3.3 + } + } + } + WidgetView { + id: qmlwrap + width: 800 + height: 800 + anchors.top: myChart.bottom + anchors.left: myChart.right + } + /* + Button { + id: button + width: 200 + height: 200 + anchors.top: myChart.bottom + text: qsTr("Click Me!") + onClicked: { + backend.setObject(button); + } + } + */ +} diff --git a/examples/calculator_qml/main.qrc b/examples/calculator_qml/main.qrc new file mode 100644 index 000000000..99a0ae43d --- /dev/null +++ b/examples/calculator_qml/main.qrc @@ -0,0 +1,5 @@ + + + main.qml + + diff --git a/include/QtNodes/internal/GraphicsView.hpp b/include/QtNodes/internal/GraphicsView.hpp index 52068129f..2dd1af2cc 100644 --- a/include/QtNodes/internal/GraphicsView.hpp +++ b/include/QtNodes/internal/GraphicsView.hpp @@ -43,6 +43,8 @@ class NODE_EDITOR_PUBLIC GraphicsView : public QGraphicsView double getScale() const; + bool handleEvent(QEvent *e); + public Q_SLOTS: void scaleUp(); @@ -62,6 +64,8 @@ public Q_SLOTS: void scaleChanged(double scale); protected: + bool handleMouseEvent(QMouseEvent *event); + void contextMenuEvent(QContextMenuEvent *event) override; void wheelEvent(QWheelEvent *event) override; @@ -93,5 +97,7 @@ public Q_SLOTS: QPointF _clickPos; ScaleRange _scaleRange; + + QWidget *m_mouseDownWidget = nullptr; }; } // namespace QtNodes diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index 1ffa8f58b..27548e125 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -161,6 +161,44 @@ void GraphicsView::centerScene() } } +bool GraphicsView::handleMouseEvent(QMouseEvent *event) +{ + QPoint pos = event->pos(); + + QWidget *child = childAt(pos); + std::cout << (size_t)child << std::endl << std::flush; + + if (event->type() == QEvent::MouseButtonPress) { + m_mouseDownWidget = child; + } else if (event->type() == QEvent::MouseButtonRelease) { + m_mouseDownWidget = nullptr; + } + + QWidget *receiver = m_mouseDownWidget ? m_mouseDownWidget : child; + + if (receiver != nullptr) { + QPoint newPt = receiver->mapFrom(this, pos); + + if (event->button() == Qt::MouseButton::RightButton) { + contextMenuEvent(new QContextMenuEvent(QContextMenuEvent::Mouse, + newPt, + event->globalPosition().toPoint())); + } + QMouseEvent *eventlocal = new QMouseEvent(event->type(), + newPt, + event->scenePosition(), + newPt, + event->button(), + event->buttons(), + event->modifiers(), + event->source(), + event->pointingDevice()); + return qApp->notify(receiver, eventlocal); + } + + return false; +} + void GraphicsView::contextMenuEvent(QContextMenuEvent *event) { if (itemAt(event->pos())) { @@ -216,6 +254,15 @@ void GraphicsView::setScaleRange(ScaleRange range) setScaleRange(range.minimum, range.maximum); } +bool GraphicsView::handleEvent(QEvent *e) +{ + if (QMouseEvent *me = dynamic_cast(e)) { + return handleMouseEvent(me); + } + + return QWidget::event(e); +} + void GraphicsView::scaleUp() { double const step = 1.2; From 5bf9066e20c9753599d80086cb9ef60caacebd76 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 23 Oct 2023 09:54:40 +0200 Subject: [PATCH 04/27] Missing MultiplicationModel.hpp in CMakeLists.txt --- examples/calculator/CMakeLists.txt | 1 + examples/calculator_qml/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/examples/calculator/CMakeLists.txt b/examples/calculator/CMakeLists.txt index dae6ee3b4..24282b0d7 100644 --- a/examples/calculator/CMakeLists.txt +++ b/examples/calculator/CMakeLists.txt @@ -10,6 +10,7 @@ set(CALC_HEADER_FILES DivisionModel.hpp DecimalData.hpp MathOperationDataModel.hpp + MultiplicationModel.hpp NumberDisplayDataModel.hpp NumberSourceDataModel.hpp SubtractionModel.hpp diff --git a/examples/calculator_qml/CMakeLists.txt b/examples/calculator_qml/CMakeLists.txt index 3f3ec5b35..70b72a539 100644 --- a/examples/calculator_qml/CMakeLists.txt +++ b/examples/calculator_qml/CMakeLists.txt @@ -7,6 +7,7 @@ set(CALC_HEADER_FILES DivisionModel.hpp DecimalData.hpp MathOperationDataModel.hpp + MultiplicationModel.hpp NumberDisplayDataModel.hpp NumberSourceDataModel.hpp SubtractionModel.hpp From c51ebc325e59a371c574c180683c36c25fc4b5cb Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Tue, 24 Oct 2023 12:38:00 +0200 Subject: [PATCH 05/27] Minors fixes in library --- src/DataFlowGraphicsScene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DataFlowGraphicsScene.cpp b/src/DataFlowGraphicsScene.cpp index e300ba86e..83ec8b168 100644 --- a/src/DataFlowGraphicsScene.cpp +++ b/src/DataFlowGraphicsScene.cpp @@ -147,7 +147,7 @@ QMenu *DataFlowGraphicsScene::createSceneMenu(QPointF const scenePos) bool DataFlowGraphicsScene::save() const { QString fileName = QFileDialog::getSaveFileName(nullptr, - tr("Open Flow Scene"), + tr("Save Flow Scene"), QDir::homePath(), tr("Flow Scene Files (*.flow)")); From 8c6b9fc5ba36a648599afdafc15d82bdcfece652 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 13:34:26 +0200 Subject: [PATCH 06/27] Apply clang-format --- examples/calculator_qml/QmlWrapper.cpp | 7 ++--- examples/calculator_qml/QmlWrapper.hpp | 6 ++-- examples/calculator_qml/StringDataModel.hpp | 30 ++++++++++--------- examples/calculator_qml/main.cpp | 2 +- .../QtNodes/internal/AbstractGraphModel.hpp | 9 +++--- .../QtNodes/internal/AbstractNodeGeometry.hpp | 6 ++-- .../QtNodes/internal/DataFlowGraphModel.hpp | 4 ++- .../QtNodes/internal/NodeDelegateModel.hpp | 4 ++- src/GraphicsView.cpp | 1 - 9 files changed, 35 insertions(+), 34 deletions(-) diff --git a/examples/calculator_qml/QmlWrapper.cpp b/examples/calculator_qml/QmlWrapper.cpp index 4ab10bd65..a5f06ce2f 100644 --- a/examples/calculator_qml/QmlWrapper.cpp +++ b/examples/calculator_qml/QmlWrapper.cpp @@ -3,8 +3,8 @@ #include #include -#include #include +#include #include #include #include @@ -91,9 +91,7 @@ bool WidgetView::event(QEvent *event) if (ok) { std::cout << "update\n" << std::flush; update(); - } - else - { + } else { std::cout << "update fails\n" << std::flush; } @@ -208,4 +206,3 @@ void WidgetView::setWidget() m_widget->centerScene(); } - diff --git a/examples/calculator_qml/QmlWrapper.hpp b/examples/calculator_qml/QmlWrapper.hpp index 5af3050d3..7d2675047 100644 --- a/examples/calculator_qml/QmlWrapper.hpp +++ b/examples/calculator_qml/QmlWrapper.hpp @@ -1,14 +1,14 @@ #pragma once +#include #include #include #include -#include -#include #include -using QtNodes::GraphicsView; +#include using QtNodes::DataFlowGraphicsScene; using QtNodes::DataFlowGraphModel; +using QtNodes::GraphicsView; class QuickPaintedView : public QQuickPaintedItem { diff --git a/examples/calculator_qml/StringDataModel.hpp b/examples/calculator_qml/StringDataModel.hpp index 1636cff91..06a4cccdb 100644 --- a/examples/calculator_qml/StringDataModel.hpp +++ b/examples/calculator_qml/StringDataModel.hpp @@ -1,23 +1,24 @@ #pragma once +#include "StringData.hpp" #include #include -#include "StringData.hpp" -using QtNodes::PortType; +using QtNodes::NodeData; +using QtNodes::NodeDataType; using QtNodes::NodeDelegateModel; using QtNodes::PortIndex; -using QtNodes::NodeDataType; -using QtNodes::NodeData; +using QtNodes::PortType; class StringDataModel : public NodeDelegateModel { Q_OBJECT public: StringDataModel() = default; - virtual QString caption() const {return _text->numberAsText();} - virtual QString name() const {return "Text";}; - virtual unsigned int nPorts(PortType portType) const { + virtual QString caption() const { return _text->numberAsText(); } + virtual QString name() const { return "Text"; }; + virtual unsigned int nPorts(PortType portType) const + { unsigned int result = 1; switch (portType) { @@ -36,7 +37,8 @@ class StringDataModel : public NodeDelegateModel return result; } - virtual NodeDataType dataType(PortType portType, PortIndex portIndex) const { + virtual NodeDataType dataType(PortType portType, PortIndex portIndex) const + { switch (portType) { case PortType::In: return StringData().type(); @@ -45,16 +47,16 @@ class StringDataModel : public NodeDelegateModel return StringData().type(); case PortType::None: default: - return{}; + return {}; } } - virtual void setInData(std::shared_ptr nodeData, PortIndex const portIndex) { - } + virtual void setInData(std::shared_ptr nodeData, PortIndex const portIndex) {} - virtual std::shared_ptr outData(PortIndex const port) { - return std::static_pointer_cast(_text); + virtual std::shared_ptr outData(PortIndex const port) + { + return std::static_pointer_cast(_text); } - virtual QWidget *embeddedWidget() {return nullptr;} + virtual QWidget *embeddedWidget() { return nullptr; } private: std::shared_ptr _text = std::make_shared("Hello"); diff --git a/examples/calculator_qml/main.cpp b/examples/calculator_qml/main.cpp index 4df3d65f0..41ee34f33 100644 --- a/examples/calculator_qml/main.cpp +++ b/examples/calculator_qml/main.cpp @@ -5,12 +5,12 @@ #include #include +#include #include #include #include #include #include -#include #include "QmlWrapper.hpp" using QtNodes::ConnectionStyle; diff --git a/include/QtNodes/internal/AbstractGraphModel.hpp b/include/QtNodes/internal/AbstractGraphModel.hpp index 96d2c64bd..bdffe9d82 100644 --- a/include/QtNodes/internal/AbstractGraphModel.hpp +++ b/include/QtNodes/internal/AbstractGraphModel.hpp @@ -52,8 +52,7 @@ class NODE_EDITOR_PUBLIC AbstractGraphModel : public QObject */ virtual std::unordered_set connections(NodeId nodeId, PortType portType, - PortIndex index) const - = 0; + PortIndex index) const = 0; /// Checks if two nodes with the given `connectionId` are connected. virtual bool connectionExists(ConnectionId const connectionId) const = 0; @@ -130,8 +129,10 @@ class NODE_EDITOR_PUBLIC AbstractGraphModel : public QObject * @returns Port Data Type, Port Data, Connection Policy, Port * Caption. */ - virtual QVariant portData(NodeId nodeId, PortType portType, PortIndex index, PortRole role) const - = 0; + virtual QVariant portData(NodeId nodeId, + PortType portType, + PortIndex index, + PortRole role) const = 0; /** * A utility function that unwraps the `QVariant` value returned from the diff --git a/include/QtNodes/internal/AbstractNodeGeometry.hpp b/include/QtNodes/internal/AbstractNodeGeometry.hpp index b30c5a36c..29345e111 100644 --- a/include/QtNodes/internal/AbstractNodeGeometry.hpp +++ b/include/QtNodes/internal/AbstractNodeGeometry.hpp @@ -39,8 +39,7 @@ class NODE_EDITOR_PUBLIC AbstractNodeGeometry /// Port position in node's coordinate system. virtual QPointF portPosition(NodeId const nodeId, PortType const portType, - PortIndex const index) const - = 0; + PortIndex const index) const = 0; /// A convenience function using the `portPosition` and a given transformation. virtual QPointF portScenePosition(NodeId const nodeId, @@ -51,8 +50,7 @@ class NODE_EDITOR_PUBLIC AbstractNodeGeometry /// Defines where to draw port label. The point corresponds to a font baseline. virtual QPointF portTextPosition(NodeId const nodeId, PortType const portType, - PortIndex const portIndex) const - = 0; + PortIndex const portIndex) const = 0; /** * Defines where to start drawing the caption. The point corresponds to a font diff --git a/include/QtNodes/internal/DataFlowGraphModel.hpp b/include/QtNodes/internal/DataFlowGraphModel.hpp index 268800202..0fb99008b 100644 --- a/include/QtNodes/internal/DataFlowGraphModel.hpp +++ b/include/QtNodes/internal/DataFlowGraphModel.hpp @@ -14,7 +14,9 @@ namespace QtNodes { -class NODE_EDITOR_PUBLIC DataFlowGraphModel : public AbstractGraphModel, public Serializable +class NODE_EDITOR_PUBLIC DataFlowGraphModel + : public AbstractGraphModel + , public Serializable { Q_OBJECT diff --git a/include/QtNodes/internal/NodeDelegateModel.hpp b/include/QtNodes/internal/NodeDelegateModel.hpp index 6301164db..dc463dc08 100644 --- a/include/QtNodes/internal/NodeDelegateModel.hpp +++ b/include/QtNodes/internal/NodeDelegateModel.hpp @@ -20,7 +20,9 @@ class StyleCollection; * AbstractGraphModel. * This class is the same what has been called NodeDataModel before v3. */ -class NODE_EDITOR_PUBLIC NodeDelegateModel : public QObject, public Serializable +class NODE_EDITOR_PUBLIC NodeDelegateModel + : public QObject + , public Serializable { Q_OBJECT diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index 27548e125..7e0f06891 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -166,7 +166,6 @@ bool GraphicsView::handleMouseEvent(QMouseEvent *event) QPoint pos = event->pos(); QWidget *child = childAt(pos); - std::cout << (size_t)child << std::endl << std::flush; if (event->type() == QEvent::MouseButtonPress) { m_mouseDownWidget = child; From 285ebc917ff52b5deffe9e73d218dece80063116 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 13:47:15 +0200 Subject: [PATCH 07/27] Remove qml debug messages --- examples/calculator_qml/QmlWrapper.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/examples/calculator_qml/QmlWrapper.cpp b/examples/calculator_qml/QmlWrapper.cpp index a5f06ce2f..cd9168112 100644 --- a/examples/calculator_qml/QmlWrapper.cpp +++ b/examples/calculator_qml/QmlWrapper.cpp @@ -36,7 +36,6 @@ QuickPaintedView::QuickPaintedView(QQuickItem *parent) QSGNode *QuickPaintedView::updatePaintNode(QSGNode *old, UpdatePaintNodeData *data) { - std::cout << "updatePaintNode\n" << std::flush; //! NOTE It is necessary that when UI scaling is displayed without a blur setTextureSize(QSize(width(), height())); QSGNode *n = QQuickPaintedItem::updatePaintNode(old, data); @@ -89,10 +88,7 @@ bool WidgetView::event(QEvent *event) } if (ok) { - std::cout << "update\n" << std::flush; update(); - } else { - std::cout << "update fails\n" << std::flush; } return ok; From dc79eaf46dc473176f930893c6779ea73080baeb Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:11:06 +0200 Subject: [PATCH 08/27] IWYU qml --- examples/calculator_qml/AdditionModel.hpp | 4 +-- examples/calculator_qml/DivisionModel.hpp | 4 +-- .../calculator_qml/MathOperationDataModel.cpp | 2 +- .../calculator_qml/MathOperationDataModel.hpp | 9 +++---- .../calculator_qml/MultiplicationModel.hpp | 9 +++---- .../calculator_qml/NumberDisplayDataModel.cpp | 4 +-- .../calculator_qml/NumberDisplayDataModel.hpp | 12 ++++----- .../calculator_qml/NumberSourceDataModel.cpp | 10 +++---- .../calculator_qml/NumberSourceDataModel.hpp | 10 ++++--- examples/calculator_qml/QmlWrapper.cpp | 27 +++++++++++-------- examples/calculator_qml/QmlWrapper.hpp | 10 +++++-- examples/calculator_qml/StringDataModel.hpp | 3 +++ examples/calculator_qml/SubtractionModel.hpp | 9 +++---- examples/calculator_qml/main.cpp | 20 +++++--------- 14 files changed, 65 insertions(+), 68 deletions(-) diff --git a/examples/calculator_qml/AdditionModel.hpp b/examples/calculator_qml/AdditionModel.hpp index b172b6ae5..2da05b2cc 100644 --- a/examples/calculator_qml/AdditionModel.hpp +++ b/examples/calculator_qml/AdditionModel.hpp @@ -2,10 +2,8 @@ #include "DecimalData.hpp" #include "MathOperationDataModel.hpp" - -#include - #include +#include #include /// The model dictates the number of inputs and outputs for the Node. diff --git a/examples/calculator_qml/DivisionModel.hpp b/examples/calculator_qml/DivisionModel.hpp index 9018450c8..a4f1a15a5 100644 --- a/examples/calculator_qml/DivisionModel.hpp +++ b/examples/calculator_qml/DivisionModel.hpp @@ -2,10 +2,8 @@ #include "DecimalData.hpp" #include "MathOperationDataModel.hpp" - -#include - #include +#include #include /// The model dictates the number of inputs and outputs for the Node. diff --git a/examples/calculator_qml/MathOperationDataModel.cpp b/examples/calculator_qml/MathOperationDataModel.cpp index f6a3a26d0..16252e6b1 100644 --- a/examples/calculator_qml/MathOperationDataModel.cpp +++ b/examples/calculator_qml/MathOperationDataModel.cpp @@ -1,6 +1,6 @@ #include "MathOperationDataModel.hpp" - #include "DecimalData.hpp" +#include "QtNodes/NodeDelegateModel" unsigned int MathOperationDataModel::nPorts(PortType portType) const { diff --git a/examples/calculator_qml/MathOperationDataModel.hpp b/examples/calculator_qml/MathOperationDataModel.hpp index 6d279642b..c360a6648 100644 --- a/examples/calculator_qml/MathOperationDataModel.hpp +++ b/examples/calculator_qml/MathOperationDataModel.hpp @@ -1,13 +1,10 @@ #pragma once +#include +#include +#include #include -#include -#include -#include - -#include - class DecimalData; using QtNodes::NodeData; diff --git a/examples/calculator_qml/MultiplicationModel.hpp b/examples/calculator_qml/MultiplicationModel.hpp index 127ae4011..52ac02618 100644 --- a/examples/calculator_qml/MultiplicationModel.hpp +++ b/examples/calculator_qml/MultiplicationModel.hpp @@ -1,14 +1,11 @@ #pragma once -#include - +#include "DecimalData.hpp" +#include "MathOperationDataModel.hpp" #include +#include #include -#include "MathOperationDataModel.hpp" - -#include "DecimalData.hpp" - /// The model dictates the number of inputs and outputs for the Node. /// In this example it has no logic. class MultiplicationModel : public MathOperationDataModel diff --git a/examples/calculator_qml/NumberDisplayDataModel.cpp b/examples/calculator_qml/NumberDisplayDataModel.cpp index 5086050c8..f6a916970 100644 --- a/examples/calculator_qml/NumberDisplayDataModel.cpp +++ b/examples/calculator_qml/NumberDisplayDataModel.cpp @@ -1,6 +1,6 @@ #include "NumberDisplayDataModel.hpp" - -#include +#include "QtNodes/NodeDelegateModel" +#include NumberDisplayDataModel::NumberDisplayDataModel() : _label{nullptr} diff --git a/examples/calculator_qml/NumberDisplayDataModel.hpp b/examples/calculator_qml/NumberDisplayDataModel.hpp index 78f984f5f..277966ab6 100644 --- a/examples/calculator_qml/NumberDisplayDataModel.hpp +++ b/examples/calculator_qml/NumberDisplayDataModel.hpp @@ -1,12 +1,12 @@ #pragma once -#include - -#include - -#include - #include "DecimalData.hpp" +#include +#include +#include +#include +#include +#include using QtNodes::NodeData; using QtNodes::NodeDataType; diff --git a/examples/calculator_qml/NumberSourceDataModel.cpp b/examples/calculator_qml/NumberSourceDataModel.cpp index f6a7ca55d..8124571ad 100644 --- a/examples/calculator_qml/NumberSourceDataModel.cpp +++ b/examples/calculator_qml/NumberSourceDataModel.cpp @@ -1,10 +1,10 @@ #include "NumberSourceDataModel.hpp" - #include "DecimalData.hpp" - -#include -#include -#include +#include "QtNodes/NodeDelegateModel" +#include +#include +#include +#include NumberSourceDataModel::NumberSourceDataModel() : _lineEdit{nullptr} diff --git a/examples/calculator_qml/NumberSourceDataModel.hpp b/examples/calculator_qml/NumberSourceDataModel.hpp index 8ae4e324a..30b2637bc 100644 --- a/examples/calculator_qml/NumberSourceDataModel.hpp +++ b/examples/calculator_qml/NumberSourceDataModel.hpp @@ -1,11 +1,13 @@ #pragma once +#include +#include +#include +#include +#include +#include #include -#include - -#include - class DecimalData; using QtNodes::NodeData; diff --git a/examples/calculator_qml/QmlWrapper.cpp b/examples/calculator_qml/QmlWrapper.cpp index cd9168112..0b2db62e4 100644 --- a/examples/calculator_qml/QmlWrapper.cpp +++ b/examples/calculator_qml/QmlWrapper.cpp @@ -1,15 +1,4 @@ #include "QmlWrapper.hpp" - -#include - -#include -#include -#include -#include -#include -#include -#include - #include "AdditionModel.hpp" #include "DivisionModel.hpp" #include "MultiplicationModel.hpp" @@ -17,6 +6,22 @@ #include "NumberSourceDataModel.hpp" #include "StringDataModel.hpp" #include "SubtractionModel.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using QtNodes::ConnectionStyle; using QtNodes::DataFlowGraphicsScene; diff --git a/examples/calculator_qml/QmlWrapper.hpp b/examples/calculator_qml/QmlWrapper.hpp index 7d2675047..cd65f9fe6 100644 --- a/examples/calculator_qml/QmlWrapper.hpp +++ b/examples/calculator_qml/QmlWrapper.hpp @@ -1,11 +1,17 @@ #pragma once -#include +#include +#include +#include +#include +#include +#include #include -#include +#include #include #include #include + using QtNodes::DataFlowGraphicsScene; using QtNodes::DataFlowGraphModel; using QtNodes::GraphicsView; diff --git a/examples/calculator_qml/StringDataModel.hpp b/examples/calculator_qml/StringDataModel.hpp index 06a4cccdb..cb21262d9 100644 --- a/examples/calculator_qml/StringDataModel.hpp +++ b/examples/calculator_qml/StringDataModel.hpp @@ -1,7 +1,10 @@ #pragma once #include "StringData.hpp" +#include #include +#include +#include #include using QtNodes::NodeData; diff --git a/examples/calculator_qml/SubtractionModel.hpp b/examples/calculator_qml/SubtractionModel.hpp index ce6e926e3..8ef4c8b06 100644 --- a/examples/calculator_qml/SubtractionModel.hpp +++ b/examples/calculator_qml/SubtractionModel.hpp @@ -1,13 +1,10 @@ #pragma once +#include "DecimalData.hpp" +#include "MathOperationDataModel.hpp" #include -#include - #include - -#include "MathOperationDataModel.hpp" - -#include "DecimalData.hpp" +#include /// The model dictates the number of inputs and outputs for the Node. /// In this example it has no logic. diff --git a/examples/calculator_qml/main.cpp b/examples/calculator_qml/main.cpp index 41ee34f33..73cffa2c0 100644 --- a/examples/calculator_qml/main.cpp +++ b/examples/calculator_qml/main.cpp @@ -1,18 +1,12 @@ -#include -#include -#include -#include -#include -#include - -#include +#include "QmlWrapper.hpp" +#include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include -#include "QmlWrapper.hpp" using QtNodes::ConnectionStyle; static void setStyle() From 31a267ea4affc045d2df8dc706292dac6f4e006c Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:11:49 +0200 Subject: [PATCH 09/27] IWYU --- examples/calculator/AdditionModel.hpp | 4 +- examples/calculator/DivisionModel.hpp | 4 +- .../calculator/MathOperationDataModel.cpp | 2 +- .../calculator/MathOperationDataModel.hpp | 9 ++-- examples/calculator/MultiplicationModel.hpp | 9 ++-- .../calculator/NumberDisplayDataModel.cpp | 4 +- .../calculator/NumberDisplayDataModel.hpp | 12 ++--- examples/calculator/NumberSourceDataModel.cpp | 10 ++-- examples/calculator/NumberSourceDataModel.hpp | 10 ++-- examples/calculator/SubtractionModel.hpp | 9 ++-- examples/calculator/headless_main.cpp | 7 ++- examples/calculator/main.cpp | 28 +++++------ examples/connection_colors/main.cpp | 13 ++--- examples/connection_colors/models.hpp | 9 ++-- examples/dynamic_ports/DynamicPortsModel.cpp | 16 ++++--- examples/dynamic_ports/DynamicPortsModel.hpp | 13 +++-- .../dynamic_ports/PortAddRemoveWidget.cpp | 8 +++- .../dynamic_ports/PortAddRemoveWidget.hpp | 9 ++-- examples/dynamic_ports/main.cpp | 37 +++++++++++---- .../DelegateNodeModel.hpp | 9 ++-- examples/lock_nodes_and_connections/main.cpp | 26 +++++----- .../resizable_images/ImageLoaderModel.cpp | 10 ++-- .../resizable_images/ImageLoaderModel.hpp | 16 +++---- examples/resizable_images/ImageShowModel.cpp | 9 ++-- examples/resizable_images/ImageShowModel.hpp | 12 ++--- examples/resizable_images/PixmapData.hpp | 1 - examples/resizable_images/main.cpp | 17 ++++--- .../simple_graph_model/SimpleGraphModel.cpp | 10 ++++ .../simple_graph_model/SimpleGraphModel.hpp | 13 +++-- examples/simple_graph_model/main.cpp | 19 +++++--- examples/styles/main.cpp | 13 ++--- examples/styles/models.hpp | 11 +++-- examples/text/TextDisplayDataModel.cpp | 1 + examples/text/TextDisplayDataModel.hpp | 12 ++--- examples/text/TextSourceDataModel.cpp | 5 +- examples/text/TextSourceDataModel.hpp | 9 ++-- examples/text/main.cpp | 12 ++--- examples/vertical_layout/SimpleGraphModel.cpp | 9 ++++ examples/vertical_layout/SimpleGraphModel.hpp | 13 +++-- examples/vertical_layout/main.cpp | 21 ++++++--- include/QtNodes/ConnectionIdHash | 1 + .../QtNodes/internal/AbstractGraphModel.hpp | 17 ++++--- .../QtNodes/internal/AbstractNodeGeometry.hpp | 3 +- .../QtNodes/internal/AbstractNodePainter.hpp | 3 +- .../QtNodes/internal/BasicGraphicsScene.hpp | 29 +++++------- .../internal/ConnectionGraphicsObject.hpp | 17 ++++--- include/QtNodes/internal/ConnectionIdHash.hpp | 5 +- .../QtNodes/internal/ConnectionIdUtils.hpp | 4 +- include/QtNodes/internal/ConnectionState.hpp | 7 +-- include/QtNodes/internal/ConnectionStyle.hpp | 5 +- .../QtNodes/internal/DataFlowGraphModel.hpp | 20 +++++--- .../internal/DataFlowGraphicsScene.hpp | 5 ++ .../DefaultHorizontalNodeGeometry.hpp | 12 +++-- .../QtNodes/internal/DefaultNodePainter.hpp | 11 +---- .../internal/DefaultVerticalNodeGeometry.hpp | 12 +++-- include/QtNodes/internal/Definitions.hpp | 9 ++-- include/QtNodes/internal/GraphicsView.hpp | 16 ++++++- .../QtNodes/internal/GraphicsViewStyle.hpp | 5 +- .../internal/NodeConnectionInteraction.hpp | 5 +- include/QtNodes/internal/NodeData.hpp | 4 +- .../QtNodes/internal/NodeDelegateModel.hpp | 11 ++--- .../internal/NodeDelegateModelRegistry.hpp | 8 +--- .../QtNodes/internal/NodeGraphicsObject.hpp | 17 +++++-- include/QtNodes/internal/NodeState.hpp | 11 +---- include/QtNodes/internal/NodeStyle.hpp | 5 +- include/QtNodes/internal/QStringStdHash.hpp | 1 - include/QtNodes/internal/QUuidStdHash.hpp | 1 - include/QtNodes/internal/StyleCollection.hpp | 3 +- include/QtNodes/internal/UndoCommands.hpp | 9 ++-- include/QtNodes/internal/locateNode.hpp | 4 +- src/AbstractGraphModel.cpp | 5 +- src/AbstractNodeGeometry.cpp | 9 ++-- src/BasicGraphicsScene.cpp | 24 ++-------- src/ConnectionGraphicsObject.cpp | 18 +++---- src/ConnectionState.cpp | 4 -- src/ConnectionStyle.cpp | 15 +++--- src/DataFlowGraphModel.cpp | 19 ++++++-- src/DataFlowGraphicsScene.cpp | 47 ++++++++++--------- src/DefaultConnectionPainter.cpp | 25 ++++++++-- src/DefaultHorizontalNodeGeometry.cpp | 10 ++-- src/DefaultNodePainter.cpp | 29 ++++++++++-- src/DefaultVerticalNodeGeometry.cpp | 10 ++-- src/GraphicsView.cpp | 37 +++++++-------- src/GraphicsViewStyle.cpp | 11 ++--- src/NodeConnectionInteraction.cpp | 8 ++-- src/NodeDelegateModel.cpp | 2 +- src/NodeDelegateModelRegistry.cpp | 4 +- src/NodeGraphicsObject.cpp | 27 +++++++---- src/NodeState.cpp | 2 +- src/NodeStyle.cpp | 14 ++---- src/UndoCommands.cpp | 26 ++++++---- src/locateNode.cpp | 13 ++--- test/include/ApplicationSetup.hpp | 1 - test/include/Stringify.hpp | 4 +- test/include/StubNodeDataModel.hpp | 1 - test/src/TestDataModelRegistry.cpp | 6 +-- test/src/TestDragging.cpp | 5 +- test/src/TestFlowScene.cpp | 9 ++-- test/src/TestNodeGraphicsObject.cpp | 5 +- 99 files changed, 599 insertions(+), 512 deletions(-) create mode 100644 include/QtNodes/ConnectionIdHash diff --git a/examples/calculator/AdditionModel.hpp b/examples/calculator/AdditionModel.hpp index b172b6ae5..2da05b2cc 100644 --- a/examples/calculator/AdditionModel.hpp +++ b/examples/calculator/AdditionModel.hpp @@ -2,10 +2,8 @@ #include "DecimalData.hpp" #include "MathOperationDataModel.hpp" - -#include - #include +#include #include /// The model dictates the number of inputs and outputs for the Node. diff --git a/examples/calculator/DivisionModel.hpp b/examples/calculator/DivisionModel.hpp index 9018450c8..a4f1a15a5 100644 --- a/examples/calculator/DivisionModel.hpp +++ b/examples/calculator/DivisionModel.hpp @@ -2,10 +2,8 @@ #include "DecimalData.hpp" #include "MathOperationDataModel.hpp" - -#include - #include +#include #include /// The model dictates the number of inputs and outputs for the Node. diff --git a/examples/calculator/MathOperationDataModel.cpp b/examples/calculator/MathOperationDataModel.cpp index f6a3a26d0..16252e6b1 100644 --- a/examples/calculator/MathOperationDataModel.cpp +++ b/examples/calculator/MathOperationDataModel.cpp @@ -1,6 +1,6 @@ #include "MathOperationDataModel.hpp" - #include "DecimalData.hpp" +#include "QtNodes/NodeDelegateModel" unsigned int MathOperationDataModel::nPorts(PortType portType) const { diff --git a/examples/calculator/MathOperationDataModel.hpp b/examples/calculator/MathOperationDataModel.hpp index 6d279642b..c360a6648 100644 --- a/examples/calculator/MathOperationDataModel.hpp +++ b/examples/calculator/MathOperationDataModel.hpp @@ -1,13 +1,10 @@ #pragma once +#include +#include +#include #include -#include -#include -#include - -#include - class DecimalData; using QtNodes::NodeData; diff --git a/examples/calculator/MultiplicationModel.hpp b/examples/calculator/MultiplicationModel.hpp index 127ae4011..52ac02618 100644 --- a/examples/calculator/MultiplicationModel.hpp +++ b/examples/calculator/MultiplicationModel.hpp @@ -1,14 +1,11 @@ #pragma once -#include - +#include "DecimalData.hpp" +#include "MathOperationDataModel.hpp" #include +#include #include -#include "MathOperationDataModel.hpp" - -#include "DecimalData.hpp" - /// The model dictates the number of inputs and outputs for the Node. /// In this example it has no logic. class MultiplicationModel : public MathOperationDataModel diff --git a/examples/calculator/NumberDisplayDataModel.cpp b/examples/calculator/NumberDisplayDataModel.cpp index 5086050c8..f6a916970 100644 --- a/examples/calculator/NumberDisplayDataModel.cpp +++ b/examples/calculator/NumberDisplayDataModel.cpp @@ -1,6 +1,6 @@ #include "NumberDisplayDataModel.hpp" - -#include +#include "QtNodes/NodeDelegateModel" +#include NumberDisplayDataModel::NumberDisplayDataModel() : _label{nullptr} diff --git a/examples/calculator/NumberDisplayDataModel.hpp b/examples/calculator/NumberDisplayDataModel.hpp index 78f984f5f..277966ab6 100644 --- a/examples/calculator/NumberDisplayDataModel.hpp +++ b/examples/calculator/NumberDisplayDataModel.hpp @@ -1,12 +1,12 @@ #pragma once -#include - -#include - -#include - #include "DecimalData.hpp" +#include +#include +#include +#include +#include +#include using QtNodes::NodeData; using QtNodes::NodeDataType; diff --git a/examples/calculator/NumberSourceDataModel.cpp b/examples/calculator/NumberSourceDataModel.cpp index f6a7ca55d..8124571ad 100644 --- a/examples/calculator/NumberSourceDataModel.cpp +++ b/examples/calculator/NumberSourceDataModel.cpp @@ -1,10 +1,10 @@ #include "NumberSourceDataModel.hpp" - #include "DecimalData.hpp" - -#include -#include -#include +#include "QtNodes/NodeDelegateModel" +#include +#include +#include +#include NumberSourceDataModel::NumberSourceDataModel() : _lineEdit{nullptr} diff --git a/examples/calculator/NumberSourceDataModel.hpp b/examples/calculator/NumberSourceDataModel.hpp index 8ae4e324a..30b2637bc 100644 --- a/examples/calculator/NumberSourceDataModel.hpp +++ b/examples/calculator/NumberSourceDataModel.hpp @@ -1,11 +1,13 @@ #pragma once +#include +#include +#include +#include +#include +#include #include -#include - -#include - class DecimalData; using QtNodes::NodeData; diff --git a/examples/calculator/SubtractionModel.hpp b/examples/calculator/SubtractionModel.hpp index ce6e926e3..8ef4c8b06 100644 --- a/examples/calculator/SubtractionModel.hpp +++ b/examples/calculator/SubtractionModel.hpp @@ -1,13 +1,10 @@ #pragma once +#include "DecimalData.hpp" +#include "MathOperationDataModel.hpp" #include -#include - #include - -#include "MathOperationDataModel.hpp" - -#include "DecimalData.hpp" +#include /// The model dictates the number of inputs and outputs for the Node. /// In this example it has no logic. diff --git a/examples/calculator/headless_main.cpp b/examples/calculator/headless_main.cpp index e4dafa022..0699c68da 100644 --- a/examples/calculator/headless_main.cpp +++ b/examples/calculator/headless_main.cpp @@ -4,9 +4,12 @@ #include "NumberDisplayDataModel.hpp" #include "NumberSourceDataModel.hpp" #include "SubtractionModel.hpp" - +#include +#include +#include +#include #include -#include +#include using QtNodes::DataFlowGraphModel; using QtNodes::NodeDelegateModelRegistry; diff --git a/examples/calculator/main.cpp b/examples/calculator/main.cpp index 980c0f23a..67ec28abd 100644 --- a/examples/calculator/main.cpp +++ b/examples/calculator/main.cpp @@ -1,23 +1,23 @@ -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - #include "AdditionModel.hpp" #include "DivisionModel.hpp" #include "MultiplicationModel.hpp" #include "NumberDisplayDataModel.hpp" #include "NumberSourceDataModel.hpp" #include "SubtractionModel.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using QtNodes::ConnectionStyle; using QtNodes::DataFlowGraphicsScene; diff --git a/examples/connection_colors/main.cpp b/examples/connection_colors/main.cpp index 2438ba733..e1f43e90d 100644 --- a/examples/connection_colors/main.cpp +++ b/examples/connection_colors/main.cpp @@ -1,13 +1,10 @@ -#include - -#include -#include +#include "QtNodes/internal/ConnectionStyle.hpp" +#include "QtNodes/internal/StyleCollection.hpp" +#include "models.hpp" +#include +#include #include #include -#include -#include - -#include "models.hpp" using QtNodes::ConnectionStyle; using QtNodes::DataFlowGraphicsScene; diff --git a/examples/connection_colors/models.hpp b/examples/connection_colors/models.hpp index ffc10afe0..5d348e8d4 100644 --- a/examples/connection_colors/models.hpp +++ b/examples/connection_colors/models.hpp @@ -1,11 +1,10 @@ #pragma once -#include - -#include -#include - #include +#include +#include +#include +#include using QtNodes::NodeData; using QtNodes::NodeDataType; diff --git a/examples/dynamic_ports/DynamicPortsModel.cpp b/examples/dynamic_ports/DynamicPortsModel.cpp index 1d8d537e1..ccefc698d 100644 --- a/examples/dynamic_ports/DynamicPortsModel.cpp +++ b/examples/dynamic_ports/DynamicPortsModel.cpp @@ -1,12 +1,16 @@ #include "DynamicPortsModel.hpp" - #include "PortAddRemoveWidget.hpp" - -#include - -#include - +#include "QtNodes/AbstractGraphModel" +#include "QtNodes/StyleCollection" +#include #include +#include +#include +#include +#include +#include +#include +#include DynamicPortsModel::DynamicPortsModel() : _nextNodeId{0} diff --git a/examples/dynamic_ports/DynamicPortsModel.hpp b/examples/dynamic_ports/DynamicPortsModel.hpp index af8ba6893..6f1e1ca1e 100644 --- a/examples/dynamic_ports/DynamicPortsModel.hpp +++ b/examples/dynamic_ports/DynamicPortsModel.hpp @@ -1,10 +1,15 @@ #pragma once -#include -#include -#include - +#include +#include +#include +#include +#include +#include +#include +#include #include +#include // IWYU pragma: keep #include using ConnectionId = QtNodes::ConnectionId; diff --git a/examples/dynamic_ports/PortAddRemoveWidget.cpp b/examples/dynamic_ports/PortAddRemoveWidget.cpp index 7af6397ba..487297e3e 100644 --- a/examples/dynamic_ports/PortAddRemoveWidget.cpp +++ b/examples/dynamic_ports/PortAddRemoveWidget.cpp @@ -1,6 +1,12 @@ #include "PortAddRemoveWidget.hpp" - #include "DynamicPortsModel.hpp" +#include "QtNodes/Definitions" +#include +#include +#include +#include +#include +#include PortAddRemoveWidget::PortAddRemoveWidget(unsigned int nInPorts, unsigned int nOutPorts, diff --git a/examples/dynamic_ports/PortAddRemoveWidget.hpp b/examples/dynamic_ports/PortAddRemoveWidget.hpp index 20dffdef3..7233d5173 100644 --- a/examples/dynamic_ports/PortAddRemoveWidget.hpp +++ b/examples/dynamic_ports/PortAddRemoveWidget.hpp @@ -1,12 +1,11 @@ #pragma once -#include -#include - -#include - +#include #include +#include #include +#include +#include using QtNodes::NodeId; using QtNodes::PortIndex; diff --git a/examples/dynamic_ports/main.cpp b/examples/dynamic_ports/main.cpp index 4ef2edaf8..bb7d248ab 100644 --- a/examples/dynamic_ports/main.cpp +++ b/examples/dynamic_ports/main.cpp @@ -1,16 +1,33 @@ -#include -#include -#include -#include - +#include "DynamicPortsModel.hpp" #include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include -#include -#include - -#include "DynamicPortsModel.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using QtNodes::BasicGraphicsScene; using QtNodes::ConnectionStyle; diff --git a/examples/lock_nodes_and_connections/DelegateNodeModel.hpp b/examples/lock_nodes_and_connections/DelegateNodeModel.hpp index 6b7c13292..b42393421 100644 --- a/examples/lock_nodes_and_connections/DelegateNodeModel.hpp +++ b/examples/lock_nodes_and_connections/DelegateNodeModel.hpp @@ -1,11 +1,10 @@ #pragma once -#include - -#include -#include - #include +#include +#include +#include +#include using QtNodes::NodeData; using QtNodes::NodeDataType; diff --git a/examples/lock_nodes_and_connections/main.cpp b/examples/lock_nodes_and_connections/main.cpp index d0edec3a0..d7c6e4c25 100644 --- a/examples/lock_nodes_and_connections/main.cpp +++ b/examples/lock_nodes_and_connections/main.cpp @@ -1,16 +1,20 @@ -#include -#include -#include - -#include -#include -#include -#include -#include -#include - #include "DataFlowModel.hpp" #include "DelegateNodeModel.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using QtNodes::DataFlowGraphicsScene; using QtNodes::GraphicsView; diff --git a/examples/resizable_images/ImageLoaderModel.cpp b/examples/resizable_images/ImageLoaderModel.cpp index 8cb600a99..d62a3a447 100644 --- a/examples/resizable_images/ImageLoaderModel.cpp +++ b/examples/resizable_images/ImageLoaderModel.cpp @@ -1,9 +1,9 @@ #include "ImageLoaderModel.hpp" - -#include -#include - -#include +#include "QtNodes/NodeDelegateModel" +#include +#include +#include +#include ImageLoaderModel::ImageLoaderModel() : _label(new QLabel("Double click to load image")) diff --git a/examples/resizable_images/ImageLoaderModel.hpp b/examples/resizable_images/ImageLoaderModel.hpp index 394cf28a9..3a65ba7c8 100644 --- a/examples/resizable_images/ImageLoaderModel.hpp +++ b/examples/resizable_images/ImageLoaderModel.hpp @@ -1,14 +1,14 @@ #pragma once -#include - -#include -#include - -#include -#include - #include "PixmapData.hpp" +#include +#include +#include +#include +#include +#include +#include +#include using QtNodes::NodeData; using QtNodes::NodeDataType; diff --git a/examples/resizable_images/ImageShowModel.cpp b/examples/resizable_images/ImageShowModel.cpp index 1d62f9f3f..41c6715f5 100644 --- a/examples/resizable_images/ImageShowModel.cpp +++ b/examples/resizable_images/ImageShowModel.cpp @@ -1,13 +1,10 @@ #include "ImageShowModel.hpp" - #include "PixmapData.hpp" - +#include +#include +#include #include -#include -#include -#include - ImageShowModel::ImageShowModel() : _label(new QLabel("Image will appear here")) { diff --git a/examples/resizable_images/ImageShowModel.hpp b/examples/resizable_images/ImageShowModel.hpp index 7e4c8a06c..0c4b90411 100644 --- a/examples/resizable_images/ImageShowModel.hpp +++ b/examples/resizable_images/ImageShowModel.hpp @@ -1,12 +1,12 @@ #pragma once -#include - -#include -#include - +#include +#include +#include +#include +#include +#include #include -#include using QtNodes::NodeData; using QtNodes::NodeDataType; diff --git a/examples/resizable_images/PixmapData.hpp b/examples/resizable_images/PixmapData.hpp index a907857a8..76fad5c69 100644 --- a/examples/resizable_images/PixmapData.hpp +++ b/examples/resizable_images/PixmapData.hpp @@ -1,7 +1,6 @@ #pragma once #include - #include using QtNodes::NodeData; diff --git a/examples/resizable_images/main.cpp b/examples/resizable_images/main.cpp index 2e0e91e5f..79a9ef16d 100644 --- a/examples/resizable_images/main.cpp +++ b/examples/resizable_images/main.cpp @@ -1,14 +1,13 @@ -#include -#include -#include -#include -#include - -#include -#include - #include "ImageLoaderModel.hpp" #include "ImageShowModel.hpp" +#include "QtNodes/internal/ConnectionStyle.hpp" +#include +#include +#include +#include +#include +#include +#include using QtNodes::ConnectionStyle; using QtNodes::DataFlowGraphicsScene; diff --git a/examples/simple_graph_model/SimpleGraphModel.cpp b/examples/simple_graph_model/SimpleGraphModel.cpp index 7c04440f0..dc3c0cfec 100644 --- a/examples/simple_graph_model/SimpleGraphModel.cpp +++ b/examples/simple_graph_model/SimpleGraphModel.cpp @@ -1,4 +1,14 @@ #include "SimpleGraphModel.hpp" +#include "QtNodes/AbstractGraphModel" +#include "QtNodes/ConnectionIdUtils" +#include "QtNodes/StyleCollection" +#include +#include +#include +#include +#include +#include +#include SimpleGraphModel::SimpleGraphModel() : _nextNodeId{0} diff --git a/examples/simple_graph_model/SimpleGraphModel.hpp b/examples/simple_graph_model/SimpleGraphModel.hpp index e3d07213c..c27c885fb 100644 --- a/examples/simple_graph_model/SimpleGraphModel.hpp +++ b/examples/simple_graph_model/SimpleGraphModel.hpp @@ -1,11 +1,14 @@ #pragma once -#include -#include -#include - +#include +#include +#include +#include +#include +#include +#include +#include #include -#include #include using ConnectionId = QtNodes::ConnectionId; diff --git a/examples/simple_graph_model/main.cpp b/examples/simple_graph_model/main.cpp index a6356ba33..89df4c1f3 100644 --- a/examples/simple_graph_model/main.cpp +++ b/examples/simple_graph_model/main.cpp @@ -1,14 +1,19 @@ +#include "SimpleGraphModel.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include #include #include -#include -#include -#include - -#include "SimpleGraphModel.hpp" - using QtNodes::BasicGraphicsScene; using QtNodes::ConnectionStyle; using QtNodes::GraphicsView; diff --git a/examples/styles/main.cpp b/examples/styles/main.cpp index 528780583..10a9643fa 100644 --- a/examples/styles/main.cpp +++ b/examples/styles/main.cpp @@ -1,15 +1,10 @@ +#include "QtNodes/internal/ConnectionStyle.hpp" +#include "QtNodes/internal/StyleCollection.hpp" #include "models.hpp" - -#include -#include +#include +#include #include #include -#include -#include -#include -#include - -#include using QtNodes::ConnectionStyle; using QtNodes::DataFlowGraphicsScene; diff --git a/examples/styles/models.hpp b/examples/styles/models.hpp index 1352e4bfc..1f7b2d2a4 100644 --- a/examples/styles/models.hpp +++ b/examples/styles/models.hpp @@ -1,11 +1,12 @@ #pragma once -#include - -#include -#include - #include +#include +#include +#include +#include +#include +#include using QtNodes::NodeData; using QtNodes::NodeDataType; diff --git a/examples/text/TextDisplayDataModel.cpp b/examples/text/TextDisplayDataModel.cpp index 1ae83202e..bfa5d395e 100644 --- a/examples/text/TextDisplayDataModel.cpp +++ b/examples/text/TextDisplayDataModel.cpp @@ -1,4 +1,5 @@ #include "TextDisplayDataModel.hpp" +#include "QtNodes/NodeDelegateModel" TextDisplayDataModel::TextDisplayDataModel() : _label(new QLabel("Resulting Text")) diff --git a/examples/text/TextDisplayDataModel.hpp b/examples/text/TextDisplayDataModel.hpp index 73c53e99c..5f00df9d0 100644 --- a/examples/text/TextDisplayDataModel.hpp +++ b/examples/text/TextDisplayDataModel.hpp @@ -1,15 +1,13 @@ #pragma once #include "TextData.hpp" - +#include +#include +#include +#include +#include #include -#include -#include - -#include -#include - using QtNodes::ConnectionPolicy; using QtNodes::NodeData; using QtNodes::NodeDelegateModel; diff --git a/examples/text/TextSourceDataModel.cpp b/examples/text/TextSourceDataModel.cpp index 244da4011..59e11cd14 100644 --- a/examples/text/TextSourceDataModel.cpp +++ b/examples/text/TextSourceDataModel.cpp @@ -1,6 +1,7 @@ #include "TextSourceDataModel.hpp" - -#include +#include "QtNodes/NodeDelegateModel" +#include +#include TextSourceDataModel::TextSourceDataModel() : _lineEdit{nullptr} diff --git a/examples/text/TextSourceDataModel.hpp b/examples/text/TextSourceDataModel.hpp index 8e5ca69a8..b05ca8367 100644 --- a/examples/text/TextSourceDataModel.hpp +++ b/examples/text/TextSourceDataModel.hpp @@ -1,13 +1,12 @@ #pragma once -#include - #include "TextData.hpp" - +#include +#include +#include +#include #include -#include - using QtNodes::NodeData; using QtNodes::NodeDelegateModel; using QtNodes::PortIndex; diff --git a/examples/text/main.cpp b/examples/text/main.cpp index 2d22792b8..aa919f3e5 100644 --- a/examples/text/main.cpp +++ b/examples/text/main.cpp @@ -1,13 +1,9 @@ -#include -#include -#include -#include -#include - -#include - #include "TextDisplayDataModel.hpp" #include "TextSourceDataModel.hpp" +#include +#include +#include +#include using QtNodes::DataFlowGraphicsScene; using QtNodes::DataFlowGraphModel; diff --git a/examples/vertical_layout/SimpleGraphModel.cpp b/examples/vertical_layout/SimpleGraphModel.cpp index 5b5e3b8b1..dadc0d015 100644 --- a/examples/vertical_layout/SimpleGraphModel.cpp +++ b/examples/vertical_layout/SimpleGraphModel.cpp @@ -1,4 +1,13 @@ #include "SimpleGraphModel.hpp" +#include "QtNodes/AbstractGraphModel" +#include "QtNodes/ConnectionIdUtils" +#include "QtNodes/StyleCollection" +#include +#include +#include +#include +#include +#include SimpleGraphModel::SimpleGraphModel() : _nextNodeId{0} diff --git a/examples/vertical_layout/SimpleGraphModel.hpp b/examples/vertical_layout/SimpleGraphModel.hpp index f9d1fd4d4..6ab4608ce 100644 --- a/examples/vertical_layout/SimpleGraphModel.hpp +++ b/examples/vertical_layout/SimpleGraphModel.hpp @@ -1,11 +1,14 @@ #pragma once -#include -#include -#include - +#include +#include +#include +#include +#include +#include +#include +#include #include -#include #include using ConnectionId = QtNodes::ConnectionId; diff --git a/examples/vertical_layout/main.cpp b/examples/vertical_layout/main.cpp index e036c157a..29ac9bb65 100644 --- a/examples/vertical_layout/main.cpp +++ b/examples/vertical_layout/main.cpp @@ -1,13 +1,22 @@ +#include "SimpleGraphModel.hpp" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include #include -#include -#include -#include -#include - -#include "SimpleGraphModel.hpp" using QtNodes::BasicGraphicsScene; using QtNodes::GraphicsView; diff --git a/include/QtNodes/ConnectionIdHash b/include/QtNodes/ConnectionIdHash new file mode 100644 index 000000000..587d4d99a --- /dev/null +++ b/include/QtNodes/ConnectionIdHash @@ -0,0 +1 @@ +#include "internal/ConnectionIdHash.hpp" diff --git a/include/QtNodes/internal/AbstractGraphModel.hpp b/include/QtNodes/internal/AbstractGraphModel.hpp index bdffe9d82..82d7d06c0 100644 --- a/include/QtNodes/internal/AbstractGraphModel.hpp +++ b/include/QtNodes/internal/AbstractGraphModel.hpp @@ -1,16 +1,15 @@ #pragma once +#include "ConnectionIdHash.hpp" // IWYU pragma: keep +#include "Definitions.hpp" #include "Export.hpp" - -#include #include - -#include -#include -#include - -#include "ConnectionIdHash.hpp" -#include "Definitions.hpp" +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/AbstractNodeGeometry.hpp b/include/QtNodes/internal/AbstractNodeGeometry.hpp index 29345e111..bedd234d4 100644 --- a/include/QtNodes/internal/AbstractNodeGeometry.hpp +++ b/include/QtNodes/internal/AbstractNodeGeometry.hpp @@ -2,7 +2,8 @@ #include "Definitions.hpp" #include "Export.hpp" - +#include +#include #include #include #include diff --git a/include/QtNodes/internal/AbstractNodePainter.hpp b/include/QtNodes/internal/AbstractNodePainter.hpp index cd4c7d63e..aa9d215d8 100644 --- a/include/QtNodes/internal/AbstractNodePainter.hpp +++ b/include/QtNodes/internal/AbstractNodePainter.hpp @@ -1,8 +1,7 @@ #pragma once -#include - #include "Export.hpp" +#include class QPainter; diff --git a/include/QtNodes/internal/BasicGraphicsScene.hpp b/include/QtNodes/internal/BasicGraphicsScene.hpp index 59544980d..e27c9cf0e 100644 --- a/include/QtNodes/internal/BasicGraphicsScene.hpp +++ b/include/QtNodes/internal/BasicGraphicsScene.hpp @@ -1,32 +1,27 @@ #pragma once -#include -#include -#include - -#include -#include -#include -#include - #include "AbstractGraphModel.hpp" #include "AbstractNodeGeometry.hpp" -#include "ConnectionIdHash.hpp" +#include "ConnectionGraphicsObject.hpp" +#include "ConnectionIdHash.hpp" // IWYU pragma: keep #include "Definitions.hpp" #include "Export.hpp" - -#include "QUuidStdHash.hpp" - -class QUndoStack; +#include "NodeGraphicsObject.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { class AbstractConnectionPainter; class AbstractGraphModel; class AbstractNodePainter; -class ConnectionGraphicsObject; -class NodeGraphicsObject; -class NodeStyle; /// An instance of QGraphicsScene, holds connections and nodes. class NODE_EDITOR_PUBLIC BasicGraphicsScene : public QGraphicsScene diff --git a/include/QtNodes/internal/ConnectionGraphicsObject.hpp b/include/QtNodes/internal/ConnectionGraphicsObject.hpp index f0e569d74..4b2856b08 100644 --- a/include/QtNodes/internal/ConnectionGraphicsObject.hpp +++ b/include/QtNodes/internal/ConnectionGraphicsObject.hpp @@ -1,14 +1,17 @@ #pragma once -#include - -#include -#include - #include "ConnectionState.hpp" #include "Definitions.hpp" - -class QGraphicsSceneMouseEvent; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/ConnectionIdHash.hpp b/include/QtNodes/internal/ConnectionIdHash.hpp index 09eaced6c..689d70803 100644 --- a/include/QtNodes/internal/ConnectionIdHash.hpp +++ b/include/QtNodes/internal/ConnectionIdHash.hpp @@ -1,8 +1,9 @@ #pragma once -#include - #include "Definitions.hpp" +#include +#include +#include inline void hash_combine(std::size_t &seed) { diff --git a/include/QtNodes/internal/ConnectionIdUtils.hpp b/include/QtNodes/internal/ConnectionIdUtils.hpp index 7f70a1b4b..b004df39e 100644 --- a/include/QtNodes/internal/ConnectionIdUtils.hpp +++ b/include/QtNodes/internal/ConnectionIdUtils.hpp @@ -1,11 +1,9 @@ #pragma once #include "Definitions.hpp" - -#include - #include #include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/ConnectionState.hpp b/include/QtNodes/internal/ConnectionState.hpp index ddd31cdb6..8fe1b8bb6 100644 --- a/include/QtNodes/internal/ConnectionState.hpp +++ b/include/QtNodes/internal/ConnectionState.hpp @@ -1,12 +1,7 @@ #pragma once -#include - -#include "Export.hpp" - #include "Definitions.hpp" - -class QPointF; +#include "Export.hpp" namespace QtNodes { diff --git a/include/QtNodes/internal/ConnectionStyle.hpp b/include/QtNodes/internal/ConnectionStyle.hpp index b718bcfae..1331dd1b0 100644 --- a/include/QtNodes/internal/ConnectionStyle.hpp +++ b/include/QtNodes/internal/ConnectionStyle.hpp @@ -1,9 +1,10 @@ #pragma once -#include - #include "Export.hpp" #include "Style.hpp" +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/DataFlowGraphModel.hpp b/include/QtNodes/internal/DataFlowGraphModel.hpp index 0fb99008b..996ec1044 100644 --- a/include/QtNodes/internal/DataFlowGraphModel.hpp +++ b/include/QtNodes/internal/DataFlowGraphModel.hpp @@ -1,16 +1,22 @@ #pragma once #include "AbstractGraphModel.hpp" -#include "ConnectionIdUtils.hpp" +#include "ConnectionIdHash.hpp" // IWYU pragma: keep +#include "Definitions.hpp" +#include "Export.hpp" +#include "NodeDelegateModel.hpp" #include "NodeDelegateModelRegistry.hpp" #include "Serializable.hpp" -#include "StyleCollection.hpp" - -#include "Export.hpp" - -#include - #include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/DataFlowGraphicsScene.hpp b/include/QtNodes/internal/DataFlowGraphicsScene.hpp index 8f7b193f8..76eb6e2a5 100644 --- a/include/QtNodes/internal/DataFlowGraphicsScene.hpp +++ b/include/QtNodes/internal/DataFlowGraphicsScene.hpp @@ -2,7 +2,12 @@ #include "BasicGraphicsScene.hpp" #include "DataFlowGraphModel.hpp" +#include "Definitions.hpp" #include "Export.hpp" +#include +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp b/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp index f5f660784..3c98ab239 100644 --- a/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp +++ b/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp @@ -1,14 +1,16 @@ #pragma once #include "AbstractNodeGeometry.hpp" - -#include +#include "Definitions.hpp" +#include "Export.hpp" +#include +#include +#include +#include +#include namespace QtNodes { -class AbstractGraphModel; -class BasicGraphicsScene; - class NODE_EDITOR_PUBLIC DefaultHorizontalNodeGeometry : public AbstractNodeGeometry { public: diff --git a/include/QtNodes/internal/DefaultNodePainter.hpp b/include/QtNodes/internal/DefaultNodePainter.hpp index 484969f9a..13ebb88f1 100644 --- a/include/QtNodes/internal/DefaultNodePainter.hpp +++ b/include/QtNodes/internal/DefaultNodePainter.hpp @@ -1,18 +1,11 @@ #pragma once -#include - #include "AbstractNodePainter.hpp" -#include "Definitions.hpp" +#include "Export.hpp" +#include namespace QtNodes { -class BasicGraphicsScene; -class GraphModel; -class NodeGeometry; -class NodeGraphicsObject; -class NodeState; - /// @ Lightweight class incapsulating paint code. class NODE_EDITOR_PUBLIC DefaultNodePainter : public AbstractNodePainter { diff --git a/include/QtNodes/internal/DefaultVerticalNodeGeometry.hpp b/include/QtNodes/internal/DefaultVerticalNodeGeometry.hpp index ae9b62876..4c73e69f4 100644 --- a/include/QtNodes/internal/DefaultVerticalNodeGeometry.hpp +++ b/include/QtNodes/internal/DefaultVerticalNodeGeometry.hpp @@ -1,14 +1,16 @@ #pragma once #include "AbstractNodeGeometry.hpp" - -#include +#include "Definitions.hpp" +#include "Export.hpp" +#include +#include +#include +#include +#include namespace QtNodes { -class AbstractGraphModel; -class BasicGraphicsScene; - class NODE_EDITOR_PUBLIC DefaultVerticalNodeGeometry : public AbstractNodeGeometry { public: diff --git a/include/QtNodes/internal/Definitions.hpp b/include/QtNodes/internal/Definitions.hpp index 863fa40b4..6cd1a21e6 100644 --- a/include/QtNodes/internal/Definitions.hpp +++ b/include/QtNodes/internal/Definitions.hpp @@ -1,10 +1,13 @@ #pragma once #include "Export.hpp" - -#include - #include +#include +#include +#include +#include + +#undef max /** * @file diff --git a/include/QtNodes/internal/GraphicsView.hpp b/include/QtNodes/internal/GraphicsView.hpp index 2dd1af2cc..01ef87dc5 100644 --- a/include/QtNodes/internal/GraphicsView.hpp +++ b/include/QtNodes/internal/GraphicsView.hpp @@ -1,8 +1,20 @@ #pragma once -#include - #include "Export.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/GraphicsViewStyle.hpp b/include/QtNodes/internal/GraphicsViewStyle.hpp index 32f51b9e4..f32cd2de3 100644 --- a/include/QtNodes/internal/GraphicsViewStyle.hpp +++ b/include/QtNodes/internal/GraphicsViewStyle.hpp @@ -1,9 +1,10 @@ #pragma once -#include - #include "Export.hpp" #include "Style.hpp" +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/NodeConnectionInteraction.hpp b/include/QtNodes/internal/NodeConnectionInteraction.hpp index aaefedf6e..2b34b91a0 100644 --- a/include/QtNodes/internal/NodeConnectionInteraction.hpp +++ b/include/QtNodes/internal/NodeConnectionInteraction.hpp @@ -1,10 +1,7 @@ #pragma once -#include - -#include - #include "Definitions.hpp" +#include namespace QtNodes { diff --git a/include/QtNodes/internal/NodeData.hpp b/include/QtNodes/internal/NodeData.hpp index 1ef7480a1..b1120eb2d 100644 --- a/include/QtNodes/internal/NodeData.hpp +++ b/include/QtNodes/internal/NodeData.hpp @@ -1,12 +1,10 @@ #pragma once +#include "Export.hpp" #include - #include #include -#include "Export.hpp" - namespace QtNodes { /** diff --git a/include/QtNodes/internal/NodeDelegateModel.hpp b/include/QtNodes/internal/NodeDelegateModel.hpp index dc463dc08..2c445602e 100644 --- a/include/QtNodes/internal/NodeDelegateModel.hpp +++ b/include/QtNodes/internal/NodeDelegateModel.hpp @@ -1,19 +1,18 @@ #pragma once -#include - -#include - #include "Definitions.hpp" #include "Export.hpp" #include "NodeData.hpp" #include "NodeStyle.hpp" #include "Serializable.hpp" +#include +#include +#include +#include +#include namespace QtNodes { -class StyleCollection; - /** * The class wraps Node-specific data operations and propagates it to * the nesting DataFlowGraphModel which is a subclass of diff --git a/include/QtNodes/internal/NodeDelegateModelRegistry.hpp b/include/QtNodes/internal/NodeDelegateModelRegistry.hpp index 4f230a4f4..6278916f8 100644 --- a/include/QtNodes/internal/NodeDelegateModelRegistry.hpp +++ b/include/QtNodes/internal/NodeDelegateModelRegistry.hpp @@ -1,19 +1,15 @@ #pragma once #include "Export.hpp" -#include "NodeData.hpp" #include "NodeDelegateModel.hpp" -#include "QStringStdHash.hpp" - -#include - #include #include #include #include #include #include -#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/NodeGraphicsObject.hpp b/include/QtNodes/internal/NodeGraphicsObject.hpp index 50ce7be50..87704350d 100644 --- a/include/QtNodes/internal/NodeGraphicsObject.hpp +++ b/include/QtNodes/internal/NodeGraphicsObject.hpp @@ -1,11 +1,18 @@ #pragma once -#include -#include - +#include "Definitions.hpp" #include "NodeState.hpp" - -class QGraphicsProxyWidget; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/NodeState.hpp b/include/QtNodes/internal/NodeState.hpp index 18940214c..ec04225ed 100644 --- a/include/QtNodes/internal/NodeState.hpp +++ b/include/QtNodes/internal/NodeState.hpp @@ -1,16 +1,7 @@ #pragma once -#include -#include - -#include -#include -#include - #include "Export.hpp" - -#include "Definitions.hpp" -#include "NodeData.hpp" +#include namespace QtNodes { diff --git a/include/QtNodes/internal/NodeStyle.hpp b/include/QtNodes/internal/NodeStyle.hpp index 5eca74924..f0da5ada4 100644 --- a/include/QtNodes/internal/NodeStyle.hpp +++ b/include/QtNodes/internal/NodeStyle.hpp @@ -1,9 +1,10 @@ #pragma once -#include - #include "Export.hpp" #include "Style.hpp" +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/QStringStdHash.hpp b/include/QtNodes/internal/QStringStdHash.hpp index 617d9b50d..68e977f84 100644 --- a/include/QtNodes/internal/QStringStdHash.hpp +++ b/include/QtNodes/internal/QStringStdHash.hpp @@ -7,7 +7,6 @@ // As of 5.14 there is a specialization std::hash #include - #include #include diff --git a/include/QtNodes/internal/QUuidStdHash.hpp b/include/QtNodes/internal/QUuidStdHash.hpp index 224bc9f49..c29575cea 100644 --- a/include/QtNodes/internal/QUuidStdHash.hpp +++ b/include/QtNodes/internal/QUuidStdHash.hpp @@ -1,7 +1,6 @@ #pragma once #include - #include #include diff --git a/include/QtNodes/internal/StyleCollection.hpp b/include/QtNodes/internal/StyleCollection.hpp index 92a1a408e..6fc724d1d 100644 --- a/include/QtNodes/internal/StyleCollection.hpp +++ b/include/QtNodes/internal/StyleCollection.hpp @@ -1,8 +1,7 @@ #pragma once -#include "Export.hpp" - #include "ConnectionStyle.hpp" +#include "Export.hpp" #include "GraphicsViewStyle.hpp" #include "NodeStyle.hpp" diff --git a/include/QtNodes/internal/UndoCommands.hpp b/include/QtNodes/internal/UndoCommands.hpp index 22026173f..0e40228fb 100644 --- a/include/QtNodes/internal/UndoCommands.hpp +++ b/include/QtNodes/internal/UndoCommands.hpp @@ -1,12 +1,11 @@ #pragma once #include "Definitions.hpp" - -#include -#include -#include - #include +#include +#include +#include +#include namespace QtNodes { diff --git a/include/QtNodes/internal/locateNode.hpp b/include/QtNodes/internal/locateNode.hpp index cf41f83f8..fcb7b1127 100644 --- a/include/QtNodes/internal/locateNode.hpp +++ b/include/QtNodes/internal/locateNode.hpp @@ -1,7 +1,7 @@ #pragma once -#include -#include +#include +#include class QGraphicsScene; diff --git a/src/AbstractGraphModel.cpp b/src/AbstractGraphModel.cpp index 5fb7c5d66..0928c6009 100644 --- a/src/AbstractGraphModel.cpp +++ b/src/AbstractGraphModel.cpp @@ -1,6 +1,7 @@ #include "AbstractGraphModel.hpp" - -#include +#include "ConnectionIdUtils.hpp" +#include +#include namespace QtNodes { diff --git a/src/AbstractNodeGeometry.cpp b/src/AbstractNodeGeometry.cpp index 034f4cf03..4b5591028 100644 --- a/src/AbstractNodeGeometry.cpp +++ b/src/AbstractNodeGeometry.cpp @@ -1,11 +1,12 @@ #include "AbstractNodeGeometry.hpp" - #include "AbstractGraphModel.hpp" +#include "NodeStyle.hpp" #include "StyleCollection.hpp" - -#include - #include +#include +#include +#include +#include namespace QtNodes { diff --git a/src/BasicGraphicsScene.cpp b/src/BasicGraphicsScene.cpp index 39f42d5f3..0df6dd314 100644 --- a/src/BasicGraphicsScene.cpp +++ b/src/BasicGraphicsScene.cpp @@ -1,34 +1,18 @@ #include "BasicGraphicsScene.hpp" - #include "AbstractNodeGeometry.hpp" +#include "AbstractNodePainter.hpp" #include "ConnectionGraphicsObject.hpp" +#include "ConnectionIdHash.hpp" #include "ConnectionIdUtils.hpp" #include "DefaultConnectionPainter.hpp" #include "DefaultHorizontalNodeGeometry.hpp" #include "DefaultNodePainter.hpp" #include "DefaultVerticalNodeGeometry.hpp" -#include "GraphicsView.hpp" #include "NodeGraphicsObject.hpp" - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include #include #include -#include +#include +#include namespace QtNodes { diff --git a/src/ConnectionGraphicsObject.cpp b/src/ConnectionGraphicsObject.cpp index 05ae46b34..a031ac872 100644 --- a/src/ConnectionGraphicsObject.cpp +++ b/src/ConnectionGraphicsObject.cpp @@ -11,16 +11,16 @@ #include "NodeGraphicsObject.hpp" #include "StyleCollection.hpp" #include "locateNode.hpp" - -#include -#include -#include -#include -#include - -#include - +#include #include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/src/ConnectionState.cpp b/src/ConnectionState.cpp index 52ec9b59a..2e08af475 100644 --- a/src/ConnectionState.cpp +++ b/src/ConnectionState.cpp @@ -1,8 +1,4 @@ #include "ConnectionState.hpp" - -#include -#include - #include "BasicGraphicsScene.hpp" #include "ConnectionGraphicsObject.hpp" #include "NodeGraphicsObject.hpp" diff --git a/src/ConnectionStyle.cpp b/src/ConnectionStyle.cpp index 812658989..a050e9410 100644 --- a/src/ConnectionStyle.cpp +++ b/src/ConnectionStyle.cpp @@ -1,14 +1,13 @@ #include "ConnectionStyle.hpp" - #include "StyleCollection.hpp" - -#include -#include -#include - -#include - +#include #include +#include +#include +#include +#include +#include +#include using QtNodes::ConnectionStyle; diff --git a/src/DataFlowGraphModel.cpp b/src/DataFlowGraphModel.cpp index a5ba8734f..980b0ce3e 100644 --- a/src/DataFlowGraphModel.cpp +++ b/src/DataFlowGraphModel.cpp @@ -1,9 +1,22 @@ #include "DataFlowGraphModel.hpp" #include "ConnectionIdHash.hpp" - -#include - +#include "ConnectionIdUtils.hpp" +#include "NodeData.hpp" +#include "NodeStyle.hpp" +#include "StyleCollection.hpp" +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/src/DataFlowGraphicsScene.cpp b/src/DataFlowGraphicsScene.cpp index 83ec8b168..21efe4ec3 100644 --- a/src/DataFlowGraphicsScene.cpp +++ b/src/DataFlowGraphicsScene.cpp @@ -1,30 +1,33 @@ #include "DataFlowGraphicsScene.hpp" - -#include "ConnectionGraphicsObject.hpp" -#include "GraphicsView.hpp" #include "NodeDelegateModelRegistry.hpp" #include "NodeGraphicsObject.hpp" #include "UndoCommands.hpp" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/src/DefaultConnectionPainter.cpp b/src/DefaultConnectionPainter.cpp index 4a95bc909..d7aca7cda 100644 --- a/src/DefaultConnectionPainter.cpp +++ b/src/DefaultConnectionPainter.cpp @@ -5,9 +5,22 @@ #include "AbstractGraphModel.hpp" #include "ConnectionGraphicsObject.hpp" #include "ConnectionState.hpp" +#include "ConnectionStyle.hpp" #include "Definitions.hpp" #include "NodeData.hpp" #include "StyleCollection.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { @@ -26,7 +39,8 @@ QPainterPath DefaultConnectionPainter::cubicPath(ConnectionGraphicsObject const return cubic; } -void DefaultConnectionPainter::drawSketchLine(QPainter *painter, ConnectionGraphicsObject const &cgo) const +void DefaultConnectionPainter::drawSketchLine(QPainter *painter, + ConnectionGraphicsObject const &cgo) const { ConnectionState const &state = cgo.connectionState(); @@ -48,7 +62,8 @@ void DefaultConnectionPainter::drawSketchLine(QPainter *painter, ConnectionGraph } } -void DefaultConnectionPainter::drawHoveredOrSelected(QPainter *painter, ConnectionGraphicsObject const &cgo) const +void DefaultConnectionPainter::drawHoveredOrSelected(QPainter *painter, + ConnectionGraphicsObject const &cgo) const { bool const hovered = cgo.connectionState().hovered(); bool const selected = cgo.isSelected(); @@ -73,7 +88,8 @@ void DefaultConnectionPainter::drawHoveredOrSelected(QPainter *painter, Connecti } } -void DefaultConnectionPainter::drawNormalLine(QPainter *painter, ConnectionGraphicsObject const &cgo) const +void DefaultConnectionPainter::drawNormalLine(QPainter *painter, + ConnectionGraphicsObject const &cgo) const { ConnectionState const &state = cgo.connectionState(); @@ -199,7 +215,8 @@ void DefaultConnectionPainter::paint(QPainter *painter, ConnectionGraphicsObject painter->drawEllipse(cgo.in(), pointRadius, pointRadius); } -QPainterPath DefaultConnectionPainter::getPainterStroke(ConnectionGraphicsObject const &connection) const +QPainterPath DefaultConnectionPainter::getPainterStroke( + ConnectionGraphicsObject const &connection) const { auto cubic = cubicPath(connection); diff --git a/src/DefaultHorizontalNodeGeometry.cpp b/src/DefaultHorizontalNodeGeometry.cpp index 466c5ef34..c9e135307 100644 --- a/src/DefaultHorizontalNodeGeometry.cpp +++ b/src/DefaultHorizontalNodeGeometry.cpp @@ -1,11 +1,15 @@ #include "DefaultHorizontalNodeGeometry.hpp" - #include "AbstractGraphModel.hpp" #include "NodeData.hpp" - -#include +#include +#include +#include #include +#include +#include +#include #include +#include namespace QtNodes { diff --git a/src/DefaultNodePainter.cpp b/src/DefaultNodePainter.cpp index 8febe4cb1..3afcb8d42 100644 --- a/src/DefaultNodePainter.cpp +++ b/src/DefaultNodePainter.cpp @@ -1,17 +1,36 @@ #include "DefaultNodePainter.hpp" - -#include - -#include - #include "AbstractGraphModel.hpp" #include "AbstractNodeGeometry.hpp" #include "BasicGraphicsScene.hpp" #include "ConnectionGraphicsObject.hpp" #include "ConnectionIdUtils.hpp" +#include "ConnectionState.hpp" +#include "ConnectionStyle.hpp" +#include "Definitions.hpp" +#include "NodeData.hpp" #include "NodeGraphicsObject.hpp" #include "NodeState.hpp" +#include "NodeStyle.hpp" #include "StyleCollection.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/src/DefaultVerticalNodeGeometry.cpp b/src/DefaultVerticalNodeGeometry.cpp index 0254028ed..35e53066d 100644 --- a/src/DefaultVerticalNodeGeometry.cpp +++ b/src/DefaultVerticalNodeGeometry.cpp @@ -1,11 +1,15 @@ #include "DefaultVerticalNodeGeometry.hpp" - #include "AbstractGraphModel.hpp" #include "NodeData.hpp" - -#include +#include +#include +#include #include +#include +#include +#include #include +#include namespace QtNodes { diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index 7e0f06891..4a4623685 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -1,27 +1,26 @@ #include "GraphicsView.hpp" - #include "BasicGraphicsScene.hpp" -#include "ConnectionGraphicsObject.hpp" -#include "NodeGraphicsObject.hpp" +#include "GraphicsViewStyle.hpp" #include "StyleCollection.hpp" #include "UndoCommands.hpp" - -#include - -#include -#include - -#include - -#include -#include -#include - -#include -#include - +#include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using QtNodes::BasicGraphicsScene; using QtNodes::GraphicsView; diff --git a/src/GraphicsViewStyle.cpp b/src/GraphicsViewStyle.cpp index ae02a2c39..ccf901672 100644 --- a/src/GraphicsViewStyle.cpp +++ b/src/GraphicsViewStyle.cpp @@ -1,11 +1,10 @@ #include "GraphicsViewStyle.hpp" - -#include -#include -#include -#include - #include "StyleCollection.hpp" +#include +#include +#include +#include +#include using QtNodes::GraphicsViewStyle; diff --git a/src/NodeConnectionInteraction.cpp b/src/NodeConnectionInteraction.cpp index 9af05fc4e..022a574fa 100644 --- a/src/NodeConnectionInteraction.cpp +++ b/src/NodeConnectionInteraction.cpp @@ -1,14 +1,14 @@ #include "NodeConnectionInteraction.hpp" - +#include "AbstractGraphModel.hpp" #include "AbstractNodeGeometry.hpp" #include "BasicGraphicsScene.hpp" #include "ConnectionGraphicsObject.hpp" #include "ConnectionIdUtils.hpp" +#include "ConnectionState.hpp" #include "NodeGraphicsObject.hpp" #include "UndoCommands.hpp" - -#include - +#include +#include #include namespace QtNodes { diff --git a/src/NodeDelegateModel.cpp b/src/NodeDelegateModel.cpp index 94e47ad68..34dd43c10 100644 --- a/src/NodeDelegateModel.cpp +++ b/src/NodeDelegateModel.cpp @@ -1,6 +1,6 @@ #include "NodeDelegateModel.hpp" - #include "StyleCollection.hpp" +#include namespace QtNodes { diff --git a/src/NodeDelegateModelRegistry.cpp b/src/NodeDelegateModelRegistry.cpp index 11a1f84aa..ec736d916 100644 --- a/src/NodeDelegateModelRegistry.cpp +++ b/src/NodeDelegateModelRegistry.cpp @@ -1,7 +1,5 @@ #include "NodeDelegateModelRegistry.hpp" - -#include -#include +#include "NodeData.hpp" using QtNodes::NodeDataType; using QtNodes::NodeDelegateModel; diff --git a/src/NodeGraphicsObject.cpp b/src/NodeGraphicsObject.cpp index f4e38c63d..5f67522b5 100644 --- a/src/NodeGraphicsObject.cpp +++ b/src/NodeGraphicsObject.cpp @@ -1,11 +1,4 @@ #include "NodeGraphicsObject.hpp" - -#include -#include - -#include -#include - #include "AbstractGraphModel.hpp" #include "AbstractNodeGeometry.hpp" #include "AbstractNodePainter.hpp" @@ -13,8 +6,26 @@ #include "ConnectionGraphicsObject.hpp" #include "ConnectionIdUtils.hpp" #include "NodeConnectionInteraction.hpp" -#include "StyleCollection.hpp" +#include "NodeStyle.hpp" #include "UndoCommands.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/src/NodeState.cpp b/src/NodeState.cpp index f6ed43e15..c270991fb 100644 --- a/src/NodeState.cpp +++ b/src/NodeState.cpp @@ -1,7 +1,7 @@ #include "NodeState.hpp" - #include "ConnectionGraphicsObject.hpp" #include "NodeGraphicsObject.hpp" +#include namespace QtNodes { diff --git a/src/NodeStyle.cpp b/src/NodeStyle.cpp index a82bf8fe2..b968dd7c8 100644 --- a/src/NodeStyle.cpp +++ b/src/NodeStyle.cpp @@ -1,14 +1,10 @@ #include "NodeStyle.hpp" - -#include - -#include -#include -#include - -#include - #include "StyleCollection.hpp" +#include +#include +#include +#include +#include using QtNodes::NodeStyle; diff --git a/src/UndoCommands.cpp b/src/UndoCommands.cpp index cdd08db83..5653e3883 100644 --- a/src/UndoCommands.cpp +++ b/src/UndoCommands.cpp @@ -1,19 +1,27 @@ #include "UndoCommands.hpp" - +#include "AbstractGraphModel.hpp" #include "BasicGraphicsScene.hpp" #include "ConnectionGraphicsObject.hpp" #include "ConnectionIdUtils.hpp" #include "Definitions.hpp" #include "NodeGraphicsObject.hpp" - -#include -#include -#include -#include -#include -#include - #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/src/locateNode.cpp b/src/locateNode.cpp index ddba09985..1e54a7e6e 100644 --- a/src/locateNode.cpp +++ b/src/locateNode.cpp @@ -1,11 +1,12 @@ #include "locateNode.hpp" - -#include - -#include -#include - #include "NodeGraphicsObject.hpp" +#include +#include +#include +#include +#include +#include +#include namespace QtNodes { diff --git a/test/include/ApplicationSetup.hpp b/test/include/ApplicationSetup.hpp index 8a5685dd1..27356f054 100644 --- a/test/include/ApplicationSetup.hpp +++ b/test/include/ApplicationSetup.hpp @@ -1,7 +1,6 @@ #pragma once #include - #include inline std::unique_ptr applicationSetup() diff --git a/test/include/Stringify.hpp b/test/include/Stringify.hpp index d88a5730b..924975ec9 100644 --- a/test/include/Stringify.hpp +++ b/test/include/Stringify.hpp @@ -1,10 +1,8 @@ #pragma once +#include #include #include - -#include - #include namespace Catch { diff --git a/test/include/StubNodeDataModel.hpp b/test/include/StubNodeDataModel.hpp index 9a71d94e7..e1c7a6076 100644 --- a/test/include/StubNodeDataModel.hpp +++ b/test/include/StubNodeDataModel.hpp @@ -1,7 +1,6 @@ #pragma once #include - #include class StubNodeDataModel : public QtNodes::NodeDataModel diff --git a/test/src/TestDataModelRegistry.cpp b/test/src/TestDataModelRegistry.cpp index e19fb38f9..911a44a5d 100644 --- a/test/src/TestDataModelRegistry.cpp +++ b/test/src/TestDataModelRegistry.cpp @@ -1,8 +1,6 @@ -#include - -#include - #include "StubNodeDataModel.hpp" +#include +#include using QtNodes::DataModelRegistry; using QtNodes::NodeData; diff --git a/test/src/TestDragging.cpp b/test/src/TestDragging.cpp index 210b8860c..6fab66448 100644 --- a/test/src/TestDragging.cpp +++ b/test/src/TestDragging.cpp @@ -1,14 +1,11 @@ #include "ApplicationSetup.hpp" #include "Stringify.hpp" #include "StubNodeDataModel.hpp" - +#include #include #include #include #include - -#include - #include #include diff --git a/test/src/TestFlowScene.cpp b/test/src/TestFlowScene.cpp index 25c5c4043..28ae15fc4 100644 --- a/test/src/TestFlowScene.cpp +++ b/test/src/TestFlowScene.cpp @@ -1,17 +1,14 @@ #include "ApplicationSetup.hpp" #include "Stringify.hpp" #include "StubNodeDataModel.hpp" - -#include -#include -#include - #include - #include #include #include #include +#include +#include +#include using QtNodes::Connection; using QtNodes::DataModelRegistry; diff --git a/test/src/TestNodeGraphicsObject.cpp b/test/src/TestNodeGraphicsObject.cpp index 386ba248d..99a2b2e49 100644 --- a/test/src/TestNodeGraphicsObject.cpp +++ b/test/src/TestNodeGraphicsObject.cpp @@ -1,13 +1,10 @@ #include "ApplicationSetup.hpp" #include "StubNodeDataModel.hpp" - +#include #include #include #include #include - -#include - #include using QtNodes::FlowScene; From 05752ddd015fa79ae7d542778e0a0ef1284de151 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Fri, 3 Nov 2023 12:54:26 +0100 Subject: [PATCH 10/27] Avoid overlap between connections and nodes --- src/ConnectionGraphicsObject.cpp | 58 ++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/src/ConnectionGraphicsObject.cpp b/src/ConnectionGraphicsObject.cpp index a031ac872..03f131c23 100644 --- a/src/ConnectionGraphicsObject.cpp +++ b/src/ConnectionGraphicsObject.cpp @@ -317,64 +317,86 @@ void ConnectionGraphicsObject::addGraphicsEffect() std::pair ConnectionGraphicsObject::pointsC1C2Horizontal() const { - double const defaultOffset = 200; + double const overlapNodeY = 50; + + double const maxOffset = 200; double xDistance = _in.x() - _out.x(); - double horizontalOffset = qMin(defaultOffset, std::abs(xDistance)); + double horizontalOffset = qMin(maxOffset, std::abs(xDistance)); double verticalOffset = 0; + double vector = 0; double ratioX = 0.5; - if (xDistance <= 0) { - double yDistance = _in.y() - _out.y() + 20; + double yDistance = _in.y() - _out.y(); - double vector = yDistance < 0 ? -1.0 : 1.0; + if (xDistance <= 0) { + vector = yDistance < 0 ? -1.0 : 1.0; - verticalOffset = qMin(defaultOffset, std::abs(yDistance)) * vector; + verticalOffset = qMin(maxOffset, std::abs(yDistance)) * vector; ratioX = 1.0; } horizontalOffset *= ratioX; - QPointF c1(_out.x() + horizontalOffset, _out.y() + verticalOffset); + if (std::abs(yDistance) > overlapNodeY || _out.x() < _in.x()) { + QPointF c1(_out.x() + horizontalOffset, _out.y() + verticalOffset); - QPointF c2(_in.x() - horizontalOffset, _in.y() - verticalOffset); + QPointF c2(_in.x() - horizontalOffset, _in.y() - verticalOffset); + return std::make_pair(c1, c2); + } else { + QPointF c1(_out.x() + horizontalOffset, + _out.y() - qMax(100., std::abs(verticalOffset)) * vector); - return std::make_pair(c1, c2); + QPointF c2(_in.x() - horizontalOffset, + _in.y() - qMax(100., std::abs(verticalOffset)) * vector); + return std::make_pair(c1, c2); + } } std::pair ConnectionGraphicsObject::pointsC1C2Vertical() const { - double const defaultOffset = 200; + double const overlapNodeX = 50; + + double const maxOffset = 200; double yDistance = _in.y() - _out.y(); - double verticalOffset = qMin(defaultOffset, std::abs(yDistance)); + double verticalOffset = qMin(maxOffset, std::abs(yDistance)); double horizontalOffset = 0; + double vector = 0; double ratioY = 0.5; - if (yDistance <= 0) { - double xDistance = _in.x() - _out.x() + 20; + double xDistance = _in.x() - _out.x(); - double vector = xDistance < 0 ? -1.0 : 1.0; + if (yDistance <= 0) { + vector = xDistance < 0 ? -1.0 : 1.0; - horizontalOffset = qMin(defaultOffset, std::abs(xDistance)) * vector; + horizontalOffset = qMin(maxOffset, std::abs(xDistance)) * vector; ratioY = 1.0; } verticalOffset *= ratioY; - QPointF c1(_out.x() + horizontalOffset, _out.y() + verticalOffset); + if (std::abs(xDistance) > overlapNodeX || _out.y() < _in.y()) { + QPointF c1(_out.x() + horizontalOffset, _out.y() + verticalOffset); - QPointF c2(_in.x() - horizontalOffset, _in.y() - verticalOffset); + QPointF c2(_in.x() - horizontalOffset, _in.y() - verticalOffset); + return std::make_pair(c1, c2); + } else { + QPointF c1(_out.x() + qMax(100., std::abs(horizontalOffset)) * vector, + _out.y() + verticalOffset); - return std::make_pair(c1, c2); + QPointF c2(_in.x() + qMax(100., std::abs(horizontalOffset)) * vector, + _in.y() - verticalOffset); + return std::make_pair(c1, c2); + } } } // namespace QtNodes From 144a7ebc0479b0b9c0314661e0723647cf8d40b0 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:32:07 +0200 Subject: [PATCH 11/27] Add Acquisition Viewer For multiple input and custom color for each node --- examples/CMakeLists.txt | 1 + examples/acquisition_viewer/AcqData.hpp | 14 ++++ examples/acquisition_viewer/AcqModel.cpp | 65 +++++++++++++++ examples/acquisition_viewer/AcqModel.hpp | 51 ++++++++++++ examples/acquisition_viewer/CMakeLists.txt | 8 ++ examples/acquisition_viewer/main.cpp | 96 ++++++++++++++++++++++ examples/calculator/CMakeLists.txt | 4 +- src/ConnectionGraphicsObject.cpp | 9 -- src/DataFlowGraphModel.cpp | 3 +- 9 files changed, 238 insertions(+), 13 deletions(-) create mode 100644 examples/acquisition_viewer/AcqData.hpp create mode 100644 examples/acquisition_viewer/AcqModel.cpp create mode 100644 examples/acquisition_viewer/AcqModel.hpp create mode 100644 examples/acquisition_viewer/CMakeLists.txt create mode 100644 examples/acquisition_viewer/main.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 3f9217296..3d0526c53 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -18,3 +18,4 @@ add_subdirectory(lock_nodes_and_connections) add_subdirectory(calculator_qml) +add_subdirectory(acquisition_viewer) diff --git a/examples/acquisition_viewer/AcqData.hpp b/examples/acquisition_viewer/AcqData.hpp new file mode 100644 index 000000000..301459f02 --- /dev/null +++ b/examples/acquisition_viewer/AcqData.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +/// The class can potentially incapsulate any user data which +/// need to be transferred within the Node Editor graph +class AcqData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"acquisition", ""}; } +}; diff --git a/examples/acquisition_viewer/AcqModel.cpp b/examples/acquisition_viewer/AcqModel.cpp new file mode 100644 index 000000000..ecc2446e0 --- /dev/null +++ b/examples/acquisition_viewer/AcqModel.cpp @@ -0,0 +1,65 @@ +#include "AcqModel.hpp" +#include "AcqData.hpp" +#include "QtNodes/NodeDelegateModel" +#include +#include +#include +#include + +using QtNodes::NodeStyle; + +unsigned int AcqModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 1; + + return result; +} + +NodeDataType AcqModel::dataType(PortType, PortIndex) const +{ + return AcqData().type(); +} + +std::shared_ptr AcqModel::outData(PortIndex) +{ + return std::static_pointer_cast(_result); +} + +void AcqModel::setInData(std::shared_ptr data, PortIndex portIndex) +{ + auto numberData = std::dynamic_pointer_cast(data); + + if (!data) { + Q_EMIT dataInvalidated(0); + } +} + +QWidget *AcqModel::embeddedWidget() +{ + if (_result) { + return nullptr; + } + + _result = std::make_shared(); + + bool ok; + + QString text + = QInputDialog::getText(nullptr, "Acquisition node", "Title:", QLineEdit::Normal, "", &ok); + if (ok && !text.isEmpty()) + _title = text; + + NodeStyle style; + style.GradientColor0 = {rand() % 256, rand() % 256, rand() % 256}; + style.GradientColor1 = {rand() % 256, rand() % 256, rand() % 256}; + style.GradientColor2 = {rand() % 256, rand() % 256, rand() % 256}; + style.GradientColor3 = {rand() % 256, rand() % 256, rand() % 256}; + setNodeStyle(style); + + return nullptr; +} diff --git a/examples/acquisition_viewer/AcqModel.hpp b/examples/acquisition_viewer/AcqModel.hpp new file mode 100644 index 000000000..ea63128ed --- /dev/null +++ b/examples/acquisition_viewer/AcqModel.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +class AcqData; + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class AcqModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~AcqModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return _title; } + + QString name() const override { return QStringLiteral("Acquisition"); } + + ConnectionPolicy portConnectionPolicy(PortType, PortIndex) const override + { + return ConnectionPolicy::Many; + } + +private: + std::shared_ptr _result; + QString _title; +}; diff --git a/examples/acquisition_viewer/CMakeLists.txt b/examples/acquisition_viewer/CMakeLists.txt new file mode 100644 index 000000000..9081c7d99 --- /dev/null +++ b/examples/acquisition_viewer/CMakeLists.txt @@ -0,0 +1,8 @@ +set(ACQ_SOURCE_FILES main.cpp AcqModel.cpp) + +set(ACQ_HEADER_FILES AcqData.hpp AcqModel.hpp) + +add_executable(acquisition_viewer ${ACQ_SOURCE_FILES} ${ACQ_HEADER_FILES} + CMakeLists.txt) + +target_link_libraries(acquisition_viewer QtNodes) diff --git a/examples/acquisition_viewer/main.cpp b/examples/acquisition_viewer/main.cpp new file mode 100644 index 000000000..8eb3fdaa3 --- /dev/null +++ b/examples/acquisition_viewer/main.cpp @@ -0,0 +1,96 @@ +#include "AcqModel.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionStyle; +using QtNodes::DataFlowGraphicsScene; +using QtNodes::DataFlowGraphModel; +using QtNodes::GraphicsView; +using QtNodes::NodeDelegateModelRegistry; + +static std::shared_ptr registerDataModels() +{ + auto ret = std::make_shared(); + + ret->registerModel("Acquisition"); + + return ret; +} + +static void setStyle() +{ + /* + ConnectionStyle::setConnectionStyle( + R"( + { + "ConnectionStyle": { + "ConstructionColor": "gray", + "NormalColor": "black", + "SelectedColor": "gray", + "SelectedHaloColor": "deepskyblue", + "HoveredColor": "deepskyblue", + + "LineWidth": 3.0, + "ConstructionLineWidth": 2.0, + "PointDiameter": 10.0, + + "UseDataDefinedColors": true + } + } + )");*/ +} + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + setStyle(); + + std::shared_ptr registry = registerDataModels(); + + QWidget mainWidget; + + auto menuBar = new QMenuBar(); + QMenu *menu = menuBar->addMenu("File"); + auto saveAction = menu->addAction("Save Scene"); + auto loadAction = menu->addAction("Load Scene"); + + QVBoxLayout *l = new QVBoxLayout(&mainWidget); + + DataFlowGraphModel dataFlowGraphModel(registry); + + l->addWidget(menuBar); + auto scene = new DataFlowGraphicsScene(dataFlowGraphModel, &mainWidget); + + auto view = new GraphicsView(scene); + l->addWidget(view); + l->setContentsMargins(0, 0, 0, 0); + l->setSpacing(0); + + QObject::connect(saveAction, &QAction::triggered, scene, &DataFlowGraphicsScene::save); + + QObject::connect(loadAction, &QAction::triggered, scene, &DataFlowGraphicsScene::load); + + QObject::connect(scene, &DataFlowGraphicsScene::sceneLoaded, view, &GraphicsView::centerScene); + + mainWidget.setWindowTitle("Data Flow: simplest calculator"); + mainWidget.resize(800, 600); + // Center window. + mainWidget.move(QApplication::primaryScreen()->availableGeometry().center() + - mainWidget.rect().center()); + mainWidget.showNormal(); + + return app.exec(); +} diff --git a/examples/calculator/CMakeLists.txt b/examples/calculator/CMakeLists.txt index 24282b0d7..49282ba34 100644 --- a/examples/calculator/CMakeLists.txt +++ b/examples/calculator/CMakeLists.txt @@ -19,12 +19,11 @@ set(CALC_HEADER_FILES add_executable(calculator ${CALC_SOURCE_FILES} ${CALC_HEADER_FILES} + CMakeLists.txt ) target_link_libraries(calculator QtNodes) - - set(HEADLESS_CALC_SOURCE_FILES headless_main.cpp MathOperationDataModel.cpp @@ -35,6 +34,7 @@ set(HEADLESS_CALC_SOURCE_FILES add_executable(headless_calculator ${HEADLESS_CALC_SOURCE_FILES} ${CALC_HEADER_FILES} + CMakeLists.txt ) target_link_libraries(headless_calculator QtNodes) diff --git a/src/ConnectionGraphicsObject.cpp b/src/ConnectionGraphicsObject.cpp index 03f131c23..20b17360e 100644 --- a/src/ConnectionGraphicsObject.cpp +++ b/src/ConnectionGraphicsObject.cpp @@ -120,16 +120,7 @@ QRectF ConnectionGraphicsObject::boundingRect() const QPainterPath ConnectionGraphicsObject::shape() const { -#ifdef DEBUG_DRAWING - - //QPainterPath path; - - //path.addRect(boundingRect()); - //return path; - -#else return nodeScene()->connectionPainter().getPainterStroke(*this); -#endif } QPointF const &ConnectionGraphicsObject::endPoint(PortType portType) const diff --git a/src/DataFlowGraphModel.cpp b/src/DataFlowGraphModel.cpp index 980b0ce3e..0cb7adafc 100644 --- a/src/DataFlowGraphModel.cpp +++ b/src/DataFlowGraphModel.cpp @@ -3,7 +3,6 @@ #include "ConnectionIdUtils.hpp" #include "NodeData.hpp" #include "NodeStyle.hpp" -#include "StyleCollection.hpp" #include #include #include @@ -224,7 +223,7 @@ QVariant DataFlowGraphModel::nodeData(NodeId nodeId, NodeRole role) const break; case NodeRole::Style: { - auto style = StyleCollection::nodeStyle(); + auto style = model->nodeStyle(); result = style.toJson().toVariantMap(); } break; From c755681c2699c983c831dc6f35a12a7ad052c0a9 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 6 Nov 2023 15:45:05 +0100 Subject: [PATCH 12/27] Fix Dynamic ports example --- examples/dynamic_ports/CMakeLists.txt | 11 ++++++++--- examples/dynamic_ports/DynamicPortsModel.cpp | 4 ++-- examples/dynamic_ports/PortAddRemoveWidget.cpp | 10 +++++++--- examples/dynamic_ports/PortAddRemoveWidget.hpp | 5 ++--- .../internal/DefaultHorizontalNodeGeometry.hpp | 15 ++++++--------- src/DefaultHorizontalNodeGeometry.cpp | 7 +------ 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/examples/dynamic_ports/CMakeLists.txt b/examples/dynamic_ports/CMakeLists.txt index 7a2ee8016..8b3f4e7e4 100644 --- a/examples/dynamic_ports/CMakeLists.txt +++ b/examples/dynamic_ports/CMakeLists.txt @@ -1,5 +1,10 @@ -file(GLOB_RECURSE CPPS ./*.cpp ) - -add_executable(dynamic_ports ${CPPS}) +add_executable( + dynamic_ports + "CMakeLists.txt" + "DynamicPortsModel.cpp" + "DynamicPortsModel.hpp" + "main.cpp" + "PortAddRemoveWidget.cpp" + "PortAddRemoveWidget.hpp") target_link_libraries(dynamic_ports QtNodes) diff --git a/examples/dynamic_ports/DynamicPortsModel.cpp b/examples/dynamic_ports/DynamicPortsModel.cpp index ccefc698d..013d95b30 100644 --- a/examples/dynamic_ports/DynamicPortsModel.cpp +++ b/examples/dynamic_ports/DynamicPortsModel.cpp @@ -190,12 +190,12 @@ bool DynamicPortsModel::setNodeData(NodeId nodeId, NodeRole role, QVariant value case NodeRole::InPortCount: _nodePortCounts[nodeId].in = value.toUInt(); - widget(nodeId)->populateButtons(PortType::In, value.toUInt()); + widget(nodeId)->populateButtons(PortType::In, value.toInt()); break; case NodeRole::OutPortCount: _nodePortCounts[nodeId].out = value.toUInt(); - widget(nodeId)->populateButtons(PortType::Out, value.toUInt()); + widget(nodeId)->populateButtons(PortType::Out, value.toInt()); break; case NodeRole::Widget: diff --git a/examples/dynamic_ports/PortAddRemoveWidget.cpp b/examples/dynamic_ports/PortAddRemoveWidget.cpp index 487297e3e..497e3ff45 100644 --- a/examples/dynamic_ports/PortAddRemoveWidget.cpp +++ b/examples/dynamic_ports/PortAddRemoveWidget.cpp @@ -43,7 +43,7 @@ PortAddRemoveWidget::~PortAddRemoveWidget() // } -void PortAddRemoveWidget::populateButtons(PortType portType, unsigned int nPorts) +void PortAddRemoveWidget::populateButtons(PortType portType, int nPorts) { QVBoxLayout *vl = (portType == PortType::In) ? _left : _right; @@ -68,12 +68,16 @@ QHBoxLayout *PortAddRemoveWidget::addButtonGroupToLayout(QVBoxLayout *vbl, unsig l->setContentsMargins(0, 0, 0, 0); auto button = new QPushButton("+"); - button->setFixedHeight(25); + + // See DefaultHorizontalNodeGeometry. + unsigned int const step = QFontMetrics(QFont()).height() + 10; + + button->setFixedHeight(step); l->addWidget(button); connect(button, &QPushButton::clicked, this, &PortAddRemoveWidget::onPlusClicked); button = new QPushButton("-"); - button->setFixedHeight(25); + button->setFixedHeight(step); l->addWidget(button); connect(button, &QPushButton::clicked, this, &PortAddRemoveWidget::onMinusClicked); diff --git a/examples/dynamic_ports/PortAddRemoveWidget.hpp b/examples/dynamic_ports/PortAddRemoveWidget.hpp index 7233d5173..8d3e12c6d 100644 --- a/examples/dynamic_ports/PortAddRemoveWidget.hpp +++ b/examples/dynamic_ports/PortAddRemoveWidget.hpp @@ -50,10 +50,9 @@ class PortAddRemoveWidget : public QWidget ~PortAddRemoveWidget(); /** - * Called from constructor, creates all button groups according to models'port - * counts. + * Creates all button groups according to models'port counts. */ - void populateButtons(PortType portType, unsigned int nPorts); + void populateButtons(PortType portType, int nPorts); /** * Adds a single `[+][-]` button group to a given layout. diff --git a/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp b/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp index 3c98ab239..b1c6bc25d 100644 --- a/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp +++ b/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp @@ -11,7 +11,7 @@ namespace QtNodes { -class NODE_EDITOR_PUBLIC DefaultHorizontalNodeGeometry : public AbstractNodeGeometry +class DefaultHorizontalNodeGeometry : public AbstractNodeGeometry { public: DefaultHorizontalNodeGeometry(AbstractGraphModel &graphModel); @@ -47,14 +47,11 @@ class NODE_EDITOR_PUBLIC DefaultHorizontalNodeGeometry : public AbstractNodeGeom unsigned int maxPortsTextAdvance(NodeId const nodeId, PortType const portType) const; private: - // Some variables are mutable because we need to change drawing - // metrics corresponding to fontMetrics but this doesn't change - // constness of the Node. - - mutable unsigned int _portSize; - unsigned int _portSpasing; - mutable QFontMetrics _fontMetrics; - mutable QFontMetrics _boldFontMetrics; + static constexpr unsigned int _portSpasing = 10; + + QFontMetrics _fontMetrics{QFont()}; + unsigned int _portSize; + QFontMetrics _boldFontMetrics{QFont()}; }; } // namespace QtNodes diff --git a/src/DefaultHorizontalNodeGeometry.cpp b/src/DefaultHorizontalNodeGeometry.cpp index c9e135307..7725782a3 100644 --- a/src/DefaultHorizontalNodeGeometry.cpp +++ b/src/DefaultHorizontalNodeGeometry.cpp @@ -15,16 +15,11 @@ namespace QtNodes { DefaultHorizontalNodeGeometry::DefaultHorizontalNodeGeometry(AbstractGraphModel &graphModel) : AbstractNodeGeometry(graphModel) - , _portSize(20) - , _portSpasing(10) - , _fontMetrics(QFont()) - , _boldFontMetrics(QFont()) + , _portSize(_fontMetrics.height()) { QFont f; f.setBold(true); _boldFontMetrics = QFontMetrics(f); - - _portSize = _fontMetrics.height(); } QSize DefaultHorizontalNodeGeometry::size(NodeId const nodeId) const From 671b4c4202d1f05b1f44e3670e4473bab00931d9 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:32:42 +0200 Subject: [PATCH 13/27] Add Compute viewer that embedded parameters --- examples/CMakeLists.txt | 2 + examples/acquisition_viewer/AcqModel.cpp | 2 +- .../calculator/MathOperationDataModel.cpp | 2 +- .../calculator/NumberDisplayDataModel.cpp | 2 +- examples/calculator/NumberSourceDataModel.cpp | 2 +- .../calculator_qml/MathOperationDataModel.cpp | 2 +- .../calculator_qml/NumberDisplayDataModel.cpp | 2 +- .../calculator_qml/NumberSourceDataModel.cpp | 2 +- examples/compute_viewer/CMakeLists.txt | 10 ++ examples/compute_viewer/DecimationData.hpp | 14 +++ examples/compute_viewer/DecimationModel.cpp | 68 +++++++++++++ examples/compute_viewer/DecimationModel.hpp | 49 ++++++++++ examples/compute_viewer/DecimationWidget.cpp | 19 ++++ examples/compute_viewer/DecimationWidget.hpp | 31 ++++++ examples/compute_viewer/InputData.hpp | 14 +++ examples/compute_viewer/InputModel.cpp | 41 ++++++++ examples/compute_viewer/InputModel.hpp | 40 ++++++++ examples/compute_viewer/main.cpp | 98 +++++++++++++++++++ examples/connection_colors/main.cpp | 3 +- examples/dynamic_ports/DynamicPortsModel.cpp | 4 +- .../dynamic_ports/PortAddRemoveWidget.cpp | 4 +- .../resizable_images/ImageLoaderModel.cpp | 2 +- examples/resizable_images/main.cpp | 2 +- .../simple_graph_model/SimpleGraphModel.cpp | 6 +- examples/styles/main.cpp | 3 +- examples/text/TextDisplayDataModel.cpp | 2 +- examples/text/TextSourceDataModel.cpp | 2 +- examples/vertical_layout/SimpleGraphModel.cpp | 6 +- .../DefaultHorizontalNodeGeometry.hpp | 2 +- 29 files changed, 411 insertions(+), 25 deletions(-) create mode 100644 examples/compute_viewer/CMakeLists.txt create mode 100644 examples/compute_viewer/DecimationData.hpp create mode 100644 examples/compute_viewer/DecimationModel.cpp create mode 100644 examples/compute_viewer/DecimationModel.hpp create mode 100644 examples/compute_viewer/DecimationWidget.cpp create mode 100644 examples/compute_viewer/DecimationWidget.hpp create mode 100644 examples/compute_viewer/InputData.hpp create mode 100644 examples/compute_viewer/InputModel.cpp create mode 100644 examples/compute_viewer/InputModel.hpp create mode 100644 examples/compute_viewer/main.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 3d0526c53..0f59ceda8 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -19,3 +19,5 @@ add_subdirectory(lock_nodes_and_connections) add_subdirectory(calculator_qml) add_subdirectory(acquisition_viewer) + +add_subdirectory(compute_viewer) diff --git a/examples/acquisition_viewer/AcqModel.cpp b/examples/acquisition_viewer/AcqModel.cpp index ecc2446e0..49ab68d0b 100644 --- a/examples/acquisition_viewer/AcqModel.cpp +++ b/examples/acquisition_viewer/AcqModel.cpp @@ -1,10 +1,10 @@ #include "AcqModel.hpp" #include "AcqData.hpp" -#include "QtNodes/NodeDelegateModel" #include #include #include #include +#include using QtNodes::NodeStyle; diff --git a/examples/calculator/MathOperationDataModel.cpp b/examples/calculator/MathOperationDataModel.cpp index 16252e6b1..11059c908 100644 --- a/examples/calculator/MathOperationDataModel.cpp +++ b/examples/calculator/MathOperationDataModel.cpp @@ -1,6 +1,6 @@ #include "MathOperationDataModel.hpp" #include "DecimalData.hpp" -#include "QtNodes/NodeDelegateModel" +#include unsigned int MathOperationDataModel::nPorts(PortType portType) const { diff --git a/examples/calculator/NumberDisplayDataModel.cpp b/examples/calculator/NumberDisplayDataModel.cpp index f6a916970..ae24c1fae 100644 --- a/examples/calculator/NumberDisplayDataModel.cpp +++ b/examples/calculator/NumberDisplayDataModel.cpp @@ -1,6 +1,6 @@ #include "NumberDisplayDataModel.hpp" -#include "QtNodes/NodeDelegateModel" #include +#include NumberDisplayDataModel::NumberDisplayDataModel() : _label{nullptr} diff --git a/examples/calculator/NumberSourceDataModel.cpp b/examples/calculator/NumberSourceDataModel.cpp index 8124571ad..96bcedafe 100644 --- a/examples/calculator/NumberSourceDataModel.cpp +++ b/examples/calculator/NumberSourceDataModel.cpp @@ -1,10 +1,10 @@ #include "NumberSourceDataModel.hpp" #include "DecimalData.hpp" -#include "QtNodes/NodeDelegateModel" #include #include #include #include +#include NumberSourceDataModel::NumberSourceDataModel() : _lineEdit{nullptr} diff --git a/examples/calculator_qml/MathOperationDataModel.cpp b/examples/calculator_qml/MathOperationDataModel.cpp index 16252e6b1..11059c908 100644 --- a/examples/calculator_qml/MathOperationDataModel.cpp +++ b/examples/calculator_qml/MathOperationDataModel.cpp @@ -1,6 +1,6 @@ #include "MathOperationDataModel.hpp" #include "DecimalData.hpp" -#include "QtNodes/NodeDelegateModel" +#include unsigned int MathOperationDataModel::nPorts(PortType portType) const { diff --git a/examples/calculator_qml/NumberDisplayDataModel.cpp b/examples/calculator_qml/NumberDisplayDataModel.cpp index f6a916970..ae24c1fae 100644 --- a/examples/calculator_qml/NumberDisplayDataModel.cpp +++ b/examples/calculator_qml/NumberDisplayDataModel.cpp @@ -1,6 +1,6 @@ #include "NumberDisplayDataModel.hpp" -#include "QtNodes/NodeDelegateModel" #include +#include NumberDisplayDataModel::NumberDisplayDataModel() : _label{nullptr} diff --git a/examples/calculator_qml/NumberSourceDataModel.cpp b/examples/calculator_qml/NumberSourceDataModel.cpp index 8124571ad..96bcedafe 100644 --- a/examples/calculator_qml/NumberSourceDataModel.cpp +++ b/examples/calculator_qml/NumberSourceDataModel.cpp @@ -1,10 +1,10 @@ #include "NumberSourceDataModel.hpp" #include "DecimalData.hpp" -#include "QtNodes/NodeDelegateModel" #include #include #include #include +#include NumberSourceDataModel::NumberSourceDataModel() : _lineEdit{nullptr} diff --git a/examples/compute_viewer/CMakeLists.txt b/examples/compute_viewer/CMakeLists.txt new file mode 100644 index 000000000..5516d87e0 --- /dev/null +++ b/examples/compute_viewer/CMakeLists.txt @@ -0,0 +1,10 @@ +set(COMPUTE_SOURCE_FILES main.cpp InputModel.cpp DecimationModel.cpp + DecimationWidget.cpp) + +set(COMPUTE_HEADER_FILES InputData.hpp InputModel.hpp DecimationModel.hpp + DecimationData.hpp DecimationWidget.hpp) + +add_executable(compute_viewer ${COMPUTE_SOURCE_FILES} ${COMPUTE_HEADER_FILES} + CMakeLists.txt) + +target_link_libraries(compute_viewer QtNodes) diff --git a/examples/compute_viewer/DecimationData.hpp b/examples/compute_viewer/DecimationData.hpp new file mode 100644 index 000000000..6c69b15ff --- /dev/null +++ b/examples/compute_viewer/DecimationData.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +/// The class can potentially incapsulate any user data which +/// need to be transferred within the Node Editor graph +class DecimationData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"decimation", "Decimation"}; } +}; diff --git a/examples/compute_viewer/DecimationModel.cpp b/examples/compute_viewer/DecimationModel.cpp new file mode 100644 index 000000000..475005665 --- /dev/null +++ b/examples/compute_viewer/DecimationModel.cpp @@ -0,0 +1,68 @@ +#include "DecimationModel.hpp" +#include "DecimationData.hpp" +#include "DecimationWidget.hpp" +#include "InputData.hpp" +#include +#include +#include + +using QtNodes::NodeStyle; + +unsigned int DecimationModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 1; + + return result; +} + +NodeDataType DecimationModel::dataType(PortType portType, PortIndex) const +{ + if (portType == PortType::In) { + return InputData().type(); + } else { + return DecimationData().type(); + } +} + +std::shared_ptr DecimationModel::outData(PortIndex) +{ + return nullptr; +} + +void DecimationModel::setInData(std::shared_ptr data, PortIndex portIndex) +{ + auto numberData = std::dynamic_pointer_cast(data); + + if (!data) { + Q_EMIT dataInvalidated(0); + } +} + +QWidget *DecimationModel::embeddedWidget() +{ + if (_widget) { + return _widget; + } + + _widget = new DecimationWidget(nullptr); + + return _widget; +} + +QJsonObject DecimationModel::save() const +{ + QJsonObject retval = NodeDelegateModel::save(); + retval["M"] = _widget->getM(); + return retval; +} + +void DecimationModel::load(QJsonObject const &object) +{ + NodeDelegateModel::load(object); + _widget->setM(object["M"].toDouble()); +} diff --git a/examples/compute_viewer/DecimationModel.hpp b/examples/compute_viewer/DecimationModel.hpp new file mode 100644 index 000000000..51713fdb4 --- /dev/null +++ b/examples/compute_viewer/DecimationModel.hpp @@ -0,0 +1,49 @@ +#pragma once + +#include "DecimationWidget.hpp" +#include +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class DecimationModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~DecimationModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("Decimation"); } + + QString name() const override { return QStringLiteral("Decimation"); } + + QJsonObject save() const override; + + void load(QJsonObject const &) override; + +private: + DecimationWidget *_widget; +}; diff --git a/examples/compute_viewer/DecimationWidget.cpp b/examples/compute_viewer/DecimationWidget.cpp new file mode 100644 index 000000000..9c559b606 --- /dev/null +++ b/examples/compute_viewer/DecimationWidget.cpp @@ -0,0 +1,19 @@ +#include "DecimationWidget.hpp" +#include +#include +#include +#include + +DecimationWidget::DecimationWidget(QWidget *parent) + : QWidget(nullptr) +{ + setSizePolicy(QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Minimum); + + QGridLayout *layout = new QGridLayout(this); + + QLabel *m_label = new QLabel("M", this); + layout->addWidget(m_label, 0, 0, 1, 1); + _m_line = new QLineEdit(this); + layout->addWidget(_m_line, 0, 1, 1, 1); + connect(_m_line, &QLineEdit::textChanged, [this](QString obj) { _m = obj.toFloat(); }); +} diff --git a/examples/compute_viewer/DecimationWidget.hpp b/examples/compute_viewer/DecimationWidget.hpp new file mode 100644 index 000000000..7d7bad6d8 --- /dev/null +++ b/examples/compute_viewer/DecimationWidget.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include +#include +#include + +using QtNodes::NodeId; +using QtNodes::PortIndex; +using QtNodes::PortType; + +class DecimationWidget : public QWidget +{ + Q_OBJECT +public: + DecimationWidget(QWidget *parent = nullptr); + + ~DecimationWidget() = default; + + float getM() const { return _m; } + void setM(float m) + { + _m = m; + _m_line->setText(QString::number(m)); + } + +private: + float _m; + QLineEdit *_m_line; +}; diff --git a/examples/compute_viewer/InputData.hpp b/examples/compute_viewer/InputData.hpp new file mode 100644 index 000000000..63483517e --- /dev/null +++ b/examples/compute_viewer/InputData.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +/// The class can potentially incapsulate any user data which +/// need to be transferred within the Node Editor graph +class InputData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"input", "Input"}; } +}; diff --git a/examples/compute_viewer/InputModel.cpp b/examples/compute_viewer/InputModel.cpp new file mode 100644 index 000000000..865925685 --- /dev/null +++ b/examples/compute_viewer/InputModel.cpp @@ -0,0 +1,41 @@ +#include "InputModel.hpp" +#include "InputData.hpp" +#include + +using QtNodes::NodeStyle; + +unsigned int InputModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 0; + else + result = 1; + + return result; +} + +NodeDataType InputModel::dataType(PortType, PortIndex) const +{ + return InputData().type(); +} + +std::shared_ptr InputModel::outData(PortIndex) +{ + return nullptr; +} + +void InputModel::setInData(std::shared_ptr data, PortIndex portIndex) +{ + auto numberData = std::dynamic_pointer_cast(data); + + if (!data) { + Q_EMIT dataInvalidated(0); + } +} + +QWidget *InputModel::embeddedWidget() +{ + return nullptr; +} diff --git a/examples/compute_viewer/InputModel.hpp b/examples/compute_viewer/InputModel.hpp new file mode 100644 index 000000000..62b75d89e --- /dev/null +++ b/examples/compute_viewer/InputModel.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class InputModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~InputModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("Input"); } + + QString name() const override { return QStringLiteral("Input"); } +}; diff --git a/examples/compute_viewer/main.cpp b/examples/compute_viewer/main.cpp new file mode 100644 index 000000000..441ebe172 --- /dev/null +++ b/examples/compute_viewer/main.cpp @@ -0,0 +1,98 @@ +#include "DecimationModel.hpp" +#include "InputModel.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionStyle; +using QtNodes::DataFlowGraphicsScene; +using QtNodes::DataFlowGraphModel; +using QtNodes::GraphicsView; +using QtNodes::NodeDelegateModelRegistry; + +static std::shared_ptr registerDataModels() +{ + auto ret = std::make_shared(); + + ret->registerModel("Input"); + ret->registerModel("Decimation"); + + return ret; +} + +static void setStyle() +{ + /* + ConnectionStyle::setConnectionStyle( + R"( + { + "ConnectionStyle": { + "ConstructionColor": "gray", + "NormalColor": "black", + "SelectedColor": "gray", + "SelectedHaloColor": "deepskyblue", + "HoveredColor": "deepskyblue", + + "LineWidth": 3.0, + "ConstructionLineWidth": 2.0, + "PointDiameter": 10.0, + + "UseDataDefinedColors": true + } + } + )");*/ +} + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + setStyle(); + + std::shared_ptr registry = registerDataModels(); + + QWidget mainWidget; + + auto menuBar = new QMenuBar(); + QMenu *menu = menuBar->addMenu("File"); + auto saveAction = menu->addAction("Save Scene"); + auto loadAction = menu->addAction("Load Scene"); + + QVBoxLayout *l = new QVBoxLayout(&mainWidget); + + DataFlowGraphModel dataFlowGraphModel(registry); + + l->addWidget(menuBar); + auto scene = new DataFlowGraphicsScene(dataFlowGraphModel, &mainWidget); + + auto view = new GraphicsView(scene); + l->addWidget(view); + l->setContentsMargins(0, 0, 0, 0); + l->setSpacing(0); + + QObject::connect(saveAction, &QAction::triggered, scene, &DataFlowGraphicsScene::save); + + QObject::connect(loadAction, &QAction::triggered, scene, &DataFlowGraphicsScene::load); + + QObject::connect(scene, &DataFlowGraphicsScene::sceneLoaded, view, &GraphicsView::centerScene); + + mainWidget.setWindowTitle("Data Flow: simplest calculator"); + mainWidget.resize(800, 600); + // Center window. + mainWidget.move(QApplication::primaryScreen()->availableGeometry().center() + - mainWidget.rect().center()); + mainWidget.showNormal(); + + return app.exec(); +} diff --git a/examples/connection_colors/main.cpp b/examples/connection_colors/main.cpp index e1f43e90d..1610f176b 100644 --- a/examples/connection_colors/main.cpp +++ b/examples/connection_colors/main.cpp @@ -1,8 +1,7 @@ -#include "QtNodes/internal/ConnectionStyle.hpp" -#include "QtNodes/internal/StyleCollection.hpp" #include "models.hpp" #include #include +#include #include #include diff --git a/examples/dynamic_ports/DynamicPortsModel.cpp b/examples/dynamic_ports/DynamicPortsModel.cpp index 013d95b30..6b8e385da 100644 --- a/examples/dynamic_ports/DynamicPortsModel.cpp +++ b/examples/dynamic_ports/DynamicPortsModel.cpp @@ -1,7 +1,5 @@ #include "DynamicPortsModel.hpp" #include "PortAddRemoveWidget.hpp" -#include "QtNodes/AbstractGraphModel" -#include "QtNodes/StyleCollection" #include #include #include @@ -10,7 +8,9 @@ #include #include #include +#include #include +#include DynamicPortsModel::DynamicPortsModel() : _nextNodeId{0} diff --git a/examples/dynamic_ports/PortAddRemoveWidget.cpp b/examples/dynamic_ports/PortAddRemoveWidget.cpp index 497e3ff45..6d04461e2 100644 --- a/examples/dynamic_ports/PortAddRemoveWidget.cpp +++ b/examples/dynamic_ports/PortAddRemoveWidget.cpp @@ -1,12 +1,14 @@ #include "PortAddRemoveWidget.hpp" #include "DynamicPortsModel.hpp" -#include "QtNodes/Definitions" #include +#include +#include #include #include #include #include #include +#include PortAddRemoveWidget::PortAddRemoveWidget(unsigned int nInPorts, unsigned int nOutPorts, diff --git a/examples/resizable_images/ImageLoaderModel.cpp b/examples/resizable_images/ImageLoaderModel.cpp index d62a3a447..0f8a8c380 100644 --- a/examples/resizable_images/ImageLoaderModel.cpp +++ b/examples/resizable_images/ImageLoaderModel.cpp @@ -1,9 +1,9 @@ #include "ImageLoaderModel.hpp" -#include "QtNodes/NodeDelegateModel" #include #include #include #include +#include ImageLoaderModel::ImageLoaderModel() : _label(new QLabel("Double click to load image")) diff --git a/examples/resizable_images/main.cpp b/examples/resizable_images/main.cpp index 79a9ef16d..396ebb8d7 100644 --- a/examples/resizable_images/main.cpp +++ b/examples/resizable_images/main.cpp @@ -1,11 +1,11 @@ #include "ImageLoaderModel.hpp" #include "ImageShowModel.hpp" -#include "QtNodes/internal/ConnectionStyle.hpp" #include #include #include #include #include +#include #include #include diff --git a/examples/simple_graph_model/SimpleGraphModel.cpp b/examples/simple_graph_model/SimpleGraphModel.cpp index dc3c0cfec..7b05c4d29 100644 --- a/examples/simple_graph_model/SimpleGraphModel.cpp +++ b/examples/simple_graph_model/SimpleGraphModel.cpp @@ -1,7 +1,4 @@ #include "SimpleGraphModel.hpp" -#include "QtNodes/AbstractGraphModel" -#include "QtNodes/ConnectionIdUtils" -#include "QtNodes/StyleCollection" #include #include #include @@ -9,6 +6,9 @@ #include #include #include +#include +#include +#include SimpleGraphModel::SimpleGraphModel() : _nextNodeId{0} diff --git a/examples/styles/main.cpp b/examples/styles/main.cpp index 10a9643fa..d17b19f94 100644 --- a/examples/styles/main.cpp +++ b/examples/styles/main.cpp @@ -1,10 +1,9 @@ -#include "QtNodes/internal/ConnectionStyle.hpp" -#include "QtNodes/internal/StyleCollection.hpp" #include "models.hpp" #include #include #include #include +#include using QtNodes::ConnectionStyle; using QtNodes::DataFlowGraphicsScene; diff --git a/examples/text/TextDisplayDataModel.cpp b/examples/text/TextDisplayDataModel.cpp index bfa5d395e..3be867e2c 100644 --- a/examples/text/TextDisplayDataModel.cpp +++ b/examples/text/TextDisplayDataModel.cpp @@ -1,5 +1,5 @@ #include "TextDisplayDataModel.hpp" -#include "QtNodes/NodeDelegateModel" +#include TextDisplayDataModel::TextDisplayDataModel() : _label(new QLabel("Resulting Text")) diff --git a/examples/text/TextSourceDataModel.cpp b/examples/text/TextSourceDataModel.cpp index 59e11cd14..3e8f8d6a3 100644 --- a/examples/text/TextSourceDataModel.cpp +++ b/examples/text/TextSourceDataModel.cpp @@ -1,7 +1,7 @@ #include "TextSourceDataModel.hpp" -#include "QtNodes/NodeDelegateModel" #include #include +#include TextSourceDataModel::TextSourceDataModel() : _lineEdit{nullptr} diff --git a/examples/vertical_layout/SimpleGraphModel.cpp b/examples/vertical_layout/SimpleGraphModel.cpp index dadc0d015..ba37658b1 100644 --- a/examples/vertical_layout/SimpleGraphModel.cpp +++ b/examples/vertical_layout/SimpleGraphModel.cpp @@ -1,13 +1,13 @@ #include "SimpleGraphModel.hpp" -#include "QtNodes/AbstractGraphModel" -#include "QtNodes/ConnectionIdUtils" -#include "QtNodes/StyleCollection" #include #include #include #include #include #include +#include +#include +#include SimpleGraphModel::SimpleGraphModel() : _nextNodeId{0} diff --git a/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp b/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp index b1c6bc25d..2820e87ce 100644 --- a/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp +++ b/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp @@ -2,7 +2,7 @@ #include "AbstractNodeGeometry.hpp" #include "Definitions.hpp" -#include "Export.hpp" +#include #include #include #include From 9639b5209de31f9d2992a53fb7e05e17a00921ef Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Tue, 7 Nov 2023 10:30:19 +0100 Subject: [PATCH 14/27] Fix Load / Save for Acquisition Viewer --- examples/acquisition_viewer/AcqModel.cpp | 29 +++- examples/acquisition_viewer/AcqModel.hpp | 4 + examples/acquisition_viewer/sample.flow | 171 +++++++++++++++++++++++ src/DataFlowGraphModel.cpp | 3 +- 4 files changed, 200 insertions(+), 7 deletions(-) create mode 100644 examples/acquisition_viewer/sample.flow diff --git a/examples/acquisition_viewer/AcqModel.cpp b/examples/acquisition_viewer/AcqModel.cpp index 49ab68d0b..e57e41f04 100644 --- a/examples/acquisition_viewer/AcqModel.cpp +++ b/examples/acquisition_viewer/AcqModel.cpp @@ -47,12 +47,18 @@ QWidget *AcqModel::embeddedWidget() _result = std::make_shared(); - bool ok; + if (_title.isEmpty()) { + bool ok; - QString text - = QInputDialog::getText(nullptr, "Acquisition node", "Title:", QLineEdit::Normal, "", &ok); - if (ok && !text.isEmpty()) - _title = text; + QString text = QInputDialog::getText(nullptr, + "Acquisition node", + "Title:", + QLineEdit::Normal, + "", + &ok); + if (ok && !text.isEmpty()) + _title = text; + } NodeStyle style; style.GradientColor0 = {rand() % 256, rand() % 256, rand() % 256}; @@ -63,3 +69,16 @@ QWidget *AcqModel::embeddedWidget() return nullptr; } + +QJsonObject AcqModel::save() const +{ + QJsonObject retval = NodeDelegateModel::save(); + retval["Title"] = _title; + return retval; +} + +void AcqModel::load(QJsonObject const &object) +{ + NodeDelegateModel::load(object); + _title = object["Title"].toString(); +} diff --git a/examples/acquisition_viewer/AcqModel.hpp b/examples/acquisition_viewer/AcqModel.hpp index ea63128ed..2113e0b65 100644 --- a/examples/acquisition_viewer/AcqModel.hpp +++ b/examples/acquisition_viewer/AcqModel.hpp @@ -45,6 +45,10 @@ class AcqModel : public NodeDelegateModel return ConnectionPolicy::Many; } + QJsonObject save() const override; + + void load(QJsonObject const &) override; + private: std::shared_ptr _result; QString _title; diff --git a/examples/acquisition_viewer/sample.flow b/examples/acquisition_viewer/sample.flow new file mode 100644 index 000000000..df88187ef --- /dev/null +++ b/examples/acquisition_viewer/sample.flow @@ -0,0 +1,171 @@ +{ + "connections": [ + { + "inPortIndex": 0, + "intNodeId": 4, + "outNodeId": 3, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 2, + "outNodeId": 3, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 6, + "outNodeId": 5, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 3, + "outNodeId": 2, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 1, + "outNodeId": 3, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 7, + "outNodeId": 6, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 3, + "outNodeId": 1, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 5, + "outNodeId": 4, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 8, + "outNodeId": 7, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 9, + "outNodeId": 8, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 3, + "outNodeId": 9, + "outPortIndex": 0 + } + ], + "nodes": [ + { + "id": 1, + "internal-data": { + "Title": "HD2", + "model-name": "Acquisition" + }, + "position": { + "x": 160, + "y": -34 + } + }, + { + "id": 2, + "internal-data": { + "Title": "Ultrafast", + "model-name": "Acquisition" + }, + "position": { + "x": 118, + "y": 206 + } + }, + { + "id": 3, + "internal-data": { + "Title": "BMode-25Hz", + "model-name": "Acquisition" + }, + "position": { + "x": -33, + "y": 159 + } + }, + { + "id": 4, + "internal-data": { + "Title": "Push #1", + "model-name": "Acquisition" + }, + "position": { + "x": 257, + "y": 160 + } + }, + { + "id": 5, + "internal-data": { + "Title": "Imaging #1", + "model-name": "Acquisition" + }, + "position": { + "x": 380, + "y": 159 + } + }, + { + "id": 6, + "internal-data": { + "Title": "Push #2", + "model-name": "Acquisition" + }, + "position": { + "x": 516, + "y": 159 + } + }, + { + "id": 7, + "internal-data": { + "Title": "Imaging #2", + "model-name": "Acquisition" + }, + "position": { + "x": 634, + "y": 160 + } + }, + { + "id": 8, + "internal-data": { + "Title": "Push #3", + "model-name": "Acquisition" + }, + "position": { + "x": 769, + "y": 160 + } + }, + { + "id": 9, + "internal-data": { + "Title": "Imaging #3", + "model-name": "Acquisition" + }, + "position": { + "x": 892, + "y": 159 + } + } + ] +} diff --git a/src/DataFlowGraphModel.cpp b/src/DataFlowGraphModel.cpp index 0cb7adafc..37d698e00 100644 --- a/src/DataFlowGraphModel.cpp +++ b/src/DataFlowGraphModel.cpp @@ -485,6 +485,7 @@ void DataFlowGraphModel::loadNode(QJsonObject const &nodeJson) onOutPortDataUpdated(restoredNodeId, portIndex); }); + model->load(internalDataJson); _models[restoredNodeId] = std::move(model); Q_EMIT nodeCreated(restoredNodeId); @@ -493,8 +494,6 @@ void DataFlowGraphModel::loadNode(QJsonObject const &nodeJson) QPointF const pos(posJson["x"].toDouble(), posJson["y"].toDouble()); setNodeData(restoredNodeId, NodeRole::Position, pos); - - _models[restoredNodeId]->load(internalDataJson); } else { throw std::logic_error(std::string("No registered model with name ") + delegateModelName.toLocal8Bit().data()); From 0ea5f7877b6fdf4fcf38f795480c4344b86f82fd Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:38:55 +0200 Subject: [PATCH 15/27] Implement full compute_viewer --- examples/acquisition_viewer/AcqModel.cpp | 2 + examples/acquisition_viewer/AcqModel.hpp | 1 + examples/compute_viewer/AverageData.hpp | 24 +++ examples/compute_viewer/AverageModel.cpp | 39 ++++ examples/compute_viewer/AverageModel.hpp | 43 ++++ examples/compute_viewer/CMakeLists.txt | 47 ++++- examples/compute_viewer/CalculatorData.hpp | 12 ++ examples/compute_viewer/CalculatorModel.cpp | 65 ++++++ examples/compute_viewer/CalculatorModel.hpp | 50 +++++ examples/compute_viewer/CalculatorWidget.cpp | 20 ++ examples/compute_viewer/CalculatorWidget.hpp | 27 +++ examples/compute_viewer/ClutterFilterData.hpp | 12 ++ .../compute_viewer/ClutterFilterModel.cpp | 61 ++++++ .../compute_viewer/ClutterFilterModel.hpp | 50 +++++ .../compute_viewer/ClutterFilterWidget.cpp | 41 ++++ .../compute_viewer/ClutterFilterWidget.hpp | 31 +++ examples/compute_viewer/DasPwData.hpp | 12 ++ examples/compute_viewer/DasPwModel.cpp | 63 ++++++ examples/compute_viewer/DasPwModel.hpp | 51 +++++ examples/compute_viewer/DasPwWidget.cpp | 32 +++ examples/compute_viewer/DasPwWidget.hpp | 28 +++ examples/compute_viewer/DecimationData.hpp | 2 - examples/compute_viewer/DecimationModel.cpp | 15 +- examples/compute_viewer/DecimationModel.hpp | 1 + examples/compute_viewer/DecimationWidget.cpp | 8 +- examples/compute_viewer/DecimationWidget.hpp | 10 +- examples/compute_viewer/DopplerViewerData.hpp | 12 ++ .../compute_viewer/DopplerViewerModel.cpp | 39 ++++ .../compute_viewer/DopplerViewerModel.hpp | 43 ++++ examples/compute_viewer/InputData.hpp | 2 - examples/compute_viewer/InputModel.cpp | 9 +- examples/compute_viewer/OutputModel.cpp | 34 +++ examples/compute_viewer/OutputModel.hpp | 40 ++++ examples/compute_viewer/RoiData.hpp | 12 ++ examples/compute_viewer/RoiRectModel.cpp | 71 +++++++ examples/compute_viewer/RoiRectModel.hpp | 55 +++++ examples/compute_viewer/RoiRectWidget.cpp | 70 +++++++ examples/compute_viewer/RoiRectWidget.hpp | 36 ++++ examples/compute_viewer/RoiSphereModel.cpp | 67 ++++++ examples/compute_viewer/RoiSphereModel.hpp | 53 +++++ examples/compute_viewer/RoiSphereWidget.cpp | 52 +++++ examples/compute_viewer/RoiSphereWidget.hpp | 31 +++ examples/compute_viewer/example.flow | 197 ++++++++++++++++++ examples/compute_viewer/main.cpp | 20 +- 44 files changed, 1551 insertions(+), 39 deletions(-) create mode 100644 examples/compute_viewer/AverageData.hpp create mode 100644 examples/compute_viewer/AverageModel.cpp create mode 100644 examples/compute_viewer/AverageModel.hpp create mode 100644 examples/compute_viewer/CalculatorData.hpp create mode 100644 examples/compute_viewer/CalculatorModel.cpp create mode 100644 examples/compute_viewer/CalculatorModel.hpp create mode 100644 examples/compute_viewer/CalculatorWidget.cpp create mode 100644 examples/compute_viewer/CalculatorWidget.hpp create mode 100644 examples/compute_viewer/ClutterFilterData.hpp create mode 100644 examples/compute_viewer/ClutterFilterModel.cpp create mode 100644 examples/compute_viewer/ClutterFilterModel.hpp create mode 100644 examples/compute_viewer/ClutterFilterWidget.cpp create mode 100644 examples/compute_viewer/ClutterFilterWidget.hpp create mode 100644 examples/compute_viewer/DasPwData.hpp create mode 100644 examples/compute_viewer/DasPwModel.cpp create mode 100644 examples/compute_viewer/DasPwModel.hpp create mode 100644 examples/compute_viewer/DasPwWidget.cpp create mode 100644 examples/compute_viewer/DasPwWidget.hpp create mode 100644 examples/compute_viewer/DopplerViewerData.hpp create mode 100644 examples/compute_viewer/DopplerViewerModel.cpp create mode 100644 examples/compute_viewer/DopplerViewerModel.hpp create mode 100644 examples/compute_viewer/OutputModel.cpp create mode 100644 examples/compute_viewer/OutputModel.hpp create mode 100644 examples/compute_viewer/RoiData.hpp create mode 100644 examples/compute_viewer/RoiRectModel.cpp create mode 100644 examples/compute_viewer/RoiRectModel.hpp create mode 100644 examples/compute_viewer/RoiRectWidget.cpp create mode 100644 examples/compute_viewer/RoiRectWidget.hpp create mode 100644 examples/compute_viewer/RoiSphereModel.cpp create mode 100644 examples/compute_viewer/RoiSphereModel.hpp create mode 100644 examples/compute_viewer/RoiSphereWidget.cpp create mode 100644 examples/compute_viewer/RoiSphereWidget.hpp create mode 100644 examples/compute_viewer/example.flow diff --git a/examples/acquisition_viewer/AcqModel.cpp b/examples/acquisition_viewer/AcqModel.cpp index e57e41f04..ddfeee385 100644 --- a/examples/acquisition_viewer/AcqModel.cpp +++ b/examples/acquisition_viewer/AcqModel.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #include diff --git a/examples/acquisition_viewer/AcqModel.hpp b/examples/acquisition_viewer/AcqModel.hpp index 2113e0b65..c58cc82c0 100644 --- a/examples/acquisition_viewer/AcqModel.hpp +++ b/examples/acquisition_viewer/AcqModel.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include #include diff --git a/examples/compute_viewer/AverageData.hpp b/examples/compute_viewer/AverageData.hpp new file mode 100644 index 000000000..31b853006 --- /dev/null +++ b/examples/compute_viewer/AverageData.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +class AverageX1Data : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"average", "x1"}; } +}; + +class AverageX2Data : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"average", "x2"}; } +}; + +class AverageData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"average", "x"}; } +}; diff --git a/examples/compute_viewer/AverageModel.cpp b/examples/compute_viewer/AverageModel.cpp new file mode 100644 index 000000000..d0693333d --- /dev/null +++ b/examples/compute_viewer/AverageModel.cpp @@ -0,0 +1,39 @@ +#include "AverageModel.hpp" +#include "AverageData.hpp" +#include "RoiData.hpp" +#include + +using QtNodes::NodeStyle; + +unsigned int AverageModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 1; + + return result; +} + +NodeDataType AverageModel::dataType(PortType portType, PortIndex) const +{ + if (portType == PortType::In) { + return RoiData().type(); + } else { + return AverageData().type(); + } +} + +std::shared_ptr AverageModel::outData(PortIndex) +{ + return nullptr; +} + +void AverageModel::setInData(std::shared_ptr data, PortIndex portIndex) {} + +QWidget *AverageModel::embeddedWidget() +{ + return nullptr; +} diff --git a/examples/compute_viewer/AverageModel.hpp b/examples/compute_viewer/AverageModel.hpp new file mode 100644 index 000000000..b06105905 --- /dev/null +++ b/examples/compute_viewer/AverageModel.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class AverageModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~AverageModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("Average"); } + + QString name() const override { return QStringLiteral("Average"); } + +private: + float _value; +}; diff --git a/examples/compute_viewer/CMakeLists.txt b/examples/compute_viewer/CMakeLists.txt index 5516d87e0..16ac9c558 100644 --- a/examples/compute_viewer/CMakeLists.txt +++ b/examples/compute_viewer/CMakeLists.txt @@ -1,8 +1,47 @@ -set(COMPUTE_SOURCE_FILES main.cpp InputModel.cpp DecimationModel.cpp - DecimationWidget.cpp) +set(COMPUTE_SOURCE_FILES + main.cpp + InputModel.cpp + OutputModel.cpp + DecimationModel.cpp + DecimationWidget.cpp + DasPwModel.cpp + DasPwWidget.cpp + ClutterFilterModel.cpp + ClutterFilterWidget.cpp + CalculatorModel.cpp + CalculatorWidget.cpp + RoiRectModel.cpp + RoiRectWidget.cpp + RoiSphereModel.cpp + AverageModel.cpp + RoiSphereWidget.cpp + DopplerViewerModel.cpp) -set(COMPUTE_HEADER_FILES InputData.hpp InputModel.hpp DecimationModel.hpp - DecimationData.hpp DecimationWidget.hpp) +set(COMPUTE_HEADER_FILES + InputData.hpp + InputModel.hpp + OutputModel.hpp + DecimationModel.hpp + DecimationData.hpp + DecimationWidget.hpp + ClutterFilterModel.hpp + ClutterFilterData.hpp + ClutterFilterWidget.hpp + CalculatorModel.hpp + CalculatorData.hpp + CalculatorWidget.hpp + RoiData.hpp + RoiRectModel.hpp + RoiRectWidget.hpp + RoiSphereModel.hpp + RoiSphereWidget.hpp + DasPwModel.hpp + DasPwData.hpp + DopplerViewerModel.hpp + DopplerViewerData.hpp + AverageModel.hpp + AverageData.hpp + DasPwWidget.hpp) add_executable(compute_viewer ${COMPUTE_SOURCE_FILES} ${COMPUTE_HEADER_FILES} CMakeLists.txt) diff --git a/examples/compute_viewer/CalculatorData.hpp b/examples/compute_viewer/CalculatorData.hpp new file mode 100644 index 000000000..f7228a729 --- /dev/null +++ b/examples/compute_viewer/CalculatorData.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +class CalculatorData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"calculator", "Calculator"}; } +}; diff --git a/examples/compute_viewer/CalculatorModel.cpp b/examples/compute_viewer/CalculatorModel.cpp new file mode 100644 index 000000000..89b9312eb --- /dev/null +++ b/examples/compute_viewer/CalculatorModel.cpp @@ -0,0 +1,65 @@ +#include "CalculatorModel.hpp" +#include "AverageData.hpp" +#include "CalculatorData.hpp" +#include "CalculatorWidget.hpp" +#include +#include +#include + +using QtNodes::NodeStyle; + +unsigned int CalculatorModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 2; + else + result = 1; + + return result; +} + +NodeDataType CalculatorModel::dataType(PortType portType, PortIndex portIndex) const +{ + if (portType == PortType::In) { + if (portIndex == 0) { + return AverageX1Data().type(); + } else { + return AverageX2Data().type(); + } + } else { + return CalculatorData().type(); + } +} + +std::shared_ptr CalculatorModel::outData(PortIndex) +{ + return nullptr; +} + +void CalculatorModel::setInData(std::shared_ptr data, PortIndex portIndex) {} + +QWidget *CalculatorModel::embeddedWidget() +{ + if (_widget) { + return _widget; + } + + _widget = new CalculatorWidget(_value, nullptr); + + return _widget; +} + +QJsonObject CalculatorModel::save() const +{ + QJsonObject retval = NodeDelegateModel::save(); + retval["expression"] = _value; + return retval; +} + +void CalculatorModel::load(QJsonObject const &object) +{ + NodeDelegateModel::load(object); + _value = object["expression"].toString(); +} diff --git a/examples/compute_viewer/CalculatorModel.hpp b/examples/compute_viewer/CalculatorModel.hpp new file mode 100644 index 000000000..86c9bd0ae --- /dev/null +++ b/examples/compute_viewer/CalculatorModel.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include "CalculatorWidget.hpp" +#include +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class CalculatorModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~CalculatorModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("Calculator"); } + + QString name() const override { return QStringLiteral("Calculator"); } + + QJsonObject save() const override; + + void load(QJsonObject const &) override; + +private: + CalculatorWidget *_widget; + QString _value; +}; diff --git a/examples/compute_viewer/CalculatorWidget.cpp b/examples/compute_viewer/CalculatorWidget.cpp new file mode 100644 index 000000000..9aea2c497 --- /dev/null +++ b/examples/compute_viewer/CalculatorWidget.cpp @@ -0,0 +1,20 @@ +#include "CalculatorWidget.hpp" +#include +#include +#include +#include + +CalculatorWidget::CalculatorWidget(QString &_value, QWidget *parent) + : QWidget(parent) +{ + setSizePolicy(QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Minimum); + + QGridLayout *layout = new QGridLayout(this); + + QLabel *exp_label = new QLabel("Formula", this); + layout->addWidget(exp_label, 0, 0, 1, 1); + _exp_line = new QLineEdit(this); + _exp_line->setText(_value); + layout->addWidget(_exp_line, 0, 1, 1, 1); + connect(_exp_line, &QLineEdit::textChanged, [this, &_value](QString obj) { _value = obj; }); +} diff --git a/examples/compute_viewer/CalculatorWidget.hpp b/examples/compute_viewer/CalculatorWidget.hpp new file mode 100644 index 000000000..99e44a7d4 --- /dev/null +++ b/examples/compute_viewer/CalculatorWidget.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +using QtNodes::NodeId; +using QtNodes::PortIndex; +using QtNodes::PortType; + +class CalculatorWidget : public QWidget +{ + Q_OBJECT +public: + CalculatorWidget(QString &_f, QWidget *parent = nullptr); + + ~CalculatorWidget() = default; + + void setF(const QString &f) { _exp_line->setText(f); } + +private: + QLabel *exp_label; + QLineEdit *_exp_line; +}; diff --git a/examples/compute_viewer/ClutterFilterData.hpp b/examples/compute_viewer/ClutterFilterData.hpp new file mode 100644 index 000000000..dd546baf5 --- /dev/null +++ b/examples/compute_viewer/ClutterFilterData.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +class ClutterFilterData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"clutterfilter", "ClutterFilter"}; } +}; diff --git a/examples/compute_viewer/ClutterFilterModel.cpp b/examples/compute_viewer/ClutterFilterModel.cpp new file mode 100644 index 000000000..78aa79d83 --- /dev/null +++ b/examples/compute_viewer/ClutterFilterModel.cpp @@ -0,0 +1,61 @@ +#include "ClutterFilterModel.hpp" +#include "ClutterFilterData.hpp" +#include "ClutterFilterWidget.hpp" +#include "DasPwData.hpp" +#include +#include +#include + +using QtNodes::NodeStyle; + +unsigned int ClutterFilterModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 1; + + return result; +} + +NodeDataType ClutterFilterModel::dataType(PortType portType, PortIndex) const +{ + if (portType == PortType::In) { + return DasPwData().type(); + } else { + return ClutterFilterData().type(); + } +} + +std::shared_ptr ClutterFilterModel::outData(PortIndex) +{ + return nullptr; +} + +void ClutterFilterModel::setInData(std::shared_ptr data, PortIndex portIndex) {} + +QWidget *ClutterFilterModel::embeddedWidget() +{ + if (_widget) { + return _widget; + } + + _widget = new ClutterFilterWidget(_value, nullptr); + + return _widget; +} + +QJsonObject ClutterFilterModel::save() const +{ + QJsonObject retval = NodeDelegateModel::save(); + retval["value"] = _value; + return retval; +} + +void ClutterFilterModel::load(QJsonObject const &object) +{ + NodeDelegateModel::load(object); + _value = object["value"].toDouble(); +} diff --git a/examples/compute_viewer/ClutterFilterModel.hpp b/examples/compute_viewer/ClutterFilterModel.hpp new file mode 100644 index 000000000..2ec8cea54 --- /dev/null +++ b/examples/compute_viewer/ClutterFilterModel.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include "ClutterFilterWidget.hpp" +#include +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class ClutterFilterModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~ClutterFilterModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("ClutterFilter"); } + + QString name() const override { return QStringLiteral("ClutterFilter"); } + + QJsonObject save() const override; + + void load(QJsonObject const &) override; + +private: + ClutterFilterWidget *_widget; + float _value; +}; diff --git a/examples/compute_viewer/ClutterFilterWidget.cpp b/examples/compute_viewer/ClutterFilterWidget.cpp new file mode 100644 index 000000000..3d0df785a --- /dev/null +++ b/examples/compute_viewer/ClutterFilterWidget.cpp @@ -0,0 +1,41 @@ +#include "ClutterFilterWidget.hpp" +#include +#include +#include +#include +#include +#include +#include +#include + +ClutterFilterWidget::ClutterFilterWidget(float &_value, QWidget *parent) + : QWidget(parent) +{ + setSizePolicy(QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Minimum); + + QGridLayout *layout = new QGridLayout(this); + + _value = std::clamp(_value, 0.15f, 0.75f); + + _value_line = new QLineEdit(this); + _value_line->setValidator(new QDoubleValidator()); + _value_line->setText(QString::number(_value)); + _value_line->setFixedWidth(40); + layout->addWidget(_value_line, 0, 0, 1, 1); + + _value_scroll = new QSlider(Qt::Orientation::Horizontal, this); + _value_scroll->setMinimum(15); + _value_scroll->setMaximum(75); + _value_scroll->setValue(round(_value * 100)); + _value_scroll->setFixedWidth(150); + layout->addWidget(_value_scroll, 0, 1, 1, 1); + + connect(_value_line, &QLineEdit::textChanged, [this, &_value](QString obj) { + _value = obj.toFloat(); + _value_scroll->setValue(static_cast(round(_value * 100.))); + }); + connect(_value_scroll, &QSlider::valueChanged, [this, &_value](int value) { + _value = static_cast(value) / 100.; + _value_line->setText(QString::number(_value)); + }); +} diff --git a/examples/compute_viewer/ClutterFilterWidget.hpp b/examples/compute_viewer/ClutterFilterWidget.hpp new file mode 100644 index 000000000..9169c8da9 --- /dev/null +++ b/examples/compute_viewer/ClutterFilterWidget.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +using QtNodes::NodeId; +using QtNodes::PortIndex; +using QtNodes::PortType; + +class ClutterFilterWidget : public QWidget +{ + Q_OBJECT +public: + ClutterFilterWidget(float &_f, QWidget *parent = nullptr); + + ~ClutterFilterWidget() = default; + + void setF(float f) + { + _value_scroll->setValue(static_cast(f * 100.)); + _value_line->setText(QString::number(f)); + } + +private: + QLineEdit *_value_line; + QSlider *_value_scroll; +}; diff --git a/examples/compute_viewer/DasPwData.hpp b/examples/compute_viewer/DasPwData.hpp new file mode 100644 index 000000000..ec1f46a30 --- /dev/null +++ b/examples/compute_viewer/DasPwData.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +class DasPwData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"daspw", "DasPw"}; } +}; diff --git a/examples/compute_viewer/DasPwModel.cpp b/examples/compute_viewer/DasPwModel.cpp new file mode 100644 index 000000000..db367561e --- /dev/null +++ b/examples/compute_viewer/DasPwModel.cpp @@ -0,0 +1,63 @@ +#include "DasPwModel.hpp" +#include "DasPwData.hpp" +#include "DasPwWidget.hpp" +#include "DecimationData.hpp" +#include +#include +#include + +using QtNodes::NodeStyle; + +unsigned int DasPwModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 1; + + return result; +} + +NodeDataType DasPwModel::dataType(PortType portType, PortIndex) const +{ + if (portType == PortType::In) { + return DecimationData().type(); + } else { + return DasPwData().type(); + } +} + +std::shared_ptr DasPwModel::outData(PortIndex) +{ + return nullptr; +} + +void DasPwModel::setInData(std::shared_ptr data, PortIndex portIndex) {} + +QWidget *DasPwModel::embeddedWidget() +{ + if (_widget) { + return _widget; + } + + _widget = new DasPwWidget(_f, _c0, nullptr); + + return _widget; +} + +QJsonObject DasPwModel::save() const +{ + QJsonObject retval = NodeDelegateModel::save(); + retval["F"] = _f; + retval["c0"] = _c0; + return retval; +} + +void DasPwModel::load(QJsonObject const &object) +{ + NodeDelegateModel::load(object); + _f = object["F"].toDouble(); + _c0 = object["c0"].toDouble(); +} diff --git a/examples/compute_viewer/DasPwModel.hpp b/examples/compute_viewer/DasPwModel.hpp new file mode 100644 index 000000000..ee695d87d --- /dev/null +++ b/examples/compute_viewer/DasPwModel.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include "DasPwWidget.hpp" +#include +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class DasPwModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~DasPwModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("DasPw"); } + + QString name() const override { return QStringLiteral("DasPw"); } + + QJsonObject save() const override; + + void load(QJsonObject const &) override; + +private: + DasPwWidget *_widget; + float _f; + float _c0; +}; diff --git a/examples/compute_viewer/DasPwWidget.cpp b/examples/compute_viewer/DasPwWidget.cpp new file mode 100644 index 000000000..567ba9774 --- /dev/null +++ b/examples/compute_viewer/DasPwWidget.cpp @@ -0,0 +1,32 @@ +#include "DasPwWidget.hpp" +#include +#include +#include +#include +#include + +DasPwWidget::DasPwWidget(float &_f, float &_c0, QWidget *parent) + : QWidget(parent) +{ + setSizePolicy(QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Minimum); + + QGridLayout *layout = new QGridLayout(this); + + QLabel *f_label = new QLabel("F#", this); + layout->addWidget(f_label, 0, 0, 1, 1); + _f_line = new QLineEdit(this); + _f_line->setValidator(new QDoubleValidator()); + _f_line->setText(QString::number(_f)); + _f_line->setFixedWidth(40); + layout->addWidget(_f_line, 0, 1, 1, 1); + connect(_f_line, &QLineEdit::textChanged, [this, &_f](QString obj) { _f = obj.toFloat(); }); + + QLabel *c0_label = new QLabel("c0", this); + layout->addWidget(c0_label, 1, 0, 1, 1); + _c0_line = new QLineEdit(this); + _c0_line->setValidator(new QDoubleValidator()); + _c0_line->setText(QString::number(_c0)); + _c0_line->setFixedWidth(40); + layout->addWidget(_c0_line, 1, 1, 1, 1); + connect(_c0_line, &QLineEdit::textChanged, [this, &_c0](QString obj) { _c0 = obj.toFloat(); }); +} diff --git a/examples/compute_viewer/DasPwWidget.hpp b/examples/compute_viewer/DasPwWidget.hpp new file mode 100644 index 000000000..a43e6cb6c --- /dev/null +++ b/examples/compute_viewer/DasPwWidget.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include +#include +#include +#include +#include + +using QtNodes::NodeId; +using QtNodes::PortIndex; +using QtNodes::PortType; + +class DasPwWidget : public QWidget +{ + Q_OBJECT +public: + DasPwWidget(float &_f, float &_c0, QWidget *parent = nullptr); + + ~DasPwWidget() = default; + + void setF(float f) { _f_line->setText(QString::number(f)); } + + void setC0(float c0) { _c0_line->setText(QString::number(c0)); } + +private: + QLineEdit *_f_line; + QLineEdit *_c0_line; +}; diff --git a/examples/compute_viewer/DecimationData.hpp b/examples/compute_viewer/DecimationData.hpp index 6c69b15ff..6724e64d2 100644 --- a/examples/compute_viewer/DecimationData.hpp +++ b/examples/compute_viewer/DecimationData.hpp @@ -5,8 +5,6 @@ using QtNodes::NodeData; using QtNodes::NodeDataType; -/// The class can potentially incapsulate any user data which -/// need to be transferred within the Node Editor graph class DecimationData : public NodeData { public: diff --git a/examples/compute_viewer/DecimationModel.cpp b/examples/compute_viewer/DecimationModel.cpp index 475005665..72811ac18 100644 --- a/examples/compute_viewer/DecimationModel.cpp +++ b/examples/compute_viewer/DecimationModel.cpp @@ -34,14 +34,7 @@ std::shared_ptr DecimationModel::outData(PortIndex) return nullptr; } -void DecimationModel::setInData(std::shared_ptr data, PortIndex portIndex) -{ - auto numberData = std::dynamic_pointer_cast(data); - - if (!data) { - Q_EMIT dataInvalidated(0); - } -} +void DecimationModel::setInData(std::shared_ptr data, PortIndex portIndex) {} QWidget *DecimationModel::embeddedWidget() { @@ -49,7 +42,7 @@ QWidget *DecimationModel::embeddedWidget() return _widget; } - _widget = new DecimationWidget(nullptr); + _widget = new DecimationWidget(_m, nullptr); return _widget; } @@ -57,12 +50,12 @@ QWidget *DecimationModel::embeddedWidget() QJsonObject DecimationModel::save() const { QJsonObject retval = NodeDelegateModel::save(); - retval["M"] = _widget->getM(); + retval["M"] = _m; return retval; } void DecimationModel::load(QJsonObject const &object) { NodeDelegateModel::load(object); - _widget->setM(object["M"].toDouble()); + _m = object["M"].toDouble(); } diff --git a/examples/compute_viewer/DecimationModel.hpp b/examples/compute_viewer/DecimationModel.hpp index 51713fdb4..d91e5ba01 100644 --- a/examples/compute_viewer/DecimationModel.hpp +++ b/examples/compute_viewer/DecimationModel.hpp @@ -46,4 +46,5 @@ class DecimationModel : public NodeDelegateModel private: DecimationWidget *_widget; + float _m; }; diff --git a/examples/compute_viewer/DecimationWidget.cpp b/examples/compute_viewer/DecimationWidget.cpp index 9c559b606..44af7df90 100644 --- a/examples/compute_viewer/DecimationWidget.cpp +++ b/examples/compute_viewer/DecimationWidget.cpp @@ -1,10 +1,11 @@ #include "DecimationWidget.hpp" +#include #include #include #include #include -DecimationWidget::DecimationWidget(QWidget *parent) +DecimationWidget::DecimationWidget(float &_m, QWidget *parent) : QWidget(nullptr) { setSizePolicy(QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Minimum); @@ -14,6 +15,9 @@ DecimationWidget::DecimationWidget(QWidget *parent) QLabel *m_label = new QLabel("M", this); layout->addWidget(m_label, 0, 0, 1, 1); _m_line = new QLineEdit(this); + _m_line->setValidator(new QDoubleValidator()); + _m_line->setText(QString::number(_m)); + _m_line->setFixedWidth(40); layout->addWidget(_m_line, 0, 1, 1, 1); - connect(_m_line, &QLineEdit::textChanged, [this](QString obj) { _m = obj.toFloat(); }); + connect(_m_line, &QLineEdit::textChanged, [this, &_m](QString obj) { _m = obj.toFloat(); }); } diff --git a/examples/compute_viewer/DecimationWidget.hpp b/examples/compute_viewer/DecimationWidget.hpp index 7d7bad6d8..c404c4e0c 100644 --- a/examples/compute_viewer/DecimationWidget.hpp +++ b/examples/compute_viewer/DecimationWidget.hpp @@ -14,18 +14,12 @@ class DecimationWidget : public QWidget { Q_OBJECT public: - DecimationWidget(QWidget *parent = nullptr); + DecimationWidget(float &_m, QWidget *parent = nullptr); ~DecimationWidget() = default; - float getM() const { return _m; } - void setM(float m) - { - _m = m; - _m_line->setText(QString::number(m)); - } + void setM(float m) { _m_line->setText(QString::number(m)); } private: - float _m; QLineEdit *_m_line; }; diff --git a/examples/compute_viewer/DopplerViewerData.hpp b/examples/compute_viewer/DopplerViewerData.hpp new file mode 100644 index 000000000..c5473e1a2 --- /dev/null +++ b/examples/compute_viewer/DopplerViewerData.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +class DopplerViewerData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"dopplerviewer", "DopplerViewer"}; } +}; diff --git a/examples/compute_viewer/DopplerViewerModel.cpp b/examples/compute_viewer/DopplerViewerModel.cpp new file mode 100644 index 000000000..0e52100fd --- /dev/null +++ b/examples/compute_viewer/DopplerViewerModel.cpp @@ -0,0 +1,39 @@ +#include "DopplerViewerModel.hpp" +#include "ClutterFilterData.hpp" +#include "DopplerViewerData.hpp" +#include + +using QtNodes::NodeStyle; + +unsigned int DopplerViewerModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 0; + + return result; +} + +NodeDataType DopplerViewerModel::dataType(PortType portType, PortIndex) const +{ + if (portType == PortType::In) { + return ClutterFilterData().type(); + } else { + return DopplerViewerData().type(); + } +} + +std::shared_ptr DopplerViewerModel::outData(PortIndex) +{ + return nullptr; +} + +void DopplerViewerModel::setInData(std::shared_ptr data, PortIndex portIndex) {} + +QWidget *DopplerViewerModel::embeddedWidget() +{ + return nullptr; +} diff --git a/examples/compute_viewer/DopplerViewerModel.hpp b/examples/compute_viewer/DopplerViewerModel.hpp new file mode 100644 index 000000000..5c2e660b5 --- /dev/null +++ b/examples/compute_viewer/DopplerViewerModel.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class DopplerViewerModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~DopplerViewerModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("DopplerViewer"); } + + QString name() const override { return QStringLiteral("DopplerViewer"); } + +private: + float _value; +}; diff --git a/examples/compute_viewer/InputData.hpp b/examples/compute_viewer/InputData.hpp index 63483517e..748a27371 100644 --- a/examples/compute_viewer/InputData.hpp +++ b/examples/compute_viewer/InputData.hpp @@ -5,8 +5,6 @@ using QtNodes::NodeData; using QtNodes::NodeDataType; -/// The class can potentially incapsulate any user data which -/// need to be transferred within the Node Editor graph class InputData : public NodeData { public: diff --git a/examples/compute_viewer/InputModel.cpp b/examples/compute_viewer/InputModel.cpp index 865925685..e42950198 100644 --- a/examples/compute_viewer/InputModel.cpp +++ b/examples/compute_viewer/InputModel.cpp @@ -26,14 +26,7 @@ std::shared_ptr InputModel::outData(PortIndex) return nullptr; } -void InputModel::setInData(std::shared_ptr data, PortIndex portIndex) -{ - auto numberData = std::dynamic_pointer_cast(data); - - if (!data) { - Q_EMIT dataInvalidated(0); - } -} +void InputModel::setInData(std::shared_ptr data, PortIndex portIndex) {} QWidget *InputModel::embeddedWidget() { diff --git a/examples/compute_viewer/OutputModel.cpp b/examples/compute_viewer/OutputModel.cpp new file mode 100644 index 000000000..d60c73563 --- /dev/null +++ b/examples/compute_viewer/OutputModel.cpp @@ -0,0 +1,34 @@ +#include "OutputModel.hpp" +#include "CalculatorData.hpp" +#include + +using QtNodes::NodeStyle; + +unsigned int OutputModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 0; + + return result; +} + +NodeDataType OutputModel::dataType(PortType, PortIndex) const +{ + return CalculatorData().type(); +} + +std::shared_ptr OutputModel::outData(PortIndex) +{ + return nullptr; +} + +void OutputModel::setInData(std::shared_ptr data, PortIndex portIndex) {} + +QWidget *OutputModel::embeddedWidget() +{ + return nullptr; +} diff --git a/examples/compute_viewer/OutputModel.hpp b/examples/compute_viewer/OutputModel.hpp new file mode 100644 index 000000000..f003bd78d --- /dev/null +++ b/examples/compute_viewer/OutputModel.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of outputs and outputs for the Node. +/// In this example it has no logic. +class OutputModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~OutputModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("Output"); } + + QString name() const override { return QStringLiteral("Output"); } +}; diff --git a/examples/compute_viewer/RoiData.hpp b/examples/compute_viewer/RoiData.hpp new file mode 100644 index 000000000..424450339 --- /dev/null +++ b/examples/compute_viewer/RoiData.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include + +using QtNodes::NodeData; +using QtNodes::NodeDataType; + +class RoiData : public NodeData +{ +public: + NodeDataType type() const override { return NodeDataType{"roi", "Roi"}; } +}; diff --git a/examples/compute_viewer/RoiRectModel.cpp b/examples/compute_viewer/RoiRectModel.cpp new file mode 100644 index 000000000..c665faea7 --- /dev/null +++ b/examples/compute_viewer/RoiRectModel.cpp @@ -0,0 +1,71 @@ +#include "RoiRectModel.hpp" +#include "ClutterFilterData.hpp" +#include "RoiData.hpp" +#include "RoiRectWidget.hpp" +#include +#include +#include + +using QtNodes::NodeStyle; + +unsigned int RoiRectModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 1; + + return result; +} + +NodeDataType RoiRectModel::dataType(PortType portType, PortIndex) const +{ + if (portType == PortType::In) { + return ClutterFilterData().type(); + } else { + return RoiData().type(); + } +} + +std::shared_ptr RoiRectModel::outData(PortIndex) +{ + return nullptr; +} + +void RoiRectModel::setInData(std::shared_ptr data, PortIndex portIndex) {} + +QWidget *RoiRectModel::embeddedWidget() +{ + if (_widget) { + return _widget; + } + + _widget = new RoiRectWidget(_x1, _x2, _y1, _y2, _z1, _z2, nullptr); + + return _widget; +} + +QJsonObject RoiRectModel::save() const +{ + QJsonObject retval = NodeDelegateModel::save(); + retval["x1"] = _x1; + retval["x2"] = _x2; + retval["y1"] = _y1; + retval["y2"] = _y2; + retval["z1"] = _z1; + retval["z2"] = _z2; + return retval; +} + +void RoiRectModel::load(QJsonObject const &object) +{ + NodeDelegateModel::load(object); + _x1 = object["x1"].toDouble(); + _x2 = object["x2"].toDouble(); + _y1 = object["y1"].toDouble(); + _y2 = object["y2"].toDouble(); + _z1 = object["z1"].toDouble(); + _z2 = object["z2"].toDouble(); +} diff --git a/examples/compute_viewer/RoiRectModel.hpp b/examples/compute_viewer/RoiRectModel.hpp new file mode 100644 index 000000000..918fe920c --- /dev/null +++ b/examples/compute_viewer/RoiRectModel.hpp @@ -0,0 +1,55 @@ +#pragma once + +#include "RoiRectWidget.hpp" +#include +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class RoiRectModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~RoiRectModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("Roi"); } + + QString name() const override { return QStringLiteral("RoiRect"); } + + QJsonObject save() const override; + + void load(QJsonObject const &) override; + +private: + RoiRectWidget *_widget; + float _x1; + float _x2; + float _y1; + float _y2; + float _z1; + float _z2; +}; diff --git a/examples/compute_viewer/RoiRectWidget.cpp b/examples/compute_viewer/RoiRectWidget.cpp new file mode 100644 index 000000000..f241bf100 --- /dev/null +++ b/examples/compute_viewer/RoiRectWidget.cpp @@ -0,0 +1,70 @@ +#include "RoiRectWidget.hpp" +#include +#include +#include +#include +#include + +RoiRectWidget::RoiRectWidget( + float &x1, float &x2, float &y1, float &y2, float &z1, float &z2, QWidget *parent) + : QWidget(parent) +{ + setSizePolicy(QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Minimum); + + QGridLayout *layout = new QGridLayout(this); + + _x1 = new QLineEdit(this); + _x1->setValidator(new QDoubleValidator()); + _x1->setText(QString::number(x1)); + _x1->setFixedWidth(40); + layout->addWidget(_x1, 1, 1, 1, 1); + connect(_x1, &QLineEdit::textChanged, [this, &x1](QString obj) { x1 = obj.toFloat(); }); + + _x2 = new QLineEdit(this); + _x2->setValidator(new QDoubleValidator()); + _x2->setText(QString::number(x2)); + _x2->setFixedWidth(40); + layout->addWidget(_x2, 1, 2, 1, 1); + connect(_x2, &QLineEdit::textChanged, [this, &x2](QString obj) { x2 = obj.toFloat(); }); + + _y1 = new QLineEdit(this); + _y1->setValidator(new QDoubleValidator()); + _y1->setText(QString::number(y1)); + _y1->setFixedWidth(40); + layout->addWidget(_y1, 2, 1, 1, 1); + connect(_y1, &QLineEdit::textChanged, [this, &y1](QString obj) { y1 = obj.toFloat(); }); + + _y2 = new QLineEdit(this); + _y2->setValidator(new QDoubleValidator()); + _y2->setText(QString::number(y2)); + _y2->setFixedWidth(40); + layout->addWidget(_y2, 2, 2, 1, 1); + connect(_y2, &QLineEdit::textChanged, [this, &y2](QString obj) { y2 = obj.toFloat(); }); + + _z1 = new QLineEdit(this); + _z1->setValidator(new QDoubleValidator()); + _z1->setText(QString::number(z1)); + _z1->setFixedWidth(40); + layout->addWidget(_z1, 3, 1, 1, 1); + connect(_z1, &QLineEdit::textChanged, [this, &z1](QString obj) { z1 = obj.toFloat(); }); + + _z2 = new QLineEdit(this); + _z2->setValidator(new QDoubleValidator()); + _z2->setText(QString::number(z2)); + _z2->setFixedWidth(40); + layout->addWidget(_z2, 3, 2, 1, 1); + connect(_z2, &QLineEdit::textChanged, [this, &z2](QString obj) { z2 = obj.toFloat(); }); + + QLabel *label; + label = new QLabel("x", this); + layout->addWidget(label, 1, 0, 1, 1); + label = new QLabel("y", this); + layout->addWidget(label, 2, 0, 1, 1); + label = new QLabel("z", this); + layout->addWidget(label, 3, 0, 1, 1); + + label = new QLabel("min", this); + layout->addWidget(label, 0, 1, 1, 1); + label = new QLabel("max", this); + layout->addWidget(label, 0, 2, 1, 1); +} diff --git a/examples/compute_viewer/RoiRectWidget.hpp b/examples/compute_viewer/RoiRectWidget.hpp new file mode 100644 index 000000000..d1f3ee70e --- /dev/null +++ b/examples/compute_viewer/RoiRectWidget.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include +#include +#include +#include +#include + +using QtNodes::NodeId; +using QtNodes::PortIndex; +using QtNodes::PortType; + +class RoiRectWidget : public QWidget +{ + Q_OBJECT +public: + RoiRectWidget( + float &x1, float &x2, float &y1, float &y2, float &z1, float &z2, QWidget *parent = nullptr); + + ~RoiRectWidget() = default; + + void setX1(float f) { _x1->setText(QString::number(f)); } + void setX2(float f) { _x2->setText(QString::number(f)); } + void setY1(float f) { _y1->setText(QString::number(f)); } + void setY2(float f) { _y2->setText(QString::number(f)); } + void setZ1(float f) { _z1->setText(QString::number(f)); } + void setZ2(float f) { _z2->setText(QString::number(f)); } + +private: + QLineEdit *_x1; + QLineEdit *_x2; + QLineEdit *_y1; + QLineEdit *_y2; + QLineEdit *_z1; + QLineEdit *_z2; +}; diff --git a/examples/compute_viewer/RoiSphereModel.cpp b/examples/compute_viewer/RoiSphereModel.cpp new file mode 100644 index 000000000..fc07afb09 --- /dev/null +++ b/examples/compute_viewer/RoiSphereModel.cpp @@ -0,0 +1,67 @@ +#include "RoiSphereModel.hpp" +#include "ClutterFilterData.hpp" +#include "RoiData.hpp" +#include "RoiSphereWidget.hpp" +#include +#include +#include + +using QtNodes::NodeStyle; + +unsigned int RoiSphereModel::nPorts(PortType portType) const +{ + unsigned int result; + + if (portType == PortType::In) + result = 1; + else + result = 1; + + return result; +} + +NodeDataType RoiSphereModel::dataType(PortType portType, PortIndex) const +{ + if (portType == PortType::In) { + return ClutterFilterData().type(); + } else { + return RoiData().type(); + } +} + +std::shared_ptr RoiSphereModel::outData(PortIndex) +{ + return nullptr; +} + +void RoiSphereModel::setInData(std::shared_ptr data, PortIndex portIndex) {} + +QWidget *RoiSphereModel::embeddedWidget() +{ + if (_widget) { + return _widget; + } + + _widget = new RoiSphereWidget(_x, _y, _z, _r, nullptr); + + return nullptr; +} + +QJsonObject RoiSphereModel::save() const +{ + QJsonObject retval = NodeDelegateModel::save(); + retval["x"] = _x; + retval["y"] = _y; + retval["z"] = _z; + retval["r"] = _r; + return retval; +} + +void RoiSphereModel::load(QJsonObject const &object) +{ + NodeDelegateModel::load(object); + _x = object["x"].toDouble(); + _y = object["y"].toDouble(); + _z = object["z"].toDouble(); + _r = object["r"].toDouble(); +} diff --git a/examples/compute_viewer/RoiSphereModel.hpp b/examples/compute_viewer/RoiSphereModel.hpp new file mode 100644 index 000000000..a7e97d719 --- /dev/null +++ b/examples/compute_viewer/RoiSphereModel.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "RoiSphereWidget.hpp" +#include +#include +#include +#include +#include +#include +#include + +using QtNodes::ConnectionPolicy; +using QtNodes::NodeData; +using QtNodes::NodeDataType; +using QtNodes::NodeDelegateModel; +using QtNodes::PortIndex; +using QtNodes::PortType; + +/// The model dictates the number of inputs and outputs for the Node. +/// In this example it has no logic. +class RoiSphereModel : public NodeDelegateModel +{ + Q_OBJECT + +public: + ~RoiSphereModel() override = default; + +public: + unsigned int nPorts(PortType portType) const override; + + NodeDataType dataType(PortType portType, PortIndex portIndex) const override; + + std::shared_ptr outData(PortIndex port) override; + + void setInData(std::shared_ptr data, PortIndex portIndex) override; + + QWidget *embeddedWidget() override; + + QString caption() const override { return QStringLiteral("Roi"); } + + QString name() const override { return QStringLiteral("RoiSphere"); } + + QJsonObject save() const override; + + void load(QJsonObject const &) override; + +private: + RoiSphereWidget *_widget; + float _x; + float _y; + float _z; + float _r; +}; diff --git a/examples/compute_viewer/RoiSphereWidget.cpp b/examples/compute_viewer/RoiSphereWidget.cpp new file mode 100644 index 000000000..ffad9a625 --- /dev/null +++ b/examples/compute_viewer/RoiSphereWidget.cpp @@ -0,0 +1,52 @@ +#include "RoiSphereWidget.hpp" +#include +#include +#include +#include +#include + +RoiSphereWidget::RoiSphereWidget(float &x, float &y, float &z, float &r, QWidget *parent) + : QWidget(parent) +{ + setSizePolicy(QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Minimum); + + QGridLayout *layout = new QGridLayout(this); + + _x = new QLineEdit(this); + _x->setValidator(new QDoubleValidator()); + _x->setText(QString::number(x)); + _x->setFixedWidth(40); + layout->addWidget(_x, 0, 1, 1, 1); + connect(_x, &QLineEdit::textChanged, [this, &x](QString obj) { x = obj.toFloat(); }); + + _y = new QLineEdit(this); + _y->setValidator(new QDoubleValidator()); + _y->setText(QString::number(y)); + _y->setFixedWidth(40); + layout->addWidget(_y, 1, 1, 1, 1); + connect(_y, &QLineEdit::textChanged, [this, &y](QString obj) { y = obj.toFloat(); }); + + _z = new QLineEdit(this); + _z->setValidator(new QDoubleValidator()); + _z->setText(QString::number(z)); + _z->setFixedWidth(40); + layout->addWidget(_z, 2, 1, 1, 1); + connect(_z, &QLineEdit::textChanged, [this, &z](QString obj) { z = obj.toFloat(); }); + + _r = new QLineEdit(this); + _r->setValidator(new QDoubleValidator()); + _r->setText(QString::number(r)); + _r->setFixedWidth(40); + layout->addWidget(_r, 3, 1, 1, 1); + connect(_r, &QLineEdit::textChanged, [this, &r](QString obj) { r = obj.toFloat(); }); + + QLabel *label; + label = new QLabel("x", this); + layout->addWidget(label, 0, 0, 1, 1); + label = new QLabel("y", this); + layout->addWidget(label, 1, 0, 1, 1); + label = new QLabel("z", this); + layout->addWidget(label, 2, 0, 1, 1); + label = new QLabel("r", this); + layout->addWidget(label, 3, 0, 1, 1); +} diff --git a/examples/compute_viewer/RoiSphereWidget.hpp b/examples/compute_viewer/RoiSphereWidget.hpp new file mode 100644 index 000000000..9479dbefe --- /dev/null +++ b/examples/compute_viewer/RoiSphereWidget.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include +#include +#include + +using QtNodes::NodeId; +using QtNodes::PortIndex; +using QtNodes::PortType; + +class RoiSphereWidget : public QWidget +{ + Q_OBJECT +public: + RoiSphereWidget(float &x, float &y, float &z, float &r, QWidget *parent = nullptr); + + ~RoiSphereWidget() = default; + + void setX(float f) { _x->setText(QString::number(f)); } + void setY(float f) { _y->setText(QString::number(f)); } + void setZ(float f) { _z->setText(QString::number(f)); } + void setR(float f) { _r->setText(QString::number(f)); } + +private: + QLineEdit *_x; + QLineEdit *_y; + QLineEdit *_z; + QLineEdit *_r; +}; diff --git a/examples/compute_viewer/example.flow b/examples/compute_viewer/example.flow new file mode 100644 index 000000000..ad527a675 --- /dev/null +++ b/examples/compute_viewer/example.flow @@ -0,0 +1,197 @@ +{ + "connections": [ + { + "inPortIndex": 0, + "intNodeId": 9, + "outNodeId": 7, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 2, + "outNodeId": 1, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 1, + "outNodeId": 0, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 7, + "outNodeId": 5, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 3, + "outNodeId": 2, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 4, + "outNodeId": 3, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 5, + "outNodeId": 3, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 6, + "outNodeId": 3, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 8, + "outNodeId": 6, + "outPortIndex": 0 + }, + { + "inPortIndex": 1, + "intNodeId": 9, + "outNodeId": 8, + "outPortIndex": 0 + }, + { + "inPortIndex": 0, + "intNodeId": 10, + "outNodeId": 9, + "outPortIndex": 0 + } + ], + "nodes": [ + { + "id": 0, + "internal-data": { + "model-name": "Input" + }, + "position": { + "x": -78, + "y": -89.04032850545761 + } + }, + { + "id": 1, + "internal-data": { + "M": 4, + "model-name": "Decimation" + }, + "position": { + "x": 62, + "y": -90 + } + }, + { + "id": 2, + "internal-data": { + "F": 1.5, + "c0": 1540, + "model-name": "DasPw" + }, + "position": { + "x": 478, + "y": -42 + } + }, + { + "id": 3, + "internal-data": { + "model-name": "ClutterFilter", + "value": 0.4099999964237213 + }, + "position": { + "x": 897.3249370277077, + "y": -13.465994962216623 + } + }, + { + "id": 4, + "internal-data": { + "model-name": "DopplerViewer" + }, + "position": { + "x": 1367.9999999999998, + "y": -14.399999999999997 + } + }, + { + "id": 5, + "internal-data": { + "model-name": "RoiRect", + "x1": 1, + "x2": 2, + "y1": 3, + "y2": 4, + "z1": 5, + "z2": 6 + }, + "position": { + "x": 143.98964455639518, + "y": 199.3702770780856 + } + }, + { + "id": 6, + "internal-data": { + "model-name": "RoiSphere", + "r": 1, + "x": 4, + "y": 3, + "z": 2 + }, + "position": { + "x": 164.7573817520291, + "y": 452.7366708648194 + } + }, + { + "id": 7, + "internal-data": { + "model-name": "Average" + }, + "position": { + "x": 654.760603251236, + "y": 249.02055248468446 + } + }, + { + "id": 8, + "internal-data": { + "model-name": "Average" + }, + "position": { + "x": 642.2615021612712, + "y": 457.6593937556364 + } + }, + { + "id": 9, + "internal-data": { + "expression": "x1+x2", + "model-name": "Calculator" + }, + "position": { + "x": 841.2856502860965, + "y": 328.5020158259996 + } + }, + { + "id": 10, + "internal-data": { + "model-name": "Output" + }, + "position": { + "x": 1240, + "y": 327 + } + } + ] +} diff --git a/examples/compute_viewer/main.cpp b/examples/compute_viewer/main.cpp index 441ebe172..9c688aef5 100644 --- a/examples/compute_viewer/main.cpp +++ b/examples/compute_viewer/main.cpp @@ -1,5 +1,13 @@ +#include "AverageModel.hpp" +#include "CalculatorModel.hpp" +#include "ClutterFilterModel.hpp" +#include "DasPwModel.hpp" #include "DecimationModel.hpp" +#include "DopplerViewerModel.hpp" #include "InputModel.hpp" +#include "OutputModel.hpp" +#include "RoiRectModel.hpp" +#include "RoiSphereModel.hpp" #include #include #include @@ -25,8 +33,16 @@ static std::shared_ptr registerDataModels() { auto ret = std::make_shared(); - ret->registerModel("Input"); - ret->registerModel("Decimation"); + ret->registerModel("Node"); + ret->registerModel("Node"); + ret->registerModel("Node"); + ret->registerModel("Node"); + ret->registerModel("Node"); + ret->registerModel("Node"); + ret->registerModel("Node"); + ret->registerModel("Node"); + ret->registerModel("Node"); + ret->registerModel("Node"); return ret; } From 9860f834f630db28ef25a18391199fe692ff21f1 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Wed, 8 Nov 2023 12:34:20 +0100 Subject: [PATCH 16/27] Call WINDEPLOYQT_EXECUTABLE for all example --- examples/acquisition_viewer/CMakeLists.txt | 8 ++++++++ examples/calculator/CMakeLists.txt | 14 ++++++++++++++ examples/calculator_qml/CMakeLists.txt | 10 ++++++++++ examples/compute_viewer/CMakeLists.txt | 8 ++++++++ examples/connection_colors/CMakeLists.txt | 8 ++++++++ examples/dynamic_ports/CMakeLists.txt | 8 ++++++++ examples/lock_nodes_and_connections/CMakeLists.txt | 10 ++++++++++ examples/resizable_images/CMakeLists.txt | 8 ++++++++ examples/simple_graph_model/CMakeLists.txt | 8 ++++++++ examples/styles/CMakeLists.txt | 8 ++++++++ examples/text/CMakeLists.txt | 8 ++++++++ examples/vertical_layout/CMakeLists.txt | 8 ++++++++ 12 files changed, 106 insertions(+) diff --git a/examples/acquisition_viewer/CMakeLists.txt b/examples/acquisition_viewer/CMakeLists.txt index 9081c7d99..996dd5522 100644 --- a/examples/acquisition_viewer/CMakeLists.txt +++ b/examples/acquisition_viewer/CMakeLists.txt @@ -6,3 +6,11 @@ add_executable(acquisition_viewer ${ACQ_SOURCE_FILES} ${ACQ_HEADER_FILES} CMakeLists.txt) target_link_libraries(acquisition_viewer QtNodes) + +if(WIN32) + add_custom_command( + TARGET acquisition_viewer + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/calculator/CMakeLists.txt b/examples/calculator/CMakeLists.txt index 49282ba34..7bb23f336 100644 --- a/examples/calculator/CMakeLists.txt +++ b/examples/calculator/CMakeLists.txt @@ -38,3 +38,17 @@ add_executable(headless_calculator ) target_link_libraries(headless_calculator QtNodes) + +if(WIN32) + add_custom_command( + TARGET calculator + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") + add_custom_command( + TARGET headless_calculator + POST_BUILD + COMMAND + ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/calculator_qml/CMakeLists.txt b/examples/calculator_qml/CMakeLists.txt index 70b72a539..633695007 100644 --- a/examples/calculator_qml/CMakeLists.txt +++ b/examples/calculator_qml/CMakeLists.txt @@ -32,3 +32,13 @@ qt_add_qml_module( ) target_link_libraries(calculator_qml PRIVATE Qt6::Gui Qt6::Quick QtNodes) + +if(WIN32) + add_custom_command( + TARGET calculator_qml + POST_BUILD + COMMAND + ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --qmldir ${CMAKE_CURRENT_SOURCE_DIR} --pdb + "$") +endif() diff --git a/examples/compute_viewer/CMakeLists.txt b/examples/compute_viewer/CMakeLists.txt index 16ac9c558..8cdd89f0e 100644 --- a/examples/compute_viewer/CMakeLists.txt +++ b/examples/compute_viewer/CMakeLists.txt @@ -47,3 +47,11 @@ add_executable(compute_viewer ${COMPUTE_SOURCE_FILES} ${COMPUTE_HEADER_FILES} CMakeLists.txt) target_link_libraries(compute_viewer QtNodes) + +if(WIN32) + add_custom_command( + TARGET compute_viewer + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/connection_colors/CMakeLists.txt b/examples/connection_colors/CMakeLists.txt index 7a6cff9d6..11b475c81 100644 --- a/examples/connection_colors/CMakeLists.txt +++ b/examples/connection_colors/CMakeLists.txt @@ -4,3 +4,11 @@ file(GLOB_RECURSE HPPS ./*.hpp ) add_executable(connection_colors ${CPPS} ${HPPS}) target_link_libraries(connection_colors QtNodes) + +if(WIN32) + add_custom_command( + TARGET connection_colors + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/dynamic_ports/CMakeLists.txt b/examples/dynamic_ports/CMakeLists.txt index 8b3f4e7e4..6352ce4f1 100644 --- a/examples/dynamic_ports/CMakeLists.txt +++ b/examples/dynamic_ports/CMakeLists.txt @@ -8,3 +8,11 @@ add_executable( "PortAddRemoveWidget.hpp") target_link_libraries(dynamic_ports QtNodes) + +if(WIN32) + add_custom_command( + TARGET dynamic_ports + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/lock_nodes_and_connections/CMakeLists.txt b/examples/lock_nodes_and_connections/CMakeLists.txt index 04b7ad8e9..522311472 100644 --- a/examples/lock_nodes_and_connections/CMakeLists.txt +++ b/examples/lock_nodes_and_connections/CMakeLists.txt @@ -3,3 +3,13 @@ file(GLOB_RECURSE CPPS ./*.cpp ) add_executable(lock_nodes_and_connections ${CPPS}) target_link_libraries(lock_nodes_and_connections QtNodes) + +if(WIN32) + add_custom_command( + TARGET lock_nodes_and_connections + POST_BUILD + COMMAND + ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb + "$") +endif() diff --git a/examples/resizable_images/CMakeLists.txt b/examples/resizable_images/CMakeLists.txt index 1f810fcf9..c50ff01be 100644 --- a/examples/resizable_images/CMakeLists.txt +++ b/examples/resizable_images/CMakeLists.txt @@ -4,3 +4,11 @@ file(GLOB_RECURSE HPPS ./*.hpp ) add_executable(resizable_images ${CPPS} ${HPPS}) target_link_libraries(resizable_images QtNodes) + +if(WIN32) + add_custom_command( + TARGET resizable_images + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/simple_graph_model/CMakeLists.txt b/examples/simple_graph_model/CMakeLists.txt index aaebe4f24..3a275bd88 100644 --- a/examples/simple_graph_model/CMakeLists.txt +++ b/examples/simple_graph_model/CMakeLists.txt @@ -4,3 +4,11 @@ file(GLOB_RECURSE HPPS ./*.hpp ) add_executable(simple_graph_model ${CPPS} ${HPPS}) target_link_libraries(simple_graph_model QtNodes) + +if(WIN32) + add_custom_command( + TARGET simple_graph_model + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/styles/CMakeLists.txt b/examples/styles/CMakeLists.txt index ebf3b6261..79de08af1 100644 --- a/examples/styles/CMakeLists.txt +++ b/examples/styles/CMakeLists.txt @@ -4,3 +4,11 @@ file(GLOB_RECURSE HPPS ./*.hpp ) add_executable(styles ${CPPS} ${HPPS}) target_link_libraries(styles QtNodes) + +if(WIN32) + add_custom_command( + TARGET styles + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/text/CMakeLists.txt b/examples/text/CMakeLists.txt index 7da46dd74..375d59549 100644 --- a/examples/text/CMakeLists.txt +++ b/examples/text/CMakeLists.txt @@ -4,3 +4,11 @@ file(GLOB_RECURSE HPPS ./*.hpp ) add_executable(text ${CPPS} ${HPPS}) target_link_libraries(text QtNodes) + +if(WIN32) + add_custom_command( + TARGET text + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() diff --git a/examples/vertical_layout/CMakeLists.txt b/examples/vertical_layout/CMakeLists.txt index 4fc8e3152..bdc6003d0 100644 --- a/examples/vertical_layout/CMakeLists.txt +++ b/examples/vertical_layout/CMakeLists.txt @@ -3,3 +3,11 @@ file(GLOB_RECURSE CPPS ./*.cpp ) add_executable(vertical_layout ${CPPS}) target_link_libraries(vertical_layout QtNodes) + +if(WIN32) + add_custom_command( + TARGET vertical_layout + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env VCINSTALLDIR=${CMAKE_GENERATOR_INSTANCE}/VC + ${WINDEPLOYQT_EXECUTABLE} --pdb "$") +endif() From 4f8f5439fdb7d9b7da1a37985da849062d0b1b56 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Fri, 10 Nov 2023 11:27:48 +0100 Subject: [PATCH 17/27] Don't skip default action for mouse event --- src/GraphicsView.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index 4a4623685..79f84f3d4 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -162,6 +162,12 @@ void GraphicsView::centerScene() bool GraphicsView::handleMouseEvent(QMouseEvent *event) { + if (event->type() == QEvent::MouseButtonPress) { + mousePressEvent(event); + } else if (event->type() == QEvent::MouseMove) { + mouseMoveEvent(event); + } + QPoint pos = event->pos(); QWidget *child = childAt(pos); @@ -257,6 +263,10 @@ bool GraphicsView::handleEvent(QEvent *e) if (QMouseEvent *me = dynamic_cast(e)) { return handleMouseEvent(me); } + if (QWheelEvent *we = dynamic_cast(e)) { + wheelEvent(we); + return true; + } return QWidget::event(e); } From ef934e013812790e96badd86b07a3ee110e647dd Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:39:32 +0200 Subject: [PATCH 18/27] Use ResultWidget --- CMakeLists.txt | 2 +- examples/calculator_qml/CMakeLists.txt | 5 ++- examples/calculator_qml/Display.qml | 11 +++++ .../calculator_qml/NumberDisplayDataModel.cpp | 24 +++++------ .../calculator_qml/NumberDisplayDataModel.hpp | 8 ++-- .../calculator_qml/NumberSourceDataModel.cpp | 42 ++++++++++--------- .../calculator_qml/NumberSourceDataModel.hpp | 13 +++--- examples/calculator_qml/Source.qml | 11 +++++ examples/calculator_qml/main.qrc | 2 + 9 files changed, 70 insertions(+), 48 deletions(-) create mode 100644 examples/calculator_qml/Display.qml create mode 100644 examples/calculator_qml/Source.qml diff --git a/CMakeLists.txt b/CMakeLists.txt index 35b726dc7..7a71a8cd0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ else() find_package(QT NAMES Qt5 REQUIRED COMPONENTS Widgets) endif() -find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Gui OpenGL Quick) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Gui OpenGL Quick QuickWidgets) message(STATUS "QT_VERSION: ${QT_VERSION}, QT_DIR: ${QT_DIR}") if (${QT_VERSION} VERSION_LESS 5.11.0) diff --git a/examples/calculator_qml/CMakeLists.txt b/examples/calculator_qml/CMakeLists.txt index 633695007..bcf39d8e8 100644 --- a/examples/calculator_qml/CMakeLists.txt +++ b/examples/calculator_qml/CMakeLists.txt @@ -27,11 +27,12 @@ qt_add_executable(calculator_qml ${CALC_SOURCE_FILES} ${CALC_HEADER_FILES} ${QT_RESOURCES}) qt_add_qml_module( - calculator_qml VERSION 1.0 URI hello QML_FILES main.qml # FramedImage.qml RESOURCES + calculator_qml VERSION 1.0 URI hello QML_FILES main.qml Source.qml Display.qml RESOURCES # img/world.png ) -target_link_libraries(calculator_qml PRIVATE Qt6::Gui Qt6::Quick QtNodes) +target_link_libraries(calculator_qml PRIVATE Qt6::Gui Qt6::Quick + Qt6::QuickWidgets QtNodes) if(WIN32) add_custom_command( diff --git a/examples/calculator_qml/Display.qml b/examples/calculator_qml/Display.qml new file mode 100644 index 000000000..50a2e0772 --- /dev/null +++ b/examples/calculator_qml/Display.qml @@ -0,0 +1,11 @@ +import QtQuick + +Rectangle { + anchors.fill: parent + Text { + id: text + objectName: "label" + text: "ff" + anchors.fill: parent + } +} diff --git a/examples/calculator_qml/NumberDisplayDataModel.cpp b/examples/calculator_qml/NumberDisplayDataModel.cpp index ae24c1fae..1ef25d674 100644 --- a/examples/calculator_qml/NumberDisplayDataModel.cpp +++ b/examples/calculator_qml/NumberDisplayDataModel.cpp @@ -1,11 +1,10 @@ #include "NumberDisplayDataModel.hpp" -#include +#include +#include +#include +#include #include -NumberDisplayDataModel::NumberDisplayDataModel() - : _label{nullptr} -{} - unsigned int NumberDisplayDataModel::nPorts(PortType portType) const { unsigned int result = 1; @@ -44,22 +43,23 @@ void NumberDisplayDataModel::setInData(std::shared_ptr data, PortIndex return; if (_numberData) { - _label->setText(_numberData->numberAsText()); + _label->setProperty("text", _numberData->numberAsText()); } else { - _label->clear(); + _label->setProperty("text", ""); } - - _label->adjustSize(); } QWidget *NumberDisplayDataModel::embeddedWidget() { if (!_label) { - _label = new QLabel(); - _label->setMargin(3); + _qwid = new QQuickWidget(nullptr); + _qwid->setSource(QUrl("qrc:/hello/Display.qml")); + _qwid->setFixedWidth(70); + _qwid->setFixedHeight(20); + _label = _qwid->rootObject()->findChild("label"); } - return _label; + return _qwid; } double NumberDisplayDataModel::number() const diff --git a/examples/calculator_qml/NumberDisplayDataModel.hpp b/examples/calculator_qml/NumberDisplayDataModel.hpp index 277966ab6..cd71b03b2 100644 --- a/examples/calculator_qml/NumberDisplayDataModel.hpp +++ b/examples/calculator_qml/NumberDisplayDataModel.hpp @@ -3,6 +3,7 @@ #include "DecimalData.hpp" #include #include +#include #include #include #include @@ -14,8 +15,6 @@ using QtNodes::NodeDelegateModel; using QtNodes::PortIndex; using QtNodes::PortType; -class QLabel; - /// The model dictates the number of inputs and outputs for the Node. /// In this example it has no logic. class NumberDisplayDataModel : public NodeDelegateModel @@ -23,8 +22,6 @@ class NumberDisplayDataModel : public NodeDelegateModel Q_OBJECT public: - NumberDisplayDataModel(); - ~NumberDisplayDataModel() = default; public: @@ -50,5 +47,6 @@ class NumberDisplayDataModel : public NodeDelegateModel private: std::shared_ptr _numberData; - QLabel *_label; + QQuickWidget *_qwid = nullptr; + QObject *_label = nullptr; }; diff --git a/examples/calculator_qml/NumberSourceDataModel.cpp b/examples/calculator_qml/NumberSourceDataModel.cpp index 96bcedafe..987b00d56 100644 --- a/examples/calculator_qml/NumberSourceDataModel.cpp +++ b/examples/calculator_qml/NumberSourceDataModel.cpp @@ -1,16 +1,13 @@ #include "NumberSourceDataModel.hpp" #include "DecimalData.hpp" -#include #include #include -#include +#include +#include +#include +#include #include -NumberSourceDataModel::NumberSourceDataModel() - : _lineEdit{nullptr} - , _number(std::make_shared(0.0)) -{} - QJsonObject NumberSourceDataModel::save() const { QJsonObject modelJson = NodeDelegateModel::save(); @@ -32,8 +29,9 @@ void NumberSourceDataModel::load(QJsonObject const &p) if (ok) { _number = std::make_shared(d); - if (_lineEdit) - _lineEdit->setText(strNum); + if (_lineEdit) { + _lineEdit->setProperty("text", strNum); + } } } } @@ -85,18 +83,21 @@ std::shared_ptr NumberSourceDataModel::outData(PortIndex) QWidget *NumberSourceDataModel::embeddedWidget() { - if (!_lineEdit) { - _lineEdit = new QLineEdit(); - - _lineEdit->setValidator(new QDoubleValidator()); - _lineEdit->setMaximumSize(_lineEdit->sizeHint()); - - connect(_lineEdit, &QLineEdit::textChanged, this, &NumberSourceDataModel::onTextEdited); + if (!_qwid) { + _qwid = new QQuickWidget(nullptr); + _qwid->setSource(QUrl("qrc:/hello/Display.qml")); + _qwid->setFixedWidth(70); + _qwid->setFixedHeight(20); + _lineEdit = _qwid->rootObject()->findChild("label"); + + if (_number) { + _lineEdit->setProperty("text", QString::number(_number->number())); + } - _lineEdit->setText(QString::number(_number->number())); + //connect(_lineEdit, &QLineEdit::textChanged, this, &NumberSourceDataModel::onTextEdited); } - return _lineEdit; + return _qwid; } void NumberSourceDataModel::setNumber(double n) @@ -105,6 +106,7 @@ void NumberSourceDataModel::setNumber(double n) Q_EMIT dataUpdated(0); - if (_lineEdit) - _lineEdit->setText(QString::number(_number->number())); + if (_lineEdit) { + _lineEdit->setProperty("text", QString::number(_number->number())); + } } diff --git a/examples/calculator_qml/NumberSourceDataModel.hpp b/examples/calculator_qml/NumberSourceDataModel.hpp index 30b2637bc..c8ebc8bd3 100644 --- a/examples/calculator_qml/NumberSourceDataModel.hpp +++ b/examples/calculator_qml/NumberSourceDataModel.hpp @@ -1,23 +1,21 @@ #pragma once +#include "DecimalData.hpp" #include #include #include +#include #include #include #include #include -class DecimalData; - using QtNodes::NodeData; using QtNodes::NodeDataType; using QtNodes::NodeDelegateModel; using QtNodes::PortIndex; using QtNodes::PortType; -class QLineEdit; - /// The model dictates the number of inputs and outputs for the Node. /// In this example it has no logic. class NumberSourceDataModel : public NodeDelegateModel @@ -25,8 +23,6 @@ class NumberSourceDataModel : public NodeDelegateModel Q_OBJECT public: - NumberSourceDataModel(); - virtual ~NumberSourceDataModel() {} public: @@ -60,7 +56,8 @@ private Q_SLOTS: void onTextEdited(QString const &string); private: - std::shared_ptr _number; + std::shared_ptr _number = std::make_shared(0.0); - QLineEdit *_lineEdit; + QQuickWidget *_qwid = nullptr; + QObject *_lineEdit = nullptr; }; diff --git a/examples/calculator_qml/Source.qml b/examples/calculator_qml/Source.qml new file mode 100644 index 000000000..f2c86d3c4 --- /dev/null +++ b/examples/calculator_qml/Source.qml @@ -0,0 +1,11 @@ +import QtQuick + +Rectangle { + anchors.fill: parent + TextEdit { + id: text + objectName: "input" + text: "ff" + anchors.fill: parent + } +} diff --git a/examples/calculator_qml/main.qrc b/examples/calculator_qml/main.qrc index 99a0ae43d..fdac6aee2 100644 --- a/examples/calculator_qml/main.qrc +++ b/examples/calculator_qml/main.qrc @@ -1,5 +1,7 @@ main.qml + Display.qml + Source.qml From 2941a3271a58f247a5e09633b024bf147a11c32e Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Wed, 15 Nov 2023 15:37:50 +0100 Subject: [PATCH 19/27] Add images for examples --- examples/acquisition_viewer/render.png | Bin 0 -> 150573 bytes examples/calculator/render.png | Bin 0 -> 224078 bytes examples/compute_viewer/render.png | Bin 0 -> 180186 bytes examples/connection_colors/render.png | Bin 0 -> 30695 bytes examples/dynamic_ports/render.png | Bin 0 -> 30159 bytes examples/simple_graph_model/render.png | Bin 0 -> 22564 bytes examples/styles/render.png | Bin 0 -> 32764 bytes examples/text/render.png | Bin 0 -> 12187 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/acquisition_viewer/render.png create mode 100644 examples/calculator/render.png create mode 100644 examples/compute_viewer/render.png create mode 100644 examples/connection_colors/render.png create mode 100644 examples/dynamic_ports/render.png create mode 100644 examples/simple_graph_model/render.png create mode 100644 examples/styles/render.png create mode 100644 examples/text/render.png diff --git a/examples/acquisition_viewer/render.png b/examples/acquisition_viewer/render.png new file mode 100644 index 0000000000000000000000000000000000000000..bb41f557dbccded71f25c7ff91aedffb8e7df898 GIT binary patch literal 150573 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

T%F&3^mDzFXItd&HLTYm8M!QKR8~wW= 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 o96aT}8-5t8ImetOS_*cXsWfqMSmJvC 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

FAPFsoTj=|D; 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 G82&qiFQ;7q literal 0 HcmV?d00001 diff --git a/examples/connection_colors/render.png b/examples/connection_colors/render.png new file mode 100644 index 0000000000000000000000000000000000000000..123215d0a88089e6aa6cc0105cafa556d792095c GIT binary patch literal 30695 zcmZsC1yEc~vvv}KTL=VOB)GeKfJG8KcyM=j4}rxO*RViv65QP#7IzQszPR0e-|wrx z?ydT_YIo0^>gt&}r>Ez6db-1v6=g8dh|ylXdWHE}7WnnmtJg;GFBu9F{Ekj!UN`*j zwaZr-iC1N#B>V8jTMKao@mH@ZW6&Rs5aDf9M_Fx`SFf<(f>_;U6DL6I&}sWd|#JR~Je_9Un?hN!~5A4rCaWzl<<5pxtYMG>$mn3Q8ZSLHPFU^bU^TE}v3#iCP zwR34f2qqPS9**;d9mqFSYZ(FvNY9R@7^1k*-ShkaI$H;KEC7w&B%_VAzzF^0p}NP& zbd9&UH#hM}lp6ViU9aZMiuY4NQ&Y3xHpFE#O&W!hlapOkw5*U)a{n70@k#=nQqG@0 zUzDUm1V?AJZJUP5N^rsUf5;f|&_I+}^mHZ4^mtA{0V9w^b{N$VDia=>6v^j>Dl@qO zfJ;PAVPhjvZEdahm+VwPqTUGh!9EJYU{Udjv5w6CH<^Vbx10&}DI7GA1ddE1t_D3` z1b+_Xj5#$kQ<462kKNaJ&m39#L|m-EG>Qazyuq+EmIV5ZNarrvV6M@`#Khou;4&>u zI9;dmD1RG0o$V)HX)Z}x9O-m=iPUW-70O7sJW5ft@w1AemIPsTn$u8@GBuU75Plu= zQuBZ+lza&FZ~%z`@Y^=A?-3XWT;+u;<8*Fw?l~71FbZK8T>p;P#Sa>wLIP1Pyt}rk zu?ehj!qJ3cN3Noxo1mLPemLHp#{=h)Xu_G^n0))Vt6GFad^w!sZ>LR2Mx^KGC&I|c z7@M4oR6aL+iOQ9WiL|dMFTeMDAWVAh*u8t*@t?~%UM9UmXsx}D4giZ>w4{*xfgp?@ z1Y2}AGutkKTu594%z?ShmKha}Wgrmfc27nuA~5hZ?COewhv!2=LPCptUj!HJ%J1I{ zA|Hq*_M)SsDVdn$lt6tAMg-wEDVZzeWnEy4G z{Y}+oQupkv#z`=0oJA7ofbRzm_$0@*tIKn+!oK~<{b->YnKflNg$}?ngK2i;tlf~n zttJHT2Mng*;!;&g!AQH*YykrtiwTMc%qg{HE4Cnh~)HzLh^XiNrmiOR9;L50F-EdfC*@QNdjm_a~ z>3o}?5HSGYC%9E3^*CQ?qE%^(s1(T?Wyh3bp#lyzlg!}k412!tsc9G4tyUOGe#hng;^QOKuC3toLt-L%0KHG*9H0>{?V%!IWW2^sf~1zU)YuwQ5v?MQRtgRf@~XRs@Zabv5YgWG2!k*6;f?MLBR%G zS|FMDafBy3e#BbE7x+{+1dQ%_I5SNX3uHWH_qMpvLF2hL5db23NFsg}u zMT7BmQ7skWdQ?=GDIb3&_8?`%ypemLx9l*)s*Dk7i6<1*w&hR`)?A3|QH8pOhQC5gx&-?7 zao=rQS!%t7FknkT0n+~dzHj#XIGOA;95jg}DU+h=NtT6RZ2u!~NV`4h5YqLAV@z_Z z^-^hr(;-qK?D%?n#Bhdp*?Uu?q>8ljkfqz(-1M#eC8KTgm9*_jMW9#!qp6uS*QzDa z#NlmPx(UryBj<+^hni0?>gdi8Os2TSMw|ix6 zX!VsQ4V<;8m19K2dBe2^^hi72{E+#)d;&{ z`Jo>Xt8^-AG55xC?PyoE-lExanouB#9NaOBMRuVMx6f8hAX25O^i9h4x=YbEajMi{ z0bG%H`n3$=5wM+P?$Sy1cDC`UNmhi&5HGu7=z$|f{uCO>o+AT$$N7p8%4@$os+!1Z z_ss6TeO;%UUmF=(Q^f(`_qqZr~IWe{jpBq;k)dgtc9Fk05nL#m>g2ex}_>w8BX7#xjlN8 zgrQrCo*RI5%C90fIw|Seq~0grE2|{>Ma#-hqoy`{Vf|CD7QmhSKpb`HMYS4mp4|LC zDVn3E?e{6c((ai5Uo=q#3A?f?o=rEuKfwhbMg6-$!Y|Wb>^P|XA1wuC)?Pd&c@xS` z8%lbl-GB9eTZ7f&Mrl9!x$S(@+?sHG+iFK-ElA16Hl~^N&h4$Ut~tdmST;;rQ$c2L zV3aG>h=!H*$lH|-@GxWC>NK#>iqJk$h)rJ4u{LjitmdiNA83*^u&VC zpAZ>Mx?eE8Gt~GxZ&GM1JD7dAo-#a7&W4F_3U(;feoxJt4h{`w|H468!B}OV_rBJC zOz}u0{!RbAf+hPb!^)3zu?KD6>x-riUs~N8L)_?!hFl|>FREWEt2#S}qJQmwEUqqi z?WR_L;_REec-!I4Z>lFkrs(bCQ`6AKvh|K(Pf!D>n7QxKBqV~;|GVz`Hod$KB z>weX6DqZ`!bjtfa8TTz2pDj=JI5(=K#_^SQ7i`@rrV3+_J}(bAY018~^i&L4)#n*` z&8H-MS83m@1#504MpA)UUn}xH>8gmu^t?cFerzZ*63t75U_ap0$N%oo-=O{HUcXGu za6aKxZQfe2wIffkYV%q z{<*UCLdp{r!d>3M3QfoI$OX!!Iy(|HLqibU4iD$s?T=P^rQ@Scx)mO)Rx9nP<`EnE z{)`wo)Zi4CHQ^kRl-#s7JF-LT8g#3d?8T6s8qx|xv_eNhwHafB)CTCCBNzx4mHv2- z&(&*a{6PAtJQr^M@&S#B*_%#2HxLB8i559ivT{GXY{e>RKIgS9opMmcFbv1`C} z;S0PI6$wE0m%IE`)VqD;3}GE~Xch)aM!PkrlzVuwxa{1lfY(lb^+`BH&Yvs}r=6%P z9xky^kgy2M5|Q|Z#k7$g+HWnnQ$4sjp0;9RSN>TM@<-RmOR*9o5v5#tp*GH5@UN=+ zJBLdvncK*QLl7cEQA#JDg}7L2qxoGt!n?1PV(-sB3a+`$8Jbj8j;*Nw|HAr| zpR*@yxN~GN{sHZ-P!e^@NMoa4kP1rLQ~@xM07OYfPY0p?=Nca*VFZ@i3=R@NT5!_x zVq(?LQHCOS%}Ojls`?wHz`-9P1b~m0v_XWZ*U)mxI%aD+5-8z^@Sr2^c=33U@)BbT zXsOV2aTf@eCBSj*qE4sZA?KmYH27L)yHI7wq6g_QRqMk|?{XOvNnsnV_qnm3a>k+C zYUp5QBO4#mta+O)Ve~UUX#I9=>!Hv2U$D*UO`Qk5h`HTCG;$k_mO zeb0LdNlAMRUhXy95{n&s)TCWKJWK}TX<9HBaB!WQo!dU9J@whbp{NguS>|Nh1T>?0_9V9MEUr}(& zb)>CMUin*?EI=E@pXz@rbTDyyR%Bo^iBxb$-Ai2OWo)V>$x@%JFW7u%z#GbVu&pIM8JIZBrB z!})}gKgsGOUQMgTEItemSqQ_%wEYIob1yQYdD?nI=spWg;Trn>l|)O&xx1)7u)R zBo?!!cb~qmzPE{X^CgsACAn8v-(o$#DF(+{;pv8uh&t?|KAghVzgH8GsX!RN^X`dLkSDOJic?=Y%-jEZ z(=lO9CEJzeU?NOX&zo4!)5!z(!1qIHf_0JP)CqxhxWEH>-tX^BPWHbu*MkIF(`UP% z<~`0bPT7s9)ca?3VBUddF%_j}0jGgO^BOC~hayO}sSBQ3*J4G7)kr@Ncq{xDEYmi8 ziG#Mqiu^3>%|$XvO+whYk37@{44snsj+*&6N6Ws2#BCOTLf9t3sFq7JtXB#Vv}F7R z-FlxT(E5kcQ}Bubf%j`|3JWMmDRj%yjP&SBm>#BEMUy~Y*Ks(!+geLA1yXLp3YYYF z5H6)dh2ES6CdMwmR(p_TA-{r&^3rjT_`%&069Yr%yxLz#emQwaSd5a=MY@w~miWh^ zt@}6CcZO1?%(8U0=DM91rZ`^fzp$+Zc_HW*JT|->GM26t57=B5)4yUw=YDloA`9^Z ze0aOFOy*+pMB7bYH9gn|QQ&8GZJsY`9DHrT5viKCv}QjS+59v`p{qn*I=Sb{1ZZ}q zVQN@^e?vN_n;YY31p~Y(zLGF})CqpC_d4hv??*1ddMR0LOO zs?90LhrNQOv31{SXIW5~o^c2jTEApu!RnyA7v1=mSTQuCAd8FB@TSWB>h&%E64IJ0 zO45X7Z4;K8n|yLbC6i{=4+64svJsX!*kQ6ImMEddAxK=5m6COm(>YVSv5Ode6dtpQ z4ajCVg~tR2WGg}3_>9%navb+1a8DL?}G64dBJn51D(emcs+_6a)zK#h``aSyj z{^yMO&3R(}6?VBA5!)^kj}=gJuy94pX_kQ}O-Q0lt~atvR|cLKLA@<#wXb!)yB%be zLr|k{%E{EXV3`UQc5%sYj1T(2g(DjB_oTLaANna|3iV-Jd0eF;hJw%gSWcPDlZPC! zd+%?qs@|f7?Up>}ylDOu0hr;Wr;28L$x^)B5h~p^o!dXcsoEX$?YJVlwN+2)F0PO| zD%XIAI67L2i%z($ghZxUsA9FuuW@egt?cX)`dMFb`Ge>U%lOdMTMzaOPa{4+qrDzB zJMxl1t}k&$C~@Gu!n~T2y5JSB=|u4Z3BJuG&QJSyxu28g_Ki2c{=6SQWDl*+js{2F z?3+bj&F7`WRTFrRU-3eAvoui0zUdAZ@{x6je!-uTT|yM4XQkSe$H6U`jYQpaY@8o( zLw!g`a;n&5CT~1y`Yte&on672+PQdSNM-B(`2?WA>9A+?TX=06+2vlq)>QsEacDBq z^Wj^ZO9ktiEsgj17bi6~YZ!ke?Rsn)x)AfOonbe4UYgsAvH%=bAADM%%65)Zu-OWwU z`DT&!*T6rNbl(ae#bjOOXY)T87VXp52Yg8wk0cQgSX7D_z@@y{ihXx(dJU+iAYMVd z=_3(PoZQY`m{v<%^(DPv(~8+2WRUl2J*%nNjE{CIvDONo*k_QR!bCZJs~>QsE_}CV z(t_!vN;!@i8j7JjtL<~VJK=cCD%=s8oXv3{{lnXYmAi4)Qaz_ z7yow6)L*l?PPOE|QEVh{IkuH%J0S0M9S1#q<&YY;h$h!Ob*P z{Jl}lN9Cfx;?Xg6q-kv$K(*+9E0$_F7w6^W^;m1h`I9co_q~aUiEhfIxkpIpM*!8( zXm@D&Te7`DC#))-FC2~p@*@yz_|Z%ugnm-e*os&seGAP)}}p5`x|WGv+vKd z`D+tHit~HlKcfgJ`i1ew+4={CrJVeL;3_h)c1=30gp{ZrT#*<$&e>Q#jFxi<Gqc2TPcA3am#BajN+qPsx@uUJ*qej>Y6|76x>112~5IBnObV z`TC~A3H+s$&>qp)=&?y;gdIr>=@6s4^MxI?qM~OoRP5a|gQwKtXDTdaRt75IDmLG@ zbuA=@);|UG*qQ?F+X+{nn#LUWsv4{g>n=bGJvJ>ZoK(pDc4#0K*!U?rRDy5|4#zb|P~m3~_Y`#UO!mmr-JFgtOh+*o;wb*d@^G=N(SaYTQ(*{G$Gq)ZyQN+aB?3wcqi>vSP z#tJ0F3}GKurN>9;x@N#L299zuX+kseJi0(B_UlUGd3#iy;r4usZPzbGC3kO?kf~BD z8So-Mc=a%kf(>`WA%&y4d$Rg;(C4#J0Bd)=(j!$2?k3AI|MT{#Q4W>k#Fe9TPLwQ1 zN-UQg5=GRg8h-C%EJQJtNOoUg?$?&z5)8u-_7?|oTi?vFezI$21ninOO$?+Vklu~k zi-!WMo(9{>!zC^RjCMZBi8}I-Xd0AQypk+$0Vg{=q9jPJi;d)xR5)8l{3Vp>q_l@> zLP-a=gVS&lTV5FX%Nv1XuaNY8QA^jJ5exdd#W0AWVL1X5U@R&kU^ct4Fkf&6;jxs! zMkAdUgk9k8ja|@XliU@?$m{y2GyUf;&NTyyjPF(GchI>WA~k+wLyjNgxD^|2MRe9% zR$rcq14+vrk)uAp2x6mw)S)C_bKndz9uF=+UgwO1apH?q&fm@6$rQ{VrCl4w~e1w~$Qaby5T@Zvj(0Vivn9Q<8;_LmuRn}@(s$ye zeb8!--$xeHP!mIt?Eg7Fx&LE$Tgu&yhmo_z5!0Hkwvkof6wMR^@!F)P$fuVlr9<0B zGWW*Gm1Bu+AL5P9qwZGpyQKfQ9@~jD9v(#4+OZbXg>MXs15V*VGDTAa9`ND?*d%$c){O4N?9mrOMA!N`*Bz09`^;tVah@z8EFx7YMK+9 zXJ$+Q;o;Tw?`>{SnUMWN2uPVU#%o^L!`VL}IP3EN4MC+Sq>5{tS&2dRuSPxzQHPFv zGu#m{4G$y9e$BPg;fKN+H@zJ{X!~8%u6ILst{bxQ>vJo6mz%;xX_(uJcn!HncY0Rn z8a6gq`1RUz`a{@Z5D*Lq#mE3Chlq&XSl8I#eDzWZO zZ?TH=?FZhUc~-&2${VA-H1#b6DYmOoUvDBEOP^6huU6%5Cj*Op@0&99ZzfrE@~Ym8 zz9;iP{y+jS_DjqRjq&|r<8Zn2wZULHhSlI@%9i@blxp4V`94vMJ7Rf;z-WKo{pi%# zWcBd0gGJM>6MuFrxk}%5&7e!Vb7?#_9{gvD@6bz+_Uea{)i|oW-$;np45?CJYYiTV z5V%(K{8}qo^e4%YS+0@DNo96P0dYPo+*b)(*lSotM-PooZnqF4+aon(gzIppvd-r& z_9xgjL)(^G9)5le?y@OX(a?o1R&-BsS>7_%WQ%fepz7!|RMGl;3R?d$q^_lLvbFTL z#%EquR5Gipf}&V?3ry8+Ok>Ts<-OTvBBdFqQ?D1&t$!>O!MWiHQ>yz5{o}FTOW^MK zP#EW^p@E;3nOlQmmhCc}D#MxOFPUsQt&j?E;l3!npHu44R~ed8&9&{hA0h8vni`&} z4#ZHd@V#^PTn{Ks!x)oqnacGggQj91bw7Em26bcdZAJ^7bX zm!5WLM$lZRSpHp@0jQVFRsDS;()=B)x&BCG@Eh*F9PB&ReY8kdkt(dr^DB;;4dAqt zd)C4DY5ci@Uw2;0Zmrx8>kDLc4iE>hmwj=?q@uNTnr7}u-BCzK3)uI z>(#8sX4WN8&DtPMi|iN&458uKAW)+2l-Q*Di1rn@qqxVP_1HR41Zok0%O-sLZ zCb(Xf9yYi4-JWY?M&og9q9t3HceecRsHvW6Z>YO2{d~D=@3dxS$hqHR9p88_-|p?M?|`LhJ^SRsLFDJmm4? zy-#xZJJMm@nrA{HB9j(mjKviMDgI4mu2@V&h`@n8s7;+{u@qfrI>UwY_ z>&lPE%h3tdPY>9qy?br6@N|GK!Yu>KAtCo8!pXROCTw$VD+Z#+YE}v(tjlaY*6H#p z?oI1BPCOyl9tQC_J9)-IPRuvSuXSjcihSM!-6hmrZ__(>J2@c7nI#J}Wc4zn^<{OmxW*J))97td=tLh@NdZ7Y268Mqt?*3FRDNQ5i zwn*D@J#={HDbMV8d^efzMWn&QzkY$qMb)!A53$tBS7`s02r;L^8hTDTaJ%jp>B~zW zojU||&9N#N*#e+3%TYAU~M^StnF9dh<*zWI0f7P_A&XjSVUbrs$Tm8Q_L8mDLstJ@1V|C z_oDG@gEd)DAseRL)Kj#UvfWZx*^Y|v`TQD;qg;w=*NLBEI9wueQ{ z-Hl_pE$&Q|#CH0sXyn&bJmfX@k?|KpGfc?l@$0emQLLS_qx;=r8xn^AY-_WGX13j%KIV$MU8f8qjFo)}S)xIUSVt?#|LX?RU5_RrG4WmV~eVsA0zjjZ3Va)-CU>KnONR6 zV!771Z`R)|M+PBd-C=wtEVWhB2rKbtn6>@gH()c-z9%k5>>3XZvAnPS1Aqp;9j=!U zc71wC5A=PO2!Uy76YgyCryCXcJkF!GJWevvLz#B2UoNwr-hjahTqG=hSYmW^7Sf`q z6#b|IWK8Wi(WcYjVOOB^%=>3AO7Ssrvd)1eus5T(bEI9v^U{YRQJzR`q+!F!8b89A zwFOWm#qlRhj0(BlI^G6d)-|?NTVObbK%D7&sSR-~lYhBi)g^l-g1HsNn=8KP=sS}o?4FFYKt~HmG43HL= zvHzCcG?xmvoT@}Ph1M$} zH7^#Px*C5OmAcJ9X`!D{!NP`|Pu`-a^jhTQhF_R88$Y#D@oHbY;aY4sE^Um2y<3PE zB-6GU*mt}*#4T;Y8NzAq1=k~4=aM^;o|KkBa4^K|y)%QFvh0d!d)Fv@BCybzg_?u_Wi_PSvRUP;d)@nWesaL`dmt;@^ZmBHE8l+18X<EFOc#@VJC8d48a+)o9V+EkolZuk-2X56PY&KXDpsYm1V}?K zx^VXY0yz>=;Z%}|4dqsA*Hca?Mh5Mvl+U*#uzHnr?|as>K0yGg32*G{I6^R&iWJ99 zD(NmTrBND!OlgnLXe?u!!Tx}-Q#yygN3o18R@_f%vGNe%crA8I>bM!%giv?eRr#d}(MO{u{S$PK|OzrDHQ8sGCrLy&1GP_hf=Y z@VXS?y#7?nqr)6U@_iruB;L@uC#7PvX?$Z}NenQ>G_X#6-lxURj{{eg4&ql3u(Fh$ zvbLin4MYR`&$S!4cSw42N+2_55t<{>Wqn!)8fx&)y+?=Me>PQtlCG1K^7BPqL1EKt z<|kp5xca&M-?LLzr%h%Bwj+G~sT9XsTv7!L?IIZ0E69u6CB}lgX(rvi@x>l&^t}b;^Nxl#Ehhw4>Kr6zy6zY$ickED}D+6RNK{6W|?iqo-Z1ILM4YHB^pW%6< z?ZQ->RE4w$C|&uelOG(Gq~OVQR8&+0qocE`aX9668cnm|(kZL{x#FNBW-GKG(jCrZ zy}gG+cyt^tU6hK~Y#Zj(xm-~x_E3o9dcID@7VgWy=F`}z)C0Ev@MiV^RIazVT{XPx zi=CQ`&8NqGmr}xmaNBJ1ONJ!HYr;eGA@KU|FywcG5fl8l z+9hp*3&_eIhu&u)Tt~^TXP4K>9DN@_F=Kw4G)xJ|4;#KRHK75v8d4tgeL<=ArHPb; z+C~HG(7y}|u3v!OQmLg;avJXh7xq22qtz{wh?rwNiLBkR(a;-Y3{JUT9y_eL=kBJS zKCHU@csyhatr8EfVK+7Twna200gW9tp}3p~jqgb^B(ziO0h>9ueX`f=VMr{0^T9>( z3p{!&A8ozRo9;9e;2YTQN=ljm;uYGntY{D6-#-)A_5@0_mbA zM_65bf5o9bK}RIxn$L>wsGzXm{5B(l z&|T(*I#@keg^08=E%qD@0ZW}tKR#?JkNO-qA8tEF$&xah4c9|gpy&y^3Q8rOZS#cq zeL={gqmB4;JntGApb)llbCq*d$|1rN5X{N_1<-5RB8{qE0Q@Z6vu7K$P*mY1K)uyK z$=frHIt6iDQx&Rt`(TnBa8H|;m%q^!z<51^P~XB4q4~T#wt4=EFwL>&9|PI_mgDqy z!d8d-iBa$HJ)0gEhj9xrHN6st7+epoNPsuSsy$zfMOjgwc73VjHpAj&M-6_Di`c>X z6wW!2S9n2|ffYT8X;Y1wsmmYit{@RM?ny>(EC^a)Uu)kyca7R8xqNgOYlVf1 z!s^FPCepPi0R>S5F(BYn+hi?kq{5th)WDr}EXPaFGAeGj0}1e@x_R8t2j?2k?xen+ z393AU#U!^s7wfd!ZD1+T5Ng$_t`;@ zUu$(3a_#qQj;oGDOA$Tyn*gu|?<_FUaLE#6sVJNe2wPbD7$^1V;lqfN3b4P0e|=-y zeHxNm>LDb8NWxzt@<)2K9v-BwfE{Ludsn^)IfqMB0SXtw3#r}XZRvN@389g=qK7Nb zN;BmC{wT=pFgcj$b4wweDWr&;Q-hNJlzJ-^#b~T>J;$v;JHFH z1#>FtVqd@4rtDtaR<@elF4ZFt?0sf(%h^hJ34^LL!ALO22C-mbk0c=;?a@|B8zOzl zvfO-pxpj3KN(^`|K~=?f6y|c;@6*zVJlDpOKlcCjV>@AcSu}t4=4|F3(g`5`V&8;x zO%o``sfdM@`;w;TdoR%f!-?*#!&@Cppu6h_Sacf;X~38Ef66H23#lN(Q+`;UwvK3a z4?jwkKkd4Ky7bXbqwF~#bq7X(gr8S_RS61xW65W2!MBO<5RRG0QL0Agw0#0WaM}f+&pMf>L_wS z(nlO~IZ@HNET#|_{}ateis5253#)&IfMS;vQ#My-Idv6iAT|jb^BoJZyynwyLO?(m z7`qV*B}E-U;qVY68r=Ri zCKH1#zk9x384xuREB06Y8rzmfh-lGmRAC`RTGxW=uYPXXH}YJRou-oEL}}@g2x&P-syNd$vQDICLV935)W1S06)0#6Z`Fpm(T(UY zXR>3T`ZEMP_85fou$2`#SMaX0>JoD`6rF}}&%X;>hxghwm08M7!vjA-^t(h$Iq8MC zHF}9Mm#{>KY*Mr-+r``%N`vY1{aC^!<0bhe!(9K?BN=73%j0_e(2YL3e91R;VBX|Y zGxy$@T3_G%8u!PAXW9PD%$>@@LKDanJA5IIB5ntl!ppUwkO~$N#H`!)ZCM2q-tCOO za(m(E^L6%e=x6H9PAGKf2VYV~iI;%v$jAq zf_}8z8%U-n;05Ex1x#IH#T;nLej_d8;_NGLp`HIgSZf#J+y%#_aNwKTaIwZ%;Tv>) zz&V0CwOpZ&KSSP?98r=ZA#a}N5(??+n#K@Hz`(bl0DubTr#uIw*n%?q`^*Oz2j&hA zz4B7x`}z!QVFk*;KgdpDYt(ZXfA-`!?Hr0P?h2cQAUFEs9M1Z)&@2RPcq* zYNlPyiksrE;$u^GRq7;sUrR=&31y*3A;}xI;}uj=kn47}{xil=m{(|p^)u;QSVNJ* zQV;}E%hC(DBuCMYsg+c)dfB6R8k6wn86B<_W*J0(@?uuqa?1YZ4XGCwlz-gDo12tS zDx-4sgd8KVO~H#`4AL?S8LYjWNdp=)sfN-lAEZ7r#F!0wJwI)LRT!|n)E@dhF#NK=aDi?6>^rGSt z_!YdhVV%(TOg)RGvgdo5j#K0$gL>{W(%F*c+hn9Jsz+Qq;|18L2l%MBH2(a#{Xz(2 z-=qB~uo=gPU3nJE+YXiO+a#HiS}|L}Esr)H9FoUNETo!A{&9clJmF+Wf{?Kji9xq% zEejuBv7R=(4w7!xU8?->66a(+m(Y8k1twOFdxD(RH-Ey%?)ppHr^(nlf{m*q>s_4e z$S82IJLGF&Q2af8OD`TRtCXla|Mf>9I@SJPAf@WzlbW zy8YOPRCt?f%Pk_FXO?$H$Eeu+=am^Ik?d#0kS4lYIr7f1x&P-jX0_Sfd3bsYneLyj zDci+U8gst+9RG~d-}tmH1-QGRrdw*>tQtYx3`YIQbi&U)3ORq(hpZZ_X?_Wgva&9$ z;3Tb0cXqt5MO;=XtjZC09?1L@Dx9^%jLW76-`U`>torX!L?fzm-; ziltO%i-JX$Mr>p@9~Lx~sZN4>iDW9DITw^nUm{9{V8b?Mlzpeet%^If$G<0j2-t)N zcL}|tJsY_UJo=lKU7v2wXXoxUT<)flrLQbGR2!}8>qO(_ zvbI`j2H0aA@a~=gygGjg>|Fb8@?RgYFW$tQrw7C>&&wq~f!|&&R{dj{_#nN?z|6}g zkL;~h%?o~xi)$mu<4x9Cd8`)APdmk;eH5ZxR)M)XKNHV~aB&iEdz9{z&(G9S(W*Xw zBtE$eg4Fkm1n2;Twj=#%a|Ag%N4ESaOL0jSn=XT!-A5jD14>FcM-J3*J%{vqhsUlpk)S|DwtFGkR8Ni$31Tm$sohPNsZLEcff-c%hI*LuGTe&eQj{K zsH{M!mwYX^PLhSJR_nR#4SZg`kDHk)s^QyfPnsu$1tBsMo|mMlnd}C)pa;1TQnXcCuH4Yl+QJlfRhC`k{(MzhGuvDN{L_tk5^JpHoVhhbM_`97vwE>#Zg) z#ayGCQC~xIpIRTzF{Kp~YG6Hkh_w*Uo-6^gsNySuwP1U;Mg z{mysKkNZDaJK0O;oMSxetW!$6?_%G4)5%X559Hd_cn@E4d~;@4Kx%k;ozWchbo{&X z(A+tE@T_*yY$%}9JD~D8vv9?T23~UC9_FmMMkC{+PWFz&0bxRHOw{OdtjQkZbxmxT zxX!ITL#esbk@~Y_HW-RFN9Vt@3{37Z;AUWoCSRCyc)#f=cAfc*rA=E}Kn9Zy5lBX`T>T$-1CSgIlnTSUUwsX&r@ggt;oN&x+t*Y+2%jWm!iqPLejCq}*$B7(xKnGc3x-^#n0I%?CKT_oK&v2oB|I1!q+=P* zJxUC}`|WNs#oPt!!RaSwH9fhq4y4Z=s5P;vf*b?5QH%Q(EOktZWPYdx-KJ7#3+u*? zi{hR+?}+LWN}07+YzyShj41AhA;X@)HV3*>S^U=AyPx9YbEh*b96UaDlxBhji_D#` z6#HVIZqAzD2%$SIXlUILn|IFvj?zc6wHtcujqftIbespt9X~z9QL^a+8~i{u3K1vD zF28BU1ZwV&*r^RQ-b9i&9*S~!H^g;AfYg>l8+^2~OQ|kMTD)w}y~z&L?%t28k?UhwCXow^D`B zBQgr?Nl1gbM?3w=mMhw{$P30Wv=O>LFiq~;u{q21dgA}OOw#?X9;Vu*B_XH1 zWg`&Q?cse&k1A51(!Gt%iwy$agayq%$6fU~Jb|z70-;N)-&Aw=ZHp~zOUCwsSAV5^ zXDyD*+=M7YJq^Q$*>N1b3gf-^K}N;->!(x4_t<_yy6g7TqZcW$1$hC6rMrJVPdqQ> zIF|Ki;R>fIP8YnXSspSaPx)dEw+Y@Pi@Rd;k64eBB<|}mQ|=k`l12x!`3xFStzV?U z>vOLP)f3v&tI3I9NCP@1YLuW^5dKrU+KfY)+rmRavwmj6H$8ElZjI;n{JWsB_YEpK zI$%zY?56HC!Le-$+tQ7#JMc7H;jIfKCdd64yVf0~`l`zVxGejD)y7e` z@lPDw&vIUz04hSxa^q;dk*wJwL$Zd;ofl+xkqY-~Ufn0T^IuE%b@&vT1p1a~Vi|Sx zy8}}~Pky9-S>LmbJ;wkKm^Dw6Eg z`cQblM6i0G{Z0ip6|(LMQ}l9OkvqKEgmj-yT-V*i!vC$LEWa3FvAWyCUbq=&f_i`c zkqt8uTN23K^2OKJw#%4LtbTJLB0>gMpKT$eLfhD?F$ zNn%I%wG6qT7$;#ejJ>cRW#yHmRV4`l_3C-Fp!SShD!*{kD*F6?hyGmA+%30VjgXuo zjP&oK&2*Dq+fM{qH4=N8Z9N-%BDM!DMkdAH3CHgdIUf#+Z&B$~xLt2|te+xI*R8>1 zp=S3$Vh4Up^9zBxhO(fI;5k1$9r6gDa>w}qN%1VXrIQn`hK9Fc6{=;r2se+^@^aFf z{Da?#e{E!CaUY1P1ST+IqX_HV&EA|F8vlL6tz9s0y=#m6o0Yk)71aJmJ1JjtcRFb_ zNc@h&yDAIywP6KQ%9ar~H#f|UW-N+-?ftOW*KXJWacIe77Zn-(!uX`?pa(0wj);HE z(Q5T&?o6nv-odo_(nKbw+XIo&(MO z5NV}Bh7_iB!FV>1cnH({X7RSlD+>x)sjTp@AS7#8CkVVIpX6%8ge)s5%(Qs!_Q6Z3 zVB#00bu9}GZ@88HNFfy3?3E@QKuXyqLUN7{9M3*8Q#h%0U{R}5F)6x*;NE%!jGGPu4P++~}W&9eU8>OHQgOD#%3z#G^0%C;|b#60>R`+E`~ zs_d$ZcK(0_!-nTUS~k;WTkDGS_yG|_$~pazrZO5j3RtD5)q94KC^vcn%Hz(Zo-(c2 z7#g+=a2rjTNf=rAsUN&Y5{N^(n^xBfDmtGx4NObz+3%9~_j5Y@sR|8a8iV6-aY$G_ z_Jn&ew`ph<0O^9I^%n0Avk;7X_88PwIAnE~ecO6lITk-@4Z{ATOQn?p5EmYZ?;w)P zW?xpFHqYKiOa}Hjqeh~x&$hqOQY1q{q1;faU_FB?7w|dU%+7;7CfpzhBXu98uN0n3 zyF#ZpA0I^1QSbgX00Y)taVOLd*VkUHWcl%!`JJ!Dc2R)Eqm`&F{ojn19T0d-EbVdB*w22#$5XdD8pgW!x&CxN4t7Ap?Vr zL+OL&bA1+3p`hXcY1^4mG$Hq0YFuF0UY2!%sfe>k=yPVse}<>|KPH-FVAh#a(x^AF zWJ2dSWosOiO>mXp7B+D%Gh{gZeb1n6n54yaY+F*-+M%w?4`Mb@)8%L9j^fOr2GljP zRL4Q3K88(*ou?c^Y|-EX7xI_%ElMsYxPvn-6NXh|PA zE=T&;);vp>2o0!OY0e10WuONu!g14tI_kqSK%?wT%3`9%Gt){VSjtv|qV>Lc%^Op_ z5+Gyj&6K+g@E2msFcSG@9KH*qQg1eyH~(Mo&gU_bfV_sow<4rss7LN-uYo*({YzFj z8g;iHRf&o$N(%fx5KWD6hq_jhj5Nhlm@sdJq8OV0O`vF1kywb$}?>EL{qpUBYt{UeVWY_ z!st9XdzGrIZ(+0rsXkq0yr{Hbhx~k<^LfVLheI3Et64(Alz%xt;}@?afRbd7GaoV1 zB{i6Lvsxc}HTXlgq!0$w=V;bW$1x=BRh{>xX*j9*s0ufs18lmPp|I?6O_nB4W&*Y2 z>lY9eR<6v%&TLP-_gAC2c*nadix_Gji#*D4vS$7GeJ z{rXf3_=lp)fA~Kit-FX>=gN~-5gP{!N)D%pOXIBj;Xg>;IhHkZ|Gd>o3fHo}%HfX^)p@lpvHbzs z$~gdDR1Eo5KYK6a2uuuKY_$Q#%6+~J$;e@Rr?y+E;e*AnyQ3yz7w%eHTlUbYM)GPK zP2)UEs*5bU{l7C+eZN`qcD%5qF7w#m!U~jh3$}6Gy*h!Agh#@;shk#wDgHFwaEbsX z1rjsqyU62ppBSZ)Sbqv(ZqU&ufmJt2P>zx`J?3VYJCJ=8v-)C`$&4elUn1tB=N*1Y zD{zA865Bj0Hf)?6tNGK;>DU!_0ArjT4ip3nP$ymCrOv8O5M&hh@>}ZNbDzje*tGl* zkgn&$SMJH|v##_TA3x*v$qPAOW6nVGg5c|Zs%U!!-#vEvtW@$iU0WkBpXP*<{}1&& z_&X{5aV+}V3RA2AN31SW9&tm#+hAmRzY7iG{b zdv44EA)VOw&fhs}=sl0O1jHW)b(XSEI-aDaWPh~L>flS*Wf!ICHTu1DI$6zKh>3_n z6V)#TcIN|q*x38B-x+Dy-?xN?Mj(?ldtKicEWE`n*F~lDfAt>}}iANpk3e@KTbJ@aKS6mCy);}dOo&0MSZ^!%tt+8Y#U7R-C2ll*2eixB9U;Sub zK*{oUe7)C`PA2jz!Q!cCELVsjeMe-WC)LUN;SZs)Fx#S6%-)}*JJEVu9U3-A^Z5!M zV_@AByZSnaylb3Sb^JhNDBtZihrFx7c)w5VyA-p#xy-r(DM!kV6`7 zUKdNba~8(d8J?i;AUH#t3>b_$#IIM55=K%!1=R@(M?O^F?hUV%ldEGiTnKqSg-~lH z;GJ>(X{nPgvAc5Vo+JW+Ykqn-wmdr#OFPE*O1W_6 zW$f&89}|6bX4_?bI-SCpX@h)u=UQ%_`a)nLn3~0DV!FNe))M@C)3V+&&r&&f%;4$q z?ke^8DTDCR7*I$3?eW};)*g4G7QvL49>XlJADp%+hjF4 zVKYcdVN_~9!wR5iBbfF;ZLPYx(-3?K3gD0Glb_k}z^1GzT)6Uvs_>vqr={}uNY8Xx zN9|u-z%3tPn?|X={fNGzgfl-xrB=O*iM|6f@WCLlSkuqQN(}0>y3p)s%aK6v^s+SW z%qyO}rQUeZ?G^8&uE@3(dQ;V*|RTk{b zN#kAw@&`;%AHA_f|MsH z)&Ef6jgHCgXT!o*NN7XZyZzbDmf;L#KHdY6S@Pl(T0A#Y;+RqVM~^KHAm zC~wLA>x7ppq9Xag`ZzWZo*1=ZXi$nbbzXWb4>6O-Ipv0}NDQ)@_wbWQ-v%dHwXf&n z7=B{$-7qp4`Cd|st&K?Q?dk`W%u`|u8feSF)rK-dG+r4j_;4vc^vtIg$t~rcT94@A z>VDT=7*8NqSNm7@4BlYT>Q8k3um9jvKcMJh9gg#rVx4HXqdT@-i-sJDg2l#h;n2Sa=2(f|^OJjD*gro~zU^(QBSow<|6wGR>|FT`c(` zLfYBUvziz0-#}`gKTp-l;iwwIa{9d)m;g`y3*1vX0#siVIE55Y5X8gm= z-|v{8rgOUuf*jgH-$0Va-#aP$(+w(r&(?jyHv&!U2)w&KCKDg_!jRhh9^$y9862y6 z*tJxeAiW~^HU*!@2>36O{=nCalv!AI3VJ4WA9%)?`(2Zl{Ih_p8@Vf!1%g%+-RlDO zp>dTKIiK(chD3m|n1-}Pkl24BfL@Nzg)M~}3VSz`Y~@JE8|R7at0ram#uKlis@^9I zh@kg)O)$LVVGD{k+rHPLyulF?hVD#N&wMMEcN^qGlK4cvJ;B>P#${^LnP=zZQWj|- zT_IjjM9dRR1@+J^H8*QBd>>g!Jzp3{Sdb%xwAuOe#`8I2v%)7Wl}RN8G5TplIZ+i_ z1}$IuL7QHOm7nC?*Rj#U@wEwN7~Zhh(;s4XRSW3Y_8&)^NhYpz>o`CJDV2VMN($B{RvEuerTaUXih zzk|I4&M*|oF*Bh>2Q1NIxX9eEtlHy|w<{BVtwhT=c`9o1DR`eZb1u#Gjytx_9yoYDkXgWq~1g2graaF;5}!kV+54n}1^e!Si9xdcdm z@0b-v@2-$LwG1klx#z>)dbl&O{XJgs6235bDc#lZ9@wKt0a2LgB=SsIS)x&kV*^@a zvlk}8_03jz=Pi~&{lHeVgtD6~e3f_St_O|vcJbZmRo1x>GTp>05qN_PW@3Q$d7H`m zn*Xl@?$QN|cdaoodFx{Y*h)0hD^#jT&g@hx_Ai6fkR5)6lLb6AdxZh}AL-9ntnU_m zbx%HJLsi zT9?y(ve;}9R?;79RZGbC7vXBb1Eb0%<(fEA$IsGcdhTw>@9q+8fL8QyFMV-;^~JSR zZnzAtvijxGQ!N6!)7M$uMjv4*r^6fGqeZ+EZOndup&?c8-8ub2R&xL8G>B?^m16kn z;m|9vw)4v|=Dwe43GJk3Czf}kcPrx+Q_R!USk}S(ms0ix+qOmAXvYuwv}MQ@Z~Ri6 zQP*qh?>Io9CvORPnT`l9t0+FEbxPH6VIXm6J3$Aun z@hEM@+a4+9Q7h?=2_42hhs%wIbz@N?8M_U{5BOlI&+1sthCOay?jl~M`kymT6cF2V z!&@omTs7kZ+O zocC4GxhNVX5R`QV$3RdOJJ@xE5a-YET=NgG)8Z9-8aI!{Exyr$ru@mSTxZ^K0#E7?&f7S6 zjEbBe5VMq#-}KZO_Sap~fbQw`Y;e7MJ5^Vxi zb_MRSg&WbLk2}fhdEHfZBe=)GhaNYzL%nr`P^D6}yR)<3E<}K<3h%`H4kisuH#*jD zM7f_KYnx|sm(X`TKYOs!KTUPBjSlF}QGgq5Kn5()Byp(_UjT)Lr-IC)-T2B_AlgQO zP)(IvW`BIte_cO|LlLV_owx~{go+Rk@DSA!XwTk#X42f_xaWY|Vbx#%f)b8l*puR? z)#z}9?bBS@u&%|D&nkgFrmRYPHn7)8_Fv3bHouGCYY%6#t6bY!VLPY#EusZ)IZT=P zb1LWh>GeK6iT?khywG9VLok_*B>e12MH+iRT?k1&s43OJ@T=Ip0 z%iX=lW>*~LVHD*)Ti@k#?0T=RIAj_GuW3FhR_)gkoxKa>s2u0ufu@IX7hgBWp0*8Z z?bxI(^0aAXKu^FFTYrPc7VN|4983s)atbHMqnU2yrEziBP@YWwLpRax4$PsD zv1ck)3lx`_5u-dqlOu+BZ^tO25f%OEi?&nZcmb1dZaLxL;K!NwlR8zZ#rWz|y*jkvr;43lV+F8A|a0Vp{d_OYL;t5!LD+m-QGJN>D|^ zl6!=!H~HJPn6iosyyZWTu*6@&9eVWzW9C25gvUuCbaZ`o=GpRx}me8}6H z=nd;XX5+=;L{OHMCK96StI?}#Q+pz}uD*aJYk`=q2uKew9s2}o2k@|2Dz4l3lt2Lj z)e0EI%EZ!9gwCKMlPr}Cp&{wP_T7^43+_0#hr@_+>l67PJ7KR1*{pFckn^Uj+DRL= z8s>m@=6}&#@4AcN399fJ;# zP^>1Aci57t0~3vaGFEsDE#s5+1|!n?4&RJfqKKx?<#fOP@YI6#@dtJ?m$Ov^s2 z27m6u2Vwe=p5SlRk?V&;;vW^>5aCUpPi~%a)@WI6d{yg!Zew*`w7&)4E?9w14hHYM=$bJq~G)Md|#svT*s$=P<2=3@UD zc4h(kb8KcRN*V41iobH7sY#4#l|FBUA5+`!^jByoNr7lp7a{oa&kRXG-aXJ+{mEt0 z*XHo6gdxiFz0c}Zz$Z?a$`Io>**XDDjP@jU<`0yTrCe}1TuBSxVwDX2OA6Binl~Ua zuWv!U_d|nl&544{I`@AI8&vjs+!6mHCuel|b1CXR? z{sf2V9qqdNiPO{3?fM0Uh4;y1d;w{q*~2Bn@Y%#S{jB_B*4?2j`0;b@Bgwg`Oqol! zSKX_^OA+|!x6Sr=dA2fX)Wk8b9|*FGW_a(M6qo{q5E9$D8PiERjjpiy>FP)4_|9kN zV`EV_1k3I(k#e}>ql0`|^uo72fCcWAsWGi=V$3((-}=8cX>RFvWqjk@xJrzW_Wk0F zBhmC&`irV_ck#G_hA!W8f$cD0HYI@5}8FT4>cw|WCgc2SdC-xQDf4g=+GxEc_3Rs$n5mLrWV1Yg@ohf{V z=jOAn=S$1$#yaV7mkIjwQ`R#BeSb8UB`xD{vTVz)0_$r2KTtArcbEx1`r^3+_?tL+ z?zj3V=PkUNH3Ky@;lQa;mT%+jm2L@WM8B1Fz2ws<<&ylj16(+&d+Pitf`%<4R z_~vNt=%=cMUk-DH-I0s#Wd-_(D#ThkZg?JVZ4d2I zIeg%Sb-X1S3-$GioC4Nq3^DBmXxz5<#GsW-4J}+hbXOJ1J2mWmA*0kOw?^W8=1*lv~YwaaYKLtR|7k}Nds z^|utl1q7&!#@mMT=Jcl*G2PVO5kfliBx6NwdfB=}Sj`TZFQgc~b_}jyF{b4w?&l20 zF(mwzlwqSUV=x_{(rxckyNq=iT0QF19V4YUNyI&^u10omC5D8cXPnZ6lOz_o zC+2q0tXp(iQt02OuYtFYj`>s%k$jJWJj@6riol{TGXVV?u0>WfYt zYTDf~S;N`3$Q9q3#y=mWNPHc!CCMikZiE@o7JRyZ=`5~)dWNb6o22!m`AEIe+iQM* zSj2YlG*3|+QwSiR8Qyn+i2uv{qJ%oYl0RxW%P^LmRZNaFWU07bq@nTY6U zzSCOKK@f5W3Mt|jhBLga)31-rLAnuKgvtv1=x{!#Ub5viS3bWA0xU1DS_(_-+N+RXx?ds^7;sC)XVl%lB9qiI z-ZL)?Xv`(ljdQEm4SApdF)LlMghUKb_I2IRBqcDQUJWow*{d{uT{?m%EkUiV@7Y0X z>2CjZk|Sr#%9C_rmlI>jg1u##_@S7+AAUP*`^&G^Ypfbd=z`BHY5_T=au$4v?#K*! z-$DF&BLxvAB9aq0bH^OENsRl##%?c??vJq&*Tl)cr?fptn_P_>)8>O^njY{En1#v7 zYir3M*Z0`NDTNhpi*(P+Dr+7iy|{}P}T{LUH?;{GhJMgL|z%juhQ`+I;9tcoq73X8Fwd~ z6}4J+XvQU29hhBRT_f9j?eG0l*urO^s2c+19J97dM<2ES*qVyM4Vvv5%x|4h)&D`> zB-E*ae~reYlmK-R;0i3X_SvyUhu|&tkf!nG$PKs4EXP1hkM7@)%`}nD69dq&Sxyom zchq7VAG~hy!YeYj=4|!yY@)24w+Z&lLn9JKT z4Pmk;s>5~RoewjYe-K8T7tj=K(9dQ>#=PP2)aH3a(XqKh!&aS2n-kI`x6fTg+7w9# z$pN&BaQ(_3-Oh!B1qT?TA46fk(UtDs?Hlua_0R=c^E_dZu7nKmz4*#>Eu_bd^I^Ud zvoh8=94k<)c?`EY`{U|3ep(B$5FbvLFj500{TM zrK{;M(tDPALLwBJW)CX+?fT4KO8u2o)p{jiH=B?Z2vJ3fRP-@fBs6Z2k2lIX+2s97 zIz=^yQOU{2Y?wFP`|k9NXhu6|q>E|$OQED&nhwtl`V`zaV^Gi78T`jR+M@)l!Yu7G zA?HOuT`;?ky+(@QPVF|nYm-W(s3!s1JgBW#mYBQ=XFg0cG==XIvK{QgbShQ3Yu>20 z?EG{zrBaXw?d&A=+EQ2fNQ&xdPLUTl+2ZM*|h|5JuT$>=Lt!HfU+Wf8A)$0eP(9n zJ0i3!KP0qr^P+ZuX~wYlp^1co^$X(~?JTu=?SvnjX~>c4L-UD&mwwyoUfbyqDr&?$ z>SY(_40q3?9d90+G5YAZ-=p&FTlIL*w~^_vD5T`K4DT|$;8^A9M|MlIG8K) z?2~f#0iW@7^04jk5Yp4QVbX9N&C0O981dkVUISN9t!lVY`NhsEcrACG#}wu9#_#S# z(w4BOY0pBn`W{QP<`~J!bXSh;Yv|J9-Dv0K?>YzwT5FBtKrAI>AP6MCo+ft9YPS(; zjzbO$f%2GpB}y^efXdGN3DfvwE?!PfS;_rD`On2nYtw1(!YsW0oVXzc=3U7!LzV)d#yG5Yjq{FZ74o3eCPi5BU~j09w^7e%`{RMQDE z%_i!96P%pZV7dz-LOzWs5!Nm%?y#@R*YwW%)4J)Vyo7h?W%dOqK^QyjDrwH&VH~9S zHrwYjvpc^vFhnOz%sI#H4Auu-Rw9HFOZ5M6|N6wBwS%S7W?4LafyQ@YqF0%QK3g?< zC8bkR5e_v~OWOf9ZEAncU|nb5v${a8pF`fI5@Lepg$md2bJB3&wm9as$Tl{U-B&fJ zgiNV<-n2rSF_~512;F+hBP|sYbGZ95s_jv&#s^EkvM24jlld%eia-3Rh1#=9l}bbo zeb1ptJjbV!$AZgt;w6IGT#US^zVP&PBEA55qgCy00Rd^N_sV!f#?vpSv>Cbv{;9u< zJJF=fsl+DRZ}mUYqx2ySbL*IVDXuii`g7@@#(h3rzqeuEFsc^(;bFi3$resCbP`RW#;v-ya}2)JUIBN zwCwP8|5h>rtzE4?>K?xWEoEL0(&&*%t{8ppxUv=>E(Q=%P%m}^e9+okrusSpn`J~7 za&*w1d*R@2^``rQOyKmn(8uWR^!>2A@eKYR?bIiW&fVOiV$50+oN5x_w?rkI_ zTGz6-Gu_3UZ#fU`6sT0D%z4bE zZ6VYy9J5QG2Q>;rgy)DOVoI5YpGLkbv)@X+L&nXF!W!y&4mx@oUQxm74SdE>NiMh+ z^?VB_*r$69gfp146a(RYKnfMEpg@V`y)VBCcJk}^ag*&I8aiD6WG|l#h#|cMeE@0- z7X@v0h>?uN8r3)&*7s3hm7fANFud0cYyzL7!~)-QWh`R}#^2G3IuGCM4RvS(YAB(j z-{E5MS(bw}(!{YCjlx1`{7bB5!yLr{63H`<-i_L@v7Xr5OI3* z$pX;>-&pNHcS2t6Q(u37j0Z+E3D>XwCC-i!Mz@W@r)%at|?wBTb18{YD>$7 z^Pu=6PhF|EVZ<-@4gc=$?h_!UNz18T+JOk%Zs2DJ5KLpe&DaTA>)m;dU@}_{g2O+& zO|$L^Q~d`{#1cBA=UhmQH41+h)cq!t1>0XmK{^&k;YH8)4)!`LXb4kiZTA5`ecb@> z8W_`HKr;^zdksq(d~8Maq9oqX(tk$!mbMh8OJcd*!F4(DzwL7a-Ut*cuwx)Hs7yb^ zwE-dzCF!O4hv&rB`^uVmwuU7PY14lj3)aEG4T8ZT)4wV&tBqIJn^FXBpE)X7Guk|F zC+K7GZ-xLzdr1N%O&@rsvkKb#aA~~07f1rS{6HAfx#oMI8XVQu+;V}YM5r@i{F*Gy8&AL#e4F4wP!gr$ha{t<|GcX!I_ z>N|2WuNtwWY^4X`0aKCD1Z_PN1H*_)6y-JZybvWcrw8BMVF5SyJlKg*f$9uN0M|Mc zOhxz*m<$B3Muwc?#?n|_G8vZz-|>e=T}~Osx=XX6*dIo*r}V6k5)Bq^NJ3RhxF8FJ2*` z$q^hJ#tevje<^h!mDlud`i|#&(dkMT5u@%U*t87%`|Ht6zNq~I z%4dEAq<`MW;N-mVG)plKvO+Z`O)|P5X4I^*Lh{LB+9Fw{=>5sS=Ko7+;B~(n6|SH! zfI?GMQ`=+o(GH*@nwy(bQdR~e)!hRhkd26QYVw%HSHDAGxS@`E8NZ|fWwgo{kofH- zy*6+cALb8|gx!M!Nezvpw9xQQP@PKMR1$lAG$~W(E*QHm^P|5Lde0?M_-X-eVK4rg%(>7%H&I&=K*XINEal{NmPtY8$y?Hz#aR5oRZKUaPS?NHaKwH zekdlcvFu?QX`e&7l7Kr$fya!_#NlyLS?RLr?w|uDbU-R;;@ZX#pd=6i;6)Jcc;|RS z!cW2Kz~qItBofk5o^3i9rhNu7Y*M>Je+i=c-;PsA2&}?MfW-BK%k2BO@FmCpW41t^ zqx%;`gF*^C95+iDIf#Xt_)jo>7~lq!b@8TAdm!SRtI%Ng0vzHf`pWGN(>4^mx{C?A>A>+(29g~w^Aa~odY7$AvJV&=MY1D zd+>M8`+n#Azwi3%CGOemc=of`v(~-tb*~9gSCzkam+CGW8rnSt@N-QxG>jZHH1ud( z9AHlc<(DVGf9TGd@*uS0ewq#71D1u1iVPZBStS0YF*fiS&jGCCjD|+ohWdxzVgJn( z*lBF}@{Nm@ouz|{nTxThv5PUV4-L)h(K{PU2X%W(I~V6iVtQVWJRXTX<$MGIenL5K zKM4s7{U1LIJmvl8h`-09J{v%7(wt7w&|FRxp3A)SFx+W^MA3A_&)wj(5JXVw^FN$! znP*0$WAH$WdYT8;je&sC6tsrAIUsdqdGJ|-E@tWS2KAgKg zsC6}Mw}W5fI8JF0HWa>+Cq+`5%E)W(#D0S8?|6UyYrJvKv2r}}{9^2krCukN!U~n- zhUbEaNk4{S<+!{FBG#lGoFfDMR3Gyb$dvt=svYNok1VSXx-u}}OSwk0wZsvVKA*tQ zbd{DNRH7w++=LNu$UZ@iaCcQ0xyJGFEm?O2;i8w_$?@sH5*UzNRgCj2cD)^IUCi?a znQ1ZL3CI_#vuWJ4Do7N1Th6bmA=> z>+A?he!ks%P7?1rBI5BWxR(*3z!Rv;i+rstsHxGWqM~y0YFGF=!(d0NQ#MrvlbLpl zYumLNg&`a4J?)-VJ@=i}r&$^f&abObXx$%=>aV+|m5IQ$4Rm6|+ z^q^c>Yh7Jk#p?=k^mQ20{YG`QKiwK*nDg>brSRU0m9U)trIbWD7SfklXU|?rXWuy6 zSm5e&7;!PS)a3$^84|I>6rk>1?1r{E#~T06!C~+c%rGiLdeLCYl(Sj7pj_OrD+U;A z{M_ZL@b69ri`{|1iojv~Fl&hVH&u1&w$0M5gvp3Ml}aI+v#vonb41>1KVwQ%WDrk^ zGvfirxO47$XD&tJIR0+SgSDCx3eO+J#>FZ^#Vdf}#Ei4FkPM;B{dss) z0w2SxJLQf`a?W0BMK!Zj3*(on{Wz`*-|ohjvBwX;4meKGl_$2U!T-)wJn;R^IYZN# z&%Bo=L6Kg>z*w&Lh}-9C?Gm!#S^*Q>x9tJ&r^29rxs?X zH9Z!&W?NfZD}_c^-@TDja|y-8#S7Nh-S4T^9L` zPnXnZueZ1}f1fc%I#g!b@_rqseVHHitlb4`)YXz=Q@*Z=?9}4bH}B>Fj&Q<;V(V1t zX0co=G6&m4Ye?et7{d@^qn7TnmHyIS;$l79>2SG=#BA_^jbpk$T_3z&SLl~DY}BI>Y_4%8uG!UHAJ|;KZsO|kC`#YepER4I%`+60)Jr_nzOak7cAifa2AiaM%_&e=||c|X;pZGXzG0jo}E5iJGs~@iR`SYk!it0rmHm{B6u!AYn5eFlsNFite0YU)3cKZ zZ+H`hzUY%T3}j02EdBo6vvZ#nxc|VDaKal$xZC|F^l|ivOSfdrYIgc!*MN(LH&?Zi z9FL98L2GRB5e$|3X=3CJs!8?dF3W{_+k4b&6|Io@>=SP?R@FGE%Qh*2nr&c)8ga76 zF|cwFxCJwEH|O#HIhFa6z*J%n5$EuN?ygnYPE{}Pc~1Y9G#Af&I=<32hCih7&8}JK z{`Yrxx{V#Uhz5(liT(6`tuYydAEG3^Imx1qvPr^8+A0-eTO7w4yxOsYJ8X{LB|j6i zXEe6y`sOs>ES6K-Y9F3|_pVK#@55!Ue#qF~%i(+K?t5D1_j0(lf8HzC)wOVEL?ZP+ z2gl0DKr3!P+i1T!1i?$G=yxOa>G&x8WZ^9#t(Ykd2bP)3mYS@e6w%j{D--%7xJFrz zbzN2?D5gXic=i2-_1U2rZN9UhMcrAR_RS^ampN?Ma-sO7kW6SgQ)t9f*KNLHv9Fa1 zkNfMn*SJUKRvu8__y{goH7G&6h3AJ2N-@D$6~eO~*^P(Y97A(+_J@Li{#m*fJI5Md*>T2JP)|2;#izxO$vUjgV346C zcHsm|Cml@!QSk_`IdHswUYB+EkRe1&{ei3grzyh3L$-V~L0Y-nNEXCpzck15(He4D zR38yF`S!SC9GAVAe=r+~;C-7PuNgUrMN$*NT#e@tBtWB6CSCa-$|UE?|J;dlcVbqm0j<|D9$3JCZyc&N}6XN3++Mhvy67 zkCyunyr@&0DG$hwp#|n$7(QOxS0<#|=O)kDOM=+da20sUX3L50*4k*~n<{;IS4|uf znYE|HZuTj+d^eWg2~x*dsLbogC8f)lLqmSi&!{H<>?)8#W(ALN^o5GGwY7#C+M2OA zfy&f5!fiND#hjT$DcDLfKsgK9qKbJVi6>7gDICt(&}f#an_$Q08X{SQRjDD^&9z1T!Q>tbxGW3 zqFL_GQyEbf%c`+A7dIFFjourvt2FNjGh+&lRJ$u8?H-h5P0xO7-2#&u*AV?LGu@zN#oCKhAS9`5#E2iX^{<1eTd{(4N`75f^$r*m4h% zbJ*+yP)tii-$3{5#@2HG$>%zn=sXqzcQ?iSkSF3f*-ECKTEpr-aJvcH7pd=9RZgyr zp43PsQEQ~{#`DYL;>kz(D#wgB&qPYq5cW3Y671&TUl5|4*yFV9g}%8$<+U;)PcLZgEp@SOz89WDOf{|kk=Zt@cZD%3ut-A_LiPoif{)wOA?Bo@}}-GF(sYF`8q;)w|;^ z#WYp_Q4UNWWJ7bF(rnnsp7_Bu%p1B%|Lk#)X{Lsh>~~AAu&V8{6JSeE1yf~e?QWno zMEVxjYf8xKDqDzd|BZb5TleQkVA ztl6~Bh17U^XZp$c;ZcY+0BO@}QCJsnTeV}3TttpVWdDJ47rB9*0PG;GCS(kH$zRqy za@=EdJ!BKu&6ZL*o?^inh48mI#PZ!#UZtv~U^FlmwKNZ4&Ro!8h2P&~XV&H1mMId4{R> z)n_zve>@EJOE4&lbVXisQks6L0kS^GNEU^&K-AfdeOU(;ZohvIT$a%EY$p~c=Lwo# z)v&$&U~`Y_uPTYZ#$1~KMFA$3v2u82(`eQ9un6cP^XAA`h(bz4J+-tx#w1v!`4IOB zVrPogd9|0fCcv@Pe+NJvhuCeYYMMk=_ zin(oWm(r)%m0j_QleR|lmvM^nlKMTEMN4}n-r;icX+fi3u411zERB5e=`f;0UQ2Tp zjaRQA^#cwoOr#i@r5@vhM~&Zx8MS#xOBJayD^d74Mei+w%JGm5mo2QhC(dw+>f>lK zA75NXpEMvRWOi%Gg9uMM1lFxIS&cr?sdp*3JfOcR(}$jnuD;RD$_~fDJlhPoGBC7( z#j((TSj)H>gq^{-9kECv#kEX@^xSrJSb@bzlsp59wJf>!BI$up) zsh+aqCt8Lb{HB&8q!D?02rn_Bp9fQ!u6}({4mO(=DCnaNQ7uwV6&@BpTAy!EAdazl z-Tgb5E++Wp?i52`9aDC;j?lD4`so*>sq8PZC9_K3Bm3*m5Xk-kll*dOzG|10=hVf8 z=Xnq8QYl%?^*ek1bwVo(<7nSE06jDCoA*YkK{vI^Ee7b0NHOS?gBhB!*a^OTx9g{qcjh!7q zWOZz7C6|LFkUk3_6DcW05S}O2*1@wmMd?C&hn?&g0~h8zXeXu`6(e3ZDZDA0D_nd? z^dvvm6y;Ry?muu5%UJqnmrQ%UpcpJzV*K-~_mX8j-nG_|0z!f*$Km%*4d@o8YfZlO zhJH4jU+k5n5u)$H%x0r9*$Wo! z_uprnV9^8^1{{%l%J+jvG^iWG``O=ox==VVtaFxawXm(B6#P)BR3Q*~YSLRTBU%PC zxM=j<32rbeEtwIIxRUTt9VncS7v-G6eJA@o$L9_hmofh5UgS3PrYv5YGqyj1kf%)H z+I86aFn!Ovqm$n$-=_QCTOlF0&fz%-DC2D5^~N#Az@GP-!UV5N=ioMWLg-_Lw$Mp#dYKJ z_RN+%&*8oo`G@%#(;FW$=6olR=eyYPUTy}2_uP}Bhrb|q(i_|%hC)&-`@KyzrtdID zGyJCwMV{KT(@oSHzm?wf4!mDATSo2VK2j=nA5$5G>u?t=^+0`fyv{kFk}+M}eb+&f z`wf_hh$)92dK}$F?|(wDagF%GK%SlRkn2^Hr2B%29glTyB9E_qq0P+2JIMNO@N$P< z)A4EZ_R4E?>gI)sds8*t!a~c3V9@+2U)NmE0zGEB-byeqFMATAASVBScqw- zL=S_EzqLmglv_-sA0ms!FtZ;z8qBemGJ-=T^k^ef>ee$c#RJF=$0pXtfsYzw^ zQ0dCCh6gtL2UZ=_38%N1;R;Vj>2IJ$PC@a&B*j1rtaw@LN0u+UYdC}Z7ckK#il2_I_qi>9l ztmJA@ovNnL3muHKh7kWvx;6%Hxm8YD-Qmee-4Tw3NP1Oi+DKocVF#9R6E3eD--9rt za5l0^6%04M>qVaHpZd7G!E|6v@g;!F5PK`F3q>zb`7%&X9AbGWI69G%BTqg6@GDz&K!=2cJs0041zv72HyM%z3=2R z#9X(0vJ;RlZr0u6_a{)AeEq?^KH@wIryXDxffx24L7nQHQqvVzXj4F-2rFLYi9^6O z`;YQaTh`p~Mh z655nhBFRqf)RloCVy9#Z%f zAxPT3Tj~9}cKux$&ZVXj*+b)>;C-QC>O8|sjhiw*07f0)!TeUz%D%r zD;ZzI2QrFWby}J>uE$trwI9+)No23K9m+be)ldI)l!|wMBA4VqKG4(jFRH4l`fUf- zi;Bm(3LG6IE?uZ77H~WkzQAEP`#s%$(e%rm)Ggo9RGh#{I76=kMa#!r?!)B={G7jzT0&M)=qnwJ<-S|}~veyx}bl9gs3EK1YAI_|18$~yg z9cXIlqq9fYPn4U9%o#lxw?ulQh^EldR$d90NUrTZE9tuqjM8t-@7yoF&m^e9eQ9|Y z%zL+(M?DA6`}aD%4Tp;U)n^}>oAI@e+?U{P;P7o&hZ9y#ORhIN#!v}#$J!s=^0PZs zwA805Et&6yRpY?hF6)x6Wv%?fNsG0_i-3p!fP24NrXm)d{kc4Nm@3LjEHuLEF&8>J z`@QYGv+-uA7mGYtkfHsqst8W2JMP*u_#gv)Rdx4=gQeWDhOr-)CnaWSC(1=o?mo=i zW(J(U{Kr# zxeYmyC3QG$%X~#m1`q6~SggK4xpV%D>a*Zxz^+x#6=i^)Ed;Ls3DhcO+r`CpG3E!0 z!~GZnJ2I1FjGE`h!b2VreQp=VU?sl*dTI{^9BBH=^=E3FoC6JDF0j@{T3i}WnH=X{ zX)9PLh2bf#H62CtPSy;J)C_#6)ZD~3`3E{<-tyhdSUHVf&sy+RsKO^Bc&y*XIb0lX zv@x~fj_jL-kcQ{sVa;phtGZq{2t!XkN*hApCdO{cw6r}O)QaPUo~WimoOD5@vt z5kouAk`tbs&v!FYJFMIbxo0-;=+Ga5S#iXgIsx8&4+rSEJg;0Sm(CZIGNi;DmOi&_ z%>XD(?Iu-}oj-=uG&Yx|@OIxQ&+m9au|fv8FHi?TQCZwmZ~==;){BxFNtwqaL0_NkVc`!oLQ{6Io9MWr@- zv&@=n@tfetWLOY(T{V&^W)?Apn1p|M`foP{FTbta?dT#}Bzdbn=ngoH&O;#xP1b!m zx}lrBn=7e`yCDg*UuDd>lG!hG75dKYL|w9Eah#CtxI#9K0^DibYlL*MUs##sHMiSZ z%3#-9uvJ|I3E6X) zR(0I242_?BBa%ew)U9LxBx`!>GMd1pxdh!)e_d9hf?BJ8Ydp;(w}eh|V#>U9^W_Q; zwfw;~a<5089%_n}o&6R_hFkk>N|h!X{cvUe95@e~ysnadAcXe#ClQqa07}&Bu5Xu2z!v+=zWYp zDA>*n_OL8bQvh6?QZSakMVk!@Xm8k9?qBz1NEujdSwK3<=>72CQ0F=t@6zB?KQ{fQ z1Qb0nus)9q`5s3rTiOd-V&z=TRs|8qs3?*~E!JTw(+5q7`9uXzAu5{uNC`V0WNlo0 z^rVzV9i|Dr84QM{o~jW$qEDVBdM>Yj;ilXcU#0Ev85C{0*=$lj zdD!m=u5T=@YPK`2^VX!CT$U%g=|pA{gF2sPs2Ltl&2=ZW${bZ+HCI{pO`QfsZ7&=r z7NMtJ5fB~jD@%V_>r$s1z?neLRDi1{V)rC;@u``6eOdF5K&O;yR=x1#mO`JL8fJA} z`rVmDvHua;JTeGpoZXPXX?&~0EPSSj%gFp<EU*aEC2(a$p;4v`ujU;N}V5mKKs~p;a~OLbJMZx(kMhdfPn zK`yorbx@??c98=a`~l5ItePZyq~ygn8i0!s6BAqZy&kw>2P#2n!xFDXyS&d2g}XN4yy>V^=#nL)Ba{5k^N9L4djnMPZ`A_s4$4WAt|~{hxz9Tc>kkoj7i2-&84b zJ5jNL_+*x0%THS^salU;S@fUHeeGreU`PDqwe&X}B)2cUs<2aq3SVH?3f6B)03%xx;h zgyqP}b(Jnxns7zrvmZD;OWb~`KJBx4d49xaH(fiOAzq(wRRg=SJvt3WEFuFR=Q7qu z7Tqna*(_AaVBM>(?%v2_DLA^$v-h}$P%c4P!;CXoIg4EZTCw{JX2sguKdGh6qyH8} ztspcLOMF9{P6>48wfmlo&C5ae+=Rc>`7id%- z`4_yu^F#N~#;+#42R;bA0T5AJD{Fs&<)!VT{VJGtXE55c#NAVmYwHfK8U|V2S#K@# z-HCUH_{K&(KNnFImn<4F)ie=CevAHIpdwiCZ%qYT742gpFe5IwY;+?-z-Tx$y?THG zRZe_EOCu}&eS=Nx`+Xd?QEa5R}f+PzC0|fvS?D<@cDdW6q!FsnVdCmQFd&jH=GrZx9r9Ssz%>VbJm`9RYbzGO&nft5 zhowaO+dnugan;{4aeH|9Jdj~;hBH$UfR~uI(AnwmG0v{Tg&1C>pGqF!i3)ll2H7@- z)s#M;&h*Nc0qEo(Lkav_vn9pQG}Q2(&!ymmOpc708hUqqonQ2mCLhpvbcS;lGru@E zKK}3xD?Ua8iOo{*N1VB!C>Q?IHln@<_S5bI>DEI*QOB)*BX=`BojXH4**;`bNf6j^nBsY|; zNWC!&d9{HIE(>ZZk#J$6hs0`Vv65ub_U?13W-ah{6SIOS}}g)N-DE%Q?}*qdxjN1NmloN z_3(k2_E5C0-R$P|!!@y$mfe~1sn~aGRA#DLol%v=3c9OLx0!>8`F;h>8Xg6Zy_Hr3 zU$AxQBH%{8P1D{-eTM*oAflI753Qps^IeJ8?(X4%aoWSK5c`hdQT>K*IB4&P{pwW| zghX)KugA~Gdo_AgywIg`ZnfOwotT+o;POzNiS3`s7}k-bR-lP{*AS@~selZA(4X08cf> z1ryTpX?aDzcc2?O8-##u?|yzzAHgh#eiRsCjzidM;|~G5a(Vfk61;qi*{nAH9nGt- z`OT4EI#C3t9t*O#S@*YoEyGqOk|FGetW99VXUWjdblkQ9qMzH@z zlnXrt6H)}De`7eGNSumo1pmR%L)x7apQhcOXG{Fg(*=}inXYE8FcNulEh9z<)8cl^ z_|3Y0X_X^eG@P5A@8Rc`t)?lbIjBxbiZNdCF+4NG5`#=zPBh%))L8JpW>HONqwwVJ z{I!ZB3a{2Cq}_{8vHYwFpL=|j@u;$c=k8F=tY=|zg=V@b>lW$tdjB0Rg4wlInN4)~3fXocAz_ zPE;%fvu3EN{u^wo(=t|Y{>8w(dx;%*`2qr+b*-05t+}Z}=YOuY%&soHR-!W{9-S7S z4xQd~_7q_lLdGkot4k7tjk;DyKm=|K6t6ppKLhm*uGhBp%Oc;Ea0_T2UAmBf}ec_Ffb{8`2BrbMEm8 zYpDFcVgdo6h?eN*r8_mKc5$@Sq2&86TY(G|qt-R6h$0@nPaEdq`}{*CK!atbET3 z%m9tvkT4&XAk)~3{(gPMoXCM_(wMteW5ot~$N3zqIPIo+(t#RSaR5D2J3r?<@QmeZ z+Iip}Jti1=djH>qM;VYSjVKd``3V%rII|B9pvNw5Vc_6`t1=C2paLWOF8iF_~-U}<#xi`A7-+3aH5H0ysezI z?h&e{y{`_6GF_4Y-E}a&gKKgOA`j6w`|H^4Os)G_mbQtj90*=1 zudyG|OJNTbmi}ayTW!6L)&Ax!c`NOVla<%gOYP01_u>1QGYQZ?KgM?^=dwoJP!)*r zDL_&;rC+*FP_Vl3dbmY3ak7*F#d1YN$pxY-q8>N0X3j_487N0aB{&Bi@4wRSB2n89 z7>?&@e0!)b@8b8*o0-SGRhzM7GFBak69FclLo?zbmD2K}xe*M0!iFRczDeZi!rATt z%77}QYIaygm|7rk`NA_{;Mn9P&0Tq*cn!EQPIOCAIkkOd4I0$4xdIfx%m%-NKvd-0 z@tS~4I44l?Y&*=eCj*WT(nPnPK)x*nT#-O+Puu{-ANdbU`gS_YjurzcT#U>Ux9Z^- z(f(D8Av`G5TnSi21YoYS)u)Wi_i`q*?`E zn3a6(5WKhT^7xP2`p_3e&B;WUebIyH;7$K4T6+7YlLQ^Hm+Z%)iG@UpWeHcZM9)me z%B3KOIXc|r0nR^hX5@9T-|JqLqF!rill53<*^4k!kS}a{|MKYUXUe7b3jV@Bi2R=z zZ4NJo0l7msrq`@9mRmE7bI_&W9{wZcbYSVa)asMdj^2d}m2i*G9V`%m?@!S)+AiJl zDgfnD4q!Sbw#MIuZ7C~^m7jLoz>ZW!*EZ7X+)FAO59D_Jkdsp_D9x~psEY#^ z62;;7mY8MAjhvs;(lZ9dg@IZhLA8wgJ^k4NG@h=E^P(m*6VM8aj8+0-?UyN)*y%FO zBRoRYP?_qBo`%7yxBe3*piB0h9h7I2G^1r);X!WyYz7>}+yNi z8fSbiTV4wOR8khI(Ohl}jbGHHTah~=V6Tp4QHha4R!C9%d?X(T2RW$H1ka0Q4@6l( zXRP!D)eekO>(_dtXM|@=hkA^Bbn<8=ZH7X(`0f8S2Y}=Sm;*aW+06y_rwXmP25g0( zAtG*{xE@VgEGUlSCsLQ*2kKpa{%DfrXG)aWBu|V1RL2NV8UX+_p&V`0MYh+Hozrh z6>$}aLOgn!)B4An_sPi`8cpbVK0FuAw@wGG1b!LMceuXm{lKGYExEJ9zcv`;`{y)?-Q6{c;HMTuc*mG?SoYxf9oGTOt zCdy>3?%<#vo{kg{bp8}sd&+7{0umnPpLH@sKwBi}ST*=id+#=Lir<=I}kyJ_zSe3Thd zM30rg8$kL7{}Fk2o6k*Weok8e7S;CT@%f}oDF0+tu|oY@U)DgU z^WUwlG6h9NeLJ6Xk}`jvE+eMw6M@oUmpcq;phfs~SaPB#c$4?7{TJC&Th+ca_C4G2 zw?nbwVx}ibJYQtYrEs4m;{Pl8vz`bBbj0~?TwYnMRrklI1g*yat_Ajqw(@&9rv>2j{c0|O66sFyYuXPN)N6M^uF6SIW$GImR*-Wy z&6PDZk+>2&5HN3OD7_e%18gn6YgAGELSL4-wD%ws;FXu0GU6biEGhDVN7W--1{SdF$9Q|VqbUUt4_EDc@nx#)|ZSEcID|)e9StO+0k(D zQcSn{t6zL>sRamSN8s=^L@1z%xoxPZvGxtD-C+x!SsBt`pG$}YUC}OQN8h2{KN0x| z{X`dtg`MLe(87&bdHvMzqQw<{Pc1-dsRdo9(X~*4BAbQ+aSK-7O8@OI@N?O2gd8;| zE3G}wJkn$}wjbp^IXz8XS@c_-S`oN6AD6|{>4-jMS&${MzeYg{7rPevKvFsSBG?)N zo(81Acod}i>H!hh3Zy$9|JBOEY$pz=uIgOK55+}x2f`Mo^t+cH1?cU`bZj4u+iKld z(re?Dqx;taQr;38gQ{-a_v^a}xh2g{1R3SM{^aFgBY`TY!_}YUe=?SA0=~G(2u3wg z#SsXGm$f*_OfXYnhAN%pq$gcT6~ znjjruSxrx_p;_k$-kH-dD3`|eRV)|RkXxT1%d^=AKg07$Yd#j??|=sr&aO8r8Hbq& ze%3<(%+Y>r0x4PmWH^WXIW>7qHxH@6^oGYUZ2w#T= z|7aZkcMl9<%;X3r$Al?}xyb24CWN?#IU>%~8fAU3nXdm^ilaE45d zu{HM9dZ~X^WuOX^udgbhO>E@5(87F zV2sY?N0;v}BwDpXScYrWozR?}b7IwGstu4r@G2sKZ{{7%+SOY~S#>Y%IoYag9* z*Ft4U$j~;$R~pG@w=#wKO0@+*@|v82C?LL;CP(^o-7T(uUIzSfWjzvTrMi_aWZybe z@dB}!yEbLm^I~YNVM<7NaXbKE1jxfZJ5m98Mq#EG_sge>xLps-@WB3al$H+P&uA$g z8~l{~ar<(g1C>By*xrger!Mo}jAL+`e&aX|wXg^qhoP@Qg3T1mJ6ic*phA;ngU-G$ z&Mq#JtIkHQ=!T6dUAxUXg>CEAsP@B0lN&dJiF#g1-PHB&0~yw4E>Pw)xe2Jod>Lan z9tn`Z4fPLIe6x4wa}=ERKTv{f*=^zaOl!{mYMmm7M{oDq*o9*BXlo-#MxdoJ{e_@cbt}-_9?*-W`iW zJjR@df<;9|FP`DdCX7Iqe-4d}u^g=p4D8(RKs7LGp!(z3cdv0)O8?#V@lRu%@r73_ z#zu;$Rs^?!RkhGVlJpw)lHUF91uoAhY*gU;pN>dxPo1%HBH04?^LqheKLIbOe=34% zn84ejL$U|YjDB1CS?gF1D^R#7fz5`86D}FNd0KGw!=S;`Nxq{)PIlO?hO{OkXHq4T z4sf;xg4U>}Nd*c3b2;r#TALw%e;$Gy^|iIGzu61m^IB7_LnK@D<{->xAi)~Ibl?Tt z_ItLqJ1+H#9f>!g9jA-$KIP#wR@Ly^NYS13kR6jaiQ@!nLq95?<1*&n9{!SFP|#d- z0BQ~I)}t2gmfsrd+R&*`mQ3cr&@9AN6GQ*H!i|q3D%jO-JE-(U-CO>fSP0Nt>sYSY<0R1q_TR!OA>4L z>Xi_49@%MjR^7DsE!WqhUf4G>!fj_c0a(+=c~qb!3>Z-zkXhm~QpyGnMgj!`2y(Z< z%-y=srMfc7TRm9skly>PT~`SZ-BM0>1?>mOK;YcJC!n>OC-UI#yr~`RWxBi1r#bA8 zS-z+Zi=oc+QeB0e(%E;Bfk-idOdD5$ouVT`P-eZD+CHvk7Z}r7;9#qa<#E8E89-;l zua5J}O}AbrJ6($0o^$8+91>iih6kKa2ZEZbEMxINQ)>hCKC(WXav&l)n!BJ(Z_NZx z8MfCishk%AL{)Ja0jU(Q#F*2ZPfnan&YdP)0rGro#=R#)&BtjySzR3WnS*qKm&|%f z=H>H*Mg&!$Itcvz8>+F_bC0F_=XEjuNup=;HN!V18jVSEci%v#@qZB*e__Cci^o)k z<#3KO!e%3dU;ZLbnNsXM?}M79NZMFR`H0SAGS=Qo6=O$Rt^evg_UN0evJT7O`oFnN znpmj~>ua#sjsdw?)6RSlUL8{+<=h<4Fd=<{r6I9cU6X+ox1qqf<5cvoYaE@y=$8!} z!zdw9?7ncn9s=l0VC)BKm^(^|-MguFd^L*)=9dQv2|carxk~04>Ww76Cj-9Rg_%CO z51LQL2E!EU-U3zGax~POvr`BP4oN}lb;^&f27F#u+fTD0?Q3O#6qPcAiF^RMcs|fx z0^_z8vKKlEGU*=-$yaqeR|SF1Z!M2Epdgvp;nDu|_4z=mG`W)7qo=Q)YFza;dG*yF zY-RdPHZn@Ro0BYf<|U*Z0NnE4?Jaq0S7w_%%IdITC;j4mT#)IM4lYkKP3^>9uN!FH z=J{IRVs&d?}zA>-FVimHD}9cvQ+G z3hpF7GXJ%zRN+)#U^~#(hpIY$%1up zbaNgHSysTLKYDU}YR>gV=Jm*QOh*x9`YS7-YNJFkHl#7F^-i~QjBo`)J*Ocwdd(eD6NSTInJoZ79G zMHCs?C+v=#Eb?BF<{9g*V`n5K;0^N|r?4o)f9V|nHzP#d(!^iy;2FO~cdKht6@MRg5#KvmA^-dIBzXxanN6csYJn&B z$f&~F&kyD9SDp~-VU`KU9xf;E_Pdlx5~A85)1Mo|eD@agCdg4u5T)CsY2yz1T#XoGvMD2K0OHLI9tvdWcomYDD+hfqDYU` ze$F)!!n?5^dY>ua4?v>v0ZLb$gC3)lHJQZbi|>G7@T?4F+B6A^yb`y?Nimsbu!vbXJ2~(0)pk_I0-EtILGYvoX6MEgG7=CA(7Z$ zJn#+k&3{@c@FVtw3t343$M^shzzfiMSkj*eka}J>3ebr$_ZUK5*CFaW4_~Nvzls5v z$y;`jIfFlzRcUH-wEXHQGtnUPVx%K*5GaDKRNJ=kJXSdk(8T!y;1N31;vnsU@XSk; zxfFQsCl7Rbxlc37YZu40hLH8~k_FL;ytQjfWjL;a=WKM6IH#hX?gC{e3Iw%}BiBHu zcH?iyK1(^Y-5Y|BCy9G>HR46yk16&#RM4q+Ere)<$glz2C_P}CQK8P}n=eIOcB;yu zOL9m0@7FHRS92dfZO)fp1(ag?$X!DD;H)$U$6S?`;VNQB)z&fH*K8-X@hl-Fj=gioq z%(I|lA;EjJwJu$p@DRO&Bo3E}Df?8sZBaE~Y^IqhV`F1qXC?pt-EEdHF!pknf=aIw z?p3>vz{v^=v;ONVzO5GY0&!=SM7<`I89(3H;~YnU-~Z)i4J+JsCcj#Qm6yV{Kv%hj zIa0X)`3(@kJN8F0L(_Fmm!TXv`E{a+;?IHHLPwVFC}<3;G3jLy>e{u}(7^w?ILe1d z#W=S*OL(vx&j1JwQCUrRCtGl~-Qfp{oQ)R$mRpl{Z3TRqCLebMHLJXK zQOu6}tmSM9eUd=ea^#WE{eihUt=Cc~amlsKU$O%SJ_2}$@*@x@O-J;p#9v47=&|g1 z_`jbLgeQ?`KHV5$*SWmda@tw#8#-JFX38J|04@mi4H;3L^OS#L!ya^r*UWL>DS`QT zOy()f%#>dW!=ei_yj0D%r#iZ}0REL66@-7$@(}OnmbUcL*W1sCiE10!m$Rlxaw!=> zUKD#?LjVBHX5Rx~G(2q7tMvd>-6Pu*PRC(JanCX@bJEiJ+D+dLT>xvUYZO5D5bF$o z;H45%pv(v4KkvK-B!b0iP{sb0ygRKlU%Bj?EnjP;l=;FSVSp*)I-7zTLo*=pUxS*U43Dycl8t zMoc~pr0?9O6+bH{MZtE|*M%JNqL6;`$yVRax&KF;*x)+Z67OA6olDxxrVlSEqfpKVkfr8tNL)(hN&Ye4Ee~^2rRjW-P7M>96)X1^jr+_p3Z{JpI zX5?oz`VS0NsP>w_got{NzH)L|QS=~;jVwrg&~#l7fpoC|7m=?@6$_31Kf?e~VdDUA zkF6r}2{o*2524DH&%&nXN<2``hp4xzhzh>n(`NHnCVYChhSqFlQ08fDxjNgFriOBr zI>5|;?>jpkm`peV7YQO~z%{5c3sYX-;6(!GgGEul7u3{ZLM2K74klDtb2<3Rd9h>P zXX^GkWEzo2mHS4oZZ_%1=Q&6Z!e(;*ngB&R-PPU z#v|JW(4)9ft7gQZa-I=Ff+Q%aI1~eT{hYfZ-Y26&W$*u=!mc_Xs&89M3DPKvNdF{N zLPS7H0VS1EK{_O)r9%d!mF|Wi1_4n@LTU&_N@@U!A*8#8h5_C_sP}j8yZ7DqCoyNv zS!eIH*IM7Vz7;8d^|J29l79QM=C^UsJ$!~9SDRDr{<=JC zec3XJ3RFpWyTllnHDWCy{yd-tJsk8fkM42=Xe^5jp>Q?r18Oq^f-c+?Ab6Btwv8ZQ zkS|M?5I@agyry*8k!SkfUsXu{ylN-hHuP?@tPFF!Qqf)s{PCOl_xe~Vb|#3r zzU5Xz-`*iK>^dLu&;}4hA&{&U*pgMc^rPn0cnb@}?Bs*QlTOh}9q3QcDaCqqOF5Z+ z)L}MZYk9QV#6uqr5Offm2ST?v@fDQ~V1Pz~#G?j6PzDF52o7*A#%F52_Vu8QP#uBf zt-{C_kYuqwfUbqde7RQGCIuArE4r+pS5*r3VFYPY`#g>q+JdOF;Pt3=F6i77=|A)bbX-3K6)*=PA^3T7+dWvV zys{~9PAsh1kS&@>1q7zm{<`4qZqEf78}OIGFH_2JQ6S!_qz11$iU&BzC?iL|(w${Z z+E>Rlr1 zpy#+uCU=u*VZTZw8lsW?vin0_FE1W8em-+Go(IrBlAJ#927m`Xk7x%Ug@yto_Rr@N z72^@e{C3t?wBQH=$t+~AJKGElrf8w(0e}z#ta@r@Sy{QRhiNxx_KYro)k+QdznI74 zLy3wT&`n1;p8mo&56+$@VU2>&1#Re6KI$tiFTbSQ{(pxnpNAa{`mdR57dO^8)$Q!h z&7hisE3ZyK@-be%rJm)2|H)`Izc`gTqk48+xFFvvli-2fTOZ!xh~v49 zR-g>b`YYD|=ozf2D?b?e7pyqs#iT;#NTK?}LRj3TJNnv|sF}YYfvZ?hl$B~N;B;qr zb3TP1Yzb+BHMALSFW5o~%~5QXBYVZE;p3`9re^CyRpG#*+{Y!Usu5r8o62mcb^EB8Kp_g0N6XN$zxfOd7w3x!=F93k zNubIG|F`9E34Sz)2kzXqjFWHnUwM5m0uLpoVfS(A9|~AukR$+5xl;Z56u>Nh1h4Gk zPt^gK9%RnH{3VwKP{m(DSgMO5GSsj13rP$iNBk{exQFF}z2aL&?Mjr@RK2rE`2|$z zYV_8WyCKU$AWTm;&NSJ%Y%kdIcA+PjLrQ*Ix1#(J}F@* z3Bfuwt~dGa!htq{imXS}#p)?2vejk#O|q4}xVmK6^VkG%_d$&XA1=U>7m`|<^FmX(0e zG1{f6(39H;{mXpO zQdRjmCq;8v39M5Ptg}F*dwehKGbJKRrCPzzMdFDqq!{E;?0IItQ@^e2TF__#j8P_V z{GI)vw+Ic7P75e(7G^zTx@7SfSv6CF&JL@q+a!o8f5ho%Xc?$I70yeFE=auqnKjLqN@XU-E{W9qX#Gfw6q8)P`Z z`!tz2!wFM{R*ncWa+)f?DsNq~9RLJuL}WH=$$A3|oPB@mBJEK3P82So*gq~=1X_CG zX*Va`wlqFDKEia0t|h?8q;Bthy)@T6`oubm@$uz|OTQ9((5Dnr{b+}C0W*%3c{lUU z4|73=FolSos2p@&#?yFf0XgyCPRc{f2jStZ&y zJW6SKH7-BRYwTglT22DF6XT)>a<7TEZFRIdyP{%X8Lfm;LZ>5xeV@SgJLj5h;A$Ui zR8pltb5X&{HAp=w1gON(T-TPptZO&?F-A=mx#`zq$mC*up)KyqDkqM)1j9aN>iENJ z%j(9(ZvJeW$CTM9)p`1+1JT?9hKR{>aiiCuuYzt=(r1Zui`SllVS z0fWKR0N#tf9tH{0Wrn>3nC8e4S(~Bkh)CNgJ2r2CoK$WAyKnE=h)+A0O(!DSaWh#; zq;FzSY5IMBLDbHU^M$WQ`UE&Rwf&ANo|o;o3auR?rJOJeGH1FeP_ir1T+g2=| zDu11h^~jtH%e-pEz|Eu%z+V9T84Yl$kFVO&^lU1niD?4iJL9>|RMT;C0h}FKo#YQw zNwY+M|umOv@#(*iHa;i(Ge;h$+}i|g4}1x zB$qGlCC2nE;4@G({(xk_nDtXV=FVk(@frcV77Yba%!C%QdtM&7`PoxFyIhp>?gyY$ zcO57&fk!2pw1PPTXG1TizJRJ29!Sp*>UjPdZHSTV6Ld2zKRU#{A zH=;BZCth%CkZ{lf_Bag3-1Ah$5L!Fg!+m$HlWI=~JIN%qzbO>67;ba7k+%cd)F>=>$ac*VCL{|58i|- z6E3Aiowfzdyf$FWcfKyRH03R!|*|tLbn@+_v!igfrD)FeGyizt-3# zFU?q~W*^qvnvWcCKkghr)H3PWm2AeG>$ZkoF~|cfl0mm3pI^VXy_R~fAy8~N)v#na z7HR6P6Q|KxO8+oAUI4pmJzP2wpQIur$0zk3dB3=qo`nq&^kS@9gFRKm1Z6#-cYO|n zeWN04DoQdvL{5%l#lj`H5QBK)GV|aZob$tJc<@P3J*Q?*%ITKx!NPb z>CG>+1TFn1wPYQYq`R-#mH-1;rA`u)(HsTw!$ zir-S2K9KciBbYl?)cOx@Dhl-uPeYH(T0_SWrC4Dbf9G&FJU7eyP-n*(2=-yXfv=#f z96qGcGqrPxnW1S%AmTwX)?j*goBOa2RU^52*e0?tQmqlkV;y6yEXH0aU>!qftAFhk z9QMSS*Gr{l`u`9Jld6%vic$6249jpt<-M2Sh&-T^(AE6>G6Qt&nz;^hz}gwZeHYL> zJKDSTV@a0yIj}a6$pI`JQq@9~E=0|-@{#o=ay>Qd6zbDkiJUCvsci;k&A_eyR3CT->8nrrMQ{YmQkwd1PX%TGKYH}^um)o$mE_z1X^AI+F*en-}R`2qBep!ZzH8^(i;8! z<6-bv;iUM0KE+yu=oJQy9C^8@q2hhbAyHWBNF}moIo!5h#Vp4$=}n2WNX_`m-sB`i zUTgc>Fn9HeT<@3ZcD2f*hLPMw$HEVH0Jwu?Fp;yOG(OmDgi`2h*~m|iP1i10dAYV# z=Q8S-e@7@jqHew~$3MuD3?ID?nk_~hnC6>w{bbAq)~>rXuuXQ8^YYz}T(H*+^H{Sr z&n+#{NP}&uy7jdHjj)9#@_U?HmgzBYC?tNL;Kt;^d_fs5xKIu-l~2(e$pS2_G_D?d z2-ll=hA($_YquOVcVh`>8VGIUvtPku*Xlf^lxk}FNkkp?m*`C9C*l<`6Vc)AmEZq*OR*UX)N0S(L)S({L%!I-4qJ5R#a?XzlCr$rT*#R5dhS2 zuZ&db?}6&XY5(nK(@=SuFa472WTkL>O#sRZ@T5#Hj7nAkKoTY_l+P^FwWZ(FD(wA&Uua%i~ zCX5~p=rirRp+4NvcFMJguVs??EgJ^7-CxW8Bn}`e_?<2Mk`4Q#tgADVPj*=D@obOu z_mR8-*rKeXt7){ij6rW*g4m6lRc-ERPg1Xyy9R7+59r7D<|v21{OqjN0~2OHDVF-G zdaS5_5S3U{N$KB7h4|7m@$TY{{P$h{k&CZks{z4<2TUhZUejt5FSq>xBb6(SmD?`#=i`Nf^NXf~Q`paH!*zH^OQm53fwnlSM=o9tg zN=zY<5_ewhe2~{j5h!t;i_Tc^021tF`NaWby(VW-uoRS1b zi0$T-mYDz!*R#?WstvEH`8~0&XA#7wg&{~omCRWmL;n@3BP$6Bk?0WE%m^`x2`{@A zJ#x4gBqV8v^K~TZvv6jZ$ODym`T}cQJ2V;ADdHOe<0ocjVQH11;|G*ugM%+{acN#k z9Nr?9&R&*qm<>r0b5ncwFwqD(Aeh~)8p1h4MVdY;r<^SKasGT55C=^cTl8lOAs;*k z_pZB(eI``|iE8>#4~D+Zrc_;ibNGq)F=O*aMIe)J(IM{%hSxzhAPgskg9#{iQQ>e6 zlyv=aas_}_RyrvDQ@5pJ+&(yE7q|STudjW-BCmYy?IzG?o*a+^!%ZrjE9#ZU#o_WP zhH^3kfh8c-25?!LhJpf~3n4~`Z?OWQpaT(0wa45dk4JR2d)9PK)&$3g>KcU~#K;c-f^rbIHp1DUe)+kdBf8vrHnVWXDc{^6 zr+>kZEet~>XE&i;V*HkiLdOw7HgeqbfHKQ}Wo2bHlZwDY=D;l*r*yYFLz@5jw-6nr z63Gak*VHsy2ud@!3s8}Bn6kAK7;i82uD%p;vNL{+CaQaWSdiW|BEfiRKqQNSrGjh54gi5)C&$F9~g;&?BA`EE8E7zjd0^*n>^uVNRtG7g>qT#IA&U z)OggO;i4J@y!w32SV=P#0}BYPj-n9`O$w$l=})$8qxew}yHmikzdGHDNucrbwERZ8 zZ|zcX+An!d;qFdwg+sE~am!WA8;-k6S{yFr0i^QD+B3*Uq@vOHyPJHC>2}=Q&S7f^ zt7q1ak4na)cN}_+O$S?wos+&>7IZ;6WT_n6u)vNxq4cZK2W|vDsG7Me?lz@mW&JhM z_IvAwpPCdcT%8YrurBs7cL6-zgR3{4Z;s>W37>vDuDuC0gJ zVh3N$uir@)a-9)s2{?4bcb1-~dWPTWDGM~aHyA{VL;k6IWNswYN5F-KCoRT|o*<$y5k;oDWU~ z@_ND{ zTROUqO=%`Nma=D+9*K_bbtzP?o@M6ww6||x&9M)B@o;!>kflouQ#b7;j(jSzi~TN& z)O03gAT}Mc-?-*F!x;auL?w6Gvc_!S_E$OBdyG@vLH%I!g>lqOaUg^=nD}jUM!WBP5F;{u zmd7yX@9T^-H!Dmj>g+eux{LoV;`)}l#8^?Y6V9C4)`+J-I5_)^FFTPQo57f!BxE!9 zpNpwBBeol|fy`+>5L^(g>D~nTq1i(YMz5Up$#1zVe`{G#VI8V`RZ*J!L~h6G;#v&j z%H-2+&&cGF8o)gE!L&4UZ9VrjzOds~GkxfBdwlQR@B+WrhLPrS>qFixt0hK(EJT8c zf@BqskP6=*n&ZddT=Qjmps7|B8T{Z(io<#hdeML=m!w0RSk%BbD04rl9K!6m+H80y zwSD@Zbf(Zw=zOCfZ#w`Qii!;67Wk>!fp8X>@umvp@YoPndz?O!%2q~6G_|pt`akKU zUAq$LK4aMBJXoj4=*bo@d;UyaeBQnuxwE{s4Xfk$TOe5`$ri^9B+KUZCsYg=`wkNM z$2|?G4|}`hH3l>z0}e)lA8(JjJ^G9H*~pnq`f#Fj2jX2oBL!I}imiJZV)5ZW>*YYpNA2Fe1K;P}mUhTu} z-I6uGl!!#rz9+Iu4#kTmXAcoTqrx=IBjCxw^jG8sdz%C7#DN}F^gy6U=G78CZgDe6 zeGH3f_r5MLsV=UU08n;io;l3+S7gB;GyMAPi@$168WzN|s1zpnu*b zZcNMxFd|${ijH@Hw9*OsLl3Ey+4CH4SSR0oZg?R%=44v=*w{7u9md;iTQACMClsT< zmG73#e#0z;<~r)0iMqu#Y;DM=u6!pTZ+g?F_@rYT`-sPk^}sEkq8Da$n-_>CWES-K z(W={2EwDSl>M>cM-f3#QHDm^7(EIC&hE=1J%s`23nl*gLp8F8{i@l5Cwfl^0aQykB!%ZLLQp=>R!y9j8xYKa4g(ap^$&*!zJF5s%m*phS$!gsNrkFoK)&T_8i{m~@9i92S%scC^UHQ$UCuan zB@1=!yM0#hUE}b%E%rFkFI^x^LY6Y7U7+ui%Y*X% z(Ff>@W*14kEmPINSdqMQIC-A70+*jQII(jw_Y2fn1M0)iMLs|SzS3G%=m)#-Q8pZXVbn_>m^hZG5a1OArGuK|+|hK)#&eFvs_k!@kGL zi93r=loJ#benqqmG!BfY-}E&x#DtvhsB^@-Fx)}(tF>AUy;mz`R5*Ezy#htOJC%(p zix}YmH#w?^s+4#>;XIkaxs41QE-WQBE_9`NDULb1%<`NftFLhpaipGiDZR}>6^-&Oa(!K#c&GUq-r+0%=ahR!e{)zs z8568da#Ww{8A#?^ABgn!eKa`%63nTVL$a?MIQ)gSPA#m)#M@2@btFXeQ>K3yv1Ql?A)K7Hu7-Q1o{xq}qUl>0C(jnRSBtzIHfHz#UvrMql77EyY0;ic~8 zqA!e*i9&o!~4JHjTi7b05JJmBG+EmUs&%%drEesq{yZZgAyV4#7cFAAK*IR9Q-$5?e7k zLox6g)bc*TAJtEIC?>(^vEHC#L9{m{MJ=jFEK?nKG}#pVh;)6cS2=knK(l>ptdZt# zrYdyS2ajIK&C5EobIEe34#;-cA8eU_vSs?Gy}nbAM**6ZiNIc$_LY6!oX~ilid<{6} z33<$?)nhZvQ=gW2eWKr{Hfdz)&VDcneGLM^3VT8w_7vShr6VQB#!3D2X(R8Dx7m|( zxaEFjIgrM{i^1UNna6SA<>i8(3e2DBK;+90V9Uts!fg}DD2UAw=TDPlC(H&FL zAhz}`FtLsH+hJqyklEvjSo8*aLI31nz#)$X1M8f@VvE0FKif^&zp_bB1s-Uk(H{d| zP585B#-%Cr($H1?m6D3t!*Ym$Id++35-#e(Q$Z63M!vLw((r#i7POXsFh61-D5}^U zdsPU!XX+wB9W41Moj>T^ii1B3RB@OP4rEBr3bP=%EA{dwOFtf1C|J->bjX&>>Dg8W zm}fK(*XMmk_4fJ+NG`QN^^P4DXTBg%L7?3G>*MzCSJ_Jc(nb<`G5Fq^Wrv)=x)CjV zct`{h7q>`|$m4aux#vy8s&jnv?(sOh#~^=gt&AIEikDjN?J-lq5;s>s;@y+AlE6 zQ@U#{&tE`uk*=?UqrQKK6aI8WM4|s(dY4@GY0KZ~)UkiiD1MI|JH7Z@EeT@PB{m$i z=YvhG5!2)4(gR{>@td7Jd-l8ZdcE_FGo5U5lpluiW95TBQ$Eor*t-jd6pm-QCltU4 zF>NqN&iRxjA>IC*PNvjKt9Yfz+lz^w{`(4yemjsEesmiA6fyK{Of`4Br}xL@tLr^C zOaYxBv1~0u(im@{<#0xEty20T-^WdTQ(8Owd8d3T$bYd{JL!inNR-#s*4mH5c3TNS z2^|t6>~-I3$B*P4mub({vzofs#qjP?f9H!ImFx?CFg?9VjDumrys5SI3ekx+X-q@Q zJZ7f71C^mHw(<3)M8P?cl?yv8K<+Ake=+#)sdJ2|mxvAohIwGPo!jZ;6=0BUxZwdE zutOM7Fl~*zDr*cC^XQ$=yf+`66!B#exz~PX&~%43Vm9Zrg8&c>z&ATlC#mPWd0m>9 zXD&<;MxhNWc(SRg(YxpLVTL%P`KCx#=XFxyx-kao!;`29f|@-i$}?htFMzFY(9kWXfDAV$=6z0rNT@5c*4b3#X*_oz=kX4!X7?%p+QAGaWV&DMXEc5*)XcClJO_p)nP(yi%30-0A31AV7q{n; zNj77(wXLv+uPgqrP9c$C_3G_OKkj>8LPA2xus36#DA*&kb_lUwr9Wau*Y-|jT%dTY z`;Bx;`9ANtukVynlh7oxmzKc@69|BSr9o}iAXGNQh8;-$T+9I~D!~1<$8bHif7O7K z#U$oH%%Jt7-~x5T_JJZWe(W=#a$1k!aL{$0bW=US@R7|Dn zF46iHo-ZAWHYXgSJPY+O_l%BmgW#uq#s4Y^Af-5g_KyJx<@XGBOPuNwEp==i72Zam zzrE0~dQruzu=%$2+yt$fj#&|tqXg8`LH!^#K!m}-*4L8^?It&Op*oD)Ka2nxsiMeW zZF`%Ts4d4>V{k4z(gVrLc}imX`~%Rsu33cZFHbqUX>W~GkrB(BCKjB1Zn?K`%A@Tr z)=6)IVMvmbT4_=lDkx@Ek7UbKBTxFdb{8ctWNqPGzctd}SK=X)DpwqdlIm>d)dC~E zvTHJr6!RDj;TrLKhv+6=-*o%>u}i-$|K`G?6^0;MU%A+ALM0s7C*UJ%Q#>DjE@+KgZ{ce9dm84g6%`}V>@o;3>D58Oz^?0CNEtg zK6XhW@pu(e#<{w21u%KdQI&Y&>dTPuhLX^uE&Xk zc2oR2Oxo0<3<00p@fP2Ne;8zdkg^qp-!qmNxw~_4u?;USLysX7x&lHJv})xWOWl8- z-S|)A9e-n2|9cM3zx(II2gOHqsZ3{~qcSR@>*hY&je^eaWn$@Jd!R$;pCB|Kf}-K$ zA$tF9Cj2x?si(SVFC(cG5@lsr_Y@Auf{Hqa=Ufxak*VK!x9>;D*r&~eu0#M&;I~2 C;9i6P literal 0 HcmV?d00001 diff --git a/examples/simple_graph_model/render.png b/examples/simple_graph_model/render.png new file mode 100644 index 0000000000000000000000000000000000000000..f9be7d92bb38a6113dd8617aa14f1da96ad9fe29 GIT binary patch literal 22564 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 B%&!0d literal 0 HcmV?d00001 diff --git a/examples/styles/render.png b/examples/styles/render.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2ef97f9c9694b1ece5c801b4eb7f392c983a5d GIT binary patch literal 32764 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 literal 0 HcmV?d00001 diff --git a/examples/text/render.png b/examples/text/render.png new file mode 100644 index 0000000000000000000000000000000000000000..283ca1089aaa1543ec99d9e4bdb0281469f2cf35 GIT binary patch literal 12187 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 Date: Wed, 24 Jan 2024 16:13:46 +0100 Subject: [PATCH 20/27] Add package init in Config.cmake.in --- cmake/QtNodesConfig.cmake.in | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cmake/QtNodesConfig.cmake.in b/cmake/QtNodesConfig.cmake.in index e08a6e9f5..ee1b06837 100644 --- a/cmake/QtNodesConfig.cmake.in +++ b/cmake/QtNodesConfig.cmake.in @@ -1,4 +1,4 @@ -get_filename_component(QtNodes_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +@PACKAGE_INIT@ include(CMakeFindDependencyMacro) @@ -11,8 +11,4 @@ find_dependency(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui OpenGL) -if(NOT TARGET QtNodes::QtNodes) - include("${QtNodes_CMAKE_DIR}/QtNodesTargets.cmake") -endif() - -set(QtNodes_LIBRARIES QtNodes::QtNodes) +include("${CMAKE_CURRENT_LIST_DIR}/QtNodesTargets.cmake") From cc44a1c1bf54ccd31a439b69b264291eb388c6cd Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:20:38 +0200 Subject: [PATCH 21/27] Fix examples Win static build --- examples/acquisition_viewer/CMakeLists.txt | 4 ++-- examples/calculator/CMakeLists.txt | 3 ++- examples/calculator_qml/CMakeLists.txt | 2 +- examples/compute_viewer/CMakeLists.txt | 4 ++-- examples/connection_colors/CMakeLists.txt | 4 ++-- examples/dynamic_ports/CMakeLists.txt | 3 ++- examples/lock_nodes_and_connections/CMakeLists.txt | 4 ++-- examples/resizable_images/CMakeLists.txt | 4 ++-- examples/simple_graph_model/CMakeLists.txt | 4 ++-- examples/styles/CMakeLists.txt | 4 ++-- examples/text/CMakeLists.txt | 4 ++-- examples/vertical_layout/CMakeLists.txt | 4 ++-- 12 files changed, 23 insertions(+), 21 deletions(-) diff --git a/examples/acquisition_viewer/CMakeLists.txt b/examples/acquisition_viewer/CMakeLists.txt index 996dd5522..12b2ce294 100644 --- a/examples/acquisition_viewer/CMakeLists.txt +++ b/examples/acquisition_viewer/CMakeLists.txt @@ -2,12 +2,12 @@ set(ACQ_SOURCE_FILES main.cpp AcqModel.cpp) set(ACQ_HEADER_FILES AcqData.hpp AcqModel.hpp) -add_executable(acquisition_viewer ${ACQ_SOURCE_FILES} ${ACQ_HEADER_FILES} +add_executable(acquisition_viewer WIN32 ${ACQ_SOURCE_FILES} ${ACQ_HEADER_FILES} CMakeLists.txt) target_link_libraries(acquisition_viewer QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET acquisition_viewer POST_BUILD diff --git a/examples/calculator/CMakeLists.txt b/examples/calculator/CMakeLists.txt index 7bb23f336..3fcb0d518 100644 --- a/examples/calculator/CMakeLists.txt +++ b/examples/calculator/CMakeLists.txt @@ -17,6 +17,7 @@ set(CALC_HEADER_FILES ) add_executable(calculator + WIN32 ${CALC_SOURCE_FILES} ${CALC_HEADER_FILES} CMakeLists.txt @@ -39,7 +40,7 @@ add_executable(headless_calculator target_link_libraries(headless_calculator QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET calculator POST_BUILD diff --git a/examples/calculator_qml/CMakeLists.txt b/examples/calculator_qml/CMakeLists.txt index bcf39d8e8..d855a2f8d 100644 --- a/examples/calculator_qml/CMakeLists.txt +++ b/examples/calculator_qml/CMakeLists.txt @@ -34,7 +34,7 @@ qt_add_qml_module( target_link_libraries(calculator_qml PRIVATE Qt6::Gui Qt6::Quick Qt6::QuickWidgets QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET calculator_qml POST_BUILD diff --git a/examples/compute_viewer/CMakeLists.txt b/examples/compute_viewer/CMakeLists.txt index 8cdd89f0e..3f9381c65 100644 --- a/examples/compute_viewer/CMakeLists.txt +++ b/examples/compute_viewer/CMakeLists.txt @@ -43,12 +43,12 @@ set(COMPUTE_HEADER_FILES AverageData.hpp DasPwWidget.hpp) -add_executable(compute_viewer ${COMPUTE_SOURCE_FILES} ${COMPUTE_HEADER_FILES} +add_executable(compute_viewer WIN32 ${COMPUTE_SOURCE_FILES} ${COMPUTE_HEADER_FILES} CMakeLists.txt) target_link_libraries(compute_viewer QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET compute_viewer POST_BUILD diff --git a/examples/connection_colors/CMakeLists.txt b/examples/connection_colors/CMakeLists.txt index 11b475c81..c1abf66e7 100644 --- a/examples/connection_colors/CMakeLists.txt +++ b/examples/connection_colors/CMakeLists.txt @@ -1,11 +1,11 @@ file(GLOB_RECURSE CPPS ./*.cpp ) file(GLOB_RECURSE HPPS ./*.hpp ) -add_executable(connection_colors ${CPPS} ${HPPS}) +add_executable(connection_colors WIN32 ${CPPS} ${HPPS}) target_link_libraries(connection_colors QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET connection_colors POST_BUILD diff --git a/examples/dynamic_ports/CMakeLists.txt b/examples/dynamic_ports/CMakeLists.txt index 6352ce4f1..5e302bee7 100644 --- a/examples/dynamic_ports/CMakeLists.txt +++ b/examples/dynamic_ports/CMakeLists.txt @@ -1,5 +1,6 @@ add_executable( dynamic_ports + WIN32 "CMakeLists.txt" "DynamicPortsModel.cpp" "DynamicPortsModel.hpp" @@ -9,7 +10,7 @@ add_executable( target_link_libraries(dynamic_ports QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET dynamic_ports POST_BUILD diff --git a/examples/lock_nodes_and_connections/CMakeLists.txt b/examples/lock_nodes_and_connections/CMakeLists.txt index 522311472..cb283485e 100644 --- a/examples/lock_nodes_and_connections/CMakeLists.txt +++ b/examples/lock_nodes_and_connections/CMakeLists.txt @@ -1,10 +1,10 @@ file(GLOB_RECURSE CPPS ./*.cpp ) -add_executable(lock_nodes_and_connections ${CPPS}) +add_executable(lock_nodes_and_connections WIN32 ${CPPS}) target_link_libraries(lock_nodes_and_connections QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET lock_nodes_and_connections POST_BUILD diff --git a/examples/resizable_images/CMakeLists.txt b/examples/resizable_images/CMakeLists.txt index c50ff01be..76dcd8c52 100644 --- a/examples/resizable_images/CMakeLists.txt +++ b/examples/resizable_images/CMakeLists.txt @@ -1,11 +1,11 @@ file(GLOB_RECURSE CPPS ./*.cpp ) file(GLOB_RECURSE HPPS ./*.hpp ) -add_executable(resizable_images ${CPPS} ${HPPS}) +add_executable(resizable_images WIN32 ${CPPS} ${HPPS}) target_link_libraries(resizable_images QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET resizable_images POST_BUILD diff --git a/examples/simple_graph_model/CMakeLists.txt b/examples/simple_graph_model/CMakeLists.txt index 3a275bd88..1184b3e20 100644 --- a/examples/simple_graph_model/CMakeLists.txt +++ b/examples/simple_graph_model/CMakeLists.txt @@ -1,11 +1,11 @@ file(GLOB_RECURSE CPPS ./*.cpp ) file(GLOB_RECURSE HPPS ./*.hpp ) -add_executable(simple_graph_model ${CPPS} ${HPPS}) +add_executable(simple_graph_model WIN32 ${CPPS} ${HPPS}) target_link_libraries(simple_graph_model QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET simple_graph_model POST_BUILD diff --git a/examples/styles/CMakeLists.txt b/examples/styles/CMakeLists.txt index 79de08af1..6cd612ea6 100644 --- a/examples/styles/CMakeLists.txt +++ b/examples/styles/CMakeLists.txt @@ -1,11 +1,11 @@ file(GLOB_RECURSE CPPS ./*.cpp ) file(GLOB_RECURSE HPPS ./*.hpp ) -add_executable(styles ${CPPS} ${HPPS}) +add_executable(styles WIN32 ${CPPS} ${HPPS}) target_link_libraries(styles QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET styles POST_BUILD diff --git a/examples/text/CMakeLists.txt b/examples/text/CMakeLists.txt index 375d59549..7e98fec64 100644 --- a/examples/text/CMakeLists.txt +++ b/examples/text/CMakeLists.txt @@ -1,11 +1,11 @@ file(GLOB_RECURSE CPPS ./*.cpp ) file(GLOB_RECURSE HPPS ./*.hpp ) -add_executable(text ${CPPS} ${HPPS}) +add_executable(text WIN32 ${CPPS} ${HPPS}) target_link_libraries(text QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET text POST_BUILD diff --git a/examples/vertical_layout/CMakeLists.txt b/examples/vertical_layout/CMakeLists.txt index bdc6003d0..c09142a6e 100644 --- a/examples/vertical_layout/CMakeLists.txt +++ b/examples/vertical_layout/CMakeLists.txt @@ -1,10 +1,10 @@ file(GLOB_RECURSE CPPS ./*.cpp ) -add_executable(vertical_layout ${CPPS}) +add_executable(vertical_layout WIN32 ${CPPS}) target_link_libraries(vertical_layout QtNodes) -if(WIN32) +if(WIN32 AND BUILD_SHARED_LIBS) add_custom_command( TARGET vertical_layout POST_BUILD From ee0860d42e8712f9635885b5eeed05a26f5cc14a Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:41:09 +0200 Subject: [PATCH 22/27] Fix format and dedicated CI --- examples/acquisition_viewer/CMakeLists.txt | 2 +- examples/compute_viewer/CMakeLists.txt | 4 ++-- include/QtNodes/internal/AbstractGraphModel.hpp | 9 ++++----- include/QtNodes/internal/AbstractNodeGeometry.hpp | 6 ++++-- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/examples/acquisition_viewer/CMakeLists.txt b/examples/acquisition_viewer/CMakeLists.txt index 12b2ce294..81319308c 100644 --- a/examples/acquisition_viewer/CMakeLists.txt +++ b/examples/acquisition_viewer/CMakeLists.txt @@ -3,7 +3,7 @@ set(ACQ_SOURCE_FILES main.cpp AcqModel.cpp) set(ACQ_HEADER_FILES AcqData.hpp AcqModel.hpp) add_executable(acquisition_viewer WIN32 ${ACQ_SOURCE_FILES} ${ACQ_HEADER_FILES} - CMakeLists.txt) + CMakeLists.txt) target_link_libraries(acquisition_viewer QtNodes) diff --git a/examples/compute_viewer/CMakeLists.txt b/examples/compute_viewer/CMakeLists.txt index 3f9381c65..968b2fbf1 100644 --- a/examples/compute_viewer/CMakeLists.txt +++ b/examples/compute_viewer/CMakeLists.txt @@ -43,8 +43,8 @@ set(COMPUTE_HEADER_FILES AverageData.hpp DasPwWidget.hpp) -add_executable(compute_viewer WIN32 ${COMPUTE_SOURCE_FILES} ${COMPUTE_HEADER_FILES} - CMakeLists.txt) +add_executable(compute_viewer WIN32 ${COMPUTE_SOURCE_FILES} + ${COMPUTE_HEADER_FILES} CMakeLists.txt) target_link_libraries(compute_viewer QtNodes) diff --git a/include/QtNodes/internal/AbstractGraphModel.hpp b/include/QtNodes/internal/AbstractGraphModel.hpp index 82d7d06c0..6e1ab7d87 100644 --- a/include/QtNodes/internal/AbstractGraphModel.hpp +++ b/include/QtNodes/internal/AbstractGraphModel.hpp @@ -51,7 +51,8 @@ class NODE_EDITOR_PUBLIC AbstractGraphModel : public QObject */ virtual std::unordered_set connections(NodeId nodeId, PortType portType, - PortIndex index) const = 0; + PortIndex index) const + = 0; /// Checks if two nodes with the given `connectionId` are connected. virtual bool connectionExists(ConnectionId const connectionId) const = 0; @@ -128,10 +129,8 @@ class NODE_EDITOR_PUBLIC AbstractGraphModel : public QObject * @returns Port Data Type, Port Data, Connection Policy, Port * Caption. */ - virtual QVariant portData(NodeId nodeId, - PortType portType, - PortIndex index, - PortRole role) const = 0; + virtual QVariant portData(NodeId nodeId, PortType portType, PortIndex index, PortRole role) const + = 0; /** * A utility function that unwraps the `QVariant` value returned from the diff --git a/include/QtNodes/internal/AbstractNodeGeometry.hpp b/include/QtNodes/internal/AbstractNodeGeometry.hpp index bedd234d4..f8265e461 100644 --- a/include/QtNodes/internal/AbstractNodeGeometry.hpp +++ b/include/QtNodes/internal/AbstractNodeGeometry.hpp @@ -40,7 +40,8 @@ class NODE_EDITOR_PUBLIC AbstractNodeGeometry /// Port position in node's coordinate system. virtual QPointF portPosition(NodeId const nodeId, PortType const portType, - PortIndex const index) const = 0; + PortIndex const index) const + = 0; /// A convenience function using the `portPosition` and a given transformation. virtual QPointF portScenePosition(NodeId const nodeId, @@ -51,7 +52,8 @@ class NODE_EDITOR_PUBLIC AbstractNodeGeometry /// Defines where to draw port label. The point corresponds to a font baseline. virtual QPointF portTextPosition(NodeId const nodeId, PortType const portType, - PortIndex const portIndex) const = 0; + PortIndex const portIndex) const + = 0; /** * Defines where to start drawing the caption. The point corresponds to a font From 72903495efff29f8164d13b3f7e7c69a9db60e7c Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Wed, 26 Jun 2024 11:08:48 +0200 Subject: [PATCH 23/27] Remove openGL dependency --- CMakeLists.txt | 6 ++---- cmake/QtNodesConfig.cmake.in | 3 +-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a71a8cd0..8d2eff1dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,7 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") set(CMAKE_CXX_STANDARD 11) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) -set(CMAKE_DISABLE_SOURCE_CHANGES ON) -set(OpenGL_GL_PREFERENCE LEGACY) +set(CMAKE_DISABLE_SOURCE_CHANGES ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) get_directory_property(_has_parent PARENT_DIRECTORY) @@ -51,7 +50,7 @@ else() find_package(QT NAMES Qt5 REQUIRED COMPONENTS Widgets) endif() -find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Gui OpenGL Quick QuickWidgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Gui Quick QuickWidgets) message(STATUS "QT_VERSION: ${QT_VERSION}, QT_DIR: ${QT_DIR}") if (${QT_VERSION} VERSION_LESS 5.11.0) @@ -159,7 +158,6 @@ target_link_libraries(QtNodes Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Gui - Qt${QT_VERSION_MAJOR}::OpenGL ) target_compile_definitions(QtNodes diff --git a/cmake/QtNodesConfig.cmake.in b/cmake/QtNodesConfig.cmake.in index ee1b06837..14fc33450 100644 --- a/cmake/QtNodesConfig.cmake.in +++ b/cmake/QtNodesConfig.cmake.in @@ -8,7 +8,6 @@ find_dependency(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) find_dependency(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets - Gui - OpenGL) + Gui) include("${CMAKE_CURRENT_LIST_DIR}/QtNodesTargets.cmake") From 7cc075939a87ad1e27d5aac8513ece237c1f57c6 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:42:18 +0200 Subject: [PATCH 24/27] Fix CI and reduce dependencies --- examples/calculator_qml/main.qml | 70 +++----------------------------- 1 file changed, 6 insertions(+), 64 deletions(-) diff --git a/examples/calculator_qml/main.qml b/examples/calculator_qml/main.qml index 6e891700d..fa0c396f5 100644 --- a/examples/calculator_qml/main.qml +++ b/examples/calculator_qml/main.qml @@ -8,60 +8,14 @@ Window { height: 1000 visible: true - ChartView { - id: myChart + Button { + id: button width: 200 height: 200 - margins.left: 0 - legend.visible: false - - ValueAxis { - id: valueAxisX - min: -1 - max: 14 - tickCount: max - min + 1 - minorTickCount: 1 - labelFormat: "%.0f" - } - - ValueAxis { - id: valueAxisY - min: 0 - max: 14 - tickCount: max - min + 1 - labelsVisible: false - } - - LineSeries { - name: "Line" - XYPoint { - x: 0 - y: 0 - } - XYPoint { - x: 1.1 - y: 2.1 - } - XYPoint { - x: 1.9 - y: 3.3 - } - XYPoint { - x: 2.1 - y: 2.1 - } - XYPoint { - x: 2.9 - y: 4.9 - } - XYPoint { - x: 3.4 - y: 3.0 - } - XYPoint { - x: 4.1 - y: 3.3 - } + anchors.top: myChart.bottom + text: qsTr("Click Me!") + onClicked: { + backend.setObject(button); } } WidgetView { @@ -71,16 +25,4 @@ Window { anchors.top: myChart.bottom anchors.left: myChart.right } - /* - Button { - id: button - width: 200 - height: 200 - anchors.top: myChart.bottom - text: qsTr("Click Me!") - onClicked: { - backend.setObject(button); - } - } - */ } From a70646d38f8b2942da23ec2af712f0d5703438d5 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Mon, 21 Oct 2024 14:21:14 +0200 Subject: [PATCH 25/27] Fix usage of dataInvalidated --- examples/calculator/MathOperationDataModel.cpp | 1 + examples/calculator_qml/MathOperationDataModel.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/examples/calculator/MathOperationDataModel.cpp b/examples/calculator/MathOperationDataModel.cpp index 11059c908..e6fb25932 100644 --- a/examples/calculator/MathOperationDataModel.cpp +++ b/examples/calculator/MathOperationDataModel.cpp @@ -30,6 +30,7 @@ void MathOperationDataModel::setInData(std::shared_ptr data, PortIndex if (!data) { Q_EMIT dataInvalidated(0); + return; } if (portIndex == 0) { diff --git a/examples/calculator_qml/MathOperationDataModel.cpp b/examples/calculator_qml/MathOperationDataModel.cpp index 11059c908..e6fb25932 100644 --- a/examples/calculator_qml/MathOperationDataModel.cpp +++ b/examples/calculator_qml/MathOperationDataModel.cpp @@ -30,6 +30,7 @@ void MathOperationDataModel::setInData(std::shared_ptr data, PortIndex if (!data) { Q_EMIT dataInvalidated(0); + return; } if (portIndex == 0) { From 0888da85abc1837744666a60872b670838ab0761 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Wed, 26 Jun 2024 16:53:43 +0200 Subject: [PATCH 26/27] Fix typos --- docs/features.rst | 4 ++-- include/QtNodes/internal/NodeDelegateModel.hpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/features.rst b/docs/features.rst index 536e57480..6b1e7efb9 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -26,7 +26,7 @@ The ``ConnectionId`` is nothing else but a combination of input and output :: - // Definitinos.hpp + // Definitions.hpp struct ConnectionId { NodeId outNodeId; @@ -369,7 +369,7 @@ redraw the receiver node and could be hooked up for other user's purposes. // Source Delegate Model -> source NodeId DataFlowGraphModel::onOutPortDataUpdated(NodeId, PortIndex) - // soure NodeId -> target NodeId + // source NodeId -> target NodeId DataFlowGraphModel::setPortData() // target NodeId -> target Delegate Model diff --git a/include/QtNodes/internal/NodeDelegateModel.hpp b/include/QtNodes/internal/NodeDelegateModel.hpp index 2c445602e..b3d7dcafb 100644 --- a/include/QtNodes/internal/NodeDelegateModel.hpp +++ b/include/QtNodes/internal/NodeDelegateModel.hpp @@ -68,7 +68,7 @@ class NODE_EDITOR_PUBLIC NodeDelegateModel virtual std::shared_ptr outData(PortIndex const port) = 0; /** - * It is recommented to preform a lazy initialization for the + * It is recommended to perform a lazy initialization for the * embedded widget and create it inside this function, not in the * constructor of the current model. * @@ -112,7 +112,7 @@ public Q_SLOTS: */ void portsAboutToBeDeleted(PortType const portType, PortIndex const first, PortIndex const last); - /// Call this function when data and port moditications are finished. + /// Call this function when data and port modifications are finished. void portsDeleted(); /// Call this function before inserting the data associated with ports. @@ -124,7 +124,7 @@ public Q_SLOTS: PortIndex const first, PortIndex const last); - /// Call this function when data and port moditications are finished. + /// Call this function when data and port modifications are finished. void portsInserted(); private: From a195372d87aa9061f77057260a2d20fdc46f69a1 Mon Sep 17 00:00:00 2001 From: Vincent Le Garrec Date: Thu, 27 Jun 2024 10:46:22 +0200 Subject: [PATCH 27/27] setPortData should return true if success --- src/DataFlowGraphModel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/DataFlowGraphModel.cpp b/src/DataFlowGraphModel.cpp index 37d698e00..78cd82be9 100644 --- a/src/DataFlowGraphModel.cpp +++ b/src/DataFlowGraphModel.cpp @@ -372,6 +372,7 @@ bool DataFlowGraphModel::setPortData( // Triggers repainting on the scene. Q_EMIT inPortDataWasSet(nodeId, portType, portIndex); + return true; } break;

p@h#I`r66xz#Z+Fa0;S1#*Gaslsd+>UO_a(C$xLDG`EPnHyi1d@H z44O#9`5e}IP9MDPQpw>X&SC{9Zar$ST7OEMpwVRtS>igx _2zg_7H+nkcZ^7*>) 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 r?w94#nbTR|$01UC`y4`2fiyj}p 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 Qw@o_DYU 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�mp@E*Z6ot>Q%fsR=4p;T|N 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 literal 0 HcmV?d00001 diff --git a/examples/compute_viewer/render.png b/examples/compute_viewer/render.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c6578aabd02679a029e4a996c10d986ee3d14f GIT binary patch literal 180186 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