From 7d317a95ea291ef27c3b58bde519c075eff0221c Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Mon, 23 Mar 2020 22:25:21 +0100 Subject: [PATCH] GUI is able to deal with ForEachDyn --- src/genericgui/EditionForEachLoop.cxx | 4 ++-- src/hmi/commandsProc.cxx | 4 ++-- src/hmi/guiObservers.cxx | 20 ++++++++++++-------- src/hmi/guiObservers.hxx | 5 +++-- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/genericgui/EditionForEachLoop.cxx b/src/genericgui/EditionForEachLoop.cxx index 9b9c761c6..aca6f3dbc 100644 --- a/src/genericgui/EditionForEachLoop.cxx +++ b/src/genericgui/EditionForEachLoop.cxx @@ -49,7 +49,7 @@ EditionForEachLoop::EditionForEachLoop(Subject* subject, if (!QtGuiContext::getQtCurrent()->isEdition()) _formEachLoop->setEnabled (false); Node* node=_subjectNode->getNode(); - ForEachLoop *fe = dynamic_cast(node); + ForEachLoopGen *fe = dynamic_cast(node); if(fe) _formEachLoop->lineEdit->setText(fe->edGetSamplePort()->edGetType()->name()); connect(_formEachLoop->sb_nbranch, SIGNAL(editingFinished()), @@ -67,7 +67,7 @@ void EditionForEachLoop::onModifyCollection() { bool isOk = false; Node* node=_subjectNode->getNode(); - ForEachLoop *fe = dynamic_cast(node); + ForEachLoopGen *fe = dynamic_cast(node); InputPort* dp=fe->edGetSeqOfSamplesPort(); SubjectDataPort* sdp = QtGuiContext::getQtCurrent()->_mapOfSubjectDataPort[dp]; isOk=sdp->setValue(_formEachLoop->lineEdit_2->text().toStdString()); diff --git a/src/hmi/commandsProc.cxx b/src/hmi/commandsProc.cxx index 61efa241c..166c98c27 100644 --- a/src/hmi/commandsProc.cxx +++ b/src/hmi/commandsProc.cxx @@ -148,7 +148,7 @@ TypeOfElem ProcInvoc::getTypeOfNode(YACS::ENGINE::Node* node) else if (dynamic_cast(node)) nodeType = FORLOOP; else if (dynamic_cast(node)) nodeType = WHILELOOP; else if (dynamic_cast(node)) nodeType = SWITCH; - else if (dynamic_cast(node)) nodeType = FOREACHLOOP; + else if (dynamic_cast(node)) nodeType = FOREACHLOOP; else if (dynamic_cast(node)) nodeType = OPTIMIZERLOOP; else if (dynamic_cast(node)) nodeType = PRESETNODE; else if (dynamic_cast(node)) nodeType = OUTNODE; @@ -292,7 +292,7 @@ bool CommandAddNodeFromCatalog::localExecute() (dynamic_cast(father))->edSetNode(_swCase,son); break; case FOREACHLOOP: - (dynamic_cast(father))->edSetNode(son); + (dynamic_cast(father))->edSetNode(son); break; case OPTIMIZERLOOP: (dynamic_cast(father))->edSetNode(son); diff --git a/src/hmi/guiObservers.cxx b/src/hmi/guiObservers.cxx index d8b053daf..0d8f330b5 100644 --- a/src/hmi/guiObservers.cxx +++ b/src/hmi/guiObservers.cxx @@ -528,8 +528,8 @@ SubjectNode::~SubjectNode() try { // Remove child except if it's the splitter node of a ForEachLoop - if (dynamic_cast(father) == NULL || - getName() != ForEachLoop::NAME_OF_SPLITTERNODE) + if (dynamic_cast(father) == NULL || + getName() != ForEachLoopGen::NAME_OF_SPLITTERNODE) { father->edRemoveChild(_node); } @@ -1445,7 +1445,7 @@ SubjectNode *SubjectComposedNode::addSubjectNode(YACS::ENGINE::Node * node, son = new SubjectSwitch(dynamic_cast(node), this); break; case FOREACHLOOP: - son = new SubjectForEachLoop(dynamic_cast(node), this); + son = new SubjectForEachLoop(dynamic_cast(node), this); break; case OPTIMIZERLOOP: son = new SubjectOptimizerLoop(dynamic_cast(node), this); @@ -1475,9 +1475,9 @@ void SubjectComposedNode::completeChildrenSubjectList(SubjectNode *son) void SubjectComposedNode::loadChildren() { list setOfNode= _composedNode->edGetDirectDescendants(); - if (ForEachLoop *feloop = dynamic_cast(_composedNode)) + if (ForEachLoopGen *feloop = dynamic_cast(_composedNode)) { - Node *node2Insert=feloop->getChildByName(ForEachLoop::NAME_OF_SPLITTERNODE); + Node *node2Insert=feloop->getChildByName(ForEachLoopGen::NAME_OF_SPLITTERNODE); if(find(setOfNode.begin(),setOfNode.end(),node2Insert)==setOfNode.end()) setOfNode.push_back(node2Insert); } @@ -3394,12 +3394,16 @@ bool SubjectDynParaLoop::hasValue() std::string SubjectDynParaLoop::getValue() { - return _dynParaLoop->edGetNbOfBranchesPort()->getAsString(); + InputPort *port(_dynParaLoop->edGetNbOfBranchesPort()); + if(port) + return port->getAsString(); + else + return std::string(); } // ---------------------------------------------------------------------------- -SubjectForEachLoop::SubjectForEachLoop(YACS::ENGINE::ForEachLoop *forEachLoop, Subject *parent) +SubjectForEachLoop::SubjectForEachLoop(YACS::ENGINE::ForEachLoopGen *forEachLoop, Subject *parent) : SubjectDynParaLoop(forEachLoop, parent), _forEachLoop(forEachLoop) { _splitter = 0; @@ -3741,7 +3745,7 @@ SubjectInputPort::SubjectInputPort(YACS::ENGINE::InputPort *port, Subject *paren { if (_inputPort->getName() == "select") _destructible = false; } - else if (ForEachLoop* foreach = dynamic_cast(node)) + else if (ForEachLoopGen* foreach = dynamic_cast(node)) { if (_inputPort->getName() == "nbBranches") _destructible = false; } diff --git a/src/hmi/guiObservers.hxx b/src/hmi/guiObservers.hxx index 62a89b6ee..1d5cfa16f 100644 --- a/src/hmi/guiObservers.hxx +++ b/src/hmi/guiObservers.hxx @@ -40,6 +40,7 @@ namespace YACS class ForLoop; class DynParaLoop; class ForEachLoop; + class ForEachLoopGen; class WhileLoop; class Switch; class OptimizerLoop; @@ -642,7 +643,7 @@ namespace YACS class SubjectForEachLoop: public SubjectDynParaLoop { public: - SubjectForEachLoop(YACS::ENGINE::ForEachLoop *forEachLoop, Subject *parent); + SubjectForEachLoop(YACS::ENGINE::ForEachLoopGen *forEachLoop, Subject *parent); virtual ~SubjectForEachLoop(); virtual void completeChildrenSubjectList(SubjectNode *son); virtual void removeNode(SubjectNode * child); @@ -650,7 +651,7 @@ namespace YACS void localclean(Command *command=0); virtual TypeOfElem getType(){return FOREACHLOOP;} protected: - YACS::ENGINE::ForEachLoop *_forEachLoop; + YACS::ENGINE::ForEachLoopGen *_forEachLoop; SubjectNode* _splitter; }; -- 2.39.2