32 setText(commandDescription.c_str());
33 this->window = window;
35 vector<string> addedComponentDescriptions;
40 set<VuoRendererNode *> addedNodes;
41 set<VuoRendererCable *> addedCables;
42 map<VuoRendererCable *, VuoPort *> fromPortForCable;
43 map<VuoRendererCable *, VuoPort *> toPortForCable;
44 set<VuoRendererComment *> addedComments;
46 for (QList<QGraphicsItem *>::iterator i = addedComponents.begin(); i != addedComponents.end(); ++i)
48 QGraphicsItem *compositionComponent = *i;
52 addedNodes.insert(rn);
53 addedComponentDescriptions.push_back(
"node "
64 addedCables.insert(rc);
68 addedComponentDescriptions.push_back(
"cable "
84 addedComments.insert(rcomment);
92 if (! disableAttachmentInsertion)
108 bool hasIncomingDataCable =
false;
112 connectedCables.push_back(addedCable->
getBase());
113 foreach (
VuoCable *connectedCable, connectedCables)
115 hasIncomingDataCable =
true;
117 if (! hasIncomingDataCable)
119 set<VuoRendererNode *> nodesToAdd;
120 set<VuoRendererCable *> cablesToAdd;
123 addedNodes.insert(nodesToAdd.begin(), nodesToAdd.end());
124 addedCables.insert(cablesToAdd.begin(), cablesToAdd.end());
142 bool hasIncomingDataCable =
false;
146 connectedCables.push_back(addedCable->
getBase());
147 foreach (
VuoCable *connectedCable, connectedCables)
149 hasIncomingDataCable =
true;
151 if (! hasIncomingDataCable)
156 addedNodes.insert(makeListNode);
157 addedCables.insert(cable);
159 toPortForCable[cable] = port;
168 this->operationInvolvesGenericPort =
false;
174 this->operationInvolvesGenericPort =
true;
179 if (!this->operationInvolvesGenericPort)
183 bool fromPortIsGeneric = (fromPortForCable[rc] &&
dynamic_cast<VuoGenericType *
>(fromPortForCable[rc]->getRenderer()->getDataType()));
184 bool toPortIsGeneric = (toPortForCable[rc] &&
dynamic_cast<VuoGenericType *
>(toPortForCable[rc]->getRenderer()->getDataType()));
185 if (fromPortIsGeneric || toPortIsGeneric)
187 operationInvolvesGenericPort =
true;
193 this->operationRequiresRunningCompositionUpdate = (addedComments.size() < addedComponents.size());
196 for (set<VuoRendererCable *>::iterator i = addedCables.begin(); i != addedCables.end(); ++i)
199 for (set<VuoRendererNode *>::iterator i = addedNodes.begin(); i != addedNodes.end(); ++i)
200 composition->
addNode((*i)->getBase());
202 for (set<VuoRendererComment *>::iterator i = addedComments.begin(); i != addedComments.end(); ++i)
212 if (!addedComponentDescriptions.empty())
214 commandDescription.empty() ?
"Add" : commandDescription.c_str(),