3 # SUPERV Supervision : contains the implementation of interfaces of SuperVision described in SUPERV.idl
5 # Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
6 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
8 # This library is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public
10 # License as published by the Free Software Foundation; either
11 # version 2.1 of the License.
13 # This library is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 # Lesser General Public License for more details.
18 # You should have received a copy of the GNU Lesser General Public
19 # License along with this library; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
29 from salome import orb
30 from salome import lcc
31 from salome import naming_service
32 from salome import CORBA
34 from salome import SALOMEDS
35 import SALOME_ModuleCatalog
40 from LifeCycleCORBA import *
41 from SALOME_NamingServicePy import *
44 import SALOME_ModuleCatalog
46 # from libSuperVision_Swig import SuperV_Swig
47 # print 'SuperV_Swig imported'
50 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
51 lcc = LifeCycleCORBA(orb)
52 naming_service = SALOME_NamingServicePy_i(orb)
59 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
60 # SuperVision.Swig = 1
61 # print 'SuperV_Swig created'
63 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
64 # SuperVision.Swig = 0
65 # print 'Supervision Component loaded'
67 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
70 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
73 def createDataflowStudyObject( theStudy , aDataFlow , aBuilder ) :
74 aStudyObject = theStudy.FindObjectIOR( aDataFlow.G.getIOR() )
75 if aStudyObject == None :
76 aComponent = theStudy.FindComponent( "SUPERV" )
77 if aComponent == None :
78 print "createDataflowStudyObject Component SUPERV is None"
79 aComponent = aBuilder.NewComponent( "SUPERV" )
80 anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")
81 aName = anAttr._narrow( SALOMEDS.AttributeName )
82 aName.SetValue( modulecatalog.GetComponentInfo( "SUPERV" ).username )
83 anAttr = aBuilder.FindOrCreateAttribute( aComponent , "AttributePixMap" )
84 aPixmap = anAttr._narrow( SALOMEDS.AttributePixMap )
85 aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
86 aBuilder.DefineComponentInstance( aComponent , SuperVision )
87 print "createDataflowStudyObject Component SUPERV is created"
88 aStudyObject = aBuilder.NewObject( aComponent )
89 anAttr = aBuilder.FindOrCreateAttribute( aStudyObject , "AttributeName" )
90 aName = anAttr._narrow( SALOMEDS.AttributeName )
91 aName.SetValue( aDataFlow.Name() )
92 anAttr = aBuilder.FindOrCreateAttribute( aStudyObject , "AttributeIOR" )
93 anIORAttr = anAttr._narrow( SALOMEDS.AttributeIOR )
94 anIORAttr.SetValue( aDataFlow.G.getIOR() )
97 def addDataflowToStudy( theStudy , aDataFlow ) :
98 aBuilder = theStudy.NewBuilder()
100 aStudyObject = createDataflowStudyObject( theStudy , aDataFlow , aBuilder )
101 if aStudyObject != None :
102 aBuilder.CommitCommand()
103 sg.updateObjBrowser( 1 )
104 print "addDataflowToStudy aStudyObject ",aDataFlow.Name()," added in study"
105 #theStudy.updateObjBrowser()
107 print "addDataflowToStudy ERROR aStudyObject is None"
108 aBuilder.AbortCommand()
109 return aBuilder,aStudyObject
112 def PortInputFloat(obj, x):
113 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
115 def PortInputLong(obj, x):
116 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
118 def PortInputObject(obj, x):
120 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
122 return obj.Input( SuperVision.AnyValue( x ) )
124 def PortInputString(obj, x):
125 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
127 def InputFloat(obj, nodein_port, x):
128 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
130 def InputLong(obj, nodein_port, x):
131 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
133 def InputObject(obj, nodein_port, x):
135 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
137 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
139 def InputString(obj, nodein_port, x):
140 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
144 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
146 def getRealArgs(self,args):
152 types.append(typestring.match(self).group(1))
155 types.append(type(self))
156 realargs.append(self)
160 types.append(typestring.match(a).group(1))
163 types.append(type(a))
166 return tuple(types), tuple(realargs)
168 bs_AddInput_valuedict = {
169 (InstanceType, FloatType) : PortInputFloat,
170 (InstanceType, IntType) : PortInputLong,
171 (InstanceType, StringType) : PortInputString,
172 (InstanceType, InstanceType) : PortInputObject,
173 (InstanceType, StringType, FloatType) : InputFloat,
174 (InstanceType, StringType, IntType) : InputLong,
175 (InstanceType, StringType, StringType) : InputString,
176 (InstanceType, StringType, InstanceType) : InputObject,
177 (InstanceType, StringType, ListType) : InputObject,
181 def Args( aService , aNodeName , verbose ):
182 lenin = len( aService.ServiceinParameter )
183 infos = aNodeName + 'info = "'
184 infos = infos + 'NodeName : ' + aNodeName + '\\n'
185 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
186 infos = infos + 'PortNames : \\n'
187 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
190 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
191 valname = aNodeName + "\\\\"
192 valname = valname + aService.ServiceinParameter[ i ].Parametername
193 defnames = defnames + argname + " = " + "'" + valname + "' ; "
194 infos = infos + str(i) + '. ' + argname + ' : Input'
195 infos = infos + str(i) + ' '
196 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
197 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
199 lenout = len( aService.ServiceoutParameter )
202 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
203 valname = aNodeName + "\\\\"
204 valname = valname + aService.ServiceoutParameter[ i ].Parametername
205 defnames = defnames + argname + " = " + "'" + valname + "' ; "
206 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
207 infos = infos + str(i) + ' '
208 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
209 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
212 defnames = defnames + infos
214 defnames = defnames + " ; print " + aNodeName + "info"
217 def Service_Swig( aCatalogService ) :
218 aService = SuperVision.Service()
219 aService.ServiceName = aCatalogService.ServiceName
221 while i < len( aCatalogService.ServiceinParameter ) :
222 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
223 SuperVision.AddInParameter( aService , p )
226 while i < len( aCatalogService.ServiceoutParameter ) :
227 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
228 SuperVision.AddOutParameter( aService , p )
232 ##########################################################
234 ##########################################################
235 def __init__( self , aNode , Verbose ):
237 self.N.Verbose = Verbose
241 return self.N.Service()
244 def CreationDate( self ):
245 return self.N.CreationDate()
246 def LastUpdateDate( self ):
247 return self.N.LastUpdateDate()
249 return self.N.Version()
251 return self.N.Author()
253 return self.N.Comment()
255 def SetName( self , aNewName ):
256 return self.N.SetName( aNewName )
257 def SetAuthor( self , anAuthor ):
258 return self.N.SetAuthor( anAuthor )
259 def SetComment( self , aComment ):
260 return self.N.SetComment( aComment )
263 print "Name ",self.N.Name()
264 if self.N.IsFactory() :
265 print "ComponentName ",self.N.GetComponentName()
266 print "InterfaceName ",self.N.GetInterfaceName()
267 if self.N.IsStreamGraph() :
268 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
269 print "Timeout",Timeout
270 print "DataStreamTrace",DataStreamTrace
271 print "DeltaTime",DeltaTime
272 aService = self.N.Service()
273 print "Service Name ",aService.ServiceName
274 lenin = len( aService.ServiceinParameter )
275 print " ",lenin," input argument(s) :"
278 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
280 lenout = len( aService.ServiceoutParameter )
281 print " ",lenout," output argument(s) :"
284 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
286 aKind = self.N.Kind()
287 print "KindOfNode",aKind
288 aFirstCreation = self.N.CreationDate()
289 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
290 aLastModification = self.N.LastUpdateDate()
291 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
292 print "Version ",self.N.Version()
293 print "Author ",self.N.Author()
294 if self.N.IsFactory() :
295 print "Container ",self.N.GetContainer()
296 print "Comment ",self.N.Comment()
297 print "Coords ",self.N.X()," ",self.N.Y()
298 def Port( self , aPortName ):
299 aPort = self.N.Port( aPortName )
301 myPort = Port( aPort , self.N.Verbose )
304 print "Error while creating the Port : ",aPortName
306 def Input( self , *args ):
307 types, realargs = getRealArgs(self.N,args)
308 fn = bs_AddInput_valuedict[types]
309 anInput = apply( fn, realargs)
311 myInput = Port( anInput , self.N.Verbose )
313 ErrMsg = "Failed to create the Input"
317 def InStreamPort( self , aParameterName , aParameterType , aDependency ):
318 aPort = self.N.InStreamPort( aParameterName , aParameterType , aDependency )
320 myPort = StreamPort( aPort , self.N.Verbose )
323 print "Error while creating the Port : ",aParameterName
325 def OutStreamPort( self , aParameterName , aParameterType , aDependency ):
326 aPort = self.N.OutStreamPort( aParameterName , aParameterType , aDependency )
328 myPort = StreamPort( aPort , self.N.Verbose )
331 print "Error while creating the Port : ",aParameterName
333 def GetInPort( self , aParameterName ):
334 aPort = self.N.GetInPort( aParameterName )
336 myPort = Port( aPort , self.N.Verbose )
339 print "Error while creating the Port : ",aParameterName
341 def GetOutPort( self , aParameterName ):
342 aPort = self.N.GetOutPort( aParameterName )
344 myPort = Port( aPort , self.N.Verbose )
347 print "Error while creating the Port : ",aParameterName
349 def GetInStreamPort( self , aParameterName ):
350 aPort = self.N.GetInStreamPort( aParameterName )
352 myPort = StreamPort( aPort , self.N.Verbose )
355 print "Error while creating the Port : ",aParameterName
357 def GetOutStreamPort( self , aParameterName ):
358 aPort = self.N.GetOutStreamPort( aParameterName )
360 myPort = StreamPort( aPort , self.N.Verbose )
363 print "Error while creating the Port : ",aParameterName
366 ports = self.N.Ports()
368 while i < len( ports ) :
369 ports[ i ] = Port( ports[i] , self.N.Verbose )
372 def StreamPorts( self ):
373 ports = self.N.StreamPorts()
375 while i < len( ports ) :
376 ports[ i ] = StreamPort( ports[i] , self.N.Verbose )
379 def AllPorts( self ):
380 allports = self.N.Ports()
381 lenports = len( allports )
384 allports[ i ] = Port( allports[i] , self.N.Verbose )
386 ports = self.N.StreamPorts()
388 while i < len( ports ) :
389 allports.append( StreamPort( ports[i] , self.N.Verbose ) )
392 def ListPorts( self , *args ):
393 if len( args ) == 0 :
394 aName = self.N.Name()
397 ports = self.AllPorts()
401 portsname = ports[ 0 ].Name()
402 bs = portsname.find('\\')
404 portsname1,portsname2 = portsname.split('\\')
405 portsname = portsname1 + portsname2
406 if ports[ 0 ].IsInput():
407 listofports = 'I' + aName + portsname
409 listofports = 'O' + aName + portsname
411 while i < len( ports ) :
412 portsname = ports[ i ].Name()
413 bs = portsname.find('\\')
415 portsname1,portsname2 = portsname.split('\\')
416 portsname = portsname1 + portsname2
417 if ports[ i ].IsInput():
418 listofports = listofports + ',' + 'I' + aName + portsname
420 listofports = listofports + ',' + 'O' + aName + portsname
423 if len( ports ) == 1 :
424 listofports = "[" + listofports + "] = " + aName + ".AllPorts()"
426 listofports = listofports + " = " + aName + ".AllPorts()"
428 def PrintPorts( self ):
429 ports = self.AllPorts()
431 while i < len( ports ) :
433 if ports[ i ].IsInput() :
435 if ( ports[ i ].IsDataStream() ) & ( self.N.IsStreamGraph() == 0 ) :
436 if ports[ i ].IsInput() :
437 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = ports[ i ].Params()
438 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
440 numberofvalues = ports[ i ].NumberOfValues()
441 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),'NumberOfValues',numberofvalues
443 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
446 links = self.N.Links()
448 while i < len( links ) :
449 links[ i ] = Link( links[i] , self.N.Verbose )
452 def StreamLinks( self ) :
453 links = self.N.StreamLinks()
455 while i < len( links ) :
456 links[ i ] = StreamLink( links[i] , self.N.Verbose )
459 def AllLinks( self ) :
460 alllinks = self.N.Links()
461 lenlinks = len( alllinks )
464 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
466 links = self.N.StreamLinks()
468 while i < len( links ) :
469 alllinks.append( StreamLink( links[i] , self.N.Verbose ) )
472 def ListLinks( self , *args ):
473 links = self.AllLinks()
475 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
476 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
477 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
478 listoflinks = listoflinks + links[ 0 ].InPort().Name()
480 while i < len( links ) :
481 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
482 listoflinks = listoflinks + links[ i ].OutPort().Name()
483 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
484 listoflinks = listoflinks + links[ i ].InPort().Name()
487 if len( args ) == 0 :
488 aName = self.N.Name()
491 if len( links ) == 1 :
492 listoflinks = "[" + listoflinks + "] = " + aName + ".AllLinks()"
494 listoflinks = listoflinks + " = " + aName + ".AllLinks()"
496 def PrintLinks( self ):
497 links = self.AllLinks()
499 while i < len( links ) :
502 def IsStreamGraph( self ):
503 return self.N.IsStreamGraph()
505 return self.N.IsGraph()
507 return self.N.IsMacro()
508 def IsFlowMacro( self ):
509 return self.N.IsFlowMacro()
510 def IsStreamMacro( self ):
511 return self.N.IsStreamMacro()
512 def IsComputing( self ):
513 return self.N.IsComputing()
514 def IsFactory( self ):
515 return self.N.IsFactory()
516 def IsInLine( self ):
517 return self.N.IsInLine()
519 return self.N.IsGOTO()
521 return self.N.IsLoop()
522 def IsEndLoop( self ):
523 return self.N.IsEndLoop()
524 def IsSwitch( self ):
525 return self.N.IsSwitch()
526 def IsEndSwitch( self ):
527 return self.N.IsEndSwitch()
528 def GraphLevel( self ) :
529 return self.N.GraphLevel()
530 def SubGraph( self ):
531 return self.N.SubGraph()
532 def SubStreamGraph( self ):
533 return self.N.SubStreamGraph()
535 return self.N.Thread()
536 def IsWaiting( self ):
537 return self.N.IsWaiting()
538 def IsRunning( self ):
539 return self.N.IsRunning()
541 return self.N.IsDone()
542 def IsSuspended( self ):
543 return self.N.IsSuspended()
545 return self.N.State()
547 return self.N.Control()
548 def ControlClear( self ):
549 return self.N.ControlClear()
551 return self.N.ReadyW()
552 def RunningW( self ):
553 return self.N.RunningW()
555 return self.N.DoneW()
556 def SuspendedW( self ):
557 return self.N.SuspendedW()
559 # return self.N.ReRun()
560 #def ReStart( self ):
561 # return self.N.ReStart()
562 #def ReRunAt( self , aNodeName ):
563 # return self.N.ReRunAt( aNodeName )
564 #def ReStartAt( self , aNodeName ):
565 # return self.N.ReStartAt( aNodeName )
570 def KillDone( self ):
571 return self.N.KillDone()
573 return self.N.Suspend()
574 def SuspendDone( self ):
575 return self.N.SuspendDone()
577 return self.N.Resume()
580 def Coords( self , X , Y ):
581 return self.N.Coords( X , Y )
589 return self.N.CpuUsed()
591 ##########################################################
593 ##########################################################
594 def __init__( self , aNode , Verbose ):
596 self.N.Verbose = Verbose
597 def GetComponentName( self ):
598 return self.N.GetComponentName()
599 def GetInterfaceName( self ):
600 return self.N._get_interfaceName()
601 def GetContainer( self ):
602 return self.N.GetContainer()
603 def SetComponentName( self , aComponentName ):
604 return self.N.SetComponentName( aComponentName )
605 def SetInterfaceName( self , anInterfaceName ):
606 return self.N.SetInterfaceName( anInterfaceName )
607 def SetContainer( self , aComputer ):
608 return self.N.SetContainer( aComputer )
610 return self.N.isCimpl
612 ##########################################################
614 ##########################################################
615 def __init__( self , aNode , Verbose ):
617 self.N.Verbose = Verbose
618 def Edit( self , FuncName , PyFunc ) :
621 suf = str(random.randrange(1,10000))
622 file = '/tmp/' + FuncName + '_' + suf + '.py'
626 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
630 while ( i < len( PyFunc ) ) :
631 print i,'/',len( PyFunc ),PyFunc[ i ]
632 os.write( fd , PyFunc[ i ] + '\n' )
635 edit = '${EDITOR} ' + file
637 fd = os.open( file , os.O_RDONLY )
638 line = os.read( fd , 132 )
642 line = os.read( fd , 132 )
644 PyFunc = res.splitlines()
646 while i < len( PyFunc ) :
650 print "Open of",file,"failed."
652 def SetPyFunction( self , FuncName , aPyFunction ):
653 return self.N.SetPyFunction( FuncName , aPyFunction )
654 def PyFunction( self ):
655 return self.N.PyFunction()
656 def PyFuncName( self ):
657 return self.N.PyFuncName()
658 def InPort( self , aParameterName , aParameterType ):
659 aPort = self.N.InPort( aParameterName ,
662 myPort = Port( aPort , self.N.Verbose )
665 print "Error while creating the Port : ",aParameterName
667 def OutPort( self , aParameterName , aParameterType ):
668 aPort = self.N.OutPort( aParameterName ,
671 myPort = Port( aPort , self.N.Verbose )
674 print "Error while creating the Port : ",aParameterName
677 PyFunc = self.N.PyFunction()
678 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
679 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
681 ##########################################################
683 ##########################################################
684 def __init__( self , aNode , Verbose ):
686 self.N.Verbose = Verbose
687 def SetCoupled( self , anInLineNode ):
689 node = self.N.SetCoupled( anInLineNode )
694 node = self.N.Coupled()
697 node = INode( node , self.N.Verbose )
699 node = LNode( node , self.N.Verbose )
700 elif node.IsEndLoop() :
701 node = ELNode( node , self.N.Verbose )
702 elif node.IsSwitch() :
703 node = SNode( node , self.N.Verbose )
704 elif node.IsEndSwitch() :
705 node = ESNode( node , self.N.Verbose )
708 ##########################################################
710 ##########################################################
711 def __init__( self , aNode , Verbose ):
713 self.N.Verbose = Verbose
714 def SetPyInit( self , InitName , aPyFunction ):
715 return self.N.SetPyInit( InitName , aPyFunction )
717 return self.N.PyInit()
718 def PyInitName( self ) :
719 return self.N.PyInitName()
721 PyFunc = self.N.PyFunction()
722 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
723 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
724 def SetPyMore( self , MoreName , aPyFunction ):
725 return self.N.SetPyMore( MoreName , aPyFunction )
727 return self.N.PyMore()
728 def PyMoreName( self ) :
729 return self.N.PyMoreName()
731 PyMore = self.N.PyMore()
732 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
733 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
734 def SetPyNext( self , NextName , aPyFunction ):
735 return self.N.SetPyNext( NextName , aPyFunction )
737 return self.N.PyNext()
738 def PyNextName( self ) :
739 return self.N.PyNextName()
741 PyNext = self.N.PyNext()
742 PyNext = self.Edit( self.N.PyNextName() , PyNext )
743 self.N.SetPyNext( self.N.PyNextName() , PyNext )
745 ##########################################################
747 ##########################################################
748 def __init__( self , aNode , Verbose ):
750 self.N.Verbose = Verbose
752 ##########################################################
754 ##########################################################
755 def __init__( self , aNode , Verbose ):
757 self.N.Verbose = Verbose
759 ##########################################################
761 ##########################################################
762 def __init__( self , aNode , Verbose ):
764 self.N.Verbose = Verbose
766 ##########################################################
767 #class ServicesParameter_Swig :
768 ##########################################################
769 # def __init__( self , aServicesParameter ):
770 # self.Parametertype = aServicesParameter.Parametertype
771 # self.Parametername = aServicesParameter.Parametername
773 ##########################################################
775 ##########################################################
776 def __init__( self , aName ):
778 graph = SuperVision.Graph( aName )
781 graph = aName.G.Copy()
785 if graph.IsStreamGraph() :
786 aGraph = graph.ToStreamGraph()
788 graph = StreamGraph( aGraph )
790 print "Graph creation failed"
796 print "Graph creation failed"
797 def CNode( self , *args ):
798 if len( args ) == 1 :
801 aComponent = args[ 0 ]
802 anInterface = args[ 1 ]
804 NodeComponent = modulecatalog.GetComponent( aComponent )
805 aService = NodeComponent.GetService( anInterface , aService )
806 aNode = self.G.CNode( aService )
808 myNode = CNode( aNode , self.G.Verbose )
810 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
814 def Node( self , aComponent , anInterface , aService ):
815 #if SuperVision.Swig :
816 #aService = Service_Swig( aService )
817 return self.FNode( aComponent , anInterface , aService )
818 def FNodeImpl( self , aComponent , anInterface , aService, isCimpl ):
819 NodeComponent = modulecatalog.GetComponent( aComponent )
820 aService = NodeComponent.GetService( anInterface , aService )
821 aNode = self.G.FNode( aComponent , anInterface , aService, isCimpl )
823 aNode.isCimpl = isCimpl
824 myNode = FNode( aNode , self.G.Verbose )
826 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
830 def FNode( self , aComponent , anInterface , aService ):
831 # create node with C++ implementation type by default
832 NodeComponent = modulecatalog.GetComponent( aComponent )
833 aService = NodeComponent.GetService( anInterface , aService )
834 #if SuperVision.Swig :
835 #aService = Service_Swig( aService )
836 aNode = self.G.FNode( aComponent , anInterface , aService, SALOME_ModuleCatalog.SO )
839 myNode = FNode( aNode , self.G.Verbose )
841 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
845 def INode( self , FuncName , aPythonFunction ):
846 aNode = self.G.INode( FuncName , aPythonFunction )
848 myNode = INode( aNode , self.G.Verbose )
850 ErrMsg = "Failed to create a Node"
854 def GNode( self , FuncName , aPythonFunction , anINode ):
855 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
857 myNode = GNode( aNode , self.G.Verbose )
859 ErrMsg = "Failed to create a Node"
863 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
864 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
866 myNode = LNode( aNode , self.G.Verbose )
867 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
868 return myNode,myEndOfLoop
869 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
873 def SNode( self , FuncName , aPythonFunction ):
874 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
876 myNode = SNode( aNode , self.G.Verbose )
877 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
878 return myNode,myEndOfSwitch
879 ErrMsg = "Failed to create a Node"
883 def MNode( self , aGraphXml ):
884 aMNode = self.G.MNode( aGraphXml )
886 myMNode = MNode( aMNode , self.G.Verbose )
888 ErrMsg = "Failed to create a MNode"
892 def GraphMNode( self , aGraph ):
893 aGraphMNode = self.G.GraphMNode( aGraph.G )
894 if aGraphMNode != None :
895 myMNode = MNode( aGraphMNode , self.G.Verbose )
897 ErrMsg = "Failed to create a MNode"
901 def FlowObjRef( self ) :
902 aGraph = self.G.FlowObjRef()
904 myGraph = Graph( aGraph )
907 def StreamObjRef( self ) :
908 aGraph = self.G.StreamObjRef()
910 myGraph = StreamGraph( aGraph )
913 def PrintService( self , aComponent , anInterface , aService ):
914 NodeComponent = modulecatalog.GetComponent( aComponent )
915 aService = NodeComponent.GetService( anInterface , aService )
916 print "ServiceName ",aService.ServiceName," :"
917 lenin = len( aService.ServiceinParameter )
918 print " ",lenin," input argument(s) :"
921 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
923 lenout = len( aService.ServiceoutParameter )
924 print " ",lenout," output argument(s) :"
927 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
929 def Link( self , aFromNodePort , aToNodePort ):
930 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
932 myLink = Link( aLink , self.G.Verbose )
934 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
938 def Messages( self ):
939 return self.G.Messages()
940 def Import( self , anXmlFileName ):
941 return self.G.Import( anXmlFileName )
942 def Export( self , anXmlFileName ):
943 return self.G.Export( anXmlFileName )
944 def IsReadOnly( self ) :
945 return self.G.IsReadOnly()
946 def ComponentRef( self , aFactoryServer , aComponent ) :
947 return self.G.ComponentRef( aFactoryServer , aComponent )
949 return self.G.IsValid()
950 def IsExecutable( self ):
951 return self.G.IsExecutable()
952 def IsEditing( self ):
953 return self.G.IsEditing()
954 def IsExecuting( self ):
955 return self.G.IsExecuting()
956 def LevelMax( self ):
957 return self.G.LevelMax()
958 def ThreadsMax( self ):
959 return self.G.ThreadsMax()
960 def SubGraphsNumber( self ):
961 return self.G.SubGraphsNumber()
962 def LevelNodes( self , aLevel ):
963 nodes = self.G.LevelNodes( aLevel )
964 return self.nodesTuple( nodes )
965 def Run( self , *args ):
967 aService = self.Service()
971 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
972 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
976 def Start( self , *args ):
978 aService = self.Service()
982 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
983 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
986 return self.G.Start()
988 sts,aNode,anEvent,aState = self.G.Event()
990 return sts,aNode,anEvent,aState
991 def EventNoW( self ):
992 sts,aNode,anEvent,aState = self.G.EventNoW()
994 return sts,aNode,anEvent,aState
996 sts,aNode,anEvent,aState = self.G.EventW()
998 return sts,aNode,anEvent,aState
1001 sts,aNode,anEvent,aState = self.G.EventW()
1003 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
1005 def Threads( self ):
1006 return self.G.Threads()
1007 def SuspendedThreads( self ):
1008 return self.G.SuspendedThreads()
1009 def LastLevelDone( self ):
1010 return self.G.LastLevelDone()
1011 def Verbose( self , verbose ):
1012 preverbose = self.G.Verbose
1013 self.G.Verbose = verbose
1016 nodes = self.G.Nodes()
1017 return self.nodesTuple( nodes )
1018 def nodesTuple( self , nodes ) :
1019 n = len( nodes.CNodes )
1024 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
1027 n = len( nodes.FNodes )
1030 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
1033 n = len( nodes.INodes )
1036 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
1039 n = len( nodes.GNodes )
1042 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
1045 n = len( nodes.LNodes )
1048 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
1051 n = len( nodes.ELNodes )
1054 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
1057 n = len( nodes.SNodes )
1060 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
1063 n = len( nodes.ESNodes )
1066 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
1069 n = len( nodes.Graphs )
1072 pynodes.append( MNode( nodes.Graphs[i] , self.G.Verbose ) )
1076 def ListNodes( self , *args ):
1077 nodes = self.Nodes()
1080 listofnodes = nodes[ 0 ].Name()
1082 while i < len( nodes ) :
1083 listofnodes = listofnodes + ',' + nodes[ i ].Name()
1086 if len( args ) == 0 :
1087 aName = self.N.Name()
1090 if len( nodes ) == 1 :
1091 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
1093 listofnodes = listofnodes + " = " + aName + ".Nodes()"
1095 def PrintNodes( self ):
1096 nodes = self.Nodes()
1103 def PrintThreads( self ):
1104 nodes = self.Nodes()
1106 while i < len( nodes ) :
1107 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i]
1110 links = self.G.GLinks()
1112 linkslen = len( links )
1113 #print 'GLinks ',linkslen,'Links'
1114 while i < linkslen :
1115 links[ i ] = Link( links[i] , self.G.Verbose )
1117 def GStreamLinks( self ):
1118 streamlinks = self.G.GStreamLinks()
1120 #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
1121 while i < len( streamlinks ) :
1122 streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
1125 def GAllLinks( self ) :
1126 alllinks = self.G.GLinks()
1127 lenlinks = len( alllinks )
1129 while i < lenlinks :
1130 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
1132 links = self.G.StreamLinks()
1134 while j < len(links) :
1135 alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
1139 def ListLinks( self , *args ):
1140 links = self.GAllLinks()
1142 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
1143 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
1144 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
1145 listoflinks = listoflinks + links[ 0 ].InPort().Name()
1147 while i < len( links ) :
1148 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
1149 listoflinks = listoflinks + links[ i ].OutPort().Name()
1150 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
1151 listoflinks = listoflinks + links[ i ].InPort().Name()
1154 if len( args ) == 0 :
1155 aName = self.N.Name()
1158 if len( links ) == 1 :
1159 listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
1161 listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
1163 def PrintLinks( self ):
1164 links = self.GAllLinks()
1166 while i < len( links ) :
1169 def SubGraphsNodes( self , ):
1170 graphs = self.G.SubGraphsNodes()
1173 while i < len( graphs ) :
1174 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1175 outgraphs[ i ].Merge( graphs[i] )
1179 aCopy = self.G.Copy()
1181 myCopy = Graph( aCopy )
1183 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1187 def ToStreamGraph( self ):
1188 aGraph = self.G.ToStreamGraph()
1190 return StreamGraph( aGraph )
1192 def SubGraphsNodes( self , aSubGraphsNumber ):
1193 nodes = self.G.SubGraphsNodes( aSubGraphsNumber )
1194 return self.nodesTuple( nodes )
1195 def Merge( self , aGraph ):
1196 return self.G.Merge( aGraph.G )
1197 def Destroy( self ):
1200 ##########################################################
1201 class GraphE(Graph):
1202 ##########################################################
1203 def __init__( self , aName ):
1204 graph = SuperVision.GraphE( aName )
1209 def ToStreamGraph( self ):
1210 aGraph = self.G.ToStreamGraph()
1212 return StreamGraphE( aGraph )
1215 ##########################################################
1217 ##########################################################
1218 def __init__( self , aMNode , Verbose ):
1220 self.G.Verbose = Verbose
1222 self.N.Verbose = Verbose
1224 ##########################################################
1225 class StreamGraph(Graph):
1226 ##########################################################
1227 def __init__( self , aName ):
1229 graph = SuperVision.StreamGraph( aName )
1232 graph = aName.G.StreamCopy()
1241 print "StreamGraph creation failed"
1242 def StreamCopy( self ):
1243 aCopy = self.G.StreamCopy()
1245 myCopy = StreamGraph( aCopy )
1247 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1251 def StreamLink( self , anOutStreamPort , anInStreamPort ) :
1252 aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
1253 if aStreamLink!= None:
1254 myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
1256 ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
1260 def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
1261 return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
1262 def StreamParams( self ):
1263 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
1264 return Timeout,DataStreamTrace,DeltaTime
1265 def ToFlowGraph( self ):
1266 return self.G.ToFlowGraph()
1267 def SubStreamGraphsNumber( self ):
1268 return self.G.SubStreamGraphsNumber()
1269 def SubStreamGraphsNodes( self , aSubStreamGraphsNumber ):
1270 nodes = self.G.SubStreamGraphsNodes( aSubStreamGraphsNumber )
1271 return self.nodesTuple( nodes )
1272 def StreamMerge( self , aStreamGraph ):
1273 return self.G.StreamMerge( aStreamGraph.G )
1275 ##########################################################
1276 class StreamGraphE(StreamGraph):
1277 ##########################################################
1278 def __init__( self , aName ):
1279 graph = SuperVision.StreamGraphE( aName )
1285 ##########################################################
1287 ##########################################################
1288 def __init__( self , aValue , Verbose ):
1290 self.V.Verbose = Verbose
1291 def ToString( self ):
1292 return self.V.ToString()
1294 return self.V.ToAny()
1295 def Destroy( self ):
1298 ##########################################################
1300 ##########################################################
1301 def __init__( self , aPort , Verbose ):
1303 self.P.Verbose = Verbose
1304 def Input( self , *args ):
1305 types, realargs = getRealArgs(self.P,args)
1306 fn = bs_AddInput_valuedict[types]
1307 anInput = apply( fn, realargs)
1310 aNode = self.P.Node()
1312 if aNode.IsComputing() :
1313 myNode = CNode( aNode , self.P.Verbose )
1314 elif aNode.IsFactory() :
1315 myNode = FNode( aNode , self.P.Verbose )
1316 elif aNode.IsInLine() :
1317 myNode = INode( aNode , self.P.Verbose )
1318 elif aNode.IsGOTO() :
1319 myNode = GNode( aNode , self.P.Verbose )
1320 elif aNode.IsLoop() :
1321 myNode = LNode( aNode , self.P.Verbose )
1322 elif aNode.IsEndLoop() :
1323 myNode = ELNode( aNode , self.P.Verbose )
1324 elif aNode.IsSwitch() :
1325 myNode = SNode( aNode , self.P.Verbose )
1326 elif aNode.IsEndSwitch() :
1327 myNode = ESNode( aNode , self.P.Verbose )
1333 return self.P.Name()
1335 return self.P.Type()
1337 aLink = self.P.Link()
1339 myLink = Link( aLink , self.P.Verbose )
1341 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1346 links = self.P.Links()
1348 while i < len( links ) :
1349 links[ i ] = Link( links[i] , self.P.Verbose )
1352 def PrintLinks( self ):
1353 links = self.P.Links()
1355 while i < len( links ) :
1356 Link( links[ i ] , self.P.Verbose ).Print()
1358 def IsInput( self ):
1359 return self.P.IsInput()
1360 def IsLinked( self ):
1361 return self.P.IsLinked()
1362 def HasInput( self ):
1363 return self.P.HasInput()
1365 return self.P.Kind()
1366 def IsParam( self ):
1367 return self.P.IsParam()
1369 return self.P.IsGate()
1371 return self.P.IsLoop()
1372 def IsInLine( self ):
1373 return self.P.IsInLine()
1374 def IsSwitch( self ):
1375 return self.P.IsSwitch()
1376 def IsEndSwitch( self ):
1377 return self.P.IsEndSwitch()
1378 def IsDataStream( self ):
1379 return self.P.IsDataStream()
1380 # def IsBus( self ):
1381 # return self.P.IsBus()
1383 return self.P.Done()
1385 return self.P.State()
1386 def ToString( self ):
1387 return self.P.ToString()
1389 return self.P.ToAny()
1391 if self.P.IsInput() :
1392 if self.P.IsLinked() :
1393 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1395 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1397 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1398 def Destroy( self ):
1401 ##########################################################
1402 class StreamPort(Port):
1403 ##########################################################
1404 def __init__( self , aPort , Verbose ):
1406 self.P.Verbose = Verbose
1407 def StreamLink( self ) :
1408 return self.P.StreamLink()
1409 def Dependency( self ) :
1410 return self.P.Dependency()
1411 def SetDependency( self , aDependency ) :
1412 return self.P.SetDependency( aDependency )
1413 def Params( self ) :
1414 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
1415 return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
1416 def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
1417 return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
1418 def NumberOfValues( self ) :
1419 return self.P.NumberOfValues()
1420 def SetNumberOfValues( self , aNumberOfValues ) :
1421 return self.P.SetNumberOfValues( aNumberOfValues )
1423 ##########################################################
1425 ##########################################################
1426 def __init__( self , aLink , Verbose ):
1428 self.L.Verbose = Verbose
1429 def OutPort( self ):
1430 aPort = self.L.OutPort()
1432 myPort = Port( aPort , self.L.Verbose )
1435 print "Error while getting the Port : "
1438 aPort = self.L.InPort()
1440 myPort = Port( aPort , self.L.Verbose )
1443 print "Error while getting the Port : "
1446 anOutPort = self.L.OutPort()
1447 anOutPortName = anOutPort.Name()
1448 anOutPortKind = anOutPort.Kind()
1449 anOutPortValue = anOutPort.ToString()
1450 anOutNode = anOutPort.Node()
1451 anOutNodeName = anOutNode.Name()
1452 anInPort = self.L.InPort()
1453 anInPortName = anInPort.Name()
1454 anInPortKind = anInPort.Kind()
1455 anInNode = anInPort.Node()
1456 anInNodeName = anInNode.Name()
1457 print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
1458 def CoordsSize( self ):
1459 return self.L.CoordsSize()
1460 def AddCoord( self , index , X , Y ):
1461 return self.L.AddCoord( index , X , Y )
1462 def ChangeCoord( self , index , X , Y ):
1463 return self.L.ChangeCoord( index , X , Y )
1464 def RemoveCoord( self , index ):
1465 return self.L.RemoveCoord( index )
1466 def Coords( self , index ):
1467 return self.L.Coords( index )
1468 def destroy( self ):
1473 ##########################################################
1474 class StreamLink(Link):
1475 ##########################################################
1476 def __init__( self , aLink , Verbose ):
1478 self.L.Verbose = Verbose
1479 def OutStreamPort( self ):
1480 aPort = self.L.OutStreamPort()
1482 myPort = StreamPort( aPort , self.L.Verbose )
1485 print "Error while getting the Port : "
1487 def InStreamPort( self ):
1488 aPort = self.L.InStreamPort()
1490 myPort = StreamPort( aPort , self.L.Verbose )
1493 print "Error while getting the Port : "