@@ -311,6 +311,7 @@ void NetworkEditor::setupPortHolders(ModuleHandle mod)
311311 setupPortHolder (upcast_range<PortDescriptionInterface>(mod->inputPorts ()), " Inputs" , topSubnetPortHolderPositioner_);
312312 setupPortHolder (upcast_range<PortDescriptionInterface>(mod->outputPorts ()), " Outputs" , bottomSubnetPortHolderPositioner_);
313313 portRewiringMap_.clear ();
314+ boost::dynamic_pointer_cast<SubnetModule>(mod)->setSubnet (this );
314315}
315316
316317void NetworkEditor::clearSiblingSelections ()
@@ -369,52 +370,44 @@ void NetworkEditor::initializeSubnet(const QString& name, ModuleHandle mod, Netw
369370 childrenNetworks_[name] = dock;
370371}
371372
372- class SubnetModule : public Module
373+ SubnetModule::SubnetModule (const std::vector<ModuleHandle>& underlyingModules, const QList<QGraphicsItem*>& items,
374+ NetworkEditor* parent) : Module(ModuleLookupInfo()),
375+ underlyingModules_(underlyingModules), items_(items), connector_(parent)
373376{
374- public:
375- SubnetModule (const std::vector<ModuleHandle>& underlyingModules, const QList<QGraphicsItem*>& items) : Module(ModuleLookupInfo()),
376- underlyingModules_ (underlyingModules), items_(items)
377- {
378- set_id (" Subnet:" + boost::lexical_cast<std::string>(subnetCount_));
379- subnetCount_++;
380- }
381-
382- void execute () override
383- {
384- }
377+ set_id (" Subnet:" + boost::lexical_cast<std::string>(subnetCount_));
378+ subnetCount_++;
379+ connector_.setModule (this );
380+ }
385381
386- static const AlgorithmParameterName ModuleInfo;
382+ void SubnetModule::execute ()
383+ {
384+ }
387385
388- void setStateDefaults () override
389- {
390- auto state = get_state ();
386+ void SubnetModule:: setStateDefaults ()
387+ {
388+ auto state = get_state ();
391389
392- auto table = makeHomogeneousVariableList (
393- [this ](size_t i)
394- {
395- return makeAnonymousVariableList (underlyingModules_[i]->get_id ().id_ ,
396- std::string (" Push me" ),
397- boost::lexical_cast<std::string>(underlyingModules_[i]->num_input_ports ()),
398- boost::lexical_cast<std::string>(underlyingModules_[i]->num_output_ports ()));
399- },
400- underlyingModules_.size ());
401-
402- state->setValue (ModuleInfo, table);
403- }
390+ auto table = makeHomogeneousVariableList (
391+ [this ](size_t i)
392+ {
393+ return makeAnonymousVariableList (underlyingModules_[i]->get_id ().id_ ,
394+ std::string (" Push me" ),
395+ boost::lexical_cast<std::string>(underlyingModules_[i]->num_input_ports ()),
396+ boost::lexical_cast<std::string>(underlyingModules_[i]->num_output_ports ()));
397+ },
398+ underlyingModules_.size ());
399+
400+ state->setValue (ModuleInfo, table);
401+ }
404402
405- std::string listComponentIds () const
406- {
407- std::ostringstream ostr;
408- std::transform (underlyingModules_.begin (), underlyingModules_.end (),
409- std::ostream_iterator<std::string>(ostr, " , " ),
410- [](const ModuleHandle& mod) { return mod->get_id (); });
411- return ostr.str ();
412- }
413- private:
414- std::vector<ModuleHandle> underlyingModules_;
415- QList<QGraphicsItem*> items_;
416- static int subnetCount_;
417- };
403+ std::string SubnetModule::listComponentIds () const
404+ {
405+ std::ostringstream ostr;
406+ std::transform (underlyingModules_.begin (), underlyingModules_.end (),
407+ std::ostream_iterator<std::string>(ostr, " , " ),
408+ [](const ModuleHandle& mod) { return mod->get_id (); });
409+ return ostr.str ();
410+ }
418411
419412int SubnetModule::subnetCount_ (0 );
420413const AlgorithmParameterName SubnetModule::ModuleInfo (" ModuleInfo" );
@@ -516,6 +509,7 @@ void NetworkEditor::makeSubnetwork()
516509class SubnetModuleFactory : public Modules ::Factory::HardCodedModuleFactory
517510{
518511public:
512+ explicit SubnetModuleFactory (NetworkEditor* parent) : parent_(parent) {}
519513 ModuleHandle makeSubnet (const QString& name, const std::vector<ModuleHandle>& modules, QList<QGraphicsItem*> items) const
520514 {
521515 ModuleDescription desc;
@@ -571,7 +565,7 @@ class SubnetModuleFactory : public Modules::Factory::HardCodedModuleFactory
571565 }
572566 }
573567
574- desc.maker_ = [&modules, items]() { return new SubnetModule (modules, items); };
568+ desc.maker_ = [&modules, items, this ]() { return new SubnetModule (modules, items, parent_ ); };
575569
576570 auto mod = create (desc);
577571
@@ -586,14 +580,15 @@ class SubnetModuleFactory : public Modules::Factory::HardCodedModuleFactory
586580 }
587581private:
588582 mutable PortRewiringMap map_;
583+ NetworkEditor* parent_;
589584};
590585
591586void NetworkEditor::makeSubnetworkFromComponents (const QString& name, const std::vector<ModuleHandle>& modules,
592587 QList<QGraphicsItem*> items, const QRectF& rect)
593588{
594589 currentSubnetNames_.insert (name);
595590
596- SubnetModuleFactory factory;
591+ SubnetModuleFactory factory ( this ) ;
597592 auto subnetModule = factory.makeSubnet (name, modules, items);
598593 portRewiringMap_ = factory.getMap ();
599594
@@ -776,3 +771,31 @@ void NetworkEditor::resizeEvent(QResizeEvent *event)
776771
777772 QGraphicsView::resizeEvent (event);
778773}
774+
775+ SubnetModuleConnector::SubnetModuleConnector (NetworkEditor* parent) :
776+ parent_(parent), subnet_(nullptr )
777+ {
778+ connect (parent, SIGNAL (connectionDeleted (const SCIRun::Dataflow::Networks::ConnectionId&)),
779+ this , SLOT (connectionDeletedFromParent ()));
780+ }
781+
782+ void SubnetModuleConnector::setSubnet (NetworkEditor* subnet)
783+ {
784+ subnet_ = subnet;
785+
786+ connect (subnet_->getNetworkEditorController ().get (), SIGNAL (moduleAdded (const std::string&, SCIRun::Dataflow::Networks::ModuleHandle, const SCIRun::Dataflow::Engine::ModuleCounter&)),
787+ this , SLOT (moduleAddedToSubnet (const std::string&, SCIRun::Dataflow::Networks::ModuleHandle)));
788+ }
789+
790+ void SubnetModuleConnector::moduleAddedToSubnet (const std::string& s, ModuleHandle module )
791+ {
792+ qDebug () << __FUNCTION__;
793+ qDebug () << " was:" << module_->underlyingModules_ .size ();
794+ module_->underlyingModules_ .push_back (module );
795+ qDebug () << " now:" << module_->underlyingModules_ .size () << " added" << s.c_str ();
796+ }
797+
798+ void SubnetModuleConnector::connectionDeletedFromParent ()
799+ {
800+ qDebug () << __FUNCTION__;
801+ }
0 commit comments