From 72b7c8657b3e151a55df5683bada2b29286d9c4c Mon Sep 17 00:00:00 2001 From: Shweta Menon Date: Thu, 22 Jan 2026 12:14:29 +0800 Subject: [PATCH 1/2] Added cpability for global settings - The newly added settings only need to be managed by front end code --- include/QtNodes/internal/DagGraphicsScene.hpp | 2 +- src/DagGraphicsScene.cpp | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/include/QtNodes/internal/DagGraphicsScene.hpp b/include/QtNodes/internal/DagGraphicsScene.hpp index d102dd015..7fcaaba91 100644 --- a/include/QtNodes/internal/DagGraphicsScene.hpp +++ b/include/QtNodes/internal/DagGraphicsScene.hpp @@ -25,7 +25,7 @@ class NODE_EDITOR_PUBLIC DagGraphicsScene : public BasicGraphicsScene bool isBlank() const { return _graphModel.isEmpty(); } public Q_SLOTS: - bool save(const QString &filePath) const; + bool save(const QString &filePath, const QJsonObject &metadata = {}) const; bool load(const QString &filePath); void createNodeAt(const QString &name, const QPointF &pos); diff --git a/src/DagGraphicsScene.cpp b/src/DagGraphicsScene.cpp index 26925eeb5..44744a9e0 100644 --- a/src/DagGraphicsScene.cpp +++ b/src/DagGraphicsScene.cpp @@ -148,7 +148,7 @@ QMenu *DagGraphicsScene::createSceneMenu(QPointF const scenePos) return modelMenu; } -bool DagGraphicsScene::save(const QString &filePath) const +bool DagGraphicsScene::save(const QString &filePath, const QJsonObject &metadata) const { QFileInfo fileInfo(filePath); if (fileInfo.suffix().compare("dag", Qt::CaseInsensitive) != 0) @@ -156,7 +156,19 @@ bool DagGraphicsScene::save(const QString &filePath) const QFile file(fileInfo.absoluteFilePath()); if (!file.open(QIODevice::WriteOnly)) return false; - file.write(QJsonDocument(_graphModel.save()).toJson()); + + QJsonObject sceneJson = _graphModel.save(); + // Merge metadata safely + for (auto it = metadata.begin(); it != metadata.end(); ++it) { + const QString &key = it.key(); + const QJsonValue &value = it.value(); + if (!value.isUndefined()) + sceneJson[key] = value; + } + qInfo() << "metadata keys saved:" << metadata.keys(); + qInfo() << "total keys saved:" << sceneJson.keys(); + + file.write(QJsonDocument(sceneJson).toJson()); file.close(); return true; } From d47ba58827fd9ca19b724c36c738ec2eabe34d7b Mon Sep 17 00:00:00 2001 From: Shweta Menon Date: Mon, 26 Jan 2026 15:18:51 +0800 Subject: [PATCH 2/2] Add globals tag --- src/DagGraphicsScene.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/DagGraphicsScene.cpp b/src/DagGraphicsScene.cpp index 44744a9e0..94c24e41a 100644 --- a/src/DagGraphicsScene.cpp +++ b/src/DagGraphicsScene.cpp @@ -159,14 +159,16 @@ bool DagGraphicsScene::save(const QString &filePath, const QJsonObject &metadata QJsonObject sceneJson = _graphModel.save(); // Merge metadata safely - for (auto it = metadata.begin(); it != metadata.end(); ++it) { - const QString &key = it.key(); - const QJsonValue &value = it.value(); - if (!value.isUndefined()) - sceneJson[key] = value; + if (!metadata.isEmpty()) { + QJsonObject globals; + for (auto it = metadata.begin(); it != metadata.end(); ++it) { + if (!it.value().isUndefined()) + globals[it.key()] = it.value(); + } + + if (!globals.isEmpty()) + sceneJson["globals"] = globals; } - qInfo() << "metadata keys saved:" << metadata.keys(); - qInfo() << "total keys saved:" << sceneJson.keys(); file.write(QJsonDocument(sceneJson).toJson()); file.close();