finished refactoring copy/paste code

This commit is contained in:
itsmattkc
2021-12-30 19:35:52 -08:00
parent 8daa83b682
commit a7be16fec9
11 changed files with 143 additions and 75 deletions
+16 -5
View File
@@ -29,7 +29,7 @@
namespace olive {
void NodeCopyPasteService::CopyNodesToClipboard(const QVector<Node *> &nodes, void *userdata)
void NodeCopyPasteService::CopyNodesToClipboard(QVector<Node *> nodes, void *userdata)
{
QString copy_str;
@@ -42,11 +42,22 @@ void NodeCopyPasteService::CopyNodesToClipboard(const QVector<Node *> &nodes, vo
writer.writeTextElement(QStringLiteral("version"), QString::number(Core::kProjectVersion));
writer.writeStartElement(QStringLiteral("nodes"));
foreach (Node* n, nodes) {
for (int i=0; i<nodes.size(); i++) {
Node *n = nodes.at(i);
writer.writeStartElement(QStringLiteral("node"));
writer.writeAttribute(QStringLiteral("id"), n->id());
n->Save(&writer);
writer.writeEndElement(); // node
// If this is a group, add the child nodes too
if (NodeGroup *g = dynamic_cast<NodeGroup*>(n)) {
for (auto it=g->GetContextPositions().cbegin(); it!=g->GetContextPositions().cend(); it++) {
if (!nodes.contains(it.key())) {
nodes.append(it.key());
}
}
}
}
writer.writeEndElement(); // nodes
@@ -208,9 +219,6 @@ QVector<Node *> NodeCopyPasteService::PasteNodesFromClipboard(NodeGraph *graph,
}
}
// Make connections
xml_node_data.PostConnect(data_version, command);
// Process contexts
for (auto it=pasted_contexts.cbegin(); it!=pasted_contexts.cend(); it++) {
Node *context = xml_node_data.node_ptrs.value(it.key());
@@ -229,6 +237,9 @@ QVector<Node *> NodeCopyPasteService::PasteNodesFromClipboard(NodeGraph *graph,
}
}
// Make connections
xml_node_data.PostConnect(data_version, command);
return pasted_nodes;
}
+1 -1
View File
@@ -35,7 +35,7 @@ public:
NodeCopyPasteService() = default;
protected:
void CopyNodesToClipboard(const QVector<Node *> &nodes, void* userdata = nullptr);
void CopyNodesToClipboard(QVector<Node *> nodes, void* userdata = nullptr);
QVector<Node*> PasteNodesFromClipboard(NodeGraph *graph, MultiUndoCommand *command, void* userdata = nullptr);