Salome HOME
GUI is able to deal with ForEachDyn
authorAnthony Geay <anthony.geay@edf.fr>
Mon, 23 Mar 2020 21:25:21 +0000 (22:25 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Mon, 23 Mar 2020 21:25:21 +0000 (22:25 +0100)
src/genericgui/EditionForEachLoop.cxx
src/hmi/commandsProc.cxx
src/hmi/guiObservers.cxx
src/hmi/guiObservers.hxx

index 9b9c761c6151248b5e7c9cb00013a9c1e3a54606..aca6f3dbc89263eeb59e1a16b55aec63d7a6d63c 100644 (file)
@@ -49,7 +49,7 @@ EditionForEachLoop::EditionForEachLoop(Subject* subject,
   if (!QtGuiContext::getQtCurrent()->isEdition())
     _formEachLoop->setEnabled (false);
   Node* node=_subjectNode->getNode();
-  ForEachLoop *fe = dynamic_cast<ForEachLoop*>(node);
+  ForEachLoopGen *fe = dynamic_cast<ForEachLoopGen*>(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<ForEachLoop*>(node);
+  ForEachLoopGen *fe = dynamic_cast<ForEachLoopGen*>(node);
   InputPort* dp=fe->edGetSeqOfSamplesPort();
   SubjectDataPort* sdp = QtGuiContext::getQtCurrent()->_mapOfSubjectDataPort[dp];
   isOk=sdp->setValue(_formEachLoop->lineEdit_2->text().toStdString());
index 61efa241c5d64cf3b342903c1284d2df9a5547e5..166c98c2743767c86cd09886229d1dbdad95384a 100644 (file)
@@ -148,7 +148,7 @@ TypeOfElem ProcInvoc::getTypeOfNode(YACS::ENGINE::Node* node)
   else if (dynamic_cast<YACS::ENGINE::ForLoop*>(node))          nodeType = FORLOOP;
   else if (dynamic_cast<YACS::ENGINE::WhileLoop*>(node))        nodeType = WHILELOOP;
   else if (dynamic_cast<YACS::ENGINE::Switch*>(node))           nodeType = SWITCH;
-  else if (dynamic_cast<YACS::ENGINE::ForEachLoop*>(node))      nodeType = FOREACHLOOP;
+  else if (dynamic_cast<YACS::ENGINE::ForEachLoopGen*>(node))      nodeType = FOREACHLOOP;
   else if (dynamic_cast<YACS::ENGINE::OptimizerLoop*>(node))    nodeType = OPTIMIZERLOOP;
   else if (dynamic_cast<YACS::ENGINE::PresetNode*>(node))       nodeType = PRESETNODE;
   else if (dynamic_cast<YACS::ENGINE::OutNode*>(node))          nodeType = OUTNODE;
@@ -292,7 +292,7 @@ bool CommandAddNodeFromCatalog::localExecute()
               (dynamic_cast<YACS::ENGINE::Switch*>(father))->edSetNode(_swCase,son);
               break;
             case FOREACHLOOP:
-              (dynamic_cast<YACS::ENGINE::ForEachLoop*>(father))->edSetNode(son);
+              (dynamic_cast<YACS::ENGINE::ForEachLoopGen*>(father))->edSetNode(son);
               break;
             case OPTIMIZERLOOP:
               (dynamic_cast<YACS::ENGINE::OptimizerLoop*>(father))->edSetNode(son);
index d8b053daf062e94da4fff637f690124acb186e9a..0d8f330b5b5952ddae27ff48c58fcafa58a888f4 100644 (file)
@@ -528,8 +528,8 @@ SubjectNode::~SubjectNode()
     try
       {
         // Remove child except if it's the splitter node of a ForEachLoop
-        if (dynamic_cast<ForEachLoop*>(father) == NULL ||
-            getName() != ForEachLoop::NAME_OF_SPLITTERNODE)
+        if (dynamic_cast<ForEachLoopGen*>(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<YACS::ENGINE::Switch*>(node), this);
       break;
     case FOREACHLOOP:
-      son = new SubjectForEachLoop(dynamic_cast<YACS::ENGINE::ForEachLoop*>(node), this);
+      son = new SubjectForEachLoop(dynamic_cast<YACS::ENGINE::ForEachLoopGen*>(node), this);
       break;
     case OPTIMIZERLOOP:
       son = new SubjectOptimizerLoop(dynamic_cast<YACS::ENGINE::OptimizerLoop*>(node), this);
@@ -1475,9 +1475,9 @@ void SubjectComposedNode::completeChildrenSubjectList(SubjectNode *son)
 void SubjectComposedNode::loadChildren()
 {
   list<Node *> setOfNode= _composedNode->edGetDirectDescendants();
-  if (ForEachLoop *feloop = dynamic_cast<ForEachLoop*>(_composedNode))
+  if (ForEachLoopGen *feloop = dynamic_cast<ForEachLoopGen*>(_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<ForEachLoop*>(node))
+  else if (ForEachLoopGen* foreach = dynamic_cast<ForEachLoopGen*>(node))
     {
       if (_inputPort->getName() == "nbBranches") _destructible = false;
     }
index 62a89b6eecc814bd533041d629706c651618f173..1d5cfa16f443fde186a03d58928ef1cb31db24bb 100644 (file)
@@ -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;
     };