diff --git a/app/common/xmlutils.h b/app/common/xmlutils.h index d0488ccd0..5a4735ea5 100644 --- a/app/common/xmlutils.h +++ b/app/common/xmlutils.h @@ -36,37 +36,6 @@ class NodeGroup; #define XMLAttributeLoop(reader, item) \ foreach (const QXmlStreamAttribute& item, reader->attributes()) -struct XMLNodeData { - struct SerializedConnection { - NodeInput input; - quintptr output_node; - - /// Deprecated - QString output_param; - }; - - struct BlockLink { - Node* block; - quintptr link; - }; - - struct GroupLink { - NodeGroup *group; - quintptr input_node; - QString input_id; - int input_element; - }; - - QHash node_ptrs; - QList desired_connections; - QList block_links; - QVector group_input_links; - QHash group_output_links; - - void PostConnect(uint version, MultiUndoCommand *command = nullptr) const; - -}; - /** * @brief Workaround for QXmlStreamReader::readNextStartElement not detecting the end of a document * diff --git a/app/node/project/serializer/serializer210528.cpp b/app/node/project/serializer/serializer210528.cpp index 30c26d22c..403105ad8 100644 --- a/app/node/project/serializer/serializer210528.cpp +++ b/app/node/project/serializer/serializer210528.cpp @@ -40,7 +40,7 @@ ProjectSerializer210528::LoadData ProjectSerializer210528::Load(Project *project // can continue loading and queue it with the main window so it can handle the data // appropriately in its own thread. - project->SetLayoutInfo(MainWindowLayoutInfo::fromXml(reader, xml_node_data)); + project->SetLayoutInfo(MainWindowLayoutInfo::fromXml(reader, xml_node_data.node_ptrs)); } else if (reader->name() == QStringLiteral("uuid")) { diff --git a/app/node/project/serializer/serializer210528.h b/app/node/project/serializer/serializer210528.h index 7660ccb0f..3935ac424 100644 --- a/app/node/project/serializer/serializer210528.h +++ b/app/node/project/serializer/serializer210528.h @@ -39,6 +39,33 @@ protected: } private: + struct XMLNodeData { + struct SerializedConnection { + NodeInput input; + quintptr output_node; + QString output_param; + }; + + struct BlockLink { + Node* block; + quintptr link; + }; + + struct GroupLink { + NodeGroup *group; + quintptr input_node; + QString input_id; + int input_element; + }; + + QHash node_ptrs; + QList desired_connections; + QList block_links; + QVector group_input_links; + QHash group_output_links; + + }; + void LoadNode(Node *node, XMLNodeData &xml_node_data, QXmlStreamReader *reader) const; void LoadInput(Node *node, QXmlStreamReader* reader, XMLNodeData &xml_node_data) const; diff --git a/app/node/project/serializer/serializer210907.cpp b/app/node/project/serializer/serializer210907.cpp index 079e49130..688b7ad07 100644 --- a/app/node/project/serializer/serializer210907.cpp +++ b/app/node/project/serializer/serializer210907.cpp @@ -40,7 +40,7 @@ ProjectSerializer210907::LoadData ProjectSerializer210907::Load(Project *project // can continue loading and queue it with the main window so it can handle the data // appropriately in its own thread. - project->SetLayoutInfo(MainWindowLayoutInfo::fromXml(reader, xml_node_data)); + project->SetLayoutInfo(MainWindowLayoutInfo::fromXml(reader, xml_node_data.node_ptrs)); } else if (reader->name() == QStringLiteral("uuid")) { @@ -219,7 +219,7 @@ void ProjectSerializer210907::LoadNode(Node *node, XMLNodeData &xml_node_data, Q } } - xml_node_data.desired_connections.append({NodeInput(node, param_id, ele), output_node_id.toULongLong(), QString()}); + xml_node_data.desired_connections.append({NodeInput(node, param_id, ele), output_node_id.toULongLong()}); } else { reader->skipCurrentElement(); } diff --git a/app/node/project/serializer/serializer210907.h b/app/node/project/serializer/serializer210907.h index f3a3ca2f5..ffbabf0bc 100644 --- a/app/node/project/serializer/serializer210907.h +++ b/app/node/project/serializer/serializer210907.h @@ -39,6 +39,32 @@ protected: } private: + struct XMLNodeData { + struct SerializedConnection { + NodeInput input; + quintptr output_node; + }; + + struct BlockLink { + Node* block; + quintptr link; + }; + + struct GroupLink { + NodeGroup *group; + quintptr input_node; + QString input_id; + int input_element; + }; + + QHash node_ptrs; + QList desired_connections; + QList block_links; + QVector group_input_links; + QHash group_output_links; + + }; + void LoadNode(Node *node, XMLNodeData &xml_node_data, QXmlStreamReader *reader) const; void LoadInput(Node *node, QXmlStreamReader* reader, XMLNodeData &xml_node_data) const; diff --git a/app/node/project/serializer/serializer211228.cpp b/app/node/project/serializer/serializer211228.cpp index 723a09116..a10d34bae 100644 --- a/app/node/project/serializer/serializer211228.cpp +++ b/app/node/project/serializer/serializer211228.cpp @@ -42,7 +42,7 @@ ProjectSerializer211228::LoadData ProjectSerializer211228::Load(Project *project // can continue loading and queue it with the main window so it can handle the data // appropriately in its own thread. - project->SetLayoutInfo(MainWindowLayoutInfo::fromXml(reader, xml_node_data)); + project->SetLayoutInfo(MainWindowLayoutInfo::fromXml(reader, xml_node_data.node_ptrs)); } else if (reader->name() == QStringLiteral("uuid")) { @@ -341,7 +341,7 @@ void ProjectSerializer211228::LoadNode(Node *node, XMLNodeData &xml_node_data, Q } } - xml_node_data.desired_connections.append({NodeInput(node, param_id, ele), output_node_id.toULongLong(), QString()}); + xml_node_data.desired_connections.append({NodeInput(node, param_id, ele), output_node_id.toULongLong()}); } else { reader->skipCurrentElement(); } diff --git a/app/node/project/serializer/serializer211228.h b/app/node/project/serializer/serializer211228.h index 5bd0b38b1..543a45498 100644 --- a/app/node/project/serializer/serializer211228.h +++ b/app/node/project/serializer/serializer211228.h @@ -41,6 +41,32 @@ protected: } private: + struct XMLNodeData { + struct SerializedConnection { + NodeInput input; + quintptr output_node; + }; + + struct BlockLink { + Node* block; + quintptr link; + }; + + struct GroupLink { + NodeGroup *group; + quintptr input_node; + QString input_id; + int input_element; + }; + + QHash node_ptrs; + QList desired_connections; + QList block_links; + QVector group_input_links; + QHash group_output_links; + + }; + void LoadNode(Node *node, XMLNodeData &xml_node_data, QXmlStreamReader *reader) const; void SaveNode(Node *node, QXmlStreamWriter *writer) const; diff --git a/app/window/mainwindow/mainwindowlayoutinfo.cpp b/app/window/mainwindow/mainwindowlayoutinfo.cpp index bb13647b8..e11df3f05 100644 --- a/app/window/mainwindow/mainwindowlayoutinfo.cpp +++ b/app/window/mainwindow/mainwindowlayoutinfo.cpp @@ -32,7 +32,7 @@ void MainWindowLayoutInfo::toXml(QXmlStreamWriter *writer) const writer->writeEndElement(); // layout } -MainWindowLayoutInfo MainWindowLayoutInfo::fromXml(QXmlStreamReader *reader, XMLNodeData &xml_data) +MainWindowLayoutInfo MainWindowLayoutInfo::fromXml(QXmlStreamReader *reader, const QHash &node_ptrs) { MainWindowLayoutInfo info; @@ -43,7 +43,7 @@ MainWindowLayoutInfo MainWindowLayoutInfo::fromXml(QXmlStreamReader *reader, XML if (reader->name() == QStringLiteral("folder")) { quintptr item_id = reader->readElementText().toULongLong(); - Folder* open_item = static_cast(xml_data.node_ptrs.value(item_id)); + Folder* open_item = static_cast(node_ptrs.value(item_id)); info.open_folders_.append(open_item); } else { reader->skipCurrentElement(); @@ -59,7 +59,7 @@ MainWindowLayoutInfo MainWindowLayoutInfo::fromXml(QXmlStreamReader *reader, XML if (reader->name() == QStringLiteral("sequence")) { quintptr item_id = reader->readElementText().toULongLong(); - open_seq = static_cast(xml_data.node_ptrs.value(item_id)); + open_seq = static_cast(node_ptrs.value(item_id)); } else if (reader->name() == QStringLiteral("state")) { tl_state = QByteArray::fromBase64(reader->readElementText().toUtf8()); } else { diff --git a/app/window/mainwindow/mainwindowlayoutinfo.h b/app/window/mainwindow/mainwindowlayoutinfo.h index fc619610d..f70558284 100644 --- a/app/window/mainwindow/mainwindowlayoutinfo.h +++ b/app/window/mainwindow/mainwindowlayoutinfo.h @@ -13,7 +13,7 @@ public: void toXml(QXmlStreamWriter* writer) const; - static MainWindowLayoutInfo fromXml(QXmlStreamReader* reader, XMLNodeData &xml_data); + static MainWindowLayoutInfo fromXml(QXmlStreamReader* reader, const QHash &node_map); void add_folder(Folder* f);