Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
[modules/superv.git] / src / SUPERVGUI / SUPERVGUI_CanvasPort.cxx
index 72196a4f3571508d2855ccc88b9883e6a026aee7..e7db50f26a12c9e6bf2c0ac6bacf7d5601839c3a 100644 (file)
@@ -1,12 +1,28 @@
 //  SUPERV SUPERVGUI : GUI for Supervisor component
 //
-//  Copyright (C) 2003  OPEN CASCADE
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SUPERVGUI_CanvasPort.cxx
 //  Author : Natalia KOPNOVA
 //  Module : SUPERV
 
-using namespace std;
 #include "SUPERVGUI_CanvasPort.h"
 #include "SUPERVGUI_CanvasNode.h"
 #include "SUPERVGUI_CanvasLink.h"
@@ -18,7 +34,8 @@ using namespace std;
 
 #include "SalomeApp_Study.h"
 
-SUPERVGUI_CanvasPort::SUPERVGUI_CanvasPort(QObject* theParent, SUPERVGUI_Main* theMain, SUPERV::Port_ptr thePort):
+SUPERVGUI_CanvasPort::SUPERVGUI_CanvasPort (QObject* theParent, SUPERVGUI_Main* theMain,
+                                            SUPERV::Port_ptr thePort):
     QObject(theParent),
     myMain(theMain),
     myPrs(0),
@@ -29,6 +46,9 @@ SUPERVGUI_CanvasPort::SUPERVGUI_CanvasPort(QObject* theParent, SUPERVGUI_Main* t
 
   // setName(myPort->Name());
   setName(myMain->getCanvas()->getPortName(thePort));
+
+  // mkr : PAL8237
+  connect(this, SIGNAL(objectDeleted()), myMain, SLOT(onObjectCreatedDeleted()));
 }
 
 SUPERVGUI_CanvasPort::~SUPERVGUI_CanvasPort()
@@ -138,6 +158,9 @@ void SUPERVGUI_CanvasPort::remove() {
 
   Trace("SUPERVGUI_CanvasPort::remove");
   myPort->destroy();
+  
+  emit objectDeleted(); // mkr : PAL8237
+
   delete this;
 }
 
@@ -189,7 +212,8 @@ void SUPERVGUI_CanvasPort::copy()
 //***********************************************************
 // Input Port
 //***********************************************************
-SUPERVGUI_CanvasPortIn::SUPERVGUI_CanvasPortIn(QObject* theParent, SUPERVGUI_Main* theMain, SUPERV::Port_ptr thePort):
+SUPERVGUI_CanvasPortIn::SUPERVGUI_CanvasPortIn (QObject* theParent, SUPERVGUI_Main* theMain,
+                                                SUPERV::Port_ptr thePort):
   SUPERVGUI_CanvasPort(theParent, theMain, thePort)
 {
   Trace("SUPERVGUI_CanvasPortIn::SUPERVGUI_CanvasPortIn");
@@ -204,7 +228,9 @@ SUPERVGUI_CanvasPortIn::~SUPERVGUI_CanvasPortIn()
 QPopupMenu* SUPERVGUI_CanvasPortIn::getPopupMenu(QWidget* theParent) 
 {
   QPopupMenu* popup = SUPERVGUI_CanvasPort::getPopupMenu(theParent);
-  bool editable = getEngine()->IsInput() && !getEngine()->IsLinked() && !getMain()->getDataflow()->IsExecuting();
+  bool editable = (getEngine()->IsInput() &&
+                   !getEngine()->IsLinked() &&
+                   !getMain()->getDataflow()->IsExecuting());
 
   if (!getEngine()->IsGate() && editable)
     popup->insertItem(tr("MSG_SETVALUE"), this, SLOT(setInput()));
@@ -249,11 +275,15 @@ bool SUPERVGUI_CanvasPortIn::eventFilter(QObject* o, QEvent* e)
 //***********************************************************
 // Output Port
 //***********************************************************
-SUPERVGUI_CanvasPortOut::SUPERVGUI_CanvasPortOut(QObject* theParent, SUPERVGUI_Main* theMain, SUPERV::Port_ptr thePort):
+SUPERVGUI_CanvasPortOut::SUPERVGUI_CanvasPortOut (QObject* theParent, SUPERVGUI_Main* theMain,
+                                                  SUPERV::Port_ptr thePort):
   SUPERVGUI_CanvasPort(theParent, theMain, thePort)
 {
   Trace("SUPERVGUI_CanvasPortOut::SUPERVGUI_CanvasPortOut");
   myInStudy = false;
+
+  // mkr : PAL8150
+  connect(this, SIGNAL(putInStudy( QString* )), getMain(), SLOT(onPutInStudy( QString* )));
 }
 
 SUPERVGUI_CanvasPortOut::~SUPERVGUI_CanvasPortOut()
@@ -305,7 +335,22 @@ void SUPERVGUI_CanvasPortOut::toStudy()
   getMain()->getCanvas()->update();
 
   if ( myInStudy ) // put values to study (supervision, supervision->dataflow, supervision->dataflow->runXXX, etc.
-    getMain()->putDataStudy( getEngine(), STUDY_PORT_OUT ); 
+    if ( getMain()->putDataStudy( getEngine(), STUDY_PORT_OUT ) ) {
+      // mkr : PAL8110 : re-register dataflow in object browser with 
+      //       changing its key to IOR name (from xml-file name, for example)
+      SUPERVGUI* aSupMod = SUPERVGUI::Supervision();
+      if ( !aSupMod ) {
+       MESSAGE("NULL Supervision module!");
+       return;
+      }
+      aSupMod->unregisterGraph(getMain());
+      aSupMod->registerGraph(getMain()->getDataflow()->getIOR(), getMain());
+    }
+  
+  // mkr : PAL8150
+  QString aNodePortName = QString( getEngine()->Node()->Name() ) + QString( "_" ) + QString( getEngine()->Name() );
+  emit putInStudy( &aNodePortName );
+
 }