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)
38 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
39 # SuperVision.Swig = 1
40 # print 'SuperV_Swig created'
42 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","Supervision")
43 # SuperVision.Swig = 0
44 # print 'Supervision Component loaded'
46 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","Supervision")
49 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
51 myBuilder = myStudy.NewBuilder()
52 father = myStudy.FindComponent("SUPERV")
54 father = myBuilder.NewComponent("SUPERV")
55 A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
56 FName = A1._narrow(SALOMEDS.AttributeName)
58 # FName.SetValue("Supervision")
59 Comp = modulecatalog.GetComponent( "SUPERV" )
60 FName.SetValue( Comp._get_componentusername() )
62 A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
63 aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
64 aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
65 myBuilder.DefineComponentInstance(father,SuperVision)
68 def PortInputFloat(obj, x):
69 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
71 def PortInputLong(obj, x):
72 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
74 def PortInputObject(obj, x):
76 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
78 return obj.Input( SuperVision.AnyValue( x ) )
80 def PortInputString(obj, x):
81 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
83 def InputFloat(obj, nodein_port, x):
84 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
86 def InputLong(obj, nodein_port, x):
87 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
89 def InputObject(obj, nodein_port, x):
91 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
93 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
95 def InputString(obj, nodein_port, x):
96 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
100 dataflow = SuperVision.getGraph(ior)
102 itr = myStudy.NewChildIterator(father)
105 res,A=item.FindAttribute("AttributeName")
107 aName = A._narrow(SALOMEDS.AttributeName)
108 if aName.Value() == name :
109 res, A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
110 anIOR = A._narrow(SALOMEDS.AttributeIOR);
111 anIOR.SetValue(dataflow.getIOR())
114 obj = myBuilder.NewObject(father)
115 A=myBuilder.FindOrCreateAttribute(obj, "AttributeName")
116 aName=A._narrow(SALOMEDS.AttributeName)
118 A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR")
119 anIOR = A._narrow(SALOMEDS.AttributeIOR)
120 anIOR.SetValue(dataflow.getIOR())
122 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
124 def getRealArgs(self,args):
130 types.append(typestring.match(self).group(1))
133 types.append(type(self))
134 realargs.append(self)
138 types.append(typestring.match(a).group(1))
141 types.append(type(a))
144 return tuple(types), tuple(realargs)
146 bs_AddInput_valuedict = {
147 (InstanceType, FloatType) : PortInputFloat,
148 (InstanceType, IntType) : PortInputLong,
149 (InstanceType, StringType) : PortInputString,
150 (InstanceType, InstanceType) : PortInputObject,
151 (InstanceType, StringType, FloatType) : InputFloat,
152 (InstanceType, StringType, IntType) : InputLong,
153 (InstanceType, StringType, StringType) : InputString,
154 (InstanceType, StringType, InstanceType) : InputObject,
155 (InstanceType, StringType, ListType) : InputObject,
159 def Args( aService , aNodeName , verbose ):
160 lenin = len( aService.ServiceinParameter )
161 infos = aNodeName + 'info = "'
162 infos = infos + 'NodeName : ' + aNodeName + '\\n'
163 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
164 infos = infos + 'PortNames : \\n'
165 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
168 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
169 valname = aNodeName + "\\\\"
170 valname = valname + aService.ServiceinParameter[ i ].Parametername
171 defnames = defnames + argname + " = " + "'" + valname + "' ; "
172 infos = infos + str(i) + '. ' + argname + ' : Input'
173 infos = infos + str(i) + ' '
174 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
175 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
177 lenout = len( aService.ServiceoutParameter )
180 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
181 valname = aNodeName + "\\\\"
182 valname = valname + aService.ServiceoutParameter[ i ].Parametername
183 defnames = defnames + argname + " = " + "'" + valname + "' ; "
184 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
185 infos = infos + str(i) + ' '
186 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
187 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
190 defnames = defnames + infos
192 defnames = defnames + " ; print " + aNodeName + "info"
195 def Service_Swig( aCatalogService ) :
196 aService = SuperVision.Service()
197 aService.ServiceName = aCatalogService.ServiceName
199 while i < len( aCatalogService.ServiceinParameter ) :
200 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
201 SuperVision.AddInParameter( aService , p )
204 while i < len( aCatalogService.ServiceoutParameter ) :
205 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
206 SuperVision.AddOutParameter( aService , p )
210 ##########################################################
212 ##########################################################
213 def __init__( self , aNode , Verbose ):
215 self.N.Verbose = Verbose
219 return self.N.Service()
222 def CreationDate( self ):
223 return self.N.CreationDate()
224 def LastUpdateDate( self ):
225 return self.N.LastUpdateDate()
227 return self.N.Version()
229 return self.N.Author()
231 return self.N.Comment()
233 def SetName( self , aNewName ):
234 return self.N.SetName( aNewName )
235 def SetAuthor( self , anAuthor ):
236 return self.N.SetAuthor( anAuthor )
237 def SetComment( self , aComment ):
238 return self.N.SetComment( aComment )
241 print "Name ",self.N.Name()
242 if self.N.IsFactory() :
243 print "ComponentName ",self.N.GetComponentName()
244 print "InterfaceName ",self.N.GetInterfaceName()
245 aService = self.N.Service()
246 print "Service Name ",aService.ServiceName
247 lenin = len( aService.ServiceinParameter )
248 print " ",lenin," input argument(s) :"
251 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
253 lenout = len( aService.ServiceoutParameter )
254 print " ",lenout," output argument(s) :"
257 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
259 aKind = self.N.Kind()
260 print "KindOfNode",aKind
261 aFirstCreation = self.N.CreationDate()
262 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
263 aLastModification = self.N.LastUpdateDate()
264 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
265 print "Version ",self.N.Version()
266 print "Author ",self.N.Author()
267 if self.N.IsFactory() :
268 print "Container ",self.N.GetContainer()
269 print "Comment ",self.N.Comment()
270 print "Coords ",self.N.X()," ",self.N.Y()
271 def Port( self , aPortName ):
272 aPort = self.N.Port( aPortName )
274 myPort = Port( aPort , self.N.Verbose )
277 print "Error while creating the Port : ",aPortName
279 def Input( self , *args ):
280 types, realargs = getRealArgs(self.N,args)
281 fn = bs_AddInput_valuedict[types]
282 anInput = apply( fn, realargs)
284 myInput = Port( anInput , self.N.Verbose )
286 ErrMsg = "Failed to create the Input"
290 # def BusPort( self , InOutParameterName , InOutParameterType ):
291 # sts,inp,outp = self.N.BusPort( InOutParameterName ,
292 # InOutParameterType )
293 # inp = Port( inp , self.N.Verbose )
294 # outp = Port( outp , self.N.Verbose )
295 # return sts,inp,outp
296 # def BusPorts( self , InputParameterName , InputParameterType ,
297 # OutputParameterName , OutputParameterType ):
298 # sts,inp,outp = self.N.BusPorts( InputParameterName ,
299 # InputParameterType ,
300 # OutputParameterName ,
301 # OutputParameterType )
302 # inp = Port( inp , self.N.Verbose )
303 # outp = Port( outp , self.N.Verbose )
304 # return sts,inp,outp
306 ports = self.N.Ports()
308 while i < len( ports ) :
309 ports[ i ] = Port( ports[i] , self.N.Verbose )
312 def ListPorts( self , *args ):
313 if len( args ) == 0 :
314 aName = self.N.Name()
317 ports = self.N.Ports()
320 portsname = ports[ 0 ].Name()
321 bs = portsname.find('\\')
323 portsname1,portsname2 = portsname.split('\\')
324 portsname = portsname1 + portsname2
325 listofports = aName + portsname
327 while i < len( ports ) :
328 portsname = ports[ i ].Name()
329 bs = portsname.find('\\')
331 portsname1,portsname2 = portsname.split('\\')
332 portsname = portsname1 + portsname2
333 listofports = listofports + ',' + aName + portsname
336 if len( ports ) == 1 :
337 listofports = "[" + listofports + "] = " + aName + ".Ports()"
339 listofports = listofports + " = " + aName + ".Ports()"
341 def PrintPorts( self ):
342 ports = self.N.Ports()
344 while i < len( ports ) :
346 if ports[ i ].IsInput() :
348 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
351 links = self.N.Links()
353 while i < len( links ) :
354 links[ i ] = Link( links[i] , self.N.Verbose )
357 def PrintLinks( self ):
360 while i < len( links ) :
364 return self.N.IsGraph()
365 def IsComputing( self ):
366 return self.N.IsComputing()
367 def IsFactory( self ):
368 return self.N.IsFactory()
369 def IsInLine( self ):
370 return self.N.IsInLine()
372 return self.N.IsGOTO()
374 return self.N.IsLoop()
375 def IsEndLoop( self ):
376 return self.N.IsEndLoop()
377 def IsSwitch( self ):
378 return self.N.IsSwitch()
379 def IsEndSwitch( self ):
380 return self.N.IsEndSwitch()
381 def SubGraph( self ):
382 return self.N.SubGraph()
384 return self.N.Thread()
385 def IsWaiting( self ):
386 return self.N.IsWaiting()
387 def IsRunning( self ):
388 return self.N.IsRunning()
390 return self.N.IsDone()
391 def IsSuspended( self ):
392 return self.N.IsSuspended()
394 return self.N.State()
396 return self.N.Control()
397 def ControlClear( self ):
398 return self.N.ControlClear()
399 def AutoState( self ):
400 return self.N.AutoState()
402 return self.N.ReadyW()
403 def RunningW( self ):
404 return self.N.RunningW()
406 return self.N.DoneW()
407 def SuspendedW( self ):
408 return self.N.SuspendedW()
410 return self.N.ReRun()
412 return self.N.ReStart()
413 def ReRunAt( self , aNodeName ):
414 return self.N.ReRunAt( aNodeName )
415 def ReStartAt( self , aNodeName ):
416 return self.N.ReStartAt( aNodeName )
421 def KillDone( self ):
422 return self.N.KillDone()
424 return self.N.Suspend()
425 def SuspendDone( self ):
426 return self.N.SuspendDone()
428 return self.N.Resume()
431 def Coords( self , X , Y ):
432 return self.N.Coords( X , Y )
440 ##########################################################
442 ##########################################################
443 def __init__( self , aNode , Verbose ):
445 self.N.Verbose = Verbose
446 def GetComponentName( self ):
447 return self.N.ComponentName()
448 def GetInterfaceName( self ):
449 return self.N._get_interfaceName()
450 def GetContainer( self ):
451 return self.N.Container()
452 def SetComponentName( self , aComponentName ):
453 return self.N.SetComponentName( aComponentName )
454 def SetInterfaceName( self , anInterfaceName ):
455 return self.N.SetInterfaceName( anInterfaceName )
456 def SetContainer( self , aComputer ):
457 return self.N.SetContainer( aComputer )
459 ##########################################################
461 ##########################################################
462 def __init__( self , aNode , Verbose ):
464 self.N.Verbose = Verbose
465 def Edit( self , FuncName , PyFunc ) :
466 file = '/tmp/' + FuncName + '.py'
468 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
469 while ( i < len( PyFunc ) ) :
470 os.write( fd , PyFunc[ i ] + '\n' )
472 edit = '${EDITOR} ' + file
474 fd = os.open( file , os.O_RDONLY )
475 line = os.read( fd , 132 )
479 line = os.read( fd , 132 )
480 PyFunc = res.splitlines()
482 while i < len( PyFunc ) :
486 def SetPyFunction( self , FuncName , aPyFunction ):
487 return self.N.SetPyFunction( FuncName , aPyFunction )
488 def PyFunction( self ):
489 return self.N.PyFunction()
490 def PyFuncName( self ):
491 return self.N.PyFuncName()
493 PyFunc = self.N.PyFunction()
494 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
495 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
496 def InPort( self , aParameterName , aParameterType ):
497 aPort = self.N.InPort( aParameterName ,
500 myPort = Port( aPort , self.N.Verbose )
503 print "Error while creating the Port : ",aParameterName
505 def OutPort( self , aParameterName , aParameterType ):
506 aPort = self.N.OutPort( aParameterName ,
509 myPort = Port( aPort , self.N.Verbose )
512 print "Error while creating the Port : ",aParameterName
515 ##########################################################
517 ##########################################################
518 def __init__( self , aNode , Verbose ):
520 self.N.Verbose = Verbose
521 def SetCoupled( self , anInLineNode ):
523 node = self.N.SetCoupled( anInLineNode )
528 node = self.N.Coupled()
531 node = INode( node , self.N.Verbose )
533 node = LNode( node , self.N.Verbose )
534 elif node.IsEndLoop() :
535 node = ELNode( node , self.N.Verbose )
536 elif node.IsSwitch() :
537 node = SNode( node , self.N.Verbose )
538 elif node.IsEndSwitch() :
539 node = ESNode( node , self.N.Verbose )
542 ##########################################################
544 ##########################################################
545 def __init__( self , aNode , Verbose ):
547 self.N.Verbose = Verbose
548 def SetPyInit( self , InitName , aPyFunction ):
549 return self.N.SetPyInit( InitName , aPyFunction )
551 return self.N.PyInit()
552 def PyInitName( self ) :
553 return self.N.PyInitName()
555 PyFunc = self.N.PyFunction()
556 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
557 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
558 def SetPyMore( self , MoreName , aPyFunction ):
559 return self.N.SetPyMore( MoreName , aPyFunction )
561 return self.N.PyMore()
562 def PyMoreName( self ) :
563 return self.N.PyMoreName()
565 PyMore = self.N.PyMore()
566 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
567 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
568 def SetPyNext( self , NextName , aPyFunction ):
569 return self.N.SetPyNext( NextName , aPyFunction )
571 return self.N.PyNext()
572 def PyNextName( self ) :
573 return self.N.PyNextName()
575 PyNext = self.N.PyNext()
576 PyNext = self.Edit( self.N.PyNextName() , PyNext )
577 self.N.SetPyNext( self.N.PyNextName() , PyNext )
579 ##########################################################
581 ##########################################################
582 def __init__( self , aNode , Verbose ):
584 self.N.Verbose = Verbose
586 ##########################################################
588 ##########################################################
589 def __init__( self , aNode , Verbose ):
591 self.N.Verbose = Verbose
593 ##########################################################
595 ##########################################################
596 def __init__( self , aNode , Verbose ):
598 self.N.Verbose = Verbose
600 ##########################################################
601 #class ServicesParameter_Swig :
602 ##########################################################
603 # def __init__( self , aServicesParameter ):
604 # self.Parametertype = aServicesParameter.Parametertype
605 # self.Parametername = aServicesParameter.Parametername
607 ##########################################################
609 ##########################################################
610 def __init__( self , aName ):
612 graph = SuperVision.Graph( aName )
615 graph = aName.G.Copy()
624 print "Graph creation failed"
625 def CNode( self , *args ):
626 if len( args ) == 1 :
629 aComponent = args[ 0 ]
630 anInterface = args[ 1 ]
632 NodeComponent = modulecatalog.GetComponent( aComponent )
633 aService = NodeComponent.GetService( anInterface , aService )
634 aNode = self.G.CNode( aService )
636 myNode = CNode( aNode , self.G.Verbose )
638 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
642 def Node( self , aComponent , anInterface , aService ):
643 if SuperVision.Swig :
644 aService = Service_Swig( aService )
645 return self.FNode( aComponent , anInterface , aService )
646 def FNode( self , aComponent , anInterface , aService ):
647 NodeComponent = modulecatalog.GetComponent( aComponent )
648 aService = NodeComponent.GetService( anInterface , aService )
649 if SuperVision.Swig :
650 aService = Service_Swig( aService )
651 aNode = self.G.FNode( aComponent , anInterface , aService )
653 myNode = FNode( aNode , self.G.Verbose )
655 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
659 def INode( self , FuncName , aPythonFunction ):
660 aNode = self.G.INode( FuncName , aPythonFunction )
662 myNode = INode( aNode , self.G.Verbose )
664 ErrMsg = "Failed to create a Node"
668 def GNode( self , FuncName , aPythonFunction , anINode ):
669 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
671 myNode = GNode( aNode , self.G.Verbose )
673 ErrMsg = "Failed to create a Node"
677 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
678 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
680 myNode = LNode( aNode , self.G.Verbose )
681 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
682 return myNode,myEndOfLoop
683 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
687 def SNode( self , FuncName , aPythonFunction ):
688 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
690 myNode = SNode( aNode , self.G.Verbose )
691 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
692 return myNode,myEndOfSwitch
693 ErrMsg = "Failed to create a Node"
697 # def LoopNode( self , aComponent , anInterface , aService , aNodeName ):
698 # NodeComponent = modulecatalog.GetComponent( aComponent )
699 # aService = NodeComponent.GetService( anInterface , aService )
700 # aNode,anEndNode = self.G.LoopNode( aComponent , anInterface , aService , aNodeName )
702 # myEndNode = anEndNode
704 # myNode = Node( aNode , self.G.Verbose )
705 # if anEndNode != None :
706 # myEndNode = Node( anEndNode , self.G.Verbose )
707 # if ( aNode != None ) & ( anEndNode != None ) :
708 # return myNode,myEndNode
709 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
710 # if self.G.Verbose :
712 # return aNode,anEndNode
713 # def SwitchNode( self , aComponent , anInterface , aService , aNodeName ):
714 # NodeComponent = modulecatalog.GetComponent( aComponent )
715 # aService = NodeComponent.GetService( anInterface , aService )
716 # aNode,anEndNode = self.G.SwitchNode( aComponent , anInterface , aService , aNodeName )
718 # myEndNode = anEndNode
720 # myNode = Node( aNode , self.G.Verbose )
721 # if anEndNode != None :
722 # myEndNode = Node( anEndNode , self.G.Verbose )
723 # if ( aNode != None ) & ( anEndNode != None ) :
724 # return myNode,myEndNode
725 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
726 # if self.G.Verbose :
728 # return aNode,anEndNode
729 # def LNode( self , aNodeName ):
730 # aNode = self.G.LNode( aNodeName )
732 # myNode = Node( aNode , self.G.Verbose )
734 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
735 # if self.G.Verbose :
738 # def LService( self , aComponent , anInterface , aService ):
739 # NodeComponent = modulecatalog.GetComponent( aComponent )
740 # aService = NodeComponent.GetService( anInterface , aService )
741 # aNode = self.G.LService( aComponent , anInterface , aService )
743 # myNode = Node( aNode , self.G.Verbose )
745 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
746 # if self.G.Verbose :
749 # def CNode( self , aNodeName ):
750 # aNode = self.G.CNode( 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 CService( self , aComponent , anInterface , aService ):
759 # NodeComponent = modulecatalog.GetComponent( aComponent )
760 # aService = NodeComponent.GetService( anInterface , aService )
761 # aNode = self.G.CService( 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 PrintService( self , aComponent , anInterface , aService ):
770 NodeComponent = modulecatalog.GetComponent( aComponent )
771 aService = NodeComponent.GetService( anInterface , aService )
772 print "ServiceName ",aService.ServiceName," :"
773 lenin = len( aService.ServiceinParameter )
774 print " ",lenin," input argument(s) :"
777 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
779 lenout = len( aService.ServiceoutParameter )
780 print " ",lenout," output argument(s) :"
783 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
785 def Link( self , aFromNodePort , aToNodePort ):
786 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
788 myLink = Link( aLink , self.G.Verbose )
790 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
794 def Import( self , anXmlFileName ):
795 return self.G.Import( anXmlFileName )
796 def Export( self , anXmlFileName ):
797 return self.G.Export( anXmlFileName )
798 def IsReadOnly( self ) :
799 return self.G.IsReadOnly()
800 def ComponentRef( self , aFactoryServer , aComponent ) :
801 return self.G.ComponentRef( aFactoryServer , aComponent )
803 return self.G.IsValid()
804 def IsExecutable( self ):
805 return self.G.IsExecutable()
806 def IsEditing( self ):
807 return self.G.IsEditing()
808 def IsExecuting( self ):
809 return self.G.IsExecuting()
810 def LevelMax( self ):
811 return self.G.LevelMax()
812 def ThreadsMax( self ):
813 return self.G.ThreadsMax()
814 def GraphsNumber( self ):
815 return self.G.GraphsNumber()
816 def LevelNodes( self , aLevel ):
817 nodes = self.G.LevelNodes( aLevel )
818 return self.nodesTuple( nodes )
819 def Run( self , *args ):
821 aService = self.Service()
825 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
826 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
830 def Start( self , *args ):
832 aService = self.Service()
836 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
837 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
840 return self.G.Start()
842 sts,aNode,anEvent,aState = self.G.Event()
844 return sts,aNode,anEvent,aState
846 sts,aNode,anEvent,aState = self.G.EventW()
848 return sts,aNode,anEvent,aState
851 sts,aNode,anEvent,aState = self.G.EventW()
853 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
856 return self.G.Threads()
857 def SuspendedThreads( self ):
858 return self.G.SuspendedThreads()
859 def LastLevelDone( self ):
860 return self.G.LastLevelDone()
861 def Verbose( self , verbose ):
862 preverbose = self.G.Verbose
863 self.G.Verbose = verbose
866 nodes = self.G.Nodes()
867 return self.nodesTuple( nodes )
868 def nodesTuple( self , nodes ) :
869 n = len( nodes.CNodes )
874 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
877 n = len( nodes.FNodes )
880 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
883 n = len( nodes.INodes )
886 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
889 n = len( nodes.GNodes )
892 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
895 n = len( nodes.LNodes )
898 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
901 n = len( nodes.ELNodes )
904 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
907 n = len( nodes.SNodes )
910 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
913 n = len( nodes.ESNodes )
916 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
920 def ListNodes( self , *args ):
924 listofnodes = nodes[ 0 ].Name()
926 while i < len( nodes ) :
927 listofnodes = listofnodes + ',' + nodes[ i ].Name()
930 if len( args ) == 0 :
931 aName = self.N.Name()
934 if len( nodes ) == 1 :
935 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
937 listofnodes = listofnodes + " = " + aName + ".Nodes()"
939 def PrintNodes( self ):
947 def PrintThreads( self ):
950 while i < len( nodes ) :
951 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i].AutoState()
954 links = self.G.GLinks()
956 while i < len( links ) :
957 links[ i ] = Link( links[i] , self.G.Verbose )
960 def ListLinks( self , *args ):
961 links = self.G.GLinks()
963 listoflinks = links[ 0 ].InPort().Node().Name()
964 listoflinks = listoflinks + links[ 0 ].InPort().Name()
966 while i < len( links ) :
967 listoflinks = listoflinks + ',' + links[ i ].InPort().Node().Name()
968 listoflinks = listoflinks + links[ i ].InPort().Name()
971 if len( args ) == 0 :
972 aName = self.N.Name()
975 if len( links ) == 1 :
976 listoflinks = "[" + listoflinks + "] = " + aName + ".GLinks()"
978 listoflinks = listoflinks + " = " + aName + ".GLinks()"
980 def PrintLinks( self ):
981 links = self.G.GLinks()
983 while i < len( links ) :
984 Link( links[ i ] , self.G.Verbose ).Print()
987 graphs = self.G.Graphs()
990 while i < len( graphs ) :
991 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
992 outgraphs[ i ].Merge( graphs[i] )
996 aCopy = self.G.Copy()
998 myCopy = Graph( aCopy )
1000 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1004 def Merge( self , aGraph ):
1005 return self.G.Merge( aGraph.G )
1006 def Destroy( self ):
1009 ##########################################################
1010 class GraphE(Graph):
1011 ##########################################################
1012 def __init__( self , aName ):
1013 graph = SuperVision.GraphE( aName )
1019 ##########################################################
1021 ##########################################################
1022 def __init__( self , aValue , Verbose ):
1024 self.V.Verbose = Verbose
1025 def ToString( self ):
1026 return self.V.ToString()
1028 return self.V.ToAny()
1029 def Destroy( self ):
1032 ##########################################################
1034 ##########################################################
1035 def __init__( self , aPort , Verbose ):
1037 self.P.Verbose = Verbose
1038 def Input( self , *args ):
1039 types, realargs = getRealArgs(self.P,args)
1040 fn = bs_AddInput_valuedict[types]
1041 anInput = apply( fn, realargs)
1044 aNode = self.P.Node()
1046 if aNode.IsComputing() :
1047 myNode = CNode( aNode , self.P.Verbose )
1048 elif aNode.IsFactory() :
1049 myNode = FNode( aNode , self.P.Verbose )
1050 elif aNode.IsInLine() :
1051 myNode = INode( aNode , self.P.Verbose )
1052 elif aNode.IsGOTO() :
1053 myNode = GNode( aNode , self.P.Verbose )
1054 elif aNode.IsLoop() :
1055 myNode = LNode( aNode , self.P.Verbose )
1056 elif aNode.IsEndLoop() :
1057 myNode = ELNode( aNode , self.P.Verbose )
1058 elif aNode.IsSwitch() :
1059 myNode = SNode( aNode , self.P.Verbose )
1060 elif aNode.IsEndSwitch() :
1061 myNode = ESNode( aNode , self.P.Verbose )
1067 return self.P.Name()
1069 return self.P.Type()
1071 aLink = self.P.Link()
1073 myLink = Link( aLink , self.P.Verbose )
1075 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1080 links = self.P.Links()
1082 while i < len( links ) :
1083 links[ i ] = Link( links[i] , self.P.Verbose )
1086 def PrintLinks( self ):
1087 links = self.P.Links()
1089 while i < len( links ) :
1090 Link( links[ i ] , self.P.Verbose ).Print()
1092 def IsInput( self ):
1093 return self.P.IsInput()
1094 def IsLinked( self ):
1095 return self.P.IsLinked()
1096 def HasInput( self ):
1097 return self.P.HasInput()
1099 return self.P.Kind()
1100 def IsParam( self ):
1101 return self.P.IsParam()
1103 return self.P.IsGate()
1105 return self.P.IsLoop()
1106 def IsInLine( self ):
1107 return self.P.IsInLine()
1108 def IsSwitch( self ):
1109 return self.P.IsSwitch()
1110 def IsEndSwitch( self ):
1111 return self.P.IsEndSwitch()
1112 # def IsBus( self ):
1113 # return self.P.IsBus()
1115 return self.P.Done()
1117 return self.P.State()
1118 def ToString( self ):
1119 return self.P.ToString()
1121 return self.P.ToAny()
1123 if self.P.IsInput() :
1124 if self.P.IsLinked() :
1125 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1127 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1129 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1130 def Destroy( self ):
1133 ##########################################################
1135 ##########################################################
1136 def __init__( self , aLink , Verbose ):
1138 self.L.Verbose = Verbose
1139 def OutPort( self ):
1140 aPort = self.L.OutPort()
1142 myPort = Port( aPort , self.L.Verbose )
1145 print "Error while getting the Port : "
1148 aPort = self.L.InPort()
1150 myPort = Port( aPort , self.L.Verbose )
1153 print "Error while getting the Port : "
1156 anOutPort = self.L.OutPort()
1157 anInPort = self.L.InPort()
1158 print anOutPort.Node().Name(),'(',anOutPort.Name(),' ',anOutPort.Kind(),') =',anOutPort.ToString(),' --> ',anInPort.Node().Name(),'(',anInPort.Name(),')',' ',anInPort.Kind()
1159 def CoordsSize( self ):
1160 return self.L.CoordsSize()
1161 def AddCoord( self , index , X , Y ):
1162 return self.L.AddCoord( index , X , Y )
1163 def ChangeCoord( self , index , X , Y ):
1164 return self.L.ChangeCoord( index , X , Y )
1165 def RemoveCoord( self , index ):
1166 return self.L.RemoveCoord( index )
1167 def Coords( self , index ):
1168 return self.L.Coords( index )
1169 def destroy( self ):