4 from batchmode_salome import orb
5 from batchmode_salome import lcc
6 from batchmode_salome import naming_service
7 from batchmode_salome import CORBA
8 from batchmode_salome import myStudy
11 from LifeCycleCORBA import *
12 from SALOME_NamingServicePy import *
15 from batchmode_salome import *
17 # from libSuperVision_Swig import SuperV_Swig
18 # print 'SuperV_Swig imported'
21 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
22 lcc = LifeCycleCORBA(orb)
23 naming_service = SALOME_NamingServicePy_i(orb)
30 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
31 # SuperVision.Swig = 1
32 # print 'SuperV_Swig created'
34 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
35 # SuperVision.Swig = 0
36 # print 'Supervision Component loaded'
38 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
41 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
43 myBuilder = myStudy.NewBuilder()
44 father = myStudy.FindComponent("SUPERV")
46 father = myBuilder.NewComponent("SUPERV")
47 A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
48 FName = A1._narrow(SALOMEDS.AttributeName)
49 FName.SetValue("Supervision")
50 A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
51 aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
52 aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
53 myBuilder.DefineComponentInstance(father,SuperVision)
56 def PortInputFloat(obj, x):
57 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
59 def PortInputLong(obj, x):
60 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
62 def PortInputObject(obj, x):
64 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
66 return obj.Input( SuperVision.AnyValue( x ) )
68 def PortInputString(obj, x):
69 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
71 def InputFloat(obj, nodein_port, x):
72 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
74 def InputLong(obj, nodein_port, x):
75 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
77 def InputObject(obj, nodein_port, x):
79 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
81 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
83 def InputString(obj, nodein_port, x):
84 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
88 dataflow = SuperVision.getGraph(ior)
90 itr = myStudy.NewChildIterator(father)
93 res,A=item.FindAttribute("AttributeName")
95 aName = A._narrow(SALOMEDS.AttributeName)
96 if aName.Value() == name :
97 res, A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
98 anIOR = A._narrow(SALOMEDS.AttributeIOR);
99 anIOR.SetValue(dataflow.getIOR())
102 obj = myBuilder.NewObject(father)
103 A=myBuilder.FindOrCreateAttribute(obj, "AttributeName")
104 aName=A._narrow(SALOMEDS.AttributeName)
106 A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR")
107 anIOR = A._narrow(SALOMEDS.AttributeIOR)
108 anIOR.SetValue(dataflow.getIOR())
110 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
112 def getRealArgs(self,args):
118 types.append(typestring.match(self).group(1))
121 types.append(type(self))
122 realargs.append(self)
126 types.append(typestring.match(a).group(1))
129 types.append(type(a))
132 return tuple(types), tuple(realargs)
134 bs_AddInput_valuedict = {
135 (InstanceType, FloatType) : PortInputFloat,
136 (InstanceType, IntType) : PortInputLong,
137 (InstanceType, StringType) : PortInputString,
138 (InstanceType, InstanceType) : PortInputObject,
139 (InstanceType, StringType, FloatType) : InputFloat,
140 (InstanceType, StringType, IntType) : InputLong,
141 (InstanceType, StringType, StringType) : InputString,
142 (InstanceType, StringType, InstanceType) : InputObject,
143 (InstanceType, StringType, ListType) : InputObject,
147 def Args( aService , aNodeName , verbose ):
148 lenin = len( aService.ServiceinParameter )
149 infos = aNodeName + 'info = "'
150 infos = infos + 'NodeName : ' + aNodeName + '\\n'
151 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
152 infos = infos + 'PortNames : \\n'
153 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
156 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
157 valname = aNodeName + "\\\\"
158 valname = valname + aService.ServiceinParameter[ i ].Parametername
159 defnames = defnames + argname + " = " + "'" + valname + "' ; "
160 infos = infos + str(i) + '. ' + argname + ' : Input'
161 infos = infos + str(i) + ' '
162 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
163 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
165 lenout = len( aService.ServiceoutParameter )
168 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
169 valname = aNodeName + "\\\\"
170 valname = valname + aService.ServiceoutParameter[ i ].Parametername
171 defnames = defnames + argname + " = " + "'" + valname + "' ; "
172 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
173 infos = infos + str(i) + ' '
174 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
175 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
178 defnames = defnames + infos
180 defnames = defnames + " ; print " + aNodeName + "info"
183 def Service_Swig( aCatalogService ) :
184 aService = SuperVision.Service()
185 aService.ServiceName = aCatalogService.ServiceName
187 while i < len( aCatalogService.ServiceinParameter ) :
188 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
189 SuperVision.AddInParameter( aService , p )
192 while i < len( aCatalogService.ServiceoutParameter ) :
193 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
194 SuperVision.AddOutParameter( aService , p )
198 ##########################################################
200 ##########################################################
201 def __init__( self , aNode , Verbose ):
203 self.N.Verbose = Verbose
207 return self.N.Service()
210 def CreationDate( self ):
211 return self.N.CreationDate()
212 def LastUpdateDate( self ):
213 return self.N.LastUpdateDate()
215 return self.N.Version()
217 return self.N.Author()
219 return self.N.Comment()
221 def SetName( self , aNewName ):
222 return self.N.SetName( aNewName )
223 def SetAuthor( self , anAuthor ):
224 return self.N.SetAuthor( anAuthor )
225 def SetComment( self , aComment ):
226 return self.N.SetComment( aComment )
229 print "Name ",self.N.Name()
230 if self.N.IsFactory() :
231 print "ComponentName ",self.N.GetComponentName()
232 print "InterfaceName ",self.N.GetInterfaceName()
233 aService = self.N.Service()
234 print "Service Name ",aService.ServiceName
235 lenin = len( aService.ServiceinParameter )
236 print " ",lenin," input argument(s) :"
239 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
241 lenout = len( aService.ServiceoutParameter )
242 print " ",lenout," output argument(s) :"
245 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
247 aKind = self.N.Kind()
248 print "KindOfNode",aKind
249 aFirstCreation = self.N.CreationDate()
250 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
251 aLastModification = self.N.LastUpdateDate()
252 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
253 print "Version ",self.N.Version()
254 print "Author ",self.N.Author()
255 if self.N.IsFactory() :
256 print "Container ",self.N.GetContainer()
257 print "Comment ",self.N.Comment()
258 print "Coords ",self.N.X()," ",self.N.Y()
259 def Port( self , aPortName ):
260 aPort = self.N.Port( aPortName )
262 myPort = Port( aPort , self.N.Verbose )
265 print "Error while creating the Port : ",aPortName
267 def Input( self , *args ):
268 types, realargs = getRealArgs(self.N,args)
269 fn = bs_AddInput_valuedict[types]
270 anInput = apply( fn, realargs)
272 myInput = Port( anInput , self.N.Verbose )
274 ErrMsg = "Failed to create the Input"
278 # def BusPort( self , InOutParameterName , InOutParameterType ):
279 # sts,inp,outp = self.N.BusPort( InOutParameterName ,
280 # InOutParameterType )
281 # inp = Port( inp , self.N.Verbose )
282 # outp = Port( outp , self.N.Verbose )
283 # return sts,inp,outp
284 # def BusPorts( self , InputParameterName , InputParameterType ,
285 # OutputParameterName , OutputParameterType ):
286 # sts,inp,outp = self.N.BusPorts( InputParameterName ,
287 # InputParameterType ,
288 # OutputParameterName ,
289 # OutputParameterType )
290 # inp = Port( inp , self.N.Verbose )
291 # outp = Port( outp , self.N.Verbose )
292 # return sts,inp,outp
294 ports = self.N.Ports()
296 while i < len( ports ) :
297 ports[ i ] = Port( ports[i] , self.N.Verbose )
300 def ListPorts( self , *args ):
301 if len( args ) == 0 :
302 aName = self.N.Name()
305 ports = self.N.Ports()
308 portsname = ports[ 0 ].Name()
309 bs = portsname.find('\\')
311 portsname1,portsname2 = portsname.split('\\')
312 portsname = portsname1 + portsname2
313 listofports = aName + portsname
315 while i < len( ports ) :
316 portsname = ports[ i ].Name()
317 bs = portsname.find('\\')
319 portsname1,portsname2 = portsname.split('\\')
320 portsname = portsname1 + portsname2
321 listofports = listofports + ',' + aName + portsname
324 if len( ports ) == 1 :
325 listofports = "[" + listofports + "] = " + aName + ".Ports()"
327 listofports = listofports + " = " + aName + ".Ports()"
329 def PrintPorts( self ):
330 ports = self.N.Ports()
332 while i < len( ports ) :
334 if ports[ i ].IsInput() :
336 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
339 links = self.N.Links()
341 while i < len( links ) :
342 links[ i ] = Link( links[i] , self.N.Verbose )
345 def PrintLinks( self ):
348 while i < len( links ) :
352 return self.N.IsGraph()
353 def IsComputing( self ):
354 return self.N.IsComputing()
355 def IsFactory( self ):
356 return self.N.IsFactory()
357 def IsInLine( self ):
358 return self.N.IsInLine()
360 return self.N.IsGOTO()
362 return self.N.IsLoop()
363 def IsEndLoop( self ):
364 return self.N.IsEndLoop()
365 def IsSwitch( self ):
366 return self.N.IsSwitch()
367 def IsEndSwitch( self ):
368 return self.N.IsEndSwitch()
369 def SubGraph( self ):
370 return self.N.SubGraph()
372 return self.N.Thread()
373 def IsWaiting( self ):
374 return self.N.IsWaiting()
375 def IsRunning( self ):
376 return self.N.IsRunning()
378 return self.N.IsDone()
379 def IsSuspended( self ):
380 return self.N.IsSuspended()
382 return self.N.State()
384 return self.N.Control()
385 def ControlClear( self ):
386 return self.N.ControlClear()
387 def AutoState( self ):
388 return self.N.AutoState()
390 return self.N.ReadyW()
391 def RunningW( self ):
392 return self.N.RunningW()
394 return self.N.DoneW()
395 def SuspendedW( self ):
396 return self.N.SuspendedW()
398 return self.N.ReRun()
400 return self.N.ReStart()
401 def ReRunAt( self , aNodeName ):
402 return self.N.ReRunAt( aNodeName )
403 def ReStartAt( self , aNodeName ):
404 return self.N.ReStartAt( aNodeName )
409 def KillDone( self ):
410 return self.N.KillDone()
412 return self.N.Suspend()
413 def SuspendDone( self ):
414 return self.N.SuspendDone()
416 return self.N.Resume()
419 def Coords( self , X , Y ):
420 return self.N.Coords( X , Y )
428 ##########################################################
430 ##########################################################
431 def __init__( self , aNode , Verbose ):
433 self.N.Verbose = Verbose
434 def GetComponentName( self ):
435 return self.N.ComponentName()
436 def GetInterfaceName( self ):
437 return self.N._get_interfaceName()
438 def GetContainer( self ):
439 return self.N.Container()
440 def SetComponentName( self , aComponentName ):
441 return self.N.SetComponentName( aComponentName )
442 def SetInterfaceName( self , anInterfaceName ):
443 return self.N.SetInterfaceName( anInterfaceName )
444 def SetContainer( self , aComputer ):
445 return self.N.SetContainer( aComputer )
447 ##########################################################
449 ##########################################################
450 def __init__( self , aNode , Verbose ):
452 self.N.Verbose = Verbose
453 def Edit( self , FuncName , PyFunc ) :
454 file = '/tmp/' + FuncName + '.py'
456 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
457 while ( i < len( PyFunc ) ) :
458 os.write( fd , PyFunc[ i ] + '\n' )
460 edit = '${EDITOR} ' + file
462 fd = os.open( file , os.O_RDONLY )
463 line = os.read( fd , 132 )
467 line = os.read( fd , 132 )
468 PyFunc = res.splitlines()
470 while i < len( PyFunc ) :
474 def SetPyFunction( self , FuncName , aPyFunction ):
475 return self.N.SetPyFunction( FuncName , aPyFunction )
476 def PyFunction( self ):
477 return self.N.PyFunction()
478 def PyFuncName( self ):
479 return self.N.PyFuncName()
481 PyFunc = self.N.PyFunction()
482 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
483 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
484 def InPort( self , aParameterName , aParameterType ):
485 aPort = self.N.InPort( aParameterName ,
488 myPort = Port( aPort , self.N.Verbose )
491 print "Error while creating the Port : ",aParameterName
493 def OutPort( self , aParameterName , aParameterType ):
494 aPort = self.N.OutPort( aParameterName ,
497 myPort = Port( aPort , self.N.Verbose )
500 print "Error while creating the Port : ",aParameterName
503 ##########################################################
505 ##########################################################
506 def __init__( self , aNode , Verbose ):
508 self.N.Verbose = Verbose
509 def SetCoupled( self , anInLineNode ):
511 node = self.N.SetCoupled( anInLineNode )
516 node = self.N.Coupled()
519 node = INode( node , self.N.Verbose )
521 node = LNode( node , self.N.Verbose )
522 elif node.IsEndLoop() :
523 node = ELNode( node , self.N.Verbose )
524 elif node.IsSwitch() :
525 node = SNode( node , self.N.Verbose )
526 elif node.IsEndSwitch() :
527 node = ESNode( node , self.N.Verbose )
530 ##########################################################
532 ##########################################################
533 def __init__( self , aNode , Verbose ):
535 self.N.Verbose = Verbose
536 def SetPyInit( self , InitName , aPyFunction ):
537 return self.N.SetPyInit( InitName , aPyFunction )
539 return self.N.PyInit()
540 def PyInitName( self ) :
541 return self.N.PyInitName()
543 PyFunc = self.N.PyFunction()
544 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
545 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
546 def SetPyMore( self , MoreName , aPyFunction ):
547 return self.N.SetPyMore( MoreName , aPyFunction )
549 return self.N.PyMore()
550 def PyMoreName( self ) :
551 return self.N.PyMoreName()
553 PyMore = self.N.PyMore()
554 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
555 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
556 def SetPyNext( self , NextName , aPyFunction ):
557 return self.N.SetPyNext( NextName , aPyFunction )
559 return self.N.PyNext()
560 def PyNextName( self ) :
561 return self.N.PyNextName()
563 PyNext = self.N.PyNext()
564 PyNext = self.Edit( self.N.PyNextName() , PyNext )
565 self.N.SetPyNext( self.N.PyNextName() , PyNext )
567 ##########################################################
569 ##########################################################
570 def __init__( self , aNode , Verbose ):
572 self.N.Verbose = Verbose
574 ##########################################################
576 ##########################################################
577 def __init__( self , aNode , Verbose ):
579 self.N.Verbose = Verbose
581 ##########################################################
583 ##########################################################
584 def __init__( self , aNode , Verbose ):
586 self.N.Verbose = Verbose
588 ##########################################################
589 #class ServicesParameter_Swig :
590 ##########################################################
591 # def __init__( self , aServicesParameter ):
592 # self.Parametertype = aServicesParameter.Parametertype
593 # self.Parametername = aServicesParameter.Parametername
595 ##########################################################
597 ##########################################################
598 def __init__( self , aName ):
600 graph = SuperVision.Graph( aName )
603 graph = aName.G.Copy()
612 print "Graph creation failed"
613 def CNode( self , *args ):
614 if len( args ) == 1 :
617 aComponent = args[ 0 ]
618 anInterface = args[ 1 ]
620 NodeComponent = modulecatalog.GetComponent( aComponent )
621 aService = NodeComponent.GetService( anInterface , aService )
622 aNode = self.G.CNode( aService )
624 myNode = CNode( aNode , self.G.Verbose )
626 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
630 def Node( self , aComponent , anInterface , aService ):
631 if SuperVision.Swig :
632 aService = Service_Swig( aService )
633 return self.FNode( aComponent , anInterface , aService )
634 def FNode( self , aComponent , anInterface , aService ):
635 NodeComponent = modulecatalog.GetComponent( aComponent )
636 aService = NodeComponent.GetService( anInterface , aService )
637 if SuperVision.Swig :
638 aService = Service_Swig( aService )
639 aNode = self.G.FNode( aComponent , anInterface , aService )
641 myNode = FNode( aNode , self.G.Verbose )
643 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
647 def INode( self , FuncName , aPythonFunction ):
648 aNode = self.G.INode( FuncName , aPythonFunction )
650 myNode = INode( aNode , self.G.Verbose )
652 ErrMsg = "Failed to create a Node"
656 def GNode( self , FuncName , aPythonFunction , anINode ):
657 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
659 myNode = GNode( aNode , self.G.Verbose )
661 ErrMsg = "Failed to create a Node"
665 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
666 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
668 myNode = LNode( aNode , self.G.Verbose )
669 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
670 return myNode,myEndOfLoop
671 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
675 def SNode( self , FuncName , aPythonFunction ):
676 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
678 myNode = SNode( aNode , self.G.Verbose )
679 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
680 return myNode,myEndOfSwitch
681 ErrMsg = "Failed to create a Node"
685 # def LoopNode( self , aComponent , anInterface , aService , aNodeName ):
686 # NodeComponent = modulecatalog.GetComponent( aComponent )
687 # aService = NodeComponent.GetService( anInterface , aService )
688 # aNode,anEndNode = self.G.LoopNode( aComponent , anInterface , aService , aNodeName )
690 # myEndNode = anEndNode
692 # myNode = Node( aNode , self.G.Verbose )
693 # if anEndNode != None :
694 # myEndNode = Node( anEndNode , self.G.Verbose )
695 # if ( aNode != None ) & ( anEndNode != None ) :
696 # return myNode,myEndNode
697 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
698 # if self.G.Verbose :
700 # return aNode,anEndNode
701 # def SwitchNode( self , aComponent , anInterface , aService , aNodeName ):
702 # NodeComponent = modulecatalog.GetComponent( aComponent )
703 # aService = NodeComponent.GetService( anInterface , aService )
704 # aNode,anEndNode = self.G.SwitchNode( aComponent , anInterface , aService , aNodeName )
706 # myEndNode = anEndNode
708 # myNode = Node( aNode , self.G.Verbose )
709 # if anEndNode != None :
710 # myEndNode = Node( anEndNode , self.G.Verbose )
711 # if ( aNode != None ) & ( anEndNode != None ) :
712 # return myNode,myEndNode
713 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
714 # if self.G.Verbose :
716 # return aNode,anEndNode
717 # def LNode( self , aNodeName ):
718 # aNode = self.G.LNode( aNodeName )
720 # myNode = Node( aNode , self.G.Verbose )
722 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
723 # if self.G.Verbose :
726 # def LService( self , aComponent , anInterface , aService ):
727 # NodeComponent = modulecatalog.GetComponent( aComponent )
728 # aService = NodeComponent.GetService( anInterface , aService )
729 # aNode = self.G.LService( aComponent , anInterface , aService )
731 # myNode = Node( aNode , self.G.Verbose )
733 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
734 # if self.G.Verbose :
737 # def CNode( self , aNodeName ):
738 # aNode = self.G.CNode( aNodeName )
740 # myNode = Node( aNode , self.G.Verbose )
742 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
743 # if self.G.Verbose :
746 # def CService( self , aComponent , anInterface , aService ):
747 # NodeComponent = modulecatalog.GetComponent( aComponent )
748 # aService = NodeComponent.GetService( anInterface , aService )
749 # aNode = self.G.CService( aComponent , anInterface , aService )
751 # myNode = Node( aNode , self.G.Verbose )
753 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
754 # if self.G.Verbose :
757 def PrintService( self , aComponent , anInterface , aService ):
758 NodeComponent = modulecatalog.GetComponent( aComponent )
759 aService = NodeComponent.GetService( anInterface , aService )
760 print "ServiceName ",aService.ServiceName," :"
761 lenin = len( aService.ServiceinParameter )
762 print " ",lenin," input argument(s) :"
765 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
767 lenout = len( aService.ServiceoutParameter )
768 print " ",lenout," output argument(s) :"
771 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
773 def Link( self , aFromNodePort , aToNodePort ):
774 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
776 myLink = Link( aLink , self.G.Verbose )
778 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
782 def Import( self , anXmlFileName ):
783 return self.G.Import( anXmlFileName )
784 def Export( self , anXmlFileName ):
785 return self.G.Export( anXmlFileName )
786 def IsReadOnly( self ) :
787 return self.G.IsReadOnly()
788 def ComponentRef( self , aFactoryServer , aComponent ) :
789 return self.G.ComponentRef( aFactoryServer , aComponent )
791 return self.G.IsValid()
792 def IsExecutable( self ):
793 return self.G.IsExecutable()
794 def IsEditing( self ):
795 return self.G.IsEditing()
796 def IsExecuting( self ):
797 return self.G.IsExecuting()
798 def LevelMax( self ):
799 return self.G.LevelMax()
800 def ThreadsMax( self ):
801 return self.G.ThreadsMax()
802 def GraphsNumber( self ):
803 return self.G.GraphsNumber()
804 def LevelNodes( self , aLevel ):
805 nodes = self.G.LevelNodes( aLevel )
806 return self.nodesTuple( nodes )
807 def Run( self , *args ):
809 aService = self.Service()
813 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
814 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
818 def Start( self , *args ):
820 aService = self.Service()
824 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
825 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
828 return self.G.Start()
830 sts,aNode,anEvent,aState = self.G.Event()
832 return sts,aNode,anEvent,aState
834 sts,aNode,anEvent,aState = self.G.EventW()
836 return sts,aNode,anEvent,aState
839 sts,aNode,anEvent,aState = self.G.EventW()
841 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
844 return self.G.Threads()
845 def SuspendedThreads( self ):
846 return self.G.SuspendedThreads()
847 def LastLevelDone( self ):
848 return self.G.LastLevelDone()
849 def Verbose( self , verbose ):
850 preverbose = self.G.Verbose
851 self.G.Verbose = verbose
854 nodes = self.G.Nodes()
855 return self.nodesTuple( nodes )
856 def nodesTuple( self , nodes ) :
857 n = len( nodes.CNodes )
862 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
865 n = len( nodes.FNodes )
868 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
871 n = len( nodes.INodes )
874 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
877 n = len( nodes.GNodes )
880 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
883 n = len( nodes.LNodes )
886 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
889 n = len( nodes.ELNodes )
892 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
895 n = len( nodes.SNodes )
898 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
901 n = len( nodes.ESNodes )
904 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
908 def ListNodes( self , *args ):
912 listofnodes = nodes[ 0 ].Name()
914 while i < len( nodes ) :
915 listofnodes = listofnodes + ',' + nodes[ i ].Name()
918 if len( args ) == 0 :
919 aName = self.N.Name()
922 if len( nodes ) == 1 :
923 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
925 listofnodes = listofnodes + " = " + aName + ".Nodes()"
927 def PrintNodes( self ):
935 def PrintThreads( self ):
938 while i < len( nodes ) :
939 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i].AutoState()
942 links = self.G.GLinks()
944 while i < len( links ) :
945 links[ i ] = Link( links[i] , self.G.Verbose )
948 def ListLinks( self , *args ):
949 links = self.G.GLinks()
951 listoflinks = links[ 0 ].InPort().Node().Name()
952 listoflinks = listoflinks + links[ 0 ].InPort().Name()
954 while i < len( links ) :
955 listoflinks = listoflinks + ',' + links[ i ].InPort().Node().Name()
956 listoflinks = listoflinks + links[ i ].InPort().Name()
959 if len( args ) == 0 :
960 aName = self.N.Name()
963 if len( links ) == 1 :
964 listoflinks = "[" + listoflinks + "] = " + aName + ".GLinks()"
966 listoflinks = listoflinks + " = " + aName + ".GLinks()"
968 def PrintLinks( self ):
969 links = self.G.GLinks()
971 while i < len( links ) :
972 Link( links[ i ] , self.G.Verbose ).Print()
975 graphs = self.G.Graphs()
978 while i < len( graphs ) :
979 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
980 outgraphs[ i ].Merge( graphs[i] )
984 aCopy = self.G.Copy()
986 myCopy = Graph( aCopy )
988 ErrMsg = "Failed to get a Copy of " + self.G.Name()
992 def Merge( self , aGraph ):
993 return self.G.Merge( aGraph.G )
997 ##########################################################
999 ##########################################################
1000 def __init__( self , aName ):
1001 graph = SuperVision.GraphE( aName )
1007 ##########################################################
1009 ##########################################################
1010 def __init__( self , aValue , Verbose ):
1012 self.V.Verbose = Verbose
1013 def ToString( self ):
1014 return self.V.ToString()
1016 return self.V.ToAny()
1017 def Destroy( self ):
1020 ##########################################################
1022 ##########################################################
1023 def __init__( self , aPort , Verbose ):
1025 self.P.Verbose = Verbose
1026 def Input( self , *args ):
1027 types, realargs = getRealArgs(self.P,args)
1028 fn = bs_AddInput_valuedict[types]
1029 anInput = apply( fn, realargs)
1032 aNode = self.P.Node()
1034 if aNode.IsComputing() :
1035 myNode = CNode( aNode , self.P.Verbose )
1036 elif aNode.IsFactory() :
1037 myNode = FNode( aNode , self.P.Verbose )
1038 elif aNode.IsInLine() :
1039 myNode = INode( aNode , self.P.Verbose )
1040 elif aNode.IsGOTO() :
1041 myNode = GNode( aNode , self.P.Verbose )
1042 elif aNode.IsLoop() :
1043 myNode = LNode( aNode , self.P.Verbose )
1044 elif aNode.IsEndLoop() :
1045 myNode = ELNode( aNode , self.P.Verbose )
1046 elif aNode.IsSwitch() :
1047 myNode = SNode( aNode , self.P.Verbose )
1048 elif aNode.IsEndSwitch() :
1049 myNode = ESNode( aNode , self.P.Verbose )
1055 return self.P.Name()
1057 return self.P.Type()
1059 aLink = self.P.Link()
1061 myLink = Link( aLink , self.P.Verbose )
1063 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1068 links = self.P.Links()
1070 while i < len( links ) :
1071 links[ i ] = Link( links[i] , self.P.Verbose )
1074 def PrintLinks( self ):
1075 links = self.P.Links()
1077 while i < len( links ) :
1078 Link( links[ i ] , self.P.Verbose ).Print()
1080 def IsInput( self ):
1081 return self.P.IsInput()
1082 def IsLinked( self ):
1083 return self.P.IsLinked()
1084 def HasInput( self ):
1085 return self.P.HasInput()
1087 return self.P.Kind()
1088 def IsParam( self ):
1089 return self.P.IsParam()
1091 return self.P.IsGate()
1093 return self.P.IsLoop()
1094 def IsInLine( self ):
1095 return self.P.IsInLine()
1096 def IsSwitch( self ):
1097 return self.P.IsSwitch()
1098 def IsEndSwitch( self ):
1099 return self.P.IsEndSwitch()
1100 # def IsBus( self ):
1101 # return self.P.IsBus()
1103 return self.P.Done()
1105 return self.P.State()
1106 def ToString( self ):
1107 return self.P.ToString()
1109 return self.P.ToAny()
1111 if self.P.IsInput() :
1112 if self.P.IsLinked() :
1113 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1115 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1117 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1118 def Destroy( self ):
1121 ##########################################################
1123 ##########################################################
1124 def __init__( self , aLink , Verbose ):
1126 self.L.Verbose = Verbose
1127 def OutPort( self ):
1128 aPort = self.L.OutPort()
1130 myPort = Port( aPort , self.L.Verbose )
1133 print "Error while getting the Port : "
1136 aPort = self.L.InPort()
1138 myPort = Port( aPort , self.L.Verbose )
1141 print "Error while getting the Port : "
1144 anOutPort = self.L.OutPort()
1145 anInPort = self.L.InPort()
1146 print anOutPort.Node().Name(),'(',anOutPort.Name(),' ',anOutPort.Kind(),') =',anOutPort.ToString(),' --> ',anInPort.Node().Name(),'(',anInPort.Name(),')',' ',anInPort.Kind()
1147 def CoordsSize( self ):
1148 return self.L.CoordsSize()
1149 def AddCoord( self , index , X , Y ):
1150 return self.L.AddCoord( index , X , Y )
1151 def ChangeCoord( self , index , X , Y ):
1152 return self.L.ChangeCoord( index , X , Y )
1153 def RemoveCoord( self , index ):
1154 return self.L.RemoveCoord( index )
1155 def Coords( self , index ):
1156 return self.L.Coords( index )
1157 def destroy( self ):