]> SALOME platform Git repositories - modules/superv.git/blobdiff - src/SUPERVGUI/SUPERVGUI_CanvasNode.cxx
Salome HOME
Merge with version on tag OCC-V2_1_0d
[modules/superv.git] / src / SUPERVGUI / SUPERVGUI_CanvasNode.cxx
index ce06ff84ae4090c0cd60e43f995380ac4ac94da7..273f161e23e90f68ea200e91d5eaa7545b930e42 100644 (file)
@@ -35,7 +35,6 @@ SUPERVGUI_CanvasNode::SUPERVGUI_CanvasNode(QObject* theParent, SUPERVGUI_Main* t
     myBrowseDlg(0)
 {
   Trace("SUPERVGUI_CanvasNode::SUPERVGUI_CanvasNode");
-  //cout << "===> SUPERVGUI_CanvasNode " << myNode->Name() << endl;
 
   setName(myNode->Name());
 
@@ -75,7 +74,6 @@ SUPERVGUI_CanvasNode::SUPERVGUI_CanvasNode(QObject* theParent, SUPERVGUI_Main* t
   }
 
   isIgnore = false;
-  //cout << "<=== SUPERVGUI_CanvasNode " << myNode->Name() << endl;
 }
 
 SUPERVGUI_CanvasNode::~SUPERVGUI_CanvasNode()
@@ -214,7 +212,7 @@ void SUPERVGUI_CanvasNode::move(int x, int y)
 
 void SUPERVGUI_CanvasNode::merge() 
 {
-  //cout << "===> SUPERVGUI_CanvasNode::merge() " << myNode->Name() << endl;
+  //MESSAGE("===> SUPERVGUI_CanvasNode::merge() " << myNode->Name());
   // synchronize port list
   bool update = false;
   isIgnore = true;
@@ -273,7 +271,7 @@ void SUPERVGUI_CanvasNode::merge()
 
 void SUPERVGUI_CanvasNode::sync() 
 {
-  //cout << "===> SUPERVGUI_CanvasNode::sync() " << myNode->Name() << ", state " << myNode->State() << endl;
+  //MESSAGE("===> SUPERVGUI_CanvasNode::sync() " << myNode->Name() << ", state " << myNode->State());
 
   //if myNode is a MacroNode then set it state to state of its subgraph
   if (myNode->IsMacro() && myMain->getDataflow()->IsExecuting()) {
@@ -486,26 +484,31 @@ bool SUPERVGUI_CanvasNode::eventFilter( QObject* o, QEvent* e )
   return QObject::eventFilter(o, e);
 }
 
-SUPERV_Port SUPERVGUI_CanvasNode::createInPort() 
+QStringList SUPERVGUI_CanvasNode::getPortsNamesIN(SUPERV_INode theNode, bool theInputPorts)
 {
-  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg();
-  if (aDlg->exec()) {
-    if (aDlg->getName().isEmpty() || aDlg->getType().isEmpty()) {
-      QMessageBox::warning( QAD_Application::getDesktop(), tr( "ERROR" ), tr( "MSG_CANT_CREATE_PORT" ) );
-      return NULL;
-    }
-    SUPERV_INode aNode = getInlineNode();
-    if (SUPERV_isNull(aNode)) {
-      MESSAGE("SUPERVGUI_CanvasNode::createInPort: Node is wrong type");
-      return NULL;
-    }
-    SUPERV_Ports aPorts = aNode->Ports();
+  QStringList aPNList;
+  if (!SUPERV_isNull(theNode)) {
+    SUPERV_Ports aPorts = theNode->Ports();
     for (int i=0; i<aPorts->length(); i++) {
-      if (aPorts[i]->IsInput() && aDlg->getName() == QString(aPorts[i]->Name())){
-       QMessageBox::warning(0, tr("ERROR"), tr("MSG_PORT_EXIST"));
-       return NULL;
+      if (theInputPorts) {
+       if (aPorts[i]->IsInput()) aPNList.append(QString(aPorts[i]->Name()));
       }
+      else 
+       if (!aPorts[i]->IsInput()) aPNList.append(QString(aPorts[i]->Name()));
     }
+  }
+  return aPNList;
+}
+
+SUPERV_Port SUPERVGUI_CanvasNode::createInPort() 
+{
+  SUPERV_INode aNode = getInlineNode();
+  if (SUPERV_isNull(aNode)) {
+    MESSAGE("SUPERVGUI_CanvasNode::createInPort: Node is wrong type");
+    return NULL;
+  }
+  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg(getPortsNamesIN(aNode,true));
+  if (aDlg->exec()) {
     SUPERV_Port aPort = aNode->InPort(aDlg->getName().latin1(),
                                      aDlg->getType().latin1());    
     delete aDlg;
@@ -517,20 +520,14 @@ SUPERV_Port SUPERVGUI_CanvasNode::createInPort()
 
 SUPERV_Port SUPERVGUI_CanvasNode::createOutPort() 
 {
-  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg();
+  SUPERV_INode aNode = getInlineNode();
+  if (SUPERV_isNull(aNode)) {
+    MESSAGE("SUPERVGUI_CanvasNode::createOutPort: Node is wrong type");
+    return NULL;
+  }
+  
+  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg(getPortsNamesIN(aNode,false));
   if (aDlg->exec()) {
-    SUPERV_INode aNode = getInlineNode();
-    if (SUPERV_isNull(aNode)) {
-      MESSAGE("SUPERVGUI_CanvasNode::createOutPort: Node is wrong type");
-      return NULL;
-    }
-    SUPERV_Ports aPorts = aNode->Ports();
-    for (int i=0; i<aPorts->length(); i++) {
-      if (!aPorts[i]->IsInput() && aDlg->getName() == QString(aPorts[i]->Name())){
-       QMessageBox::warning(0, tr("ERROR"), tr("MSG_PORT_EXIST"));
-       return NULL;
-      }
-    }
     SUPERV_Port aPort = aNode->OutPort(aDlg->getName().latin1(),
                                       aDlg->getType().latin1());
     delete aDlg;