Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
[modules/superv.git] / src / Supervision / SuperV.py
index 7055d82d564e1f4bcc8983f51098d43494297456..5a7aed0714c88d117577ec477a4ecca7243a4955 100644 (file)
@@ -2,8 +2,24 @@
 #
 #  SUPERV Supervision : contains the implementation of interfaces of SuperVision described in SUPERV.idl
 #
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
-#
+#  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   : SuperV.py
@@ -15,6 +31,7 @@ try :
     from salome import naming_service
     from salome import CORBA
     from salome import sg
+    from salome import SALOMEDS
     import SALOME_ModuleCatalog
     import SUPERV
     import SUPERV_idl
@@ -53,6 +70,44 @@ SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
 
 
+def createDataflowStudyObject( theStudy , aDataFlow , aBuilder ) :
+    aStudyObject = theStudy.FindObjectIOR( aDataFlow.G.getIOR() )
+    if aStudyObject == None :
+        aComponent = theStudy.FindComponent( "SUPERV" )
+        if aComponent == None :
+            print "createDataflowStudyObject Component SUPERV is None"
+            aComponent = aBuilder.NewComponent( "SUPERV" )
+            anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")
+            aName = anAttr._narrow( SALOMEDS.AttributeName )
+            aName.SetValue( modulecatalog.GetComponentInfo( "SUPERV" ).username )
+            anAttr = aBuilder.FindOrCreateAttribute( aComponent , "AttributePixMap" )
+            aPixmap = anAttr._narrow( SALOMEDS.AttributePixMap )
+            aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
+            aBuilder.DefineComponentInstance( aComponent , SuperVision )
+            print "createDataflowStudyObject Component SUPERV is created"
+        aStudyObject = aBuilder.NewObject( aComponent )
+        anAttr =  aBuilder.FindOrCreateAttribute( aStudyObject , "AttributeName" )
+        aName = anAttr._narrow( SALOMEDS.AttributeName )
+        aName.SetValue( aDataFlow.Name() )
+        anAttr =  aBuilder.FindOrCreateAttribute( aStudyObject , "AttributeIOR" )
+        anIORAttr = anAttr._narrow( SALOMEDS.AttributeIOR )
+        anIORAttr.SetValue( aDataFlow.G.getIOR() )
+    return aStudyObject
+
+def addDataflowToStudy( theStudy , aDataFlow ) :
+    aBuilder = theStudy.NewBuilder()
+    aBuilder.NewCommand()
+    aStudyObject = createDataflowStudyObject( theStudy , aDataFlow , aBuilder )
+    if aStudyObject != None :
+        aBuilder.CommitCommand()
+        sg.updateObjBrowser( 1 )
+        print "addDataflowToStudy aStudyObject ",aDataFlow.Name()," added in study"
+        #theStudy.updateObjBrowser()
+    else :
+        print "addDataflowToStudy ERROR aStudyObject is None"
+        aBuilder.AbortCommand()
+    return aBuilder,aStudyObject
+
 
 def PortInputFloat(obj, x):
     return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
@@ -500,14 +555,14 @@ class CNode:
         return self.N.DoneW()
     def SuspendedW( self ):
         return self.N.SuspendedW()
-    def ReRun( self ):
-        return self.N.ReRun()
-    def ReStart( self ):
-        return self.N.ReStart()
-    def ReRunAt( self , aNodeName ):
-        return self.N.ReRunAt( aNodeName )
-    def ReStartAt( self , aNodeName ):
-        return self.N.ReStartAt( aNodeName )
+    #def ReRun( self ):
+    #    return self.N.ReRun()
+    #def ReStart( self ):
+    #    return self.N.ReStart()
+    #def ReRunAt( self , aNodeName ):
+    #    return self.N.ReRunAt( aNodeName )
+    #def ReStartAt( self , aNodeName ):
+    #    return self.N.ReStartAt( aNodeName )
     def Ping( self ):
         return self.N.ping()
     def Kill( self ):
@@ -551,6 +606,8 @@ class FNode(CNode):
         return self.N.SetInterfaceName( anInterfaceName )
     def SetContainer( self , aComputer ):
         return self.N.SetContainer( aComputer )
+    def IsCimpl( self ):
+        return self.N.isCimpl
 
 ##########################################################
 class INode(CNode):
@@ -758,13 +815,27 @@ class Graph(GNode):
         #if SuperVision.Swig :
             #aService = Service_Swig( aService )
         return self.FNode( aComponent , anInterface , aService )
+    def FNodeImpl( self , aComponent , anInterface , aService, isCimpl ):
+        NodeComponent = modulecatalog.GetComponent( aComponent )
+        aService = NodeComponent.GetService( anInterface , aService )
+        aNode = self.G.FNode( aComponent , anInterface , aService, isCimpl )
+        if aNode != None :
+            aNode.isCimpl = isCimpl
+            myNode = FNode( aNode , self.G.Verbose )
+            return myNode
+        ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
+        if self.G.Verbose :
+            print ErrMsg
+        return aNode
     def FNode( self , aComponent , anInterface , aService ):
+        # create node with C++ implementation type by default
         NodeComponent = modulecatalog.GetComponent( aComponent )
         aService = NodeComponent.GetService( anInterface , aService )
         #if SuperVision.Swig :
             #aService = Service_Swig( aService )
-        aNode = self.G.FNode( aComponent , anInterface , aService )
+        aNode = self.G.FNode( aComponent , anInterface , aService, SALOME_ModuleCatalog.SO )
         if aNode != None :
+            aNode.isCimpl = 1
             myNode = FNode( aNode , self.G.Verbose )
             return myNode
         ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
@@ -864,6 +935,8 @@ class Graph(GNode):
         if self.G.Verbose :
             print ErrMsg
         return aLink
+    def Messages( self ):
+        return self.G.Messages()
     def Import( self , anXmlFileName ):
         return self.G.Import( anXmlFileName )
     def Export( self , anXmlFileName ):