3 # SUPERV Supervision : contains the implementation of interfaces of SuperVision described in SUPERV.idl
5 # Copyright (C) 2003 CEA/DEN, EDF R&D
9 # File : batchmode_SuperV.py
13 from batchmode_salome import orb
14 from batchmode_salome import lcc
15 from batchmode_salome import naming_service
16 from batchmode_salome import CORBA
17 from batchmode_salome import myStudy
20 from LifeCycleCORBA import *
21 from SALOME_NamingServicePy import *
24 from batchmode_salome import *
26 # from libSuperVision_Swig import SuperV_Swig
27 # print 'SuperV_Swig imported'
30 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
31 lcc = LifeCycleCORBA(orb)
32 naming_service = SALOME_NamingServicePy_i(orb)
37 import SALOMEDS_Attributes_idl
39 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
40 # SuperVision.Swig = 1
41 # print 'SuperV_Swig created'
43 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
44 # SuperVision.Swig = 0
45 # print 'Supervision Component loaded'
47 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
50 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
52 myBuilder = myStudy.NewBuilder()
53 father = myStudy.FindComponent("SUPERV")
55 father = myBuilder.NewComponent("SUPERV")
56 A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
57 FName = A1._narrow(SALOMEDS.AttributeName)
58 #FName.SetValue("Supervision")
59 Comp = modulecatalog.GetComponent( "SUPERV" )
60 FName.SetValue(Comp._get_componentusername())
61 A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
62 aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
63 aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
64 myBuilder.DefineComponentInstance(father,SuperVision)
67 def PortInputFloat(obj, x):
68 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
70 def PortInputLong(obj, x):
71 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
73 def PortInputObject(obj, x):
75 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
77 return obj.Input( SuperVision.AnyValue( x ) )
79 def PortInputString(obj, x):
80 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
82 def InputFloat(obj, nodein_port, x):
83 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
85 def InputLong(obj, nodein_port, x):
86 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
88 def InputObject(obj, nodein_port, x):
90 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
92 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
94 def InputString(obj, nodein_port, x):
95 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
99 dataflow = SuperVision.getGraph(ior)
101 itr = myStudy.NewChildIterator(father)
104 res,A=item.FindAttribute("AttributeName")
106 aName = A._narrow(SALOMEDS.AttributeName)
107 if aName.Value() == name :
108 res, A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
109 anIOR = A._narrow(SALOMEDS.AttributeIOR);
110 anIOR.SetValue(dataflow.getIOR())
113 obj = myBuilder.NewObject(father)
114 A=myBuilder.FindOrCreateAttribute(obj, "AttributeName")
115 aName=A._narrow(SALOMEDS.AttributeName)
117 A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR")
118 anIOR = A._narrow(SALOMEDS.AttributeIOR)
119 anIOR.SetValue(dataflow.getIOR())
121 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
123 def getRealArgs(self,args):
129 types.append(typestring.match(self).group(1))
132 types.append(type(self))
133 realargs.append(self)
137 types.append(typestring.match(a).group(1))
140 types.append(type(a))
143 return tuple(types), tuple(realargs)
145 bs_AddInput_valuedict = {
146 (InstanceType, FloatType) : PortInputFloat,
147 (InstanceType, IntType) : PortInputLong,
148 (InstanceType, StringType) : PortInputString,
149 (InstanceType, InstanceType) : PortInputObject,
150 (InstanceType, StringType, FloatType) : InputFloat,
151 (InstanceType, StringType, IntType) : InputLong,
152 (InstanceType, StringType, StringType) : InputString,
153 (InstanceType, StringType, InstanceType) : InputObject,
154 (InstanceType, StringType, ListType) : InputObject,
158 def Args( aService , aNodeName , verbose ):
159 lenin = len( aService.ServiceinParameter )
160 infos = aNodeName + 'info = "'
161 infos = infos + 'NodeName : ' + aNodeName + '\\n'
162 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
163 infos = infos + 'PortNames : \\n'
164 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
167 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
168 valname = aNodeName + "\\\\"
169 valname = valname + aService.ServiceinParameter[ i ].Parametername
170 defnames = defnames + argname + " = " + "'" + valname + "' ; "
171 infos = infos + str(i) + '. ' + argname + ' : Input'
172 infos = infos + str(i) + ' '
173 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
174 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
176 lenout = len( aService.ServiceoutParameter )
179 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
180 valname = aNodeName + "\\\\"
181 valname = valname + aService.ServiceoutParameter[ i ].Parametername
182 defnames = defnames + argname + " = " + "'" + valname + "' ; "
183 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
184 infos = infos + str(i) + ' '
185 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
186 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
189 defnames = defnames + infos
191 defnames = defnames + " ; print " + aNodeName + "info"
194 def Service_Swig( aCatalogService ) :
195 aService = SuperVision.Service()
196 aService.ServiceName = aCatalogService.ServiceName
198 while i < len( aCatalogService.ServiceinParameter ) :
199 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
200 SuperVision.AddInParameter( aService , p )
203 while i < len( aCatalogService.ServiceoutParameter ) :
204 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
205 SuperVision.AddOutParameter( aService , p )
209 ##########################################################
211 ##########################################################
212 def __init__( self , aNode , Verbose ):
214 self.N.Verbose = Verbose
218 return self.N.Service()
221 def CreationDate( self ):
222 return self.N.CreationDate()
223 def LastUpdateDate( self ):
224 return self.N.LastUpdateDate()
226 return self.N.Version()
228 return self.N.Author()
230 return self.N.Comment()
232 def SetName( self , aNewName ):
233 return self.N.SetName( aNewName )
234 def SetAuthor( self , anAuthor ):
235 return self.N.SetAuthor( anAuthor )
236 def SetComment( self , aComment ):
237 return self.N.SetComment( aComment )
240 print "Name ",self.N.Name()
241 if self.N.IsFactory() :
242 print "ComponentName ",self.N.GetComponentName()
243 print "InterfaceName ",self.N.GetInterfaceName()
244 aService = self.N.Service()
245 print "Service Name ",aService.ServiceName
246 lenin = len( aService.ServiceinParameter )
247 print " ",lenin," input argument(s) :"
250 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
252 lenout = len( aService.ServiceoutParameter )
253 print " ",lenout," output argument(s) :"
256 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
258 aKind = self.N.Kind()
259 print "KindOfNode",aKind
260 aFirstCreation = self.N.CreationDate()
261 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
262 aLastModification = self.N.LastUpdateDate()
263 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
264 print "Version ",self.N.Version()
265 print "Author ",self.N.Author()
266 if self.N.IsFactory() :
267 print "Container ",self.N.GetContainer()
268 print "Comment ",self.N.Comment()
269 print "Coords ",self.N.X()," ",self.N.Y()
270 def Port( self , aPortName ):
271 aPort = self.N.Port( aPortName )
273 myPort = Port( aPort , self.N.Verbose )
276 print "Error while creating the Port : ",aPortName
278 def Input( self , *args ):
279 types, realargs = getRealArgs(self.N,args)
280 fn = bs_AddInput_valuedict[types]
281 anInput = apply( fn, realargs)
283 myInput = Port( anInput , self.N.Verbose )
285 ErrMsg = "Failed to create the Input"
289 # def BusPort( self , InOutParameterName , InOutParameterType ):
290 # sts,inp,outp = self.N.BusPort( InOutParameterName ,
291 # InOutParameterType )
292 # inp = Port( inp , self.N.Verbose )
293 # outp = Port( outp , self.N.Verbose )
294 # return sts,inp,outp
295 # def BusPorts( self , InputParameterName , InputParameterType ,
296 # OutputParameterName , OutputParameterType ):
297 # sts,inp,outp = self.N.BusPorts( InputParameterName ,
298 # InputParameterType ,
299 # OutputParameterName ,
300 # OutputParameterType )
301 # inp = Port( inp , self.N.Verbose )
302 # outp = Port( outp , self.N.Verbose )
303 # return sts,inp,outp
305 ports = self.N.Ports()
307 while i < len( ports ) :
308 ports[ i ] = Port( ports[i] , self.N.Verbose )
311 def ListPorts( self , *args ):
312 if len( args ) == 0 :
313 aName = self.N.Name()
316 ports = self.N.Ports()
319 portsname = ports[ 0 ].Name()
320 bs = portsname.find('\\')
322 portsname1,portsname2 = portsname.split('\\')
323 portsname = portsname1 + portsname2
324 if ports[ 0 ].IsInput():
325 listofports = aName + 'In' + portsname
327 listofports = aName + 'Out' + portsname
329 while i < len( ports ) :
330 portsname = ports[ i ].Name()
331 bs = portsname.find('\\')
333 portsname1,portsname2 = portsname.split('\\')
334 portsname = portsname1 + portsname2
335 if ports[ i ].IsInput():
336 listofports = listofports + ',' + aName + 'In' + portsname
338 listofports = listofports + ',' + aName + 'Out' + portsname
341 if len( ports ) == 1 :
342 listofports = "[" + listofports + "] = " + aName + ".Ports()"
344 listofports = listofports + " = " + aName + ".Ports()"
346 def PrintPorts( self ):
347 ports = self.N.Ports()
349 while i < len( ports ) :
351 if ports[ i ].IsInput() :
353 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
356 links = self.N.Links()
358 while i < len( links ) :
359 links[ i ] = Link( links[i] , self.N.Verbose )
362 def PrintLinks( self ):
365 while i < len( links ) :
369 return self.N.IsGraph()
370 def IsComputing( self ):
371 return self.N.IsComputing()
372 def IsFactory( self ):
373 return self.N.IsFactory()
374 def IsInLine( self ):
375 return self.N.IsInLine()
377 return self.N.IsGOTO()
379 return self.N.IsLoop()
380 def IsEndLoop( self ):
381 return self.N.IsEndLoop()
382 def IsSwitch( self ):
383 return self.N.IsSwitch()
384 def IsEndSwitch( self ):
385 return self.N.IsEndSwitch()
386 def SubGraph( self ):
387 return self.N.SubGraph()
389 return self.N.Thread()
390 def IsWaiting( self ):
391 return self.N.IsWaiting()
392 def IsRunning( self ):
393 return self.N.IsRunning()
395 return self.N.IsDone()
396 def IsSuspended( self ):
397 return self.N.IsSuspended()
399 return self.N.State()
401 return self.N.Control()
402 def ControlClear( self ):
403 return self.N.ControlClear()
404 def AutoState( self ):
405 return self.N.AutoState()
407 return self.N.ReadyW()
408 def RunningW( self ):
409 return self.N.RunningW()
411 return self.N.DoneW()
412 def SuspendedW( self ):
413 return self.N.SuspendedW()
415 return self.N.ReRun()
417 return self.N.ReStart()
418 def ReRunAt( self , aNodeName ):
419 return self.N.ReRunAt( aNodeName )
420 def ReStartAt( self , aNodeName ):
421 return self.N.ReStartAt( aNodeName )
426 def KillDone( self ):
427 return self.N.KillDone()
429 return self.N.Suspend()
430 def SuspendDone( self ):
431 return self.N.SuspendDone()
433 return self.N.Resume()
436 def Coords( self , X , Y ):
437 return self.N.Coords( X , Y )
445 return self.N.CpuUsed()
447 ##########################################################
449 ##########################################################
450 def __init__( self , aNode , Verbose ):
452 self.N.Verbose = Verbose
453 def GetComponentName( self ):
454 return self.N.GetComponentName()
455 def GetInterfaceName( self ):
456 return self.N._get_interfaceName()
457 def GetContainer( self ):
458 return self.N.GetContainer()
459 def SetComponentName( self , aComponentName ):
460 return self.N.SetComponentName( aComponentName )
461 def SetInterfaceName( self , anInterfaceName ):
462 return self.N.SetInterfaceName( anInterfaceName )
463 def SetContainer( self , aComputer ):
464 return self.N.SetContainer( aComputer )
466 ##########################################################
468 ##########################################################
469 def __init__( self , aNode , Verbose ):
471 self.N.Verbose = Verbose
472 def Edit( self , FuncName , PyFunc ) :
475 suf = str(random.randrange(1,10000))
476 file = '/tmp/' + FuncName + '_' + suf + '.py'
480 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
484 while ( i < len( PyFunc ) ) :
485 print i,'/',len( PyFunc ),PyFunc[ i ]
486 os.write( fd , PyFunc[ i ] + '\n' )
489 edit = '${EDITOR} ' + file
491 fd = os.open( file , os.O_RDONLY )
492 line = os.read( fd , 132 )
496 line = os.read( fd , 132 )
498 PyFunc = res.splitlines()
500 while i < len( PyFunc ) :
504 print "Open of",file,"failed."
506 def SetPyFunction( self , FuncName , aPyFunction ):
507 return self.N.SetPyFunction( FuncName , aPyFunction )
508 def PyFunction( self ):
509 return self.N.PyFunction()
510 def PyFuncName( self ):
511 return self.N.PyFuncName()
513 PyFunc = self.N.PyFunction()
514 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
515 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
516 def InPort( self , aParameterName , aParameterType ):
517 aPort = self.N.InPort( aParameterName ,
520 myPort = Port( aPort , self.N.Verbose )
523 print "Error while creating the Port : ",aParameterName
525 def OutPort( self , aParameterName , aParameterType ):
526 aPort = self.N.OutPort( aParameterName ,
529 myPort = Port( aPort , self.N.Verbose )
532 print "Error while creating the Port : ",aParameterName
535 ##########################################################
537 ##########################################################
538 def __init__( self , aNode , Verbose ):
540 self.N.Verbose = Verbose
541 def SetCoupled( self , anInLineNode ):
543 node = self.N.SetCoupled( anInLineNode )
548 node = self.N.Coupled()
551 node = INode( node , self.N.Verbose )
553 node = LNode( node , self.N.Verbose )
554 elif node.IsEndLoop() :
555 node = ELNode( node , self.N.Verbose )
556 elif node.IsSwitch() :
557 node = SNode( node , self.N.Verbose )
558 elif node.IsEndSwitch() :
559 node = ESNode( node , self.N.Verbose )
562 ##########################################################
564 ##########################################################
565 def __init__( self , aNode , Verbose ):
567 self.N.Verbose = Verbose
568 def SetPyInit( self , InitName , aPyFunction ):
569 return self.N.SetPyInit( InitName , aPyFunction )
571 return self.N.PyInit()
572 def PyInitName( self ) :
573 return self.N.PyInitName()
575 PyFunc = self.N.PyFunction()
576 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
577 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
578 def SetPyMore( self , MoreName , aPyFunction ):
579 return self.N.SetPyMore( MoreName , aPyFunction )
581 return self.N.PyMore()
582 def PyMoreName( self ) :
583 return self.N.PyMoreName()
585 PyMore = self.N.PyMore()
586 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
587 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
588 def SetPyNext( self , NextName , aPyFunction ):
589 return self.N.SetPyNext( NextName , aPyFunction )
591 return self.N.PyNext()
592 def PyNextName( self ) :
593 return self.N.PyNextName()
595 PyNext = self.N.PyNext()
596 PyNext = self.Edit( self.N.PyNextName() , PyNext )
597 self.N.SetPyNext( self.N.PyNextName() , PyNext )
599 ##########################################################
601 ##########################################################
602 def __init__( self , aNode , Verbose ):
604 self.N.Verbose = Verbose
606 ##########################################################
608 ##########################################################
609 def __init__( self , aNode , Verbose ):
611 self.N.Verbose = Verbose
613 ##########################################################
615 ##########################################################
616 def __init__( self , aNode , Verbose ):
618 self.N.Verbose = Verbose
620 ##########################################################
621 #class ServicesParameter_Swig :
622 ##########################################################
623 # def __init__( self , aServicesParameter ):
624 # self.Parametertype = aServicesParameter.Parametertype
625 # self.Parametername = aServicesParameter.Parametername
627 ##########################################################
629 ##########################################################
630 def __init__( self , aName ):
632 graph = SuperVision.Graph( aName )
635 graph = aName.G.Copy()
644 print "Graph creation failed"
645 def CNode( self , *args ):
646 if len( args ) == 1 :
649 aComponent = args[ 0 ]
650 anInterface = args[ 1 ]
652 NodeComponent = modulecatalog.GetComponent( aComponent )
653 aService = NodeComponent.GetService( anInterface , aService )
654 aNode = self.G.CNode( aService )
656 myNode = CNode( aNode , self.G.Verbose )
658 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
662 def Node( self , aComponent , anInterface , aService ):
663 if SuperVision.Swig :
664 aService = Service_Swig( aService )
665 return self.FNode( aComponent , anInterface , aService )
666 def FNode( self , aComponent , anInterface , aService ):
667 NodeComponent = modulecatalog.GetComponent( aComponent )
668 aService = NodeComponent.GetService( anInterface , aService )
669 if SuperVision.Swig :
670 aService = Service_Swig( aService )
671 aNode = self.G.FNode( aComponent , anInterface , aService )
673 myNode = FNode( aNode , self.G.Verbose )
675 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
679 def INode( self , FuncName , aPythonFunction ):
680 aNode = self.G.INode( FuncName , aPythonFunction )
682 myNode = INode( aNode , self.G.Verbose )
684 ErrMsg = "Failed to create a Node"
688 def GNode( self , FuncName , aPythonFunction , anINode ):
689 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
691 myNode = GNode( aNode , self.G.Verbose )
693 ErrMsg = "Failed to create a Node"
697 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
698 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
700 myNode = LNode( aNode , self.G.Verbose )
701 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
702 return myNode,myEndOfLoop
703 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
707 def SNode( self , FuncName , aPythonFunction ):
708 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
710 myNode = SNode( aNode , self.G.Verbose )
711 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
712 return myNode,myEndOfSwitch
713 ErrMsg = "Failed to create a Node"
717 # def LoopNode( self , aComponent , anInterface , aService , aNodeName ):
718 # NodeComponent = modulecatalog.GetComponent( aComponent )
719 # aService = NodeComponent.GetService( anInterface , aService )
720 # aNode,anEndNode = self.G.LoopNode( aComponent , anInterface , aService , aNodeName )
722 # myEndNode = anEndNode
724 # myNode = Node( aNode , self.G.Verbose )
725 # if anEndNode != None :
726 # myEndNode = Node( anEndNode , self.G.Verbose )
727 # if ( aNode != None ) & ( anEndNode != None ) :
728 # return myNode,myEndNode
729 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
730 # if self.G.Verbose :
732 # return aNode,anEndNode
733 # def SwitchNode( self , aComponent , anInterface , aService , aNodeName ):
734 # NodeComponent = modulecatalog.GetComponent( aComponent )
735 # aService = NodeComponent.GetService( anInterface , aService )
736 # aNode,anEndNode = self.G.SwitchNode( aComponent , anInterface , aService , aNodeName )
738 # myEndNode = anEndNode
740 # myNode = Node( aNode , self.G.Verbose )
741 # if anEndNode != None :
742 # myEndNode = Node( anEndNode , self.G.Verbose )
743 # if ( aNode != None ) & ( anEndNode != None ) :
744 # return myNode,myEndNode
745 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
746 # if self.G.Verbose :
748 # return aNode,anEndNode
749 # def LNode( self , aNodeName ):
750 # aNode = self.G.LNode( aNodeName )
752 # myNode = Node( aNode , self.G.Verbose )
754 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
755 # if self.G.Verbose :
758 # def LService( self , aComponent , anInterface , aService ):
759 # NodeComponent = modulecatalog.GetComponent( aComponent )
760 # aService = NodeComponent.GetService( anInterface , aService )
761 # aNode = self.G.LService( aComponent , anInterface , aService )
763 # myNode = Node( aNode , self.G.Verbose )
765 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
766 # if self.G.Verbose :
769 # def CNode( self , aNodeName ):
770 # aNode = self.G.CNode( aNodeName )
772 # myNode = Node( aNode , self.G.Verbose )
774 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
775 # if self.G.Verbose :
778 # def CService( self , aComponent , anInterface , aService ):
779 # NodeComponent = modulecatalog.GetComponent( aComponent )
780 # aService = NodeComponent.GetService( anInterface , aService )
781 # aNode = self.G.CService( aComponent , anInterface , aService )
783 # myNode = Node( aNode , self.G.Verbose )
785 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
786 # if self.G.Verbose :
789 def PrintService( self , aComponent , anInterface , aService ):
790 NodeComponent = modulecatalog.GetComponent( aComponent )
791 aService = NodeComponent.GetService( anInterface , aService )
792 print "ServiceName ",aService.ServiceName," :"
793 lenin = len( aService.ServiceinParameter )
794 print " ",lenin," input argument(s) :"
797 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
799 lenout = len( aService.ServiceoutParameter )
800 print " ",lenout," output argument(s) :"
803 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
805 def Link( self , aFromNodePort , aToNodePort ):
806 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
808 myLink = Link( aLink , self.G.Verbose )
810 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
814 def Import( self , anXmlFileName ):
815 return self.G.Import( anXmlFileName )
816 def Export( self , anXmlFileName ):
817 return self.G.Export( anXmlFileName )
818 def IsReadOnly( self ) :
819 return self.G.IsReadOnly()
820 def ComponentRef( self , aFactoryServer , aComponent ) :
821 return self.G.ComponentRef( aFactoryServer , aComponent )
823 return self.G.IsValid()
824 def IsExecutable( self ):
825 return self.G.IsExecutable()
826 def IsEditing( self ):
827 return self.G.IsEditing()
828 def IsExecuting( self ):
829 return self.G.IsExecuting()
830 def LevelMax( self ):
831 return self.G.LevelMax()
832 def ThreadsMax( self ):
833 return self.G.ThreadsMax()
834 def GraphsNumber( self ):
835 return self.G.GraphsNumber()
836 def LevelNodes( self , aLevel ):
837 nodes = self.G.LevelNodes( aLevel )
838 return self.nodesTuple( nodes )
839 def Run( self , *args ):
841 aService = self.Service()
845 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
846 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
850 def Start( self , *args ):
852 aService = self.Service()
856 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
857 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
860 return self.G.Start()
862 sts,aNode,anEvent,aState = self.G.Event()
864 return sts,aNode,anEvent,aState
865 def EventNoW( self ):
866 sts,aNode,anEvent,aState = self.G.EventNoW()
868 return sts,aNode,anEvent,aState
870 sts,aNode,anEvent,aState = self.G.EventW()
872 return sts,aNode,anEvent,aState
875 sts,aNode,anEvent,aState = self.G.EventW()
877 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
880 return self.G.Threads()
881 def SuspendedThreads( self ):
882 return self.G.SuspendedThreads()
883 def LastLevelDone( self ):
884 return self.G.LastLevelDone()
885 def Verbose( self , verbose ):
886 preverbose = self.G.Verbose
887 self.G.Verbose = verbose
890 nodes = self.G.Nodes()
891 return self.nodesTuple( nodes )
892 def nodesTuple( self , nodes ) :
893 n = len( nodes.CNodes )
898 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
901 n = len( nodes.FNodes )
904 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
907 n = len( nodes.INodes )
910 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
913 n = len( nodes.GNodes )
916 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
919 n = len( nodes.LNodes )
922 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
925 n = len( nodes.ELNodes )
928 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
931 n = len( nodes.SNodes )
934 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
937 n = len( nodes.ESNodes )
940 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
944 def ListNodes( self , *args ):
948 listofnodes = nodes[ 0 ].Name()
950 while i < len( nodes ) :
951 listofnodes = listofnodes + ',' + nodes[ i ].Name()
954 if len( args ) == 0 :
955 aName = self.N.Name()
958 if len( nodes ) == 1 :
959 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
961 listofnodes = listofnodes + " = " + aName + ".Nodes()"
963 def PrintNodes( self ):
971 def PrintThreads( self ):
974 while i < len( nodes ) :
975 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i].AutoState()
978 links = self.G.GLinks()
980 while i < len( links ) :
981 links[ i ] = Link( links[i] , self.G.Verbose )
984 def ListLinks( self , *args ):
985 links = self.G.GLinks()
987 listoflinks = links[ 0 ].InPort().Node().Name()
988 listoflinks = listoflinks + links[ 0 ].InPort().Name()
990 while i < len( links ) :
991 listoflinks = listoflinks + ',' + links[ i ].InPort().Node().Name()
992 listoflinks = listoflinks + links[ i ].InPort().Name()
995 if len( args ) == 0 :
996 aName = self.N.Name()
999 if len( links ) == 1 :
1000 listoflinks = "[" + listoflinks + "] = " + aName + ".GLinks()"
1002 listoflinks = listoflinks + " = " + aName + ".GLinks()"
1004 def PrintLinks( self ):
1005 links = self.G.GLinks()
1007 while i < len( links ) :
1008 Link( links[ i ] , self.G.Verbose ).Print()
1011 graphs = self.G.Graphs()
1014 while i < len( graphs ) :
1015 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1016 outgraphs[ i ].Merge( graphs[i] )
1020 aCopy = self.G.Copy()
1022 myCopy = Graph( aCopy )
1024 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1028 def Merge( self , aGraph ):
1029 return self.G.Merge( aGraph.G )
1030 def Destroy( self ):
1033 ##########################################################
1034 class GraphE(Graph):
1035 ##########################################################
1036 def __init__( self , aName ):
1037 graph = SuperVision.GraphE( aName )
1043 ##########################################################
1045 ##########################################################
1046 def __init__( self , aValue , Verbose ):
1048 self.V.Verbose = Verbose
1049 def ToString( self ):
1050 return self.V.ToString()
1052 return self.V.ToAny()
1053 def Destroy( self ):
1056 ##########################################################
1058 ##########################################################
1059 def __init__( self , aPort , Verbose ):
1061 self.P.Verbose = Verbose
1062 def Input( self , *args ):
1063 types, realargs = getRealArgs(self.P,args)
1064 fn = bs_AddInput_valuedict[types]
1065 anInput = apply( fn, realargs)
1068 aNode = self.P.Node()
1070 if aNode.IsComputing() :
1071 myNode = CNode( aNode , self.P.Verbose )
1072 elif aNode.IsFactory() :
1073 myNode = FNode( aNode , self.P.Verbose )
1074 elif aNode.IsInLine() :
1075 myNode = INode( aNode , self.P.Verbose )
1076 elif aNode.IsGOTO() :
1077 myNode = GNode( aNode , self.P.Verbose )
1078 elif aNode.IsLoop() :
1079 myNode = LNode( aNode , self.P.Verbose )
1080 elif aNode.IsEndLoop() :
1081 myNode = ELNode( aNode , self.P.Verbose )
1082 elif aNode.IsSwitch() :
1083 myNode = SNode( aNode , self.P.Verbose )
1084 elif aNode.IsEndSwitch() :
1085 myNode = ESNode( aNode , self.P.Verbose )
1091 return self.P.Name()
1093 return self.P.Type()
1095 aLink = self.P.Link()
1097 myLink = Link( aLink , self.P.Verbose )
1099 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1104 links = self.P.Links()
1106 while i < len( links ) :
1107 links[ i ] = Link( links[i] , self.P.Verbose )
1110 def PrintLinks( self ):
1111 links = self.P.Links()
1113 while i < len( links ) :
1114 Link( links[ i ] , self.P.Verbose ).Print()
1116 def IsInput( self ):
1117 return self.P.IsInput()
1118 def IsLinked( self ):
1119 return self.P.IsLinked()
1120 def HasInput( self ):
1121 return self.P.HasInput()
1123 return self.P.Kind()
1124 def IsParam( self ):
1125 return self.P.IsParam()
1127 return self.P.IsGate()
1129 return self.P.IsLoop()
1130 def IsInLine( self ):
1131 return self.P.IsInLine()
1132 def IsSwitch( self ):
1133 return self.P.IsSwitch()
1134 def IsEndSwitch( self ):
1135 return self.P.IsEndSwitch()
1136 # def IsBus( self ):
1137 # return self.P.IsBus()
1139 return self.P.Done()
1141 return self.P.State()
1142 def ToString( self ):
1143 return self.P.ToString()
1145 return self.P.ToAny()
1147 if self.P.IsInput() :
1148 if self.P.IsLinked() :
1149 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1151 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1153 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1154 def Destroy( self ):
1157 ##########################################################
1159 ##########################################################
1160 def __init__( self , aLink , Verbose ):
1162 self.L.Verbose = Verbose
1163 def OutPort( self ):
1164 aPort = self.L.OutPort()
1166 myPort = Port( aPort , self.L.Verbose )
1169 print "Error while getting the Port : "
1172 aPort = self.L.InPort()
1174 myPort = Port( aPort , self.L.Verbose )
1177 print "Error while getting the Port : "
1180 anOutPort = self.L.OutPort()
1181 anInPort = self.L.InPort()
1182 print anOutPort.Node().Name(),'(',anOutPort.Name(),' ',anOutPort.Kind(),') =',anOutPort.ToString(),' --> ',anInPort.Node().Name(),'(',anInPort.Name(),')',' ',anInPort.Kind()
1183 def CoordsSize( self ):
1184 return self.L.CoordsSize()
1185 def AddCoord( self , index , X , Y ):
1186 return self.L.AddCoord( index , X , Y )
1187 def ChangeCoord( self , index , X , Y ):
1188 return self.L.ChangeCoord( index , X , Y )
1189 def RemoveCoord( self , index ):
1190 return self.L.RemoveCoord( index )
1191 def Coords( self , index ):
1192 return self.L.Coords( index )
1193 def destroy( self ):