41 string commandDescription,
42 bool disableAttachmentInsertion)
45 setText(commandDescription.c_str());
46 this->window = window;
47 this->cableInProgress = NULL;
48 vector<string> removedComponentDescriptions;
61 QList<QGraphicsItem *> explicitlyRemovedComponentsAndTheirAttachments;
62 foreach (QGraphicsItem *component, explicitlyRemovedComponents)
64 if (!explicitlyRemovedComponentsAndTheirAttachments.contains(component))
65 explicitlyRemovedComponentsAndTheirAttachments.append(component);
71 foreach (QGraphicsItem *attachment, attachments)
73 if (!explicitlyRemovedComponentsAndTheirAttachments.contains(attachment))
74 explicitlyRemovedComponentsAndTheirAttachments.append(attachment);
85 removedComments.insert(rcomment);
92 for (QList<QGraphicsItem *>::iterator i = explicitlyRemovedComponentsAndTheirAttachments.begin(); i != explicitlyRemovedComponentsAndTheirAttachments.end(); ++i)
98 inventoryNodeAndDependentCables(rn);
100 inventoryCableAndDependentTypecasts(rc);
104 for (set<VuoRendererCable *>::iterator rc = reroutedCables.begin(); rc != reroutedCables.end();)
106 if (removedCables.find(*rc) != removedCables.end())
107 reroutedCables.erase(rc++);
114 set<VuoRendererCable *> removedInternalAndPublishedCables;
115 removedInternalAndPublishedCables.insert(removedCables.begin(), removedCables.end());
116 removedInternalAndPublishedCables.insert(removedPublishedCables.begin(), removedPublishedCables.end());
119 removedComponentDescriptions.push_back(
"cable "
149 updatedConstantForPort[toPort] = (currentRunningValue? json_object_to_json_string_ext(currentRunningValue, JSON_C_TO_STRING_PLAIN) :
150 revertedConstantForPort[toPort]);
156 VuoPort *currentFromPortForCableInProgress = NULL;
157 VuoPort *currentToPortForCableInProgress = NULL;
158 bool currentAlwaysEventOnlyStatusForCableInProgress =
false;
159 bool mustReconstructRevertedSnapshot =
false;
167 mustReconstructRevertedSnapshot = ((currentFromPortForCableInProgress != revertedFromPortForCable[cableInProgress]) ||
168 (currentToPortForCableInProgress != revertedToPortForCable[cableInProgress]));
171 if (mustReconstructRevertedSnapshot)
173 VuoCommandCommon::updateCable(cableInProgress, revertedFromPortForCable[cableInProgress], revertedToPortForCable[cableInProgress], composition,
true);
174 cableInProgress->getBase()->getCompiler()->setAlwaysEventOnly(cableInProgress->getPreviouslyAlwaysEventOnly());
179 if (mustReconstructRevertedSnapshot)
187 if (! disableAttachmentInsertion)
190 prepareMakeListToReplaceDeletedCable(rc);
193 prepareMakeListToReplaceDeletedCable(rc);
196 this->operationInvolvesGenericPort = modifiedComponentsIncludeGenericPorts();
197 this->operationRequiresRunningCompositionUpdate = (removedComments.size() < explicitlyRemovedComponents.size());
202 for (vector<VuoRendererNode *>::iterator i = typecastsCollapsedUponUndo.begin(); i != typecastsCollapsedUponUndo.end(); ++i)
207 for (vector<VuoRendererNode *>::iterator i = typecastsUncollapsedDuringInventory.begin(); i != typecastsUncollapsedDuringInventory.end(); ++i)
210 for (set<VuoRendererNode *>::iterator i = removedNodes.begin(); i != removedNodes.end(); ++i)
213 for (set<VuoRendererCable *>::iterator i = removedCables.begin(); i != removedCables.end(); ++i)
216 for (set<VuoRendererCable *>::iterator i = reroutedCables.begin(); i != reroutedCables.end(); ++i)
219 for (set<VuoRendererNode *>::iterator i = addedNodes.begin(); i != addedNodes.end(); ++i)
220 composition->
addNode((*i)->getBase());
222 for (set<VuoRendererCable *>::iterator i = addedCables.begin(); i != addedCables.end(); ++i)
225 for (set<VuoRendererComment *>::iterator i = removedComments.begin(); i != removedComments.end(); ++i)
228 for (vector<pair<VuoPort *, VuoPublishedPort *> >::iterator i = unpublishedInternalExternalPortCombinations.begin(); i != unpublishedInternalExternalPortCombinations.end(); ++i)
230 bool unpublishIsolatedExternalPort =
false;
238 if (operationInvolvesGenericPort)
243 for (map<VuoPort *, string>::iterator i = updatedConstantForPort.begin(); i != updatedConstantForPort.end(); ++i)
247 if (revertedConstantForPort[toPort] != updatedConstantForPort[toPort])
262 if (removedNode->getBase()->getNodeClass()->hasCompiler() && removedNode->getBase()->getNodeClass()->getCompiler()->isSubcomposition())
264 string nodeIdentifier = removedNode->getBase()->getCompiler()->getGraphvizIdentifier();
265 removedSubcompositionNodeIdentifiers.insert(nodeIdentifier);
269 if (!removedComponentDescriptions.empty())
271 commandDescription.c_str(),