Skip to content

Commit 56c1614

Browse files
committed
Almost there
1 parent be702f3 commit 56c1614

File tree

5 files changed

+19
-8
lines changed

5 files changed

+19
-8
lines changed

src/Dataflow/Engine/Controller/NetworkEditorController.cc

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ ModuleHandle NetworkEditorController::duplicateModule(const ModuleHandle& module
281281
return newModule;
282282
}
283283

284-
void NetworkEditorController::connectNewModule(const PortDescriptionInterface* portToConnect, const std::string& newModuleName)
284+
ModuleHandle NetworkEditorController::connectNewModule(const PortDescriptionInterface* portToConnect, const std::string& newModuleName, const PortDescriptionInterface* portToConnectUponInsertion)
285285
{
286286
auto newMod = addModule(newModuleName);
287287

@@ -296,7 +296,11 @@ void NetworkEditorController::connectNewModule(const PortDescriptionInterface* p
296296
if (p->get_typename() == portToConnect->get_typename())
297297
{
298298
requestConnection(p.get(), portToConnect);
299-
return;
299+
if (portToConnectUponInsertion)
300+
{
301+
std::cout << "I CAN REQUEST ANOTHER CONNECTION HERE: first port is input, second is " << portToConnectUponInsertion->isInput() << std::endl;
302+
}
303+
return newMod;
300304
}
301305
}
302306
}
@@ -307,7 +311,14 @@ void NetworkEditorController::connectNewModule(const PortDescriptionInterface* p
307311
if (p->get_typename() == portToConnect->get_typename())
308312
{
309313
requestConnection(p.get(), portToConnect);
310-
return;
314+
if (portToConnectUponInsertion)
315+
{
316+
std::cout << "I CAN REQUEST ANOTHER CONNECTION HERE: first port is output, second is " << portToConnectUponInsertion->isInput() << std::endl;
317+
auto fromPort = std::find_if(newMod->outputPorts().begin(), newMod->outputPorts().end(), [portToConnectUponInsertion](OutputPortHandle out) { return out->get_typename() == portToConnectUponInsertion->get_typename(); });
318+
if (fromPort != newMod->outputPorts().end())
319+
requestConnection(fromPort->get(), portToConnectUponInsertion);
320+
}
321+
return newMod;
311322
}
312323
}
313324
}

src/Dataflow/Engine/Controller/NetworkEditorController.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ namespace Engine {
103103
void interruptModule(const Networks::ModuleId& id);
104104

105105
Networks::ModuleHandle duplicateModule(const Networks::ModuleHandle& module);
106-
void connectNewModule(const Networks::PortDescriptionInterface* portToConnect, const std::string& newModuleName);
106+
Networks::ModuleHandle connectNewModule(const Networks::PortDescriptionInterface* portToConnect, const std::string& newModuleName, const Networks::PortDescriptionInterface* portToConnectUponInsertion);
107107

108108
boost::optional<Networks::ConnectionId> requestConnection(const Networks::PortDescriptionInterface* from, const Networks::PortDescriptionInterface* to) override;
109109
void removeConnection(const Networks::ConnectionId& id);

src/Interface/Application/NetworkEditor.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ void NetworkEditor::connectNewModule(const ModuleHandle& moduleToConnectTo, cons
246246
qDebug() << "Didn't find port object to connect up with, or this is just adding a new module, not inserting.";
247247
}
248248

249-
controller_->connectNewModule(portToConnect, newModuleName);
249+
controller_->connectNewModule(portToConnect, newModuleName, newConnectionInputPort);
250250

251251
//requestConnection(..., newConnectionInputPort);
252252
}

src/Interface/Application/NetworkEditorControllerGuiProxy.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ void NetworkEditorControllerGuiProxy::duplicateModule(const ModuleHandle& module
139139
controller_->duplicateModule(module);
140140
}
141141

142-
void NetworkEditorControllerGuiProxy::connectNewModule(const PortDescriptionInterface* portToConnect, const std::string& newModuleName)
142+
void NetworkEditorControllerGuiProxy::connectNewModule(const PortDescriptionInterface* portToConnect, const std::string& newModuleName, const PortDescriptionInterface* portToConnectUponInsertion)
143143
{
144-
controller_->connectNewModule(portToConnect, newModuleName);
144+
controller_->connectNewModule(portToConnect, newModuleName, portToConnectUponInsertion);
145145
}
146146

147147
const ModuleDescriptionMap& NetworkEditorControllerGuiProxy::getAllAvailableModuleDescriptions() const

src/Interface/Application/NetworkEditorControllerGuiProxy.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ namespace Gui {
5151
boost::optional<SCIRun::Dataflow::Networks::ConnectionId> requestConnection(const SCIRun::Dataflow::Networks::PortDescriptionInterface* from, const SCIRun::Dataflow::Networks::PortDescriptionInterface* to);
5252
void removeConnection(const SCIRun::Dataflow::Networks::ConnectionId& id);
5353
void duplicateModule(const SCIRun::Dataflow::Networks::ModuleHandle& module);
54-
void connectNewModule(const SCIRun::Dataflow::Networks::PortDescriptionInterface* portToConnect, const std::string& newModuleName);
54+
void connectNewModule(const SCIRun::Dataflow::Networks::PortDescriptionInterface* portToConnect, const std::string& newModuleName, const SCIRun::Dataflow::Networks::PortDescriptionInterface* portToConnectUponInsertion);
5555
SCIRun::Dataflow::Networks::NetworkFileHandle saveNetwork() const;
5656
SCIRun::Dataflow::Networks::NetworkFileHandle serializeNetworkFragment(SCIRun::Dataflow::Networks::ModuleFilter modFilter, SCIRun::Dataflow::Networks::ConnectionFilter connFilter) const;
5757
void loadNetwork(const SCIRun::Dataflow::Networks::NetworkFileHandle& xml);

0 commit comments

Comments
 (0)