Salome HOME
Merge with version on tag OCC-V2_1_0d V2_1_0 V2_1_0b1
authoradmin <salome-admin@opencascade.com>
Wed, 1 Dec 2004 10:53:01 +0000 (10:53 +0000)
committeradmin <salome-admin@opencascade.com>
Wed, 1 Dec 2004 10:53:01 +0000 (10:53 +0000)
124 files changed:
INSTALL
bin/VERSION
doc/salome/tui/SUPERV/HTML/SUPERV.html
doc/salome/tui/SUPERV/doxyfile
doc/salome/tui/SUPERV/sources/static/tree.js
examples/GeomGraph.py
examples/GeomGraph.py_old [new file with mode: 0644]
examples/GeomGraph.xml
examples/GeomGraph.xml_old [new file with mode: 0644]
examples/GeomGraph_py.py [new file with mode: 0644]
examples/GeomGraph_py.xml [new file with mode: 0644]
examples/GraphCpuUsed.py
examples/GraphEssai3.py
examples/GraphExample.py
examples/GraphGeomEssai.py [new file with mode: 0644]
examples/GraphGeomEssai.xml
examples/GraphGeomEssai.xml_old [new file with mode: 0644]
examples/GraphGeomEssai_py.py [new file with mode: 0644]
examples/GraphGeomEssai_py.xml [new file with mode: 0644]
examples/GraphInLinesUnValid.py
examples/GraphMerge1.py
examples/GraphSwitch.py
examples/GraphSwitch1.py
examples/GraphSwitchCrash.py
examples/GraphSwitchs.py
examples/GraphSyrControl.py
examples/GraphSyrControl1.py
examples/GraphSyrControlAve.py
examples/GraphSyrControlDefault.py
examples/GraphSyrControlGUI.py
examples/GraphSyracuseC.py
examples/GraphSyracuseCEv.py
examples/GraphSyracuseC_Gate.py [deleted file]
examples/GraphSyracuseC_Gate.xml [deleted file]
examples/GraphSyracuseC_Void.py
examples/GraphSyracuseControl.py
examples/GraphSyracuseCpp.py
examples/GraphUnValid.py
examples/MacroWithGeom.py [new file with mode: 0644]
examples/MacroWithGeom.xml
examples/MacroWithGeom.xml_old [new file with mode: 0755]
examples/MacroWithGeom_py.py [new file with mode: 0644]
examples/MacroWithGeom_py.xml [new file with mode: 0644]
examples/NewGraphGeomEssai.py
examples/NewGraphGeomEssai.py_old [new file with mode: 0644]
examples/NewGraphGeomEssai.xml
examples/NewGraphGeomEssai.xml_old [new file with mode: 0644]
examples/NewGraphGeomEssai_py.py [new file with mode: 0644]
examples/NewGraphGeomEssai_py.xml [new file with mode: 0644]
examples/SupervRheolefGraph.py [deleted file]
examples/SupervRheolefGraph.xml [deleted file]
examples/myFactorialPy.py
resources/SUPERVCatalog.xml
resources/SUPERV_en.xml
src/GraphBase/DataFlowBase_Base.hxx
src/GraphBase/DataFlowBase_ComputingNode.cxx
src/GraphBase/DataFlowBase_ComputingNode.hxx
src/GraphBase/DataFlowBase_DataNode.cxx
src/GraphBase/DataFlowBase_FactoryNode.cxx
src/GraphBase/DataFlowBase_GOTONode.cxx
src/GraphBase/DataFlowBase_Graph.cxx
src/GraphBase/DataFlowBase_Graph.hxx
src/GraphBase/DataFlowBase_LoadXml.cxx
src/GraphBase/DataFlowBase_OutPort.cxx
src/GraphBase/DataFlowBase_OutPort.hxx
src/GraphBase/DataFlowBase_StreamNode.cxx
src/GraphBase/DataFlowBase_StreamNode.hxx
src/GraphBase/Makefile.in
src/GraphEditor/DataFlowEditor_DataFlow.cxx
src/GraphEditor/DataFlowEditor_DataFlow.hxx
src/GraphEditor/DataFlowEditor_DataFlow.lxx
src/GraphEditor/DataFlowEditor_InNode.hxx
src/GraphEditor/DataFlowEditor_OutNode.cxx
src/GraphEditor/DataFlowEditor_OutNode.hxx
src/GraphEditor/Makefile.in
src/GraphExecutor/DataFlowExecutor_DataFlow.cxx
src/GraphExecutor/DataFlowExecutor_DataFlow.hxx
src/GraphExecutor/DataFlowExecutor_FiniteStateMachine.cxx
src/GraphExecutor/DataFlowExecutor_FiniteStateMachine.hxx
src/GraphExecutor/DataFlowExecutor_InNode.cxx
src/GraphExecutor/DataFlowExecutor_InNode.hxx
src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx
src/GraphExecutor/DataFlowExecutor_OutNode.cxx
src/GraphExecutor/DataFlowExecutor_OutNode.hxx
src/GraphExecutor/DataFlowExecutor_PyDynInvoke.cxx
src/GraphExecutor/Makefile.in
src/Makefile.in
src/SUPERVGUI/SUPERVGUI.cxx
src/SUPERVGUI/SUPERVGUI.h
src/SUPERVGUI/SUPERVGUI_BrowseNodeDlg.cxx
src/SUPERVGUI/SUPERVGUI_Canvas.cxx
src/SUPERVGUI/SUPERVGUI_CanvasControlNode.cxx
src/SUPERVGUI/SUPERVGUI_CanvasLink.cxx
src/SUPERVGUI/SUPERVGUI_CanvasNode.cxx
src/SUPERVGUI/SUPERVGUI_CanvasNode.h
src/SUPERVGUI/SUPERVGUI_CanvasNodePrs.cxx
src/SUPERVGUI/SUPERVGUI_CanvasPort.cxx
src/SUPERVGUI/SUPERVGUI_CanvasView.cxx
src/SUPERVGUI/SUPERVGUI_CanvasView.h
src/SUPERVGUI/SUPERVGUI_ControlNode.cxx
src/SUPERVGUI/SUPERVGUI_Main.cxx
src/SUPERVGUI/SUPERVGUI_Main.h
src/SUPERVGUI/SUPERVGUI_Node.cxx
src/SUPERVGUI/SUPERVGUI_Node.h
src/SUPERVGUI/SUPERVGUI_Service.cxx
src/SUPERVGUI/SUPERV_msg_en.po
src/Supervision/CNode_Impl.cxx
src/Supervision/CNode_Impl.hxx
src/Supervision/ELNode_Impl.cxx
src/Supervision/FNode_Impl.cxx
src/Supervision/GNode_Impl.cxx
src/Supervision/GNode_Impl.hxx
src/Supervision/Graph_Impl.cxx
src/Supervision/Graph_Impl.hxx
src/Supervision/INode_Impl.cxx
src/Supervision/INode_Impl.hxx
src/Supervision/LNode_Impl.cxx
src/Supervision/Makefile.in
src/Supervision/Port_Impl.cxx
src/Supervision/StreamGraph_Impl.cxx
src/Supervision/SuperV.py
src/Supervision/SuperV_Impl.cxx
src/Supervision/Value_Impl.cxx
src/Supervision/batchmode_SuperV.py

diff --git a/INSTALL b/INSTALL
index 7a1e231bbb961f8468d5a6842b0c26daa43b7a78..e3237d67b45f6f79eb8d7dc956674719e27bdfd4 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,3 +1,3 @@
-This is the version 2.0.0 of SUPERV
+This is the version 2.1.0 of SUPERV
 Compatible with :
-       - KERNEL 2.0.0
+       - KERNEL 2.1.0
index b1f93795b2b594434aae3fb12cc42f4ec13aae0f..eb959613055f5537aa94313cf0a5eeaac64b4763 100755 (executable)
@@ -1 +1 @@
-THIS IS SALOME - SUPERV VERSION: 2.0.0
+THIS IS SALOME - SUPERV VERSION: 2.1.0
index a191eaaba1b3bd1bb82b734f091dc26a12d37482..de4c8ab5a228b9d46f88f71b0dfe08785e89a610 100644 (file)
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = GraphE ( aGraph )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamGraph  StreamGraph ( in string aGraph )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamGraph ( aGraph )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamGraph  StreamGraphE ( in string aGraph )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamGraphE ( aGraph )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>Value  StringValue ( in string aString )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = StringValue ( aString )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>Graph  getGraph ( in string ior )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = getGraph ( ior )</b></div></td>
 </tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamGraph  getStreamGraph ( in string ior )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = getStreamGraph ( ior )</b></div></td>
+</tr>
 </table><br>
 <table width="100%" BORDER>
 <tr bgcolor="#FFFFCC">
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Port ( aParameterName )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Port  GetInPort ( in string aParameterName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetInPort ( aParameterName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Port  GetOutPort ( in string aParameterName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetOutPort ( aParameterName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamPort  GetInStreamPort ( in string aParameterName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetInStreamPort ( aParameterName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamPort  GetOutStreamPort ( in string aParameterName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetOutStreamPort ( aParameterName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasStreamPort (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasStreamPort (  )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>Port  Input ( in string InputParameterName, in Value aValue )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Input ( InputParameterName, aValue )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Ports (  )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfStreamPorts  StreamPorts (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamPorts (  )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>ListOfLinks  Links (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Links (  )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfStreamLinks  StreamLinks (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamLinks (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsStreamGraph (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsStreamGraph (  )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>boolean  IsGraph (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = IsGraph (  )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsMacro (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsMacro (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsFlowMacro (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsFlowMacro (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsStreamMacro (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsStreamMacro (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsHeadGraph (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsHeadGraph (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GraphLevel (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GraphLevel (  )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>boolean  IsComputing (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = IsComputing (  )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = SubGraph (  )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  SubStreamGraph (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SubStreamGraph (  )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>long  Thread (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Thread (  )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = ReStartAt ( aNodeName )</b></div></td>
 </tr>
 <tr>
-<td bgcolor= "lightgreen"><div align="center"><b>AutomatonState  AutoState (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = AutoState (  )</b></div></td>
-</tr>
-<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>ControlState  Control (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Control (  )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>Port  OutPort ( in string aParameterName, in string aParameterType )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = OutPort ( aParameterName, aParameterType )</b></div></td>
 </tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamPort  InStreamPort ( in string aParameterName, in DataStreamType aParameterType, in DataStreamDependency aDependency )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = InStreamPort ( aParameterName, aParameterType, aDependency )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamPort  OutStreamPort ( in string aParameterName, in DataStreamType aParameterType, in DataStreamDependency aDependency )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = OutStreamPort ( aParameterName, aParameterType, aDependency )</b></div></td>
+</tr>
 </table><br>
 <table width="100%" BORDER>
 <tr bgcolor="#FFFFCC">
 <td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
 </tr>
 <tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetPyInit ( in string MoreName, in ListOfStrings aPyMoreFunction )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetPyInit ( MoreName, aPyMoreFunction )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetPyInit ( in string InitName, in ListOfStrings aPyInitFunction )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetPyInit ( InitName, aPyInitFunction )</b></div></td>
 </tr>
 <tr>
 <td bgcolor= "lightgreen"><div align="center"><b>ListOfStrings  PyInit (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  anEndOfSwitch ] = SNode ( FuncName, aPythonFunction )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Graph  MNode ( in string aXmlFileName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = MNode ( aXmlFileName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Graph  GraphMNode ( in Graph aGraph )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GraphMNode ( aGraph )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Graph  FlowObjRef (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FlowObjRef (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamGraph  StreamObjRef (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamObjRef (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>CNode  Node ( in string aNodeName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Node ( aNodeName )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>Component  ComponentRef ( in string aComputerContainer, in string aComponentName )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = ComponentRef ( aComputerContainer, aComponentName )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  aNode, anEvent, aState ] = EventW (  )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  EventQSize (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = EventQSize (  )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>long  LevelMax (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = LevelMax (  )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = ThreadsMax (  )</b></div></td>
 </tr>
 <tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GraphsNumber (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GraphsNumber (  )</b></div></td>
-</tr>
-<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>long  Threads (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Threads (  )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = IsExecutable (  )</b></div></td>
 </tr>
 <tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsDataFlow (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsDataFlow (  )</b></div></td>
-</tr>
-<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>boolean  IsEditing (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = IsEditing (  )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Copy (  )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamGraph  ToStreamGraph (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ToStreamGraph (  )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>boolean  Merge ( in Graph aGraph )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = Merge ( aGraph )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = getIOR (  )</b></div></td>
 </tr>
 <tr>
-<td bgcolor= "lightgreen"><div align="center"><b>ListOfGraphs  Graphs (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = Graphs (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>long  SubGraphsNumber (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SubGraphsNumber (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfNodes  SubGraphsNodes ( in long SubGraphNumber )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SubGraphsNodes ( SubGraphNumber )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface StreamGraph</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamGraph  StreamCopy (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamCopy (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamGraph  StreamMNode ( in string aXmlFileName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamMNode ( aXmlFileName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamGraph  StreamGraphMNode ( in StreamGraph aStreamGraph )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamGraphMNode ( aStreamGraph )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamLink  StreamLink ( in StreamPort OutputPort, in StreamPort InputPort )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamLink ( OutputPort, InputPort )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfStreamLinks  GStreamLinks (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GStreamLinks (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  SetStreamParams ( in long Timeout, in KindOfDataStreamTrace DataStreamTrace, in double DeltaTime )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetStreamParams ( Timeout, DataStreamTrace, DeltaTime )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void StreamParams ( out long Timeout, out KindOfDataStreamTrace DataStreamTrace, out double DeltaTime )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ Timeout, DataStreamTrace, DeltaTime ] = StreamParams (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  SubStreamGraphsNumber (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SubStreamGraphsNumber (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfNodes  SubStreamGraphsNodes ( in long SubStreamGraphNumber )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SubStreamGraphsNodes ( SubStreamGraphNumber )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Graph  ToFlowGraph (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ToFlowGraph (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  StreamMerge ( in StreamGraph aStreamGraph )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamMerge ( aStreamGraph )</b></div></td>
 </tr>
 </table><br>
 <table width="100%" BORDER>
 </table><br>
 <table width="100%" BORDER>
 <tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface StreamLink</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamPort  OutStreamPort (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = OutStreamPort (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamPort  InStreamPort (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = InStreamPort (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
 <td colspan="11"><font size="+3"><b><div align="center"><i>interface Value</i></div></b></font></td>
 </tr>
 <td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = IsEndSwitch (  )</b></div></td>
 </tr>
 <tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsDataStream (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsDataStream (  )</b></div></td>
+</tr>
+<tr>
 <td bgcolor= "lightgreen"><div align="center"><b>GraphState  State (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = State (  )</b></div></td>
 </tr>
 <td bgcolor= "lightgreen"><div align="center"><b>boolean  IsDone (  )</b></div></td>
 <td bgcolor= "lightgreen"><div align="center"><b>return_value = IsDone (  )</b></div></td>
 </tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Remove (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Remove (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface StreamPort</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StreamLink  StreamLink (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = StreamLink (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>DataStreamDependency  Dependency (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Dependency (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  SetDependency ( in DataStreamDependency aDependency )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetDependency ( aDependency )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  SetParams ( in KindOfSchema aKindOfSchema, in KindOfInterpolation aKindOfInterpolation, in KindOfExtrapolation aKindOfExtrapolation )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetParams ( aKindOfSchema, aKindOfInterpolation, aKindOfExtrapolation )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Params ( out KindOfSchema aKindOfSchema, out KindOfInterpolation aKindOfInterpolation, out KindOfExtrapolation aKindOfExtrapolation )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  aKindOfSchema, aKindOfInterpolation, aKindOfExtrapolation ] = Params (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  SetNumberOfValues ( in long aNumberOfValues )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetNumberOfValues ( aNumberOfValues )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  NumberOfValues (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = NumberOfValues (  )</b></div></td>
+</tr>
 </table><br>
 </b></HTML>
index 4413e115befdb3d3468330c4811c3d3da623f78c..1f8b6343159ce7e1ff29f248757ed2d615494806 100755 (executable)
@@ -3,7 +3,7 @@
 #---------------------------------------------------------------------------
 # General configuration options
 #---------------------------------------------------------------------------
-PROJECT_NAME           = "SALOME - SUPERV - v.2.0.0"
+PROJECT_NAME           = "SALOME - SUPERV - v.2.1.0"
 PROJECT_NUMBER         = id#1.0
 OUTPUT_DIRECTORY       = ../
 OUTPUT_LANGUAGE        = English
index 25dc87a9b4ac90e58661a7e4c52cf1f84e4d1f11..d01e7c227c3ba0cef4062b63094359cd270da474 100755 (executable)
@@ -1,4 +1,4 @@
-foldersTree = gFld("<b>SALOME v.2.0.0 </b>", "", "")
+foldersTree = gFld("<b>SALOME v.2.1.0 </b>", "", "")
      insDoc(foldersTree, gLnk("Main Page", "", "main.html"))
 
 aux1 = insFld(foldersTree, gFld("TUI Reference Guide", ""))
index 0597429bde041e308f4156319244e356af09cecf..0553d96e97fba3abbc0780e6a201cf877e0968cb 100644 (file)
 
-# Generated python file of Graph GeomGraph
+# Generated python file of Graph aNewDataFlow_1
 
 from SuperV import *
-# Graph creation 
-GeomGraph = Graph( 'GeomGraph' )
-GeomGraph.SetName( 'GeomGraph' )
-GeomGraph.SetAuthor( '' )
-GeomGraph.SetComment( '' )
-GeomGraph.Coords( 0 , 0 )
 
-# Creation of Factory Nodes
-MakeBox = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeBox' )
-MakeBox.SetName( 'MakeBox' )
-MakeBox.SetAuthor( '' )
-MakeBox.SetContainer( 'localhost/FactoryServer' )
-MakeBox.SetComment( 'MakeBox from Geometry' )
-MakeBox.Coords( 5 , 101 )
-MakeCopy = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeCopy' )
-MakeCopy.SetName( 'MakeCopy' )
-MakeCopy.SetAuthor( '' )
-MakeCopy.SetContainer( 'localhost/FactoryServer' )
-MakeCopy.SetComment( 'MakeCopy from Geometry' )
-MakeCopy.Coords( 235 , 77 )
-MakeCopy_1 = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeCopy' )
-MakeCopy_1.SetName( 'MakeCopy_1' )
-MakeCopy_1.SetAuthor( '' )
-MakeCopy_1.SetContainer( 'localhost/FactoryServer' )
-MakeCopy_1.SetComment( 'MakeCopy from Geometry' )
-MakeCopy_1.Coords( 232 , 332 )
-MakeTranslation = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeTranslation' )
-MakeTranslation.SetName( 'MakeTranslation' )
-MakeTranslation.SetAuthor( '' )
-MakeTranslation.SetContainer( 'localhost/FactoryServer' )
-MakeTranslation.SetComment( 'MakeTranslation from Geometry' )
-MakeTranslation.Coords( 449 , 86 )
-MakeFuse = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeFuse' )
-MakeFuse.SetName( 'MakeFuse' )
-MakeFuse.SetAuthor( '' )
-MakeFuse.SetContainer( 'localhost/FactoryServer' )
-MakeFuse.SetComment( 'MakeFuse from Geometry' )
-MakeFuse.Coords( 678 , 224 )
-MakeFuse_1 = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeFuse' )
-MakeFuse_1.SetName( 'MakeFuse_1' )
-MakeFuse_1.SetAuthor( '' )
-MakeFuse_1.SetContainer( 'localhost/FactoryServer' )
-MakeFuse_1.SetComment( 'MakeFuse from Geometry' )
-MakeFuse_1.Coords( 909 , 340 )
-MakeSphere = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeSphere' )
-MakeSphere.SetName( 'MakeSphere' )
-MakeSphere.SetAuthor( '' )
-MakeSphere.SetContainer( 'localhost/FactoryServer' )
-MakeSphere.SetComment( 'MakeSphere from Geometry' )
-MakeSphere.Coords( 5 , 449 )
+# Graph creation of aNewDataFlow_1
+def DefaNewDataFlow_1() :
+    aNewDataFlow_1 = Graph( 'aNewDataFlow_1' )
+    aNewDataFlow_1.SetName( 'aNewDataFlow_1' )
+    aNewDataFlow_1.SetAuthor( '' )
+    aNewDataFlow_1.SetComment( '' )
+    aNewDataFlow_1.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    SetStudyID = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'SetStudyID' )
+    SetStudyID.SetName( 'SetStudyID' )
+    SetStudyID.SetAuthor( '' )
+    SetStudyID.SetContainer( 'localhost/FactoryServer' )
+    SetStudyID.SetComment( 'SetStudyID from GEOM_Superv' )
+    SetStudyID.Coords( 14 , 241 )
+    ISetStudyIDtheStudyID = SetStudyID.GetInPort( 'theStudyID' )
+    ISetStudyIDGate = SetStudyID.GetInPort( 'Gate' )
+    OSetStudyIDGate = SetStudyID.GetOutPort( 'Gate' )
+    
+    MakeBox = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeBox' )
+    MakeBox.SetName( 'MakeBox' )
+    MakeBox.SetAuthor( '' )
+    MakeBox.SetContainer( 'localhost/FactoryServer' )
+    MakeBox.SetComment( 'MakeBox from GEOM_Superv' )
+    MakeBox.Coords( 198 , 46 )
+    IMakeBoxtheX1 = MakeBox.GetInPort( 'theX1' )
+    IMakeBoxtheY1 = MakeBox.GetInPort( 'theY1' )
+    IMakeBoxtheZ1 = MakeBox.GetInPort( 'theZ1' )
+    IMakeBoxtheX2 = MakeBox.GetInPort( 'theX2' )
+    IMakeBoxtheY2 = MakeBox.GetInPort( 'theY2' )
+    IMakeBoxtheZ2 = MakeBox.GetInPort( 'theZ2' )
+    IMakeBoxGate = MakeBox.GetInPort( 'Gate' )
+    OMakeBoxreturn = MakeBox.GetOutPort( 'return' )
+    OMakeBoxGate = MakeBox.GetOutPort( 'Gate' )
+    
+    MakeCopy = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeCopy' )
+    MakeCopy.SetName( 'MakeCopy' )
+    MakeCopy.SetAuthor( '' )
+    MakeCopy.SetContainer( 'localhost/FactoryServer' )
+    MakeCopy.SetComment( 'MakeCopy from GEOM_Superv' )
+    MakeCopy.Coords( 383 , 46 )
+    IMakeCopytheOriginal = MakeCopy.GetInPort( 'theOriginal' )
+    IMakeCopyGate = MakeCopy.GetInPort( 'Gate' )
+    OMakeCopyreturn = MakeCopy.GetOutPort( 'return' )
+    OMakeCopyGate = MakeCopy.GetOutPort( 'Gate' )
+    
+    TranslateDXDYDZ = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'TranslateDXDYDZ' )
+    TranslateDXDYDZ.SetName( 'TranslateDXDYDZ' )
+    TranslateDXDYDZ.SetAuthor( '' )
+    TranslateDXDYDZ.SetContainer( 'localhost/FactoryServer' )
+    TranslateDXDYDZ.SetComment( 'TranslateDXDYDZ from GEOM_Superv' )
+    TranslateDXDYDZ.Coords( 579 , 46 )
+    ITranslateDXDYDZtheObject = TranslateDXDYDZ.GetInPort( 'theObject' )
+    ITranslateDXDYDZtheDX = TranslateDXDYDZ.GetInPort( 'theDX' )
+    ITranslateDXDYDZtheDY = TranslateDXDYDZ.GetInPort( 'theDY' )
+    ITranslateDXDYDZtheDZ = TranslateDXDYDZ.GetInPort( 'theDZ' )
+    ITranslateDXDYDZGate = TranslateDXDYDZ.GetInPort( 'Gate' )
+    OTranslateDXDYDZreturn = TranslateDXDYDZ.GetOutPort( 'return' )
+    OTranslateDXDYDZGate = TranslateDXDYDZ.GetOutPort( 'Gate' )
+    
+    MakeCopy_1 = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeCopy' )
+    MakeCopy_1.SetName( 'MakeCopy_1' )
+    MakeCopy_1.SetAuthor( '' )
+    MakeCopy_1.SetContainer( 'localhost/FactoryServer' )
+    MakeCopy_1.SetComment( 'MakeCopy from GEOM_Superv' )
+    MakeCopy_1.Coords( 384 , 168 )
+    IMakeCopy_1theOriginal = MakeCopy_1.GetInPort( 'theOriginal' )
+    IMakeCopy_1Gate = MakeCopy_1.GetInPort( 'Gate' )
+    OMakeCopy_1return = MakeCopy_1.GetOutPort( 'return' )
+    OMakeCopy_1Gate = MakeCopy_1.GetOutPort( 'Gate' )
+    
+    MakeSphere_1 = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeSphere' )
+    MakeSphere_1.SetName( 'MakeSphere_1' )
+    MakeSphere_1.SetAuthor( '' )
+    MakeSphere_1.SetContainer( 'localhost/FactoryServer' )
+    MakeSphere_1.SetComment( 'MakeSphere from GEOM_Superv' )
+    MakeSphere_1.Coords( 201 , 332 )
+    IMakeSphere_1theX = MakeSphere_1.GetInPort( 'theX' )
+    IMakeSphere_1theY = MakeSphere_1.GetInPort( 'theY' )
+    IMakeSphere_1theZ = MakeSphere_1.GetInPort( 'theZ' )
+    IMakeSphere_1theRadius = MakeSphere_1.GetInPort( 'theRadius' )
+    IMakeSphere_1Gate = MakeSphere_1.GetInPort( 'Gate' )
+    OMakeSphere_1return = MakeSphere_1.GetOutPort( 'return' )
+    OMakeSphere_1Gate = MakeSphere_1.GetOutPort( 'Gate' )
+    
+    MakeFuse = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeFuse' )
+    MakeFuse.SetName( 'MakeFuse' )
+    MakeFuse.SetAuthor( '' )
+    MakeFuse.SetContainer( 'localhost/FactoryServer' )
+    MakeFuse.SetComment( 'MakeFuse from GEOM_Superv' )
+    MakeFuse.Coords( 790 , 148 )
+    IMakeFusetheShape1 = MakeFuse.GetInPort( 'theShape1' )
+    IMakeFusetheShape2 = MakeFuse.GetInPort( 'theShape2' )
+    IMakeFuseGate = MakeFuse.GetInPort( 'Gate' )
+    OMakeFusereturn = MakeFuse.GetOutPort( 'return' )
+    OMakeFuseGate = MakeFuse.GetOutPort( 'Gate' )
+    
+    MakeFuse_1 = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeFuse' )
+    MakeFuse_1.SetName( 'MakeFuse_1' )
+    MakeFuse_1.SetAuthor( '' )
+    MakeFuse_1.SetContainer( 'localhost/FactoryServer' )
+    MakeFuse_1.SetComment( 'MakeFuse from GEOM_Superv' )
+    MakeFuse_1.Coords( 993 , 312 )
+    IMakeFuse_1theShape1 = MakeFuse_1.GetInPort( 'theShape1' )
+    IMakeFuse_1theShape2 = MakeFuse_1.GetInPort( 'theShape2' )
+    IMakeFuse_1Gate = MakeFuse_1.GetInPort( 'Gate' )
+    OMakeFuse_1return = MakeFuse_1.GetOutPort( 'return' )
+    OMakeFuse_1Gate = MakeFuse_1.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LSetStudyIDGateMakeBoxGate = aNewDataFlow_1.Link( OSetStudyIDGate , IMakeBoxGate )
+    
+    LSetStudyIDGateMakeSphere_1Gate = aNewDataFlow_1.Link( OSetStudyIDGate , IMakeSphere_1Gate )
+    
+    LMakeBoxreturnMakeCopytheOriginal = aNewDataFlow_1.Link( OMakeBoxreturn , IMakeCopytheOriginal )
+    
+    LMakeBoxreturnMakeCopy_1theOriginal = aNewDataFlow_1.Link( OMakeBoxreturn , IMakeCopy_1theOriginal )
+    
+    LMakeCopyreturnTranslateDXDYDZtheObject = aNewDataFlow_1.Link( OMakeCopyreturn , ITranslateDXDYDZtheObject )
+    
+    LTranslateDXDYDZreturnMakeFusetheShape1 = aNewDataFlow_1.Link( OTranslateDXDYDZreturn , IMakeFusetheShape1 )
+    
+    LMakeCopy_1returnMakeFusetheShape2 = aNewDataFlow_1.Link( OMakeCopy_1return , IMakeFusetheShape2 )
+    
+    LMakeSphere_1returnMakeFuse_1theShape2 = aNewDataFlow_1.Link( OMakeSphere_1return , IMakeFuse_1theShape2 )
+    
+    LMakeFusereturnMakeFuse_1theShape1 = aNewDataFlow_1.Link( OMakeFusereturn , IMakeFuse_1theShape1 )
+    
+    # Input datas
+    ISetStudyIDtheStudyID.Input( 1 )
+    IMakeBoxtheX1.Input( 0 )
+    IMakeBoxtheY1.Input( 0 )
+    IMakeBoxtheZ1.Input( 0 )
+    IMakeBoxtheX2.Input( 50 )
+    IMakeBoxtheY2.Input( 50 )
+    IMakeBoxtheZ2.Input( 50 )
+    ITranslateDXDYDZtheDX.Input( 10 )
+    ITranslateDXDYDZtheDY.Input( 10 )
+    ITranslateDXDYDZtheDZ.Input( 10 )
+    IMakeSphere_1theX.Input( 0 )
+    IMakeSphere_1theY.Input( 0 )
+    IMakeSphere_1theZ.Input( 0 )
+    IMakeSphere_1theRadius.Input( 12 )
+    
+    # Output Ports of the graph
+    #OMakeFuse_1return = MakeFuse_1.GetOutPort( 'return' )
+    return aNewDataFlow_1
 
-# Creation of intermediate Output variables and of Control Links
-MakeBoxshape = MakeBox.Port( 'shape' )
-MakeCopyshape1 = GeomGraph.Link( MakeBoxshape , MakeCopy.Port( 'shape1' ) )
-MakeCopyshape1.AddCoord( 1 , 198 , 184 )
-MakeCopyshape1.AddCoord( 2 , 199 , 209 )
-MakeCopy_1shape1 = GeomGraph.Link( MakeBoxshape , MakeCopy_1.Port( 'shape1' ) )
-MakeCopy_1shape1.AddCoord( 1 , 198 , 441 )
-MakeCopy_1shape1.AddCoord( 2 , 198 , 209 )
-MakeCopyshape = MakeCopy.Port( 'shape' )
-MakeTranslationshape1 = GeomGraph.Link( MakeCopyshape , MakeTranslation.Port( 'shape1' ) )
-MakeCopy_1shape = MakeCopy_1.Port( 'shape' )
-MakeFuseshape2 = GeomGraph.Link( MakeCopy_1shape , MakeFuse.Port( 'shape2' ) )
-MakeFuseshape2.AddCoord( 1 , 642 , 362 )
-MakeFuseshape2.AddCoord( 2 , 642 , 442 )
-MakeTranslationshape = MakeTranslation.Port( 'shape' )
-MakeFuseshape1 = GeomGraph.Link( MakeTranslationshape , MakeFuse.Port( 'shape1' ) )
-MakeFuseshape1.AddCoord( 1 , 643 , 330 )
-MakeFuseshape1.AddCoord( 2 , 644 , 195 )
-MakeFuseshape = MakeFuse.Port( 'shape' )
-MakeFuse_1shape1 = GeomGraph.Link( MakeFuseshape , MakeFuse_1.Port( 'shape1' ) )
-MakeFuse_1shape1.AddCoord( 1 , 872 , 445 )
-MakeFuse_1shape1.AddCoord( 2 , 874 , 333 )
-MakeSphereshape = MakeSphere.Port( 'shape' )
-MakeFuse_1shape2 = GeomGraph.Link( MakeSphereshape , MakeFuse_1.Port( 'shape2' ) )
-MakeFuse_1shape2.AddCoord( 1 , 872 , 474 )
-MakeFuse_1shape2.AddCoord( 2 , 871 , 552 )
-
-# Creation of Input datas
-MakeBoxx1 = MakeBox.Input( 'x1' , 0)
-MakeBoxy1 = MakeBox.Input( 'y1' , 0)
-MakeBoxz1 = MakeBox.Input( 'z1' , 0)
-MakeBoxx2 = MakeBox.Input( 'x2' , 50)
-MakeBoxy2 = MakeBox.Input( 'y2' , 50)
-MakeBoxz2 = MakeBox.Input( 'z2' , 50)
-MakeTranslationx1 = MakeTranslation.Input( 'x1' , 25)
-MakeTranslationy1 = MakeTranslation.Input( 'y1' , 25)
-MakeTranslationz1 = MakeTranslation.Input( 'z1' , 25)
-MakeSpherex1 = MakeSphere.Input( 'x1' , 0)
-MakeSpherey1 = MakeSphere.Input( 'y1' , 0)
-MakeSpherez1 = MakeSphere.Input( 'z1' , 0)
-MakeSphereradius = MakeSphere.Input( 'radius' , 12)
-
-# Creation of Output variables
-MakeFuse_1shape = MakeFuse_1.Port( 'shape' )
-
-GeomGraph.Run()
-
-GeomGraph.DoneW()
-
-GeomGraph.PrintPorts()
 
+aNewDataFlow_1 = DefaNewDataFlow_1()
diff --git a/examples/GeomGraph.py_old b/examples/GeomGraph.py_old
new file mode 100644 (file)
index 0000000..0597429
--- /dev/null
@@ -0,0 +1,106 @@
+
+# Generated python file of Graph GeomGraph
+
+from SuperV import *
+# Graph creation 
+GeomGraph = Graph( 'GeomGraph' )
+GeomGraph.SetName( 'GeomGraph' )
+GeomGraph.SetAuthor( '' )
+GeomGraph.SetComment( '' )
+GeomGraph.Coords( 0 , 0 )
+
+# Creation of Factory Nodes
+MakeBox = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeBox' )
+MakeBox.SetName( 'MakeBox' )
+MakeBox.SetAuthor( '' )
+MakeBox.SetContainer( 'localhost/FactoryServer' )
+MakeBox.SetComment( 'MakeBox from Geometry' )
+MakeBox.Coords( 5 , 101 )
+MakeCopy = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeCopy' )
+MakeCopy.SetName( 'MakeCopy' )
+MakeCopy.SetAuthor( '' )
+MakeCopy.SetContainer( 'localhost/FactoryServer' )
+MakeCopy.SetComment( 'MakeCopy from Geometry' )
+MakeCopy.Coords( 235 , 77 )
+MakeCopy_1 = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeCopy' )
+MakeCopy_1.SetName( 'MakeCopy_1' )
+MakeCopy_1.SetAuthor( '' )
+MakeCopy_1.SetContainer( 'localhost/FactoryServer' )
+MakeCopy_1.SetComment( 'MakeCopy from Geometry' )
+MakeCopy_1.Coords( 232 , 332 )
+MakeTranslation = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeTranslation' )
+MakeTranslation.SetName( 'MakeTranslation' )
+MakeTranslation.SetAuthor( '' )
+MakeTranslation.SetContainer( 'localhost/FactoryServer' )
+MakeTranslation.SetComment( 'MakeTranslation from Geometry' )
+MakeTranslation.Coords( 449 , 86 )
+MakeFuse = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeFuse' )
+MakeFuse.SetName( 'MakeFuse' )
+MakeFuse.SetAuthor( '' )
+MakeFuse.SetContainer( 'localhost/FactoryServer' )
+MakeFuse.SetComment( 'MakeFuse from Geometry' )
+MakeFuse.Coords( 678 , 224 )
+MakeFuse_1 = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeFuse' )
+MakeFuse_1.SetName( 'MakeFuse_1' )
+MakeFuse_1.SetAuthor( '' )
+MakeFuse_1.SetContainer( 'localhost/FactoryServer' )
+MakeFuse_1.SetComment( 'MakeFuse from Geometry' )
+MakeFuse_1.Coords( 909 , 340 )
+MakeSphere = GeomGraph.FNode( 'GEOM' , 'GEOM' , 'MakeSphere' )
+MakeSphere.SetName( 'MakeSphere' )
+MakeSphere.SetAuthor( '' )
+MakeSphere.SetContainer( 'localhost/FactoryServer' )
+MakeSphere.SetComment( 'MakeSphere from Geometry' )
+MakeSphere.Coords( 5 , 449 )
+
+# Creation of intermediate Output variables and of Control Links
+MakeBoxshape = MakeBox.Port( 'shape' )
+MakeCopyshape1 = GeomGraph.Link( MakeBoxshape , MakeCopy.Port( 'shape1' ) )
+MakeCopyshape1.AddCoord( 1 , 198 , 184 )
+MakeCopyshape1.AddCoord( 2 , 199 , 209 )
+MakeCopy_1shape1 = GeomGraph.Link( MakeBoxshape , MakeCopy_1.Port( 'shape1' ) )
+MakeCopy_1shape1.AddCoord( 1 , 198 , 441 )
+MakeCopy_1shape1.AddCoord( 2 , 198 , 209 )
+MakeCopyshape = MakeCopy.Port( 'shape' )
+MakeTranslationshape1 = GeomGraph.Link( MakeCopyshape , MakeTranslation.Port( 'shape1' ) )
+MakeCopy_1shape = MakeCopy_1.Port( 'shape' )
+MakeFuseshape2 = GeomGraph.Link( MakeCopy_1shape , MakeFuse.Port( 'shape2' ) )
+MakeFuseshape2.AddCoord( 1 , 642 , 362 )
+MakeFuseshape2.AddCoord( 2 , 642 , 442 )
+MakeTranslationshape = MakeTranslation.Port( 'shape' )
+MakeFuseshape1 = GeomGraph.Link( MakeTranslationshape , MakeFuse.Port( 'shape1' ) )
+MakeFuseshape1.AddCoord( 1 , 643 , 330 )
+MakeFuseshape1.AddCoord( 2 , 644 , 195 )
+MakeFuseshape = MakeFuse.Port( 'shape' )
+MakeFuse_1shape1 = GeomGraph.Link( MakeFuseshape , MakeFuse_1.Port( 'shape1' ) )
+MakeFuse_1shape1.AddCoord( 1 , 872 , 445 )
+MakeFuse_1shape1.AddCoord( 2 , 874 , 333 )
+MakeSphereshape = MakeSphere.Port( 'shape' )
+MakeFuse_1shape2 = GeomGraph.Link( MakeSphereshape , MakeFuse_1.Port( 'shape2' ) )
+MakeFuse_1shape2.AddCoord( 1 , 872 , 474 )
+MakeFuse_1shape2.AddCoord( 2 , 871 , 552 )
+
+# Creation of Input datas
+MakeBoxx1 = MakeBox.Input( 'x1' , 0)
+MakeBoxy1 = MakeBox.Input( 'y1' , 0)
+MakeBoxz1 = MakeBox.Input( 'z1' , 0)
+MakeBoxx2 = MakeBox.Input( 'x2' , 50)
+MakeBoxy2 = MakeBox.Input( 'y2' , 50)
+MakeBoxz2 = MakeBox.Input( 'z2' , 50)
+MakeTranslationx1 = MakeTranslation.Input( 'x1' , 25)
+MakeTranslationy1 = MakeTranslation.Input( 'y1' , 25)
+MakeTranslationz1 = MakeTranslation.Input( 'z1' , 25)
+MakeSpherex1 = MakeSphere.Input( 'x1' , 0)
+MakeSpherey1 = MakeSphere.Input( 'y1' , 0)
+MakeSpherez1 = MakeSphere.Input( 'z1' , 0)
+MakeSphereradius = MakeSphere.Input( 'radius' , 12)
+
+# Creation of Output variables
+MakeFuse_1shape = MakeFuse_1.Port( 'shape' )
+
+GeomGraph.Run()
+
+GeomGraph.DoneW()
+
+GeomGraph.PrintPorts()
+
index 8da148d60866d794cbf0f85eab56f21e53bc484c..663002d1323dd558129f62df5226b301b1f37f5a 100644 (file)
-<?xml version='1.0' encoding='us-ascii' ?>
-
-<!-- XML Dataflow -->
-
-<!-- Dataflow information -->
+<!DOCTYPE SuperGraph>
+<supergraph>
 <dataflow>
-       <info-list>
-               <node>
-                       <component-name>?</component-name>
-                       <interface-name>?</interface-name>
-                       <node-name>GeomGraph</node-name>
-                       <kind>1</kind>
-                       <coupled-node>?</coupled-node>
-                       <service>
-                               <service-name>GeomGraph</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeBox\x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeBox\y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeBox\z1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeBox\x2</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeBox\y2</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeBox\z2</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeTranslation\x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeTranslation\y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeTranslation\z1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeSphere\x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeSphere\y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeSphere\z1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeSphere\radius</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>MakeFuse_1\shape</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <Parameter-list>
-                       </Parameter-list>
-                       <PyFunction-list>
-                       </PyFunction-list>
-                       <creation-date>13/3/2003 - 11:46:34</creation-date>
-                       <lastmodification-date>13/3/2003 - 13:49:29</lastmodification-date>
-                       <editor-release>1.04</editor-release>
-                       <author>?</author>
-                       <container>?</container>
-                       <comment>?</comment>
-                       <x-position>0</x-position>
-                       <y-position>0</y-position>
-               </node>
-       </info-list>
-
-       <node-list>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeBox</node-name>
-                       <kind>0</kind>
-                       <coupled-node>?</coupled-node>
-                       <service>
-                               <service-name>MakeBox</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>z1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>x2</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>y2</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>z2</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>shape</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <Parameter-list>
-                       </Parameter-list>
-                       <PyFunction-list>
-                       </PyFunction-list>
-                       <creation-date>13/3/2003 - 11:46:45</creation-date>
-                       <lastmodification-date>13/3/2003 - 11:46:45</lastmodification-date>
-                       <editor-release>1.04</editor-release>
-                       <author>?</author>
-                       <container>localhost/FactoryServer</container>
-                       <comment>MakeBox from Geometry</comment>
-                       <x-position>5</x-position>
-                       <y-position>101</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeCopy</node-name>
-                       <kind>0</kind>
-                       <coupled-node>?</coupled-node>
-                       <service>
-                               <service-name>MakeCopy</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape1</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>shape</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <Parameter-list>
-                       </Parameter-list>
-                       <PyFunction-list>
-                       </PyFunction-list>
-                       <creation-date>13/3/2003 - 11:46:48</creation-date>
-                       <lastmodification-date>13/3/2003 - 11:46:48</lastmodification-date>
-                       <editor-release>1.04</editor-release>
-                       <author>?</author>
-                       <container>localhost/FactoryServer</container>
-                       <comment>MakeCopy from Geometry</comment>
-                       <x-position>235</x-position>
-                       <y-position>77</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeCopy_1</node-name>
-                       <kind>0</kind>
-                       <coupled-node>?</coupled-node>
-                       <service>
-                               <service-name>MakeCopy</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape1</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>shape</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <Parameter-list>
-                       </Parameter-list>
-                       <PyFunction-list>
-                       </PyFunction-list>
-                       <creation-date>13/3/2003 - 11:46:49</creation-date>
-                       <lastmodification-date>13/3/2003 - 11:46:49</lastmodification-date>
-                       <editor-release>1.04</editor-release>
-                       <author>?</author>
-                       <container>localhost/FactoryServer</container>
-                       <comment>MakeCopy from Geometry</comment>
-                       <x-position>232</x-position>
-                       <y-position>332</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeTranslation</node-name>
-                       <kind>0</kind>
-                       <coupled-node>?</coupled-node>
-                       <service>
-                               <service-name>MakeTranslation</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>z1</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>shape</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <Parameter-list>
-                       </Parameter-list>
-                       <PyFunction-list>
-                       </PyFunction-list>
-                       <creation-date>13/3/2003 - 11:46:51</creation-date>
-                       <lastmodification-date>13/3/2003 - 11:46:51</lastmodification-date>
-                       <editor-release>1.04</editor-release>
-                       <author>?</author>
-                       <container>localhost/FactoryServer</container>
-                       <comment>MakeTranslation from Geometry</comment>
-                       <x-position>449</x-position>
-                       <y-position>86</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeFuse</node-name>
-                       <kind>0</kind>
-                       <coupled-node>?</coupled-node>
-                       <service>
-                               <service-name>MakeFuse</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape2</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>shape</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <Parameter-list>
-                       </Parameter-list>
-                       <PyFunction-list>
-                       </PyFunction-list>
-                       <creation-date>13/3/2003 - 11:46:55</creation-date>
-                       <lastmodification-date>13/3/2003 - 11:46:55</lastmodification-date>
-                       <editor-release>1.04</editor-release>
-                       <author>?</author>
-                       <container>localhost/FactoryServer</container>
-                       <comment>MakeFuse from Geometry</comment>
-                       <x-position>678</x-position>
-                       <y-position>224</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeFuse_1</node-name>
-                       <kind>0</kind>
-                       <coupled-node>?</coupled-node>
-                       <service>
-                               <service-name>MakeFuse</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape2</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>shape</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <Parameter-list>
-                       </Parameter-list>
-                       <PyFunction-list>
-                       </PyFunction-list>
-                       <creation-date>13/3/2003 - 11:46:58</creation-date>
-                       <lastmodification-date>13/3/2003 - 11:46:58</lastmodification-date>
-                       <editor-release>1.04</editor-release>
-                       <author>?</author>
-                       <container>localhost/FactoryServer</container>
-                       <comment>MakeFuse from Geometry</comment>
-                       <x-position>909</x-position>
-                       <y-position>340</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeSphere</node-name>
-                       <kind>0</kind>
-                       <coupled-node>?</coupled-node>
-                       <service>
-                               <service-name>MakeSphere</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>z1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>radius</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>shape</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <Parameter-list>
-                       </Parameter-list>
-                       <PyFunction-list>
-                       </PyFunction-list>
-                       <creation-date>13/3/2003 - 11:47:0</creation-date>
-                       <lastmodification-date>13/3/2003 - 11:47:0</lastmodification-date>
-                       <editor-release>1.04</editor-release>
-                       <author>?</author>
-                       <container>localhost/FactoryServer</container>
-                       <comment>MakeSphere from Geometry</comment>
-                       <x-position>5</x-position>
-                       <y-position>449</y-position>
-               </node>
-       </node-list>
-
-       <link-list>
-               <link>
-                       <fromnode-name>MakeBox</fromnode-name>
-                       <fromserviceparameter-name>shape</fromserviceparameter-name>
-                       <tonode-name>MakeCopy</tonode-name>
-                       <toserviceparameter-name>shape1</toserviceparameter-name>
-                       <coord-list>
-                               <coord>
-                                       <x>198</x>
-                                       <y>184</y>
-                               </coord>
-                               <coord>
-                                       <x>199</x>
-                                       <y>209</y>
-                               </coord>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeBox</fromnode-name>
-                       <fromserviceparameter-name>shape</fromserviceparameter-name>
-                       <tonode-name>MakeCopy_1</tonode-name>
-                       <toserviceparameter-name>shape1</toserviceparameter-name>
-                       <coord-list>
-                               <coord>
-                                       <x>198</x>
-                                       <y>441</y>
-                               </coord>
-                               <coord>
-                                       <x>198</x>
-                                       <y>209</y>
-                               </coord>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeCopy</fromnode-name>
-                       <fromserviceparameter-name>shape</fromserviceparameter-name>
-                       <tonode-name>MakeTranslation</tonode-name>
-                       <toserviceparameter-name>shape1</toserviceparameter-name>
-                       <coord-list>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeCopy_1</fromnode-name>
-                       <fromserviceparameter-name>shape</fromserviceparameter-name>
-                       <tonode-name>MakeFuse</tonode-name>
-                       <toserviceparameter-name>shape2</toserviceparameter-name>
-                       <coord-list>
-                               <coord>
-                                       <x>642</x>
-                                       <y>362</y>
-                               </coord>
-                               <coord>
-                                       <x>642</x>
-                                       <y>442</y>
-                               </coord>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeTranslation</fromnode-name>
-                       <fromserviceparameter-name>shape</fromserviceparameter-name>
-                       <tonode-name>MakeFuse</tonode-name>
-                       <toserviceparameter-name>shape1</toserviceparameter-name>
-                       <coord-list>
-                               <coord>
-                                       <x>643</x>
-                                       <y>330</y>
-                               </coord>
-                               <coord>
-                                       <x>644</x>
-                                       <y>195</y>
-                               </coord>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeFuse</fromnode-name>
-                       <fromserviceparameter-name>shape</fromserviceparameter-name>
-                       <tonode-name>MakeFuse_1</tonode-name>
-                       <toserviceparameter-name>shape1</toserviceparameter-name>
-                       <coord-list>
-                               <coord>
-                                       <x>872</x>
-                                       <y>445</y>
-                               </coord>
-                               <coord>
-                                       <x>874</x>
-                                       <y>333</y>
-                               </coord>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeSphere</fromnode-name>
-                       <fromserviceparameter-name>shape</fromserviceparameter-name>
-                       <tonode-name>MakeFuse_1</tonode-name>
-                       <toserviceparameter-name>shape2</toserviceparameter-name>
-                       <coord-list>
-                               <coord>
-                                       <x>872</x>
-                                       <y>474</y>
-                               </coord>
-                               <coord>
-                                       <x>871</x>
-                                       <y>552</y>
-                               </coord>
-                       </coord-list>
-               </link>
-       </link-list>
-
-       <data-list>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeBox\x1</fromserviceparameter-name>
-                       <tonode-name>MakeBox</tonode-name>
-                       <toserviceparameter-name>x1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeBox\y1</fromserviceparameter-name>
-                       <tonode-name>MakeBox</tonode-name>
-                       <toserviceparameter-name>y1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeBox\z1</fromserviceparameter-name>
-                       <tonode-name>MakeBox</tonode-name>
-                       <toserviceparameter-name>z1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeBox\x2</fromserviceparameter-name>
-                       <tonode-name>MakeBox</tonode-name>
-                       <toserviceparameter-name>x2</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>50</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeBox\y2</fromserviceparameter-name>
-                       <tonode-name>MakeBox</tonode-name>
-                       <toserviceparameter-name>y2</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>50</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeBox\z2</fromserviceparameter-name>
-                       <tonode-name>MakeBox</tonode-name>
-                       <toserviceparameter-name>z2</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>50</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeTranslation\x1</fromserviceparameter-name>
-                       <tonode-name>MakeTranslation</tonode-name>
-                       <toserviceparameter-name>x1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>25</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeTranslation\y1</fromserviceparameter-name>
-                       <tonode-name>MakeTranslation</tonode-name>
-                       <toserviceparameter-name>y1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>25</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeTranslation\z1</fromserviceparameter-name>
-                       <tonode-name>MakeTranslation</tonode-name>
-                       <toserviceparameter-name>z1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>25</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeSphere\x1</fromserviceparameter-name>
-                       <tonode-name>MakeSphere</tonode-name>
-                       <toserviceparameter-name>x1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeSphere\y1</fromserviceparameter-name>
-                       <tonode-name>MakeSphere</tonode-name>
-                       <toserviceparameter-name>y1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeSphere\z1</fromserviceparameter-name>
-                       <tonode-name>MakeSphere</tonode-name>
-                       <toserviceparameter-name>z1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>GeomGraph</fromnode-name>
-                       <fromserviceparameter-name>MakeSphere\radius</fromserviceparameter-name>
-                       <tonode-name>MakeSphere</tonode-name>
-                       <toserviceparameter-name>radius</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>12</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-       </data-list>
-
-</dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>aNewDataFlow_1</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>SetStudyID__theStudyID</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__theX1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__theY1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__theZ1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__theX2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__theY2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__theZ2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>TranslateDXDYDZ__theDX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>TranslateDXDYDZ__theDY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>TranslateDXDYDZ__theDZ</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__theX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__theY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__theZ</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__theRadius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>MakeFuse_1__return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>29/10/2004 - 10:52:34</creation-date>
+    <lastmodification-date>11/11/2004 - 11:41:31</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>SetStudyID</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>SetStudyID</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>theStudyID</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 11:16:35</creation-date>
+    <lastmodification-date>11/11/2004 - 11:16:35</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>SetStudyID from GEOM_Superv</comment>
+    <x-position>14</x-position>
+    <y-position>241</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeBox</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeBox</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theX1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theY1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theZ1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theX2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theY2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theZ2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 11:17:44</creation-date>
+    <lastmodification-date>11/11/2004 - 11:17:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeBox from GEOM_Superv</comment>
+    <x-position>198</x-position>
+    <y-position>46</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeCopy</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theOriginal</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 11:36:29</creation-date>
+    <lastmodification-date>11/11/2004 - 11:36:29</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeCopy from GEOM_Superv</comment>
+    <x-position>383</x-position>
+    <y-position>46</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>TranslateDXDYDZ</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>TranslateDXDYDZ</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theObject</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDZ</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 11:37:10</creation-date>
+    <lastmodification-date>11/11/2004 - 11:37:10</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>TranslateDXDYDZ from GEOM_Superv</comment>
+    <x-position>579</x-position>
+    <y-position>46</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeCopy_1</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theOriginal</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 11:38:45</creation-date>
+    <lastmodification-date>11/11/2004 - 11:38:45</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeCopy from GEOM_Superv</comment>
+    <x-position>384</x-position>
+    <y-position>168</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeSphere_1</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeSphere</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theZ</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theRadius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 11:38:54</creation-date>
+    <lastmodification-date>11/11/2004 - 11:38:54</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeSphere from GEOM_Superv</comment>
+    <x-position>201</x-position>
+    <y-position>332</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeFuse</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 11:39:55</creation-date>
+    <lastmodification-date>11/11/2004 - 11:39:55</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeFuse from GEOM_Superv</comment>
+    <x-position>790</x-position>
+    <y-position>148</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeFuse_1</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 11:40:15</creation-date>
+    <lastmodification-date>11/11/2004 - 11:40:15</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeFuse from GEOM_Superv</comment>
+    <x-position>993</x-position>
+    <y-position>312</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>SetStudyID</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SetStudyID</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeBox</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeCopy</tonode-name>
+    <toserviceparameter-name>theOriginal</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeBox</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeCopy_1</tonode-name>
+    <toserviceparameter-name>theOriginal</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theObject</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>TranslateDXDYDZ</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>theShape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy_1</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>theShape2</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeSphere_1</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>theShape2</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeFuse</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>theShape1</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>SetStudyID__theStudyID</fromserviceparameter-name>
+    <tonode-name>SetStudyID</tonode-name>
+    <toserviceparameter-name>theStudyID</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>1</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theX1</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>theX1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theY1</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>theY1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theZ1</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>theZ1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theX2</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>theX2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theY2</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>theY2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theZ2</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>theZ2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDX</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDX</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDY</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDY</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDZ</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDZ</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__theX</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>theX</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__theY</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>theY</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__theZ</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>theZ</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__theRadius</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>theRadius</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>12</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
diff --git a/examples/GeomGraph.xml_old b/examples/GeomGraph.xml_old
new file mode 100644 (file)
index 0000000..8da148d
--- /dev/null
@@ -0,0 +1,651 @@
+<?xml version='1.0' encoding='us-ascii' ?>
+
+<!-- XML Dataflow -->
+
+<!-- Dataflow information -->
+<dataflow>
+       <info-list>
+               <node>
+                       <component-name>?</component-name>
+                       <interface-name>?</interface-name>
+                       <node-name>GeomGraph</node-name>
+                       <kind>1</kind>
+                       <coupled-node>?</coupled-node>
+                       <service>
+                               <service-name>GeomGraph</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeBox\x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeBox\y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeBox\z1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeBox\x2</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeBox\y2</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeBox\z2</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeTranslation\x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeTranslation\y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeTranslation\z1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeSphere\x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeSphere\y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeSphere\z1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeSphere\radius</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>MakeFuse_1\shape</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <Parameter-list>
+                       </Parameter-list>
+                       <PyFunction-list>
+                       </PyFunction-list>
+                       <creation-date>13/3/2003 - 11:46:34</creation-date>
+                       <lastmodification-date>13/3/2003 - 13:49:29</lastmodification-date>
+                       <editor-release>1.04</editor-release>
+                       <author>?</author>
+                       <container>?</container>
+                       <comment>?</comment>
+                       <x-position>0</x-position>
+                       <y-position>0</y-position>
+               </node>
+       </info-list>
+
+       <node-list>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeBox</node-name>
+                       <kind>0</kind>
+                       <coupled-node>?</coupled-node>
+                       <service>
+                               <service-name>MakeBox</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>z1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>x2</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>y2</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>z2</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>shape</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <Parameter-list>
+                       </Parameter-list>
+                       <PyFunction-list>
+                       </PyFunction-list>
+                       <creation-date>13/3/2003 - 11:46:45</creation-date>
+                       <lastmodification-date>13/3/2003 - 11:46:45</lastmodification-date>
+                       <editor-release>1.04</editor-release>
+                       <author>?</author>
+                       <container>localhost/FactoryServer</container>
+                       <comment>MakeBox from Geometry</comment>
+                       <x-position>5</x-position>
+                       <y-position>101</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeCopy</node-name>
+                       <kind>0</kind>
+                       <coupled-node>?</coupled-node>
+                       <service>
+                               <service-name>MakeCopy</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape1</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>shape</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <Parameter-list>
+                       </Parameter-list>
+                       <PyFunction-list>
+                       </PyFunction-list>
+                       <creation-date>13/3/2003 - 11:46:48</creation-date>
+                       <lastmodification-date>13/3/2003 - 11:46:48</lastmodification-date>
+                       <editor-release>1.04</editor-release>
+                       <author>?</author>
+                       <container>localhost/FactoryServer</container>
+                       <comment>MakeCopy from Geometry</comment>
+                       <x-position>235</x-position>
+                       <y-position>77</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeCopy_1</node-name>
+                       <kind>0</kind>
+                       <coupled-node>?</coupled-node>
+                       <service>
+                               <service-name>MakeCopy</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape1</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>shape</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <Parameter-list>
+                       </Parameter-list>
+                       <PyFunction-list>
+                       </PyFunction-list>
+                       <creation-date>13/3/2003 - 11:46:49</creation-date>
+                       <lastmodification-date>13/3/2003 - 11:46:49</lastmodification-date>
+                       <editor-release>1.04</editor-release>
+                       <author>?</author>
+                       <container>localhost/FactoryServer</container>
+                       <comment>MakeCopy from Geometry</comment>
+                       <x-position>232</x-position>
+                       <y-position>332</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeTranslation</node-name>
+                       <kind>0</kind>
+                       <coupled-node>?</coupled-node>
+                       <service>
+                               <service-name>MakeTranslation</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>z1</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>shape</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <Parameter-list>
+                       </Parameter-list>
+                       <PyFunction-list>
+                       </PyFunction-list>
+                       <creation-date>13/3/2003 - 11:46:51</creation-date>
+                       <lastmodification-date>13/3/2003 - 11:46:51</lastmodification-date>
+                       <editor-release>1.04</editor-release>
+                       <author>?</author>
+                       <container>localhost/FactoryServer</container>
+                       <comment>MakeTranslation from Geometry</comment>
+                       <x-position>449</x-position>
+                       <y-position>86</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeFuse</node-name>
+                       <kind>0</kind>
+                       <coupled-node>?</coupled-node>
+                       <service>
+                               <service-name>MakeFuse</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape2</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>shape</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <Parameter-list>
+                       </Parameter-list>
+                       <PyFunction-list>
+                       </PyFunction-list>
+                       <creation-date>13/3/2003 - 11:46:55</creation-date>
+                       <lastmodification-date>13/3/2003 - 11:46:55</lastmodification-date>
+                       <editor-release>1.04</editor-release>
+                       <author>?</author>
+                       <container>localhost/FactoryServer</container>
+                       <comment>MakeFuse from Geometry</comment>
+                       <x-position>678</x-position>
+                       <y-position>224</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeFuse_1</node-name>
+                       <kind>0</kind>
+                       <coupled-node>?</coupled-node>
+                       <service>
+                               <service-name>MakeFuse</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape2</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>shape</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <Parameter-list>
+                       </Parameter-list>
+                       <PyFunction-list>
+                       </PyFunction-list>
+                       <creation-date>13/3/2003 - 11:46:58</creation-date>
+                       <lastmodification-date>13/3/2003 - 11:46:58</lastmodification-date>
+                       <editor-release>1.04</editor-release>
+                       <author>?</author>
+                       <container>localhost/FactoryServer</container>
+                       <comment>MakeFuse from Geometry</comment>
+                       <x-position>909</x-position>
+                       <y-position>340</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeSphere</node-name>
+                       <kind>0</kind>
+                       <coupled-node>?</coupled-node>
+                       <service>
+                               <service-name>MakeSphere</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>z1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>radius</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>shape</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <Parameter-list>
+                       </Parameter-list>
+                       <PyFunction-list>
+                       </PyFunction-list>
+                       <creation-date>13/3/2003 - 11:47:0</creation-date>
+                       <lastmodification-date>13/3/2003 - 11:47:0</lastmodification-date>
+                       <editor-release>1.04</editor-release>
+                       <author>?</author>
+                       <container>localhost/FactoryServer</container>
+                       <comment>MakeSphere from Geometry</comment>
+                       <x-position>5</x-position>
+                       <y-position>449</y-position>
+               </node>
+       </node-list>
+
+       <link-list>
+               <link>
+                       <fromnode-name>MakeBox</fromnode-name>
+                       <fromserviceparameter-name>shape</fromserviceparameter-name>
+                       <tonode-name>MakeCopy</tonode-name>
+                       <toserviceparameter-name>shape1</toserviceparameter-name>
+                       <coord-list>
+                               <coord>
+                                       <x>198</x>
+                                       <y>184</y>
+                               </coord>
+                               <coord>
+                                       <x>199</x>
+                                       <y>209</y>
+                               </coord>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeBox</fromnode-name>
+                       <fromserviceparameter-name>shape</fromserviceparameter-name>
+                       <tonode-name>MakeCopy_1</tonode-name>
+                       <toserviceparameter-name>shape1</toserviceparameter-name>
+                       <coord-list>
+                               <coord>
+                                       <x>198</x>
+                                       <y>441</y>
+                               </coord>
+                               <coord>
+                                       <x>198</x>
+                                       <y>209</y>
+                               </coord>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeCopy</fromnode-name>
+                       <fromserviceparameter-name>shape</fromserviceparameter-name>
+                       <tonode-name>MakeTranslation</tonode-name>
+                       <toserviceparameter-name>shape1</toserviceparameter-name>
+                       <coord-list>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeCopy_1</fromnode-name>
+                       <fromserviceparameter-name>shape</fromserviceparameter-name>
+                       <tonode-name>MakeFuse</tonode-name>
+                       <toserviceparameter-name>shape2</toserviceparameter-name>
+                       <coord-list>
+                               <coord>
+                                       <x>642</x>
+                                       <y>362</y>
+                               </coord>
+                               <coord>
+                                       <x>642</x>
+                                       <y>442</y>
+                               </coord>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeTranslation</fromnode-name>
+                       <fromserviceparameter-name>shape</fromserviceparameter-name>
+                       <tonode-name>MakeFuse</tonode-name>
+                       <toserviceparameter-name>shape1</toserviceparameter-name>
+                       <coord-list>
+                               <coord>
+                                       <x>643</x>
+                                       <y>330</y>
+                               </coord>
+                               <coord>
+                                       <x>644</x>
+                                       <y>195</y>
+                               </coord>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeFuse</fromnode-name>
+                       <fromserviceparameter-name>shape</fromserviceparameter-name>
+                       <tonode-name>MakeFuse_1</tonode-name>
+                       <toserviceparameter-name>shape1</toserviceparameter-name>
+                       <coord-list>
+                               <coord>
+                                       <x>872</x>
+                                       <y>445</y>
+                               </coord>
+                               <coord>
+                                       <x>874</x>
+                                       <y>333</y>
+                               </coord>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeSphere</fromnode-name>
+                       <fromserviceparameter-name>shape</fromserviceparameter-name>
+                       <tonode-name>MakeFuse_1</tonode-name>
+                       <toserviceparameter-name>shape2</toserviceparameter-name>
+                       <coord-list>
+                               <coord>
+                                       <x>872</x>
+                                       <y>474</y>
+                               </coord>
+                               <coord>
+                                       <x>871</x>
+                                       <y>552</y>
+                               </coord>
+                       </coord-list>
+               </link>
+       </link-list>
+
+       <data-list>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeBox\x1</fromserviceparameter-name>
+                       <tonode-name>MakeBox</tonode-name>
+                       <toserviceparameter-name>x1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeBox\y1</fromserviceparameter-name>
+                       <tonode-name>MakeBox</tonode-name>
+                       <toserviceparameter-name>y1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeBox\z1</fromserviceparameter-name>
+                       <tonode-name>MakeBox</tonode-name>
+                       <toserviceparameter-name>z1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeBox\x2</fromserviceparameter-name>
+                       <tonode-name>MakeBox</tonode-name>
+                       <toserviceparameter-name>x2</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>50</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeBox\y2</fromserviceparameter-name>
+                       <tonode-name>MakeBox</tonode-name>
+                       <toserviceparameter-name>y2</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>50</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeBox\z2</fromserviceparameter-name>
+                       <tonode-name>MakeBox</tonode-name>
+                       <toserviceparameter-name>z2</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>50</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeTranslation\x1</fromserviceparameter-name>
+                       <tonode-name>MakeTranslation</tonode-name>
+                       <toserviceparameter-name>x1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>25</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeTranslation\y1</fromserviceparameter-name>
+                       <tonode-name>MakeTranslation</tonode-name>
+                       <toserviceparameter-name>y1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>25</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeTranslation\z1</fromserviceparameter-name>
+                       <tonode-name>MakeTranslation</tonode-name>
+                       <toserviceparameter-name>z1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>25</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeSphere\x1</fromserviceparameter-name>
+                       <tonode-name>MakeSphere</tonode-name>
+                       <toserviceparameter-name>x1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeSphere\y1</fromserviceparameter-name>
+                       <tonode-name>MakeSphere</tonode-name>
+                       <toserviceparameter-name>y1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeSphere\z1</fromserviceparameter-name>
+                       <tonode-name>MakeSphere</tonode-name>
+                       <toserviceparameter-name>z1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>GeomGraph</fromnode-name>
+                       <fromserviceparameter-name>MakeSphere\radius</fromserviceparameter-name>
+                       <tonode-name>MakeSphere</tonode-name>
+                       <toserviceparameter-name>radius</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>12</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+       </data-list>
+
+</dataflow>
diff --git a/examples/GeomGraph_py.py b/examples/GeomGraph_py.py
new file mode 100644 (file)
index 0000000..163a2dd
--- /dev/null
@@ -0,0 +1,196 @@
+
+# Generated python file of Graph aNewDataFlow_1_4_2_1_1_2_2_1_1
+
+from SuperV import *
+
+# Graph creation of aNewDataFlow_1_4_2_1_1_2_2_1_1
+def DefaNewDataFlow_1_4_2_1_1_2_2_1_1() :
+    aNewDataFlow_1_4_2_1_1_2_2_1_1 = Graph( 'aNewDataFlow_1_4_2_1_1_2_2_1_1' )
+    aNewDataFlow_1_4_2_1_1_2_2_1_1.SetName( 'aNewDataFlow_1_4_2_1_1_2_2_1_1' )
+    aNewDataFlow_1_4_2_1_1_2_2_1_1.SetAuthor( '' )
+    aNewDataFlow_1_4_2_1_1_2_2_1_1.SetComment( '' )
+    aNewDataFlow_1_4_2_1_1_2_2_1_1.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    Pygag = []
+    Pygag.append( 'from batchmode_geompy import *  ' )
+    Pygag.append( 'def gag():   ' )
+    Pygag.append( '    # This is a gag   ' )
+    Pygag.append( '    return 1   ' )
+    gag = aNewDataFlow_1_4_2_1_1_2_2_1_1.INode( 'gag' , Pygag )
+    gag.SetName( 'gag' )
+    gag.SetAuthor( '' )
+    gag.SetComment( 'Compute Node' )
+    gag.Coords( 0 , 123 )
+    IgagGate = gag.GetInPort( 'Gate' )
+    OgagGate = gag.GetOutPort( 'Gate' )
+    
+    PyMakeBox1 = []
+    PyMakeBox1.append( 'def MakeBox1(x1,y1,z1,x2,y2,z2):   ' )
+    PyMakeBox1.append( '    aBox = MakeBox(x1,y1,z1,x2,y2,z2)  ' )
+    PyMakeBox1.append( '    return aBox   ' )
+    MakeBox1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.INode( 'MakeBox1' , PyMakeBox1 )
+    MakeBox1.SetName( 'MakeBox1' )
+    MakeBox1.SetAuthor( '' )
+    MakeBox1.SetComment( 'Compute Node' )
+    MakeBox1.Coords( 194 , 3 )
+    IMakeBox1x1 = MakeBox1.InPort( 'x1' , 'double' )
+    IMakeBox1y1 = MakeBox1.InPort( 'y1' , 'double' )
+    IMakeBox1z1 = MakeBox1.InPort( 'z1' , 'double' )
+    IMakeBox1x2 = MakeBox1.InPort( 'x2' , 'double' )
+    IMakeBox1y2 = MakeBox1.InPort( 'y2' , 'double' )
+    IMakeBox1z2 = MakeBox1.InPort( 'z2' , 'double' )
+    IMakeBox1Gate = MakeBox1.GetInPort( 'Gate' )
+    OMakeBox1shape = MakeBox1.OutPort( 'shape' , 'objref' )
+    OMakeBox1Gate = MakeBox1.GetOutPort( 'Gate' )
+    
+    PyMakeCopy_1 = []
+    PyMakeCopy_1.append( 'def MakeCopy_1(shape1):  ' )
+    PyMakeCopy_1.append( '    shape=MakeCopy(shape1) ' )
+    PyMakeCopy_1.append( '    return shape ' )
+    MakeCopy_1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.INode( 'MakeCopy_1' , PyMakeCopy_1 )
+    MakeCopy_1.SetName( 'MakeCopy_1' )
+    MakeCopy_1.SetAuthor( '' )
+    MakeCopy_1.SetComment( 'Compute Node' )
+    MakeCopy_1.Coords( 389 , 3 )
+    IMakeCopy_1shape1 = MakeCopy_1.InPort( 'shape1' , 'objref' )
+    IMakeCopy_1Gate = MakeCopy_1.GetInPort( 'Gate' )
+    OMakeCopy_1shape = MakeCopy_1.OutPort( 'shape' , 'objref' )
+    OMakeCopy_1Gate = MakeCopy_1.GetOutPort( 'Gate' )
+    
+    PyMakeCopy_2 = []
+    PyMakeCopy_2.append( 'def MakeCopy_2(shape1):  ' )
+    PyMakeCopy_2.append( '    shape=MakeCopy(shape1)  ' )
+    PyMakeCopy_2.append( '    return shape ' )
+    MakeCopy_2 = aNewDataFlow_1_4_2_1_1_2_2_1_1.INode( 'MakeCopy_2' , PyMakeCopy_2 )
+    MakeCopy_2.SetName( 'MakeCopy_2' )
+    MakeCopy_2.SetAuthor( '' )
+    MakeCopy_2.SetComment( 'Compute Node' )
+    MakeCopy_2.Coords( 389 , 136 )
+    IMakeCopy_2shape1 = MakeCopy_2.InPort( 'shape1' , 'objref' )
+    IMakeCopy_2Gate = MakeCopy_2.GetInPort( 'Gate' )
+    OMakeCopy_2shape = MakeCopy_2.OutPort( 'shape' , 'objref' )
+    OMakeCopy_2Gate = MakeCopy_2.GetOutPort( 'Gate' )
+    
+    PyMakeSphere_1 = []
+    PyMakeSphere_1.append( 'def MakeSphere_1(x1,y1,z1,radius):   ' )
+    PyMakeSphere_1.append( '    apoint=MakeVertex(x1,y1,z1) ' )
+    PyMakeSphere_1.append( '    shape=MakeSpherePntR(apoint,radius) ' )
+    PyMakeSphere_1.append( '    return shape ' )
+    MakeSphere_1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.INode( 'MakeSphere_1' , PyMakeSphere_1 )
+    MakeSphere_1.SetName( 'MakeSphere_1' )
+    MakeSphere_1.SetAuthor( '' )
+    MakeSphere_1.SetComment( 'Compute Node' )
+    MakeSphere_1.Coords( 203 , 315 )
+    IMakeSphere_1x1 = MakeSphere_1.InPort( 'x1' , 'double' )
+    IMakeSphere_1y1 = MakeSphere_1.InPort( 'y1' , 'double' )
+    IMakeSphere_1z1 = MakeSphere_1.InPort( 'z1' , 'double' )
+    IMakeSphere_1radius = MakeSphere_1.InPort( 'radius' , 'double' )
+    IMakeSphere_1Gate = MakeSphere_1.GetInPort( 'Gate' )
+    OMakeSphere_1shape = MakeSphere_1.OutPort( 'shape' , 'objref' )
+    OMakeSphere_1Gate = MakeSphere_1.GetOutPort( 'Gate' )
+    
+    PyMakeTranslation_1 = []
+    PyMakeTranslation_1.append( 'def MakeTranslation_1(shape1,x1,y1,z1):   ' )
+    PyMakeTranslation_1.append( '    shape = MakeTranslation(shape1,x1,y1,z1)  ' )
+    PyMakeTranslation_1.append( '    return shape  ' )
+    MakeTranslation_1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.INode( 'MakeTranslation_1' , PyMakeTranslation_1 )
+    MakeTranslation_1.SetName( 'MakeTranslation_1' )
+    MakeTranslation_1.SetAuthor( '' )
+    MakeTranslation_1.SetComment( 'Compute Node' )
+    MakeTranslation_1.Coords( 596 , 3 )
+    IMakeTranslation_1shape1 = MakeTranslation_1.InPort( 'shape1' , 'objref' )
+    IMakeTranslation_1x1 = MakeTranslation_1.InPort( 'x1' , 'double' )
+    IMakeTranslation_1y1 = MakeTranslation_1.InPort( 'y1' , 'double' )
+    IMakeTranslation_1z1 = MakeTranslation_1.InPort( 'z1' , 'double' )
+    IMakeTranslation_1Gate = MakeTranslation_1.GetInPort( 'Gate' )
+    OMakeTranslation_1shape = MakeTranslation_1.OutPort( 'shape' , 'objref' )
+    OMakeTranslation_1Gate = MakeTranslation_1.GetOutPort( 'Gate' )
+    
+    PyMakeFuse_1 = []
+    PyMakeFuse_1.append( 'def MakeFuse_1(shape1,shape2): ' )
+    PyMakeFuse_1.append( '    # fuse operation 3 ' )
+    PyMakeFuse_1.append( '    shape = MakeBoolean(shape1,shape2,3)  ' )
+    PyMakeFuse_1.append( '    return shape ' )
+    MakeFuse_1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.INode( 'MakeFuse_1' , PyMakeFuse_1 )
+    MakeFuse_1.SetName( 'MakeFuse_1' )
+    MakeFuse_1.SetAuthor( '' )
+    MakeFuse_1.SetComment( 'Compute Node' )
+    MakeFuse_1.Coords( 823 , 116 )
+    IMakeFuse_1shape1 = MakeFuse_1.InPort( 'shape1' , 'objref' )
+    IMakeFuse_1shape2 = MakeFuse_1.InPort( 'shape2' , 'objref' )
+    IMakeFuse_1Gate = MakeFuse_1.GetInPort( 'Gate' )
+    OMakeFuse_1shape = MakeFuse_1.OutPort( 'shape' , 'objref' )
+    OMakeFuse_1Gate = MakeFuse_1.GetOutPort( 'Gate' )
+    
+    PyMakeFuse_2 = []
+    PyMakeFuse_2.append( 'def MakeFuse_2(shape1,shape2):           ' )
+    PyMakeFuse_2.append( '    # fuse operation 3          ' )
+    PyMakeFuse_2.append( '    shape = MakeBoolean(shape1,shape2,3) ' )
+    PyMakeFuse_2.append( '    from SALOME_NamingServicePy import SALOME_NamingServicePy_i ' )
+    PyMakeFuse_2.append( '    myNamingService = SALOME_NamingServicePy_i(orb) ' )
+    PyMakeFuse_2.append( '    aSession = myNamingService.Resolve('/Kernel/Session') ' )
+    PyMakeFuse_2.append( '    aStudyId = aSession.GetActiveStudyId() ' )
+    PyMakeFuse_2.append( '    myStudyManager = myNamingService.Resolve('/myStudyManager') ' )
+    PyMakeFuse_2.append( '    aStudy = myStudyManager.GetStudyByID(aStudyId) ' )
+    PyMakeFuse_2.append( '    aSObject = geom.AddInStudy(aStudy, shape, "shape", None) ' )
+    PyMakeFuse_2.append( '    return shape ' )
+    MakeFuse_2 = aNewDataFlow_1_4_2_1_1_2_2_1_1.INode( 'MakeFuse_2' , PyMakeFuse_2 )
+    MakeFuse_2.SetName( 'MakeFuse_2' )
+    MakeFuse_2.SetAuthor( '' )
+    MakeFuse_2.SetComment( 'Compute Node' )
+    MakeFuse_2.Coords( 1049 , 295 )
+    IMakeFuse_2shape1 = MakeFuse_2.InPort( 'shape1' , 'objref' )
+    IMakeFuse_2shape2 = MakeFuse_2.InPort( 'shape2' , 'objref' )
+    IMakeFuse_2Gate = MakeFuse_2.GetInPort( 'Gate' )
+    OMakeFuse_2shape = MakeFuse_2.OutPort( 'shape' , 'objref' )
+    OMakeFuse_2Gate = MakeFuse_2.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LgagGateMakeBox1Gate = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OgagGate , IMakeBox1Gate )
+    
+    LgagGateMakeSphere_1Gate = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OgagGate , IMakeSphere_1Gate )
+    LgagGateMakeSphere_1Gate.AddCoord( 1 , 164 , 470 )
+    LgagGateMakeSphere_1Gate.AddCoord( 2 , 164 , 265 )
+    
+    LMakeBox1shapeMakeCopy_1shape1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OMakeBox1shape , IMakeCopy_1shape1 )
+    
+    LMakeBox1shapeMakeCopy_2shape1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OMakeBox1shape , IMakeCopy_2shape1 )
+    LMakeBox1shapeMakeCopy_2shape1.AddCoord( 1 , 384 , 207 )
+    
+    LMakeCopy_1shapeMakeTranslation_1shape1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OMakeCopy_1shape , IMakeTranslation_1shape1 )
+    
+    LMakeCopy_2shapeMakeFuse_1shape2 = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OMakeCopy_2shape , IMakeFuse_1shape2 )
+    LMakeCopy_2shapeMakeFuse_1shape2.AddCoord( 1 , 674 , 207 )
+    
+    LMakeSphere_1shapeMakeFuse_2shape2 = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OMakeSphere_1shape , IMakeFuse_2shape2 )
+    
+    LMakeTranslation_1shapeMakeFuse_1shape1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OMakeTranslation_1shape , IMakeFuse_1shape1 )
+    
+    LMakeFuse_1shapeMakeFuse_2shape1 = aNewDataFlow_1_4_2_1_1_2_2_1_1.Link( OMakeFuse_1shape , IMakeFuse_2shape1 )
+    LMakeFuse_1shapeMakeFuse_2shape1.AddCoord( 1 , 1017 , 366 )
+    LMakeFuse_1shapeMakeFuse_2shape1.AddCoord( 2 , 1017 , 187 )
+    
+    # Input datas
+    IMakeBox1x1.Input( 0 )
+    IMakeBox1y1.Input( 0 )
+    IMakeBox1z1.Input( 0 )
+    IMakeBox1x2.Input( 50 )
+    IMakeBox1y2.Input( 50 )
+    IMakeBox1z2.Input( 50 )
+    IMakeSphere_1x1.Input( 0 )
+    IMakeSphere_1y1.Input( 0 )
+    IMakeSphere_1z1.Input( 0 )
+    IMakeSphere_1radius.Input( 12 )
+    IMakeTranslation_1x1.Input( 25 )
+    IMakeTranslation_1y1.Input( 25 )
+    IMakeTranslation_1z1.Input( 25 )
+    
+    # Output Ports of the graph
+    #OMakeFuse_2shape = MakeFuse_2.GetOutPort( 'shape' )
+    return aNewDataFlow_1_4_2_1_1_2_2_1_1
+
+
+aNewDataFlow_1_4_2_1_1_2_2_1_1 = DefaNewDataFlow_1_4_2_1_1_2_2_1_1()
diff --git a/examples/GeomGraph_py.xml b/examples/GeomGraph_py.xml
new file mode 100644 (file)
index 0000000..d6ea4e9
--- /dev/null
@@ -0,0 +1,550 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__x2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__y2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__z2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__radius</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>MakeFuse_2__shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>25/8/2004 - 16:28:50</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>gag</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>gag</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>gag</FuncName>
+      <PyFunc><![CDATA[from batchmode_geompy import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def gag():   ]]></PyFunc>
+      <PyFunc><![CDATA[    # This is a gag   ]]></PyFunc>
+      <PyFunc><![CDATA[    return 1   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 10:50:25</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>0</x-position>
+    <y-position>123</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeBox1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeBox1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeBox1</FuncName>
+      <PyFunc><![CDATA[def MakeBox1(x1,y1,z1,x2,y2,z2):   ]]></PyFunc>
+      <PyFunc><![CDATA[    aBox = MakeBox(x1,y1,z1,x2,y2,z2)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return aBox   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 10:50:25</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>194</x-position>
+    <y-position>3</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeCopy_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeCopy_1</FuncName>
+      <PyFunc><![CDATA[def MakeCopy_1(shape1):  ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeCopy(shape1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 10:50:25</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>389</x-position>
+    <y-position>3</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeCopy_2</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy_2</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeCopy_2</FuncName>
+      <PyFunc><![CDATA[def MakeCopy_2(shape1):  ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeCopy(shape1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 10:50:25</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>389</x-position>
+    <y-position>136</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeSphere_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeSphere_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>radius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeSphere_1</FuncName>
+      <PyFunc><![CDATA[def MakeSphere_1(x1,y1,z1,radius):   ]]></PyFunc>
+      <PyFunc><![CDATA[    apoint=MakeVertex(x1,y1,z1) ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeSpherePntR(apoint,radius) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 10:50:25</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>203</x-position>
+    <y-position>315</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeTranslation_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeTranslation_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeTranslation_1</FuncName>
+      <PyFunc><![CDATA[def MakeTranslation_1(shape1,x1,y1,z1):   ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeTranslation(shape1,x1,y1,z1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 10:50:25</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>596</x-position>
+    <y-position>3</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeFuse_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeFuse_1</FuncName>
+      <PyFunc><![CDATA[def MakeFuse_1(shape1,shape2): ]]></PyFunc>
+      <PyFunc><![CDATA[    # fuse operation 3 ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeBoolean(shape1,shape2,3)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 10:50:25</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>823</x-position>
+    <y-position>116</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeFuse_2</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse_2</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeFuse_2</FuncName>
+      <PyFunc><![CDATA[def MakeFuse_2(shape1,shape2):           ]]></PyFunc>
+      <PyFunc><![CDATA[    # fuse operation 3          ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeBoolean(shape1,shape2,3) ]]></PyFunc>
+      <PyFunc><![CDATA[    from SALOME_NamingServicePy import SALOME_NamingServicePy_i ]]></PyFunc>
+      <PyFunc><![CDATA[    myNamingService = SALOME_NamingServicePy_i(orb) ]]></PyFunc>
+      <PyFunc><![CDATA[    aSession = myNamingService.Resolve('/Kernel/Session') ]]></PyFunc>
+      <PyFunc><![CDATA[    aStudyId = aSession.GetActiveStudyId() ]]></PyFunc>
+      <PyFunc><![CDATA[    myStudyManager = myNamingService.Resolve('/myStudyManager') ]]></PyFunc>
+      <PyFunc><![CDATA[    aStudy = myStudyManager.GetStudyByID(aStudyId) ]]></PyFunc>
+      <PyFunc><![CDATA[    aSObject = geom.AddInStudy(aStudy, shape, "shape", None) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 10:50:25</creation-date>
+    <lastmodification-date>29/10/2004 - 10:50:25</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>1049</x-position>
+    <y-position>295</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>gag</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>gag</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>164</x>
+      <y>470</y>     </coord>
+     <coord>
+<x>164</x>
+      <y>265</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeBox1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeBox1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy_2</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>384</x>
+      <y>207</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeCopy_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy_2</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape2</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>674</x>
+      <y>207</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeSphere_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_2</tonode-name>
+    <toserviceparameter-name>shape2</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeTranslation_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeFuse_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_2</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>1017</x>
+      <y>366</y>     </coord>
+     <coord>
+<x>1017</x>
+      <y>187</y>     </coord>    </coord-list>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__x1</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__y1</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__z1</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__x2</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>x2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__y2</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>y2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__z2</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>z2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__x1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__y1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__z1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__radius</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>radius</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>12</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__x1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__y1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1_1_2_2_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__z1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
index 15906f188968d6bf1c5d56cb60d8e5a0a6c97e40..1fc954a95bace80d8f013443a9584f4674d320c8 100755 (executable)
@@ -134,6 +134,7 @@ CompareResult = Compare.Port( 'Result' )
 
 GraphCpuUsed.Run()
 GraphCpuUsed.DoneW()
+print GraphCpuUsed.State()
 GraphCpuUsed.PrintPorts()
 print "sigma",sigma.CpuUsed(),"seconds"
 print "Sigma",Sigma.CpuUsed(),"seconds"
index 945840ef437dee215d157f18297054f6cf07556c..325ee695c814fcf65173a4ac6edd06c5e1cce592 100644 (file)
@@ -62,7 +62,9 @@ AddAndCompare_ServiceinParameter.append( SALOME_ModuleCatalog.ServicesParameter(
 AddAndCompare_ServiceoutParameter = []
 AddAndCompare_ServiceoutParameter.append( SALOME_ModuleCatalog.ServicesParameter( 'double' , 'FuncValue' ) )
 AddAndCompare_ServiceoutParameter.append( SALOME_ModuleCatalog.ServicesParameter( 'double' , 'z' ) )
-AddAndCompare_Service = SALOME_ModuleCatalog.Service( 'AddAndCompare' , AddAndCompare_ServiceinParameter , AddAndCompare_ServiceoutParameter , 0 )
+AddAndCompare_ServiceinStreamParameter = []
+AddAndCompare_ServiceoutStreamParameter = []
+AddAndCompare_Service = SALOME_ModuleCatalog.Service( 'AddAndCompare' , AddAndCompare_ServiceinParameter , AddAndCompare_ServiceoutParameter , AddAndCompare_ServiceinStreamParameter , AddAndCompare_ServiceoutStreamParameter , 0 , 0 )
 AddAndCompare = GraphEssai3.CNode( AddAndCompare_Service )
 AddAndCompare.SetName( 'AddAndCompare' )
 AddAndCompare.SetAuthor( '' )
@@ -117,7 +119,7 @@ GraphEssai3.Run()
 
 GraphEssai3.DoneW()
 
-GraphEssai3.State()
+print GraphEssai3.State()
 
 GraphEssai3.PrintPorts()
 
index 7329474687ebddfeec46d0c50001ad77d8631791..672e9dcc721652264d07c0a4359ab30644cc8c98 100644 (file)
@@ -13,7 +13,6 @@
 from SuperV import *
 
 myGraph = Graph( "myDataFlow" )
-print myGraph.SetContainer('FactoryServer')
 
 Add = myGraph.Node( "AddComponent" , "AddInterface" , "Add" )
 print Add.SetContainer('dm2s0017')
diff --git a/examples/GraphGeomEssai.py b/examples/GraphGeomEssai.py
new file mode 100644 (file)
index 0000000..cd59a99
--- /dev/null
@@ -0,0 +1,116 @@
+
+# Generated python file of Graph aNewDataFlow
+
+from SuperV import *
+
+# Graph creation of aNewDataFlow
+def DefaNewDataFlow() :
+    aNewDataFlow = Graph( 'aNewDataFlow' )
+    aNewDataFlow.SetName( 'aNewDataFlow' )
+    aNewDataFlow.SetAuthor( '' )
+    aNewDataFlow.SetComment( '' )
+    aNewDataFlow.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    SetStudyID = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'SetStudyID' )
+    SetStudyID.SetName( 'SetStudyID' )
+    SetStudyID.SetAuthor( '' )
+    SetStudyID.SetContainer( 'localhost/FactoryServer' )
+    SetStudyID.SetComment( 'SetStudyID from GEOM_Superv' )
+    SetStudyID.Coords( 13 , 109 )
+    ISetStudyIDtheStudyID = SetStudyID.GetInPort( 'theStudyID' )
+    ISetStudyIDGate = SetStudyID.GetInPort( 'Gate' )
+    OSetStudyIDGate = SetStudyID.GetOutPort( 'Gate' )
+    
+    MakeSphere = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeSphere' )
+    MakeSphere.SetName( 'MakeSphere' )
+    MakeSphere.SetAuthor( '' )
+    MakeSphere.SetContainer( 'localhost/FactoryServer' )
+    MakeSphere.SetComment( 'MakeSphere from GEOM_Superv' )
+    MakeSphere.Coords( 210 , 49 )
+    IMakeSpheretheX = MakeSphere.GetInPort( 'theX' )
+    IMakeSpheretheY = MakeSphere.GetInPort( 'theY' )
+    IMakeSpheretheZ = MakeSphere.GetInPort( 'theZ' )
+    IMakeSpheretheRadius = MakeSphere.GetInPort( 'theRadius' )
+    IMakeSphereGate = MakeSphere.GetInPort( 'Gate' )
+    OMakeSpherereturn = MakeSphere.GetOutPort( 'return' )
+    OMakeSphereGate = MakeSphere.GetOutPort( 'Gate' )
+    
+    MakeCopy = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeCopy' )
+    MakeCopy.SetName( 'MakeCopy' )
+    MakeCopy.SetAuthor( '' )
+    MakeCopy.SetContainer( 'localhost/FactoryServer' )
+    MakeCopy.SetComment( 'MakeCopy from GEOM_Superv' )
+    MakeCopy.Coords( 412 , 12 )
+    IMakeCopytheOriginal = MakeCopy.GetInPort( 'theOriginal' )
+    IMakeCopyGate = MakeCopy.GetInPort( 'Gate' )
+    OMakeCopyreturn = MakeCopy.GetOutPort( 'return' )
+    OMakeCopyGate = MakeCopy.GetOutPort( 'Gate' )
+    
+    MakeCopy_1 = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeCopy' )
+    MakeCopy_1.SetName( 'MakeCopy_1' )
+    MakeCopy_1.SetAuthor( '' )
+    MakeCopy_1.SetContainer( 'localhost/FactoryServer' )
+    MakeCopy_1.SetComment( 'MakeCopy from GEOM_Superv' )
+    MakeCopy_1.Coords( 414 , 183 )
+    IMakeCopy_1theOriginal = MakeCopy_1.GetInPort( 'theOriginal' )
+    IMakeCopy_1Gate = MakeCopy_1.GetInPort( 'Gate' )
+    OMakeCopy_1return = MakeCopy_1.GetOutPort( 'return' )
+    OMakeCopy_1Gate = MakeCopy_1.GetOutPort( 'Gate' )
+    
+    TranslateDXDYDZ = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'TranslateDXDYDZ' )
+    TranslateDXDYDZ.SetName( 'TranslateDXDYDZ' )
+    TranslateDXDYDZ.SetAuthor( '' )
+    TranslateDXDYDZ.SetContainer( 'localhost/FactoryServer' )
+    TranslateDXDYDZ.SetComment( 'TranslateDXDYDZ from GEOM_Superv' )
+    TranslateDXDYDZ.Coords( 606 , 12 )
+    ITranslateDXDYDZtheObject = TranslateDXDYDZ.GetInPort( 'theObject' )
+    ITranslateDXDYDZtheDX = TranslateDXDYDZ.GetInPort( 'theDX' )
+    ITranslateDXDYDZtheDY = TranslateDXDYDZ.GetInPort( 'theDY' )
+    ITranslateDXDYDZtheDZ = TranslateDXDYDZ.GetInPort( 'theDZ' )
+    ITranslateDXDYDZGate = TranslateDXDYDZ.GetInPort( 'Gate' )
+    OTranslateDXDYDZreturn = TranslateDXDYDZ.GetOutPort( 'return' )
+    OTranslateDXDYDZGate = TranslateDXDYDZ.GetOutPort( 'Gate' )
+    
+    MakeFuse = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeFuse' )
+    MakeFuse.SetName( 'MakeFuse' )
+    MakeFuse.SetAuthor( '' )
+    MakeFuse.SetContainer( 'localhost/FactoryServer' )
+    MakeFuse.SetComment( 'MakeFuse from GEOM_Superv' )
+    MakeFuse.Coords( 801 , 163 )
+    IMakeFusetheShape1 = MakeFuse.GetInPort( 'theShape1' )
+    IMakeFusetheShape2 = MakeFuse.GetInPort( 'theShape2' )
+    IMakeFuseGate = MakeFuse.GetInPort( 'Gate' )
+    OMakeFusereturn = MakeFuse.GetOutPort( 'return' )
+    OMakeFuseGate = MakeFuse.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LSetStudyIDGateMakeSphereGate = aNewDataFlow.Link( OSetStudyIDGate , IMakeSphereGate )
+    
+    LMakeSpherereturnMakeCopytheOriginal = aNewDataFlow.Link( OMakeSpherereturn , IMakeCopytheOriginal )
+    
+    LMakeSpherereturnMakeCopy_1theOriginal = aNewDataFlow.Link( OMakeSpherereturn , IMakeCopy_1theOriginal )
+    
+    LMakeCopyreturnTranslateDXDYDZtheObject = aNewDataFlow.Link( OMakeCopyreturn , ITranslateDXDYDZtheObject )
+    
+    LMakeCopy_1returnMakeFusetheShape2 = aNewDataFlow.Link( OMakeCopy_1return , IMakeFusetheShape2 )
+    
+    LTranslateDXDYDZreturnMakeFusetheShape1 = aNewDataFlow.Link( OTranslateDXDYDZreturn , IMakeFusetheShape1 )
+    
+    # Input datas
+    ISetStudyIDtheStudyID.Input( 1 )
+    IMakeSpheretheX.Input( 0 )
+    IMakeSpheretheY.Input( 0 )
+    IMakeSpheretheZ.Input( 0 )
+    IMakeSpheretheRadius.Input( 20 )
+    ITranslateDXDYDZtheDX.Input( 10 )
+    ITranslateDXDYDZtheDY.Input( 10 )
+    ITranslateDXDYDZtheDZ.Input( 10 )
+    
+    # Output Ports of the graph
+    #OMakeFusereturn = MakeFuse.GetOutPort( 'return' )
+    return aNewDataFlow
+
+
+aNewDataFlow = DefaNewDataFlow()
index 766f59cbd520175d40603612379b1f05d6cc7767..029943e398055756b1348d99d72cc8ac411764d0 100644 (file)
-<!DOCTYPE Dataflow>
+<!DOCTYPE SuperGraph>
+<supergraph>
 <dataflow>
 <info-list>
 <node>
 <component-name>?</component-name>
-   <interface-name>?</interface-name>
-   <node-name>GraphGeomEssai</node-name>
-   <kind>1</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>GraphGeomEssai</service-name>
-    <inParameter-list>
+    <interface-name>?</interface-name>
+    <node-name>aNewDataFlow</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>aNewDataFlow</service-name>
+     <inParameter-list>
 <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>SetStudyID__theStudyID</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeSphere\x1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>MakeSphere__theX</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeSphere\y1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>MakeSphere__theY</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeSphere\z1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>MakeSphere__theZ</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeSphere\radius</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>MakeSphere__theRadius</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeTranslation\x1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>TranslateDXDYDZ__theDX</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeTranslation\y1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>TranslateDXDYDZ__theDY</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeTranslation\z1</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
+       <inParameter-name>TranslateDXDYDZ__theDZ</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>MakeFuse\shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>10/7/2002 - 14:53:2</creation-date>
-   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>?</container>
-   <comment>?</comment>
-   <x-position>0</x-position>
-   <y-position>0</y-position>  </node> </info-list>
- <node-list>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>MakeFuse__return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>29/10/2004 - 11:8:11</creation-date>
+    <lastmodification-date>11/11/2004 - 12:53:24</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
 <node-list>
 <node>
-<component-name>GEOM</component-name>
-   <interface-name>GEOM</interface-name>
-   <node-name>MakeCopy</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MakeCopy</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape1</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>24/9/2003 - 16:13:48</creation-date>
-   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeCopy from GEOM</comment>
-   <x-position>269</x-position>
-   <y-position>85</y-position>  </node>
-  <node>
-<component-name>GEOM</component-name>
-   <interface-name>GEOM</interface-name>
-   <node-name>MakeFuse</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MakeFuse</service-name>
-    <inParameter-list>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>SetStudyID</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>SetStudyID</service-name>
+     <inParameter-list>
 <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape2</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>24/9/2003 - 16:13:48</creation-date>
-   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeFuse from GEOM</comment>
-   <x-position>725</x-position>
-   <y-position>179</y-position>  </node>
-  <node>
-<component-name>GEOM</component-name>
-   <interface-name>GEOM</interface-name>
-   <node-name>MakeSphere</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>theStudyID</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 12:50:30</creation-date>
+    <lastmodification-date>11/11/2004 - 12:50:30</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>SetStudyID from GEOM_Superv</comment>
+    <x-position>13</x-position>
+    <y-position>109</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeSphere</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
 <service-name>MakeSphere</service-name>
-    <inParameter-list>
+     <inParameter-list>
 <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>x1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>theX</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>y1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>theY</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>z1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>theZ</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>radius</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
+       <inParameter-name>theRadius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>24/9/2003 - 16:13:48</creation-date>
-   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeSphere from GEOM</comment>
-   <x-position>28</x-position>
-   <y-position>188</y-position>  </node>
-  <node>
-<component-name>GEOM</component-name>
-   <interface-name>GEOM</interface-name>
-   <node-name>MakeTranslation</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MakeTranslation</service-name>
-    <inParameter-list>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 12:51:22</creation-date>
+    <lastmodification-date>11/11/2004 - 12:51:22</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeSphere from GEOM_Superv</comment>
+    <x-position>210</x-position>
+    <y-position>49</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeCopy</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy</service-name>
+     <inParameter-list>
 <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape1</inParameter-name>     </inParameter>
-     <inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theOriginal</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 12:52:16</creation-date>
+    <lastmodification-date>11/11/2004 - 12:52:16</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeCopy from GEOM_Superv</comment>
+    <x-position>412</x-position>
+    <y-position>12</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeCopy_1</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theOriginal</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 12:52:31</creation-date>
+    <lastmodification-date>11/11/2004 - 12:52:31</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeCopy from GEOM_Superv</comment>
+    <x-position>414</x-position>
+    <y-position>183</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>TranslateDXDYDZ</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>TranslateDXDYDZ</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theObject</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>x1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>theDX</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>y1</inParameter-name>     </inParameter>
-     <inParameter>
+       <inParameter-name>theDY</inParameter-name>      </inParameter>
+      <inParameter>
 <inParameter-type>double</inParameter-type>
-      <inParameter-name>z1</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
+       <inParameter-name>theDZ</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>24/9/2003 - 16:13:48</creation-date>
-   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeTranslation from GEOM</comment>
-   <x-position>493</x-position>
-   <y-position>85</y-position>  </node>
-  <node>
-<component-name>GEOM</component-name>
-   <interface-name>GEOM</interface-name>
-   <node-name>MakeCopy_1</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MakeCopy</service-name>
-    <inParameter-list>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 12:52:54</creation-date>
+    <lastmodification-date>11/11/2004 - 12:52:54</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>TranslateDXDYDZ from GEOM_Superv</comment>
+    <x-position>606</x-position>
+    <y-position>12</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeFuse</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse</service-name>
+     <inParameter-list>
 <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape1</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>24/9/2003 - 16:13:48</creation-date>
-   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeCopy from GEOM</comment>
-   <x-position>283</x-position>
-   <y-position>391</y-position>  </node> </node-list>
- <link-list>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 12:53:16</creation-date>
+    <lastmodification-date>11/11/2004 - 12:53:16</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeFuse from GEOM_Superv</comment>
+    <x-position>801</x-position>
+    <y-position>163</y-position>   </node>  </node-list>
 <link-list>
 <link>
-<fromnode-name>MakeCopy</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MakeTranslation</tonode-name>
-   <toserviceparameter-name>shape1</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
+<fromnode-name>SetStudyID</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
 <fromnode-name>MakeSphere</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MakeCopy</tonode-name>
-   <toserviceparameter-name>shape1</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>225</x>
-     <y>165</y>    </coord>
-    <coord>
-<x>224</x>
-     <y>269</y>    </coord>   </coord-list>  </link>
-  <link>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeCopy</tonode-name>
+    <toserviceparameter-name>theOriginal</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
 <fromnode-name>MakeSphere</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MakeCopy_1</tonode-name>
-   <toserviceparameter-name>shape1</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>223</x>
-     <y>472</y>    </coord>
-    <coord>
-<x>224</x>
-     <y>270</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>MakeTranslation</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MakeFuse</tonode-name>
-   <toserviceparameter-name>shape1</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>688</x>
-     <y>259</y>    </coord>
-    <coord>
-<x>687</x>
-     <y>165</y>    </coord>   </coord-list>  </link>
-  <link>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeCopy_1</tonode-name>
+    <toserviceparameter-name>theOriginal</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theObject</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
 <fromnode-name>MakeCopy_1</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MakeFuse</tonode-name>
-   <toserviceparameter-name>shape2</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>689</x>
-     <y>289</y>    </coord>
-    <coord>
-<x>690</x>
-     <y>471</y>    </coord>   </coord-list>  </link> </link-list>
- <data-list>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>theShape2</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>TranslateDXDYDZ</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>theShape1</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
 <data-list>
 <data>
-<fromnode-name>GraphGeomEssai</fromnode-name>
-   <fromserviceparameter-name>MakeSphere\x1</fromserviceparameter-name>
-   <tonode-name>MakeSphere</tonode-name>
-   <toserviceparameter-name>x1</toserviceparameter-name>
-   <data-value>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>SetStudyID__theStudyID</fromserviceparameter-name>
+    <tonode-name>SetStudyID</tonode-name>
+    <toserviceparameter-name>theStudyID</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>1</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theX</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>theX</toserviceparameter-name>
+    <data-value>
 <value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphGeomEssai</fromnode-name>
-   <fromserviceparameter-name>MakeSphere\y1</fromserviceparameter-name>
-   <tonode-name>MakeSphere</tonode-name>
-   <toserviceparameter-name>y1</toserviceparameter-name>
-   <data-value>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theY</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>theY</toserviceparameter-name>
+    <data-value>
 <value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphGeomEssai</fromnode-name>
-   <fromserviceparameter-name>MakeSphere\z1</fromserviceparameter-name>
-   <tonode-name>MakeSphere</tonode-name>
-   <toserviceparameter-name>z1</toserviceparameter-name>
-   <data-value>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theZ</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>theZ</toserviceparameter-name>
+    <data-value>
 <value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphGeomEssai</fromnode-name>
-   <fromserviceparameter-name>MakeSphere\radius</fromserviceparameter-name>
-   <tonode-name>MakeSphere</tonode-name>
-   <toserviceparameter-name>radius</toserviceparameter-name>
-   <data-value>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theRadius</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>theRadius</toserviceparameter-name>
+    <data-value>
 <value-type>7</value-type>
-    <value>20</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphGeomEssai</fromnode-name>
-   <fromserviceparameter-name>MakeTranslation\x1</fromserviceparameter-name>
-   <tonode-name>MakeTranslation</tonode-name>
-   <toserviceparameter-name>x1</toserviceparameter-name>
-   <data-value>
+     <value>20</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDX</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDX</toserviceparameter-name>
+    <data-value>
 <value-type>7</value-type>
-    <value>10</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphGeomEssai</fromnode-name>
-   <fromserviceparameter-name>MakeTranslation\y1</fromserviceparameter-name>
-   <tonode-name>MakeTranslation</tonode-name>
-   <toserviceparameter-name>y1</toserviceparameter-name>
-   <data-value>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDY</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDY</toserviceparameter-name>
+    <data-value>
 <value-type>7</value-type>
-    <value>10</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphGeomEssai</fromnode-name>
-   <fromserviceparameter-name>MakeTranslation\z1</fromserviceparameter-name>
-   <tonode-name>MakeTranslation</tonode-name>
-   <toserviceparameter-name>z1</toserviceparameter-name>
-   <data-value>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDZ</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDZ</toserviceparameter-name>
+    <data-value>
 <value-type>7</value-type>
-    <value>10</value>   </data-value>
-   <coord-list/>  </data> </data-list></dataflow>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
diff --git a/examples/GraphGeomEssai.xml_old b/examples/GraphGeomEssai.xml_old
new file mode 100644 (file)
index 0000000..766f59c
--- /dev/null
@@ -0,0 +1,318 @@
+<!DOCTYPE Dataflow>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+   <interface-name>?</interface-name>
+   <node-name>GraphGeomEssai</node-name>
+   <kind>1</kind>
+   <coupled-node>?</coupled-node>
+   <service>
+<service-name>GraphGeomEssai</service-name>
+    <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>MakeSphere\x1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>MakeSphere\y1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>MakeSphere\z1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>MakeSphere\radius</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>MakeTranslation\x1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>MakeTranslation\y1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>MakeTranslation\z1</inParameter-name>     </inParameter>    </inParameter-list>
+    <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+      <outParameter-name>MakeFuse\shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
+   <Parameter-list/>
+   <PyFunction-list/>
+   <creation-date>10/7/2002 - 14:53:2</creation-date>
+   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
+   <editor-release>1.03</editor-release>
+   <author>?</author>
+   <container>?</container>
+   <comment>?</comment>
+   <x-position>0</x-position>
+   <y-position>0</y-position>  </node> </info-list>
+ <node-list>
+<node>
+<component-name>GEOM</component-name>
+   <interface-name>GEOM</interface-name>
+   <node-name>MakeCopy</node-name>
+   <kind>0</kind>
+   <coupled-node>?</coupled-node>
+   <service>
+<service-name>MakeCopy</service-name>
+    <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+      <inParameter-name>shape1</inParameter-name>     </inParameter>    </inParameter-list>
+    <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
+   <Parameter-list/>
+   <PyFunction-list/>
+   <creation-date>24/9/2003 - 16:13:48</creation-date>
+   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
+   <editor-release>1.03</editor-release>
+   <author>?</author>
+   <container>localhost/FactoryServer</container>
+   <comment>MakeCopy from GEOM</comment>
+   <x-position>269</x-position>
+   <y-position>85</y-position>  </node>
+  <node>
+<component-name>GEOM</component-name>
+   <interface-name>GEOM</interface-name>
+   <node-name>MakeFuse</node-name>
+   <kind>0</kind>
+   <coupled-node>?</coupled-node>
+   <service>
+<service-name>MakeFuse</service-name>
+    <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+      <inParameter-name>shape1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+      <inParameter-name>shape2</inParameter-name>     </inParameter>    </inParameter-list>
+    <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
+   <Parameter-list/>
+   <PyFunction-list/>
+   <creation-date>24/9/2003 - 16:13:48</creation-date>
+   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
+   <editor-release>1.03</editor-release>
+   <author>?</author>
+   <container>localhost/FactoryServer</container>
+   <comment>MakeFuse from GEOM</comment>
+   <x-position>725</x-position>
+   <y-position>179</y-position>  </node>
+  <node>
+<component-name>GEOM</component-name>
+   <interface-name>GEOM</interface-name>
+   <node-name>MakeSphere</node-name>
+   <kind>0</kind>
+   <coupled-node>?</coupled-node>
+   <service>
+<service-name>MakeSphere</service-name>
+    <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>x1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>y1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>z1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>radius</inParameter-name>     </inParameter>    </inParameter-list>
+    <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
+   <Parameter-list/>
+   <PyFunction-list/>
+   <creation-date>24/9/2003 - 16:13:48</creation-date>
+   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
+   <editor-release>1.03</editor-release>
+   <author>?</author>
+   <container>localhost/FactoryServer</container>
+   <comment>MakeSphere from GEOM</comment>
+   <x-position>28</x-position>
+   <y-position>188</y-position>  </node>
+  <node>
+<component-name>GEOM</component-name>
+   <interface-name>GEOM</interface-name>
+   <node-name>MakeTranslation</node-name>
+   <kind>0</kind>
+   <coupled-node>?</coupled-node>
+   <service>
+<service-name>MakeTranslation</service-name>
+    <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+      <inParameter-name>shape1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>x1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>y1</inParameter-name>     </inParameter>
+     <inParameter>
+<inParameter-type>double</inParameter-type>
+      <inParameter-name>z1</inParameter-name>     </inParameter>    </inParameter-list>
+    <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
+   <Parameter-list/>
+   <PyFunction-list/>
+   <creation-date>24/9/2003 - 16:13:48</creation-date>
+   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
+   <editor-release>1.03</editor-release>
+   <author>?</author>
+   <container>localhost/FactoryServer</container>
+   <comment>MakeTranslation from GEOM</comment>
+   <x-position>493</x-position>
+   <y-position>85</y-position>  </node>
+  <node>
+<component-name>GEOM</component-name>
+   <interface-name>GEOM</interface-name>
+   <node-name>MakeCopy_1</node-name>
+   <kind>0</kind>
+   <coupled-node>?</coupled-node>
+   <service>
+<service-name>MakeCopy</service-name>
+    <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+      <inParameter-name>shape1</inParameter-name>     </inParameter>    </inParameter-list>
+    <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
+   <Parameter-list/>
+   <PyFunction-list/>
+   <creation-date>24/9/2003 - 16:13:48</creation-date>
+   <lastmodification-date>24/9/2003 - 16:13:48</lastmodification-date>
+   <editor-release>1.03</editor-release>
+   <author>?</author>
+   <container>localhost/FactoryServer</container>
+   <comment>MakeCopy from GEOM</comment>
+   <x-position>283</x-position>
+   <y-position>391</y-position>  </node> </node-list>
+ <link-list>
+<link>
+<fromnode-name>MakeCopy</fromnode-name>
+   <fromserviceparameter-name>shape</fromserviceparameter-name>
+   <tonode-name>MakeTranslation</tonode-name>
+   <toserviceparameter-name>shape1</toserviceparameter-name>
+   <coord-list/>  </link>
+  <link>
+<fromnode-name>MakeSphere</fromnode-name>
+   <fromserviceparameter-name>shape</fromserviceparameter-name>
+   <tonode-name>MakeCopy</tonode-name>
+   <toserviceparameter-name>shape1</toserviceparameter-name>
+   <coord-list>
+<coord>
+<x>225</x>
+     <y>165</y>    </coord>
+    <coord>
+<x>224</x>
+     <y>269</y>    </coord>   </coord-list>  </link>
+  <link>
+<fromnode-name>MakeSphere</fromnode-name>
+   <fromserviceparameter-name>shape</fromserviceparameter-name>
+   <tonode-name>MakeCopy_1</tonode-name>
+   <toserviceparameter-name>shape1</toserviceparameter-name>
+   <coord-list>
+<coord>
+<x>223</x>
+     <y>472</y>    </coord>
+    <coord>
+<x>224</x>
+     <y>270</y>    </coord>   </coord-list>  </link>
+  <link>
+<fromnode-name>MakeTranslation</fromnode-name>
+   <fromserviceparameter-name>shape</fromserviceparameter-name>
+   <tonode-name>MakeFuse</tonode-name>
+   <toserviceparameter-name>shape1</toserviceparameter-name>
+   <coord-list>
+<coord>
+<x>688</x>
+     <y>259</y>    </coord>
+    <coord>
+<x>687</x>
+     <y>165</y>    </coord>   </coord-list>  </link>
+  <link>
+<fromnode-name>MakeCopy_1</fromnode-name>
+   <fromserviceparameter-name>shape</fromserviceparameter-name>
+   <tonode-name>MakeFuse</tonode-name>
+   <toserviceparameter-name>shape2</toserviceparameter-name>
+   <coord-list>
+<coord>
+<x>689</x>
+     <y>289</y>    </coord>
+    <coord>
+<x>690</x>
+     <y>471</y>    </coord>   </coord-list>  </link> </link-list>
+ <data-list>
+<data>
+<fromnode-name>GraphGeomEssai</fromnode-name>
+   <fromserviceparameter-name>MakeSphere\x1</fromserviceparameter-name>
+   <tonode-name>MakeSphere</tonode-name>
+   <toserviceparameter-name>x1</toserviceparameter-name>
+   <data-value>
+<value-type>7</value-type>
+    <value>0</value>   </data-value>
+   <coord-list/>  </data>
+  <data>
+<fromnode-name>GraphGeomEssai</fromnode-name>
+   <fromserviceparameter-name>MakeSphere\y1</fromserviceparameter-name>
+   <tonode-name>MakeSphere</tonode-name>
+   <toserviceparameter-name>y1</toserviceparameter-name>
+   <data-value>
+<value-type>7</value-type>
+    <value>0</value>   </data-value>
+   <coord-list/>  </data>
+  <data>
+<fromnode-name>GraphGeomEssai</fromnode-name>
+   <fromserviceparameter-name>MakeSphere\z1</fromserviceparameter-name>
+   <tonode-name>MakeSphere</tonode-name>
+   <toserviceparameter-name>z1</toserviceparameter-name>
+   <data-value>
+<value-type>7</value-type>
+    <value>0</value>   </data-value>
+   <coord-list/>  </data>
+  <data>
+<fromnode-name>GraphGeomEssai</fromnode-name>
+   <fromserviceparameter-name>MakeSphere\radius</fromserviceparameter-name>
+   <tonode-name>MakeSphere</tonode-name>
+   <toserviceparameter-name>radius</toserviceparameter-name>
+   <data-value>
+<value-type>7</value-type>
+    <value>20</value>   </data-value>
+   <coord-list/>  </data>
+  <data>
+<fromnode-name>GraphGeomEssai</fromnode-name>
+   <fromserviceparameter-name>MakeTranslation\x1</fromserviceparameter-name>
+   <tonode-name>MakeTranslation</tonode-name>
+   <toserviceparameter-name>x1</toserviceparameter-name>
+   <data-value>
+<value-type>7</value-type>
+    <value>10</value>   </data-value>
+   <coord-list/>  </data>
+  <data>
+<fromnode-name>GraphGeomEssai</fromnode-name>
+   <fromserviceparameter-name>MakeTranslation\y1</fromserviceparameter-name>
+   <tonode-name>MakeTranslation</tonode-name>
+   <toserviceparameter-name>y1</toserviceparameter-name>
+   <data-value>
+<value-type>7</value-type>
+    <value>10</value>   </data-value>
+   <coord-list/>  </data>
+  <data>
+<fromnode-name>GraphGeomEssai</fromnode-name>
+   <fromserviceparameter-name>MakeTranslation\z1</fromserviceparameter-name>
+   <tonode-name>MakeTranslation</tonode-name>
+   <toserviceparameter-name>z1</toserviceparameter-name>
+   <data-value>
+<value-type>7</value-type>
+    <value>10</value>   </data-value>
+   <coord-list/>  </data> </data-list></dataflow>
diff --git a/examples/GraphGeomEssai_py.py b/examples/GraphGeomEssai_py.py
new file mode 100644 (file)
index 0000000..7385ef0
--- /dev/null
@@ -0,0 +1,143 @@
+
+# Generated python file of Graph GraphGeomEssai_1_1_1_1
+
+from SuperV import *
+
+# Graph creation of GraphGeomEssai_1_1_1_1
+def DefGraphGeomEssai_1_1_1_1() :
+    GraphGeomEssai_1_1_1_1 = Graph( 'GraphGeomEssai_1_1_1_1' )
+    GraphGeomEssai_1_1_1_1.SetName( 'GraphGeomEssai_1_1_1_1' )
+    GraphGeomEssai_1_1_1_1.SetAuthor( '' )
+    GraphGeomEssai_1_1_1_1.SetComment( '' )
+    GraphGeomEssai_1_1_1_1.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    Pygag = []
+    Pygag.append( 'from batchmode_geompy import *   ' )
+    Pygag.append( 'def gag():    ' )
+    Pygag.append( '    # This is a gag    ' )
+    Pygag.append( '    return 1 ' )
+    gag = GraphGeomEssai_1_1_1_1.INode( 'gag' , Pygag )
+    gag.SetName( 'gag' )
+    gag.SetAuthor( '' )
+    gag.SetComment( 'Compute Node' )
+    gag.Coords( 0 , 166 )
+    IgagGate = gag.GetInPort( 'Gate' )
+    OgagGate = gag.GetOutPort( 'Gate' )
+    
+    PyMakeSphere_1 = []
+    PyMakeSphere_1.append( 'def MakeSphere_1(x1,y1,z1,radius):    ' )
+    PyMakeSphere_1.append( '    apoint=MakeVertex(x1,y1,z1)  ' )
+    PyMakeSphere_1.append( '    shape=MakeSpherePntR(apoint,radius)  ' )
+    PyMakeSphere_1.append( '    return shape  ' )
+    MakeSphere_1 = GraphGeomEssai_1_1_1_1.INode( 'MakeSphere_1' , PyMakeSphere_1 )
+    MakeSphere_1.SetName( 'MakeSphere_1' )
+    MakeSphere_1.SetAuthor( '' )
+    MakeSphere_1.SetComment( 'Compute Node' )
+    MakeSphere_1.Coords( 181 , 86 )
+    IMakeSphere_1x1 = MakeSphere_1.InPort( 'x1' , 'double' )
+    IMakeSphere_1y1 = MakeSphere_1.InPort( 'y1' , 'double' )
+    IMakeSphere_1z1 = MakeSphere_1.InPort( 'z1' , 'double' )
+    IMakeSphere_1radius = MakeSphere_1.InPort( 'radius' , 'double' )
+    IMakeSphere_1Gate = MakeSphere_1.GetInPort( 'Gate' )
+    OMakeSphere_1shape = MakeSphere_1.OutPort( 'shape' , 'objref' )
+    OMakeSphere_1Gate = MakeSphere_1.GetOutPort( 'Gate' )
+    
+    PyMakeCopy_1 = []
+    PyMakeCopy_1.append( 'def MakeCopy_1(shape1):   ' )
+    PyMakeCopy_1.append( '    shape=MakeCopy(shape1)  ' )
+    PyMakeCopy_1.append( '    return shape  ' )
+    MakeCopy_1 = GraphGeomEssai_1_1_1_1.INode( 'MakeCopy_1' , PyMakeCopy_1 )
+    MakeCopy_1.SetName( 'MakeCopy_1' )
+    MakeCopy_1.SetAuthor( '' )
+    MakeCopy_1.SetComment( 'Compute Node' )
+    MakeCopy_1.Coords( 386 , 2 )
+    IMakeCopy_1shape1 = MakeCopy_1.InPort( 'shape1' , 'objref' )
+    IMakeCopy_1Gate = MakeCopy_1.GetInPort( 'Gate' )
+    OMakeCopy_1shape = MakeCopy_1.OutPort( 'shape' , 'objref' )
+    OMakeCopy_1Gate = MakeCopy_1.GetOutPort( 'Gate' )
+    
+    PyMakeCopy_2 = []
+    PyMakeCopy_2.append( 'def MakeCopy_2(shape1):   ' )
+    PyMakeCopy_2.append( '    shape=MakeCopy(shape1)  ' )
+    PyMakeCopy_2.append( '    return shape  ' )
+    MakeCopy_2 = GraphGeomEssai_1_1_1_1.INode( 'MakeCopy_2' , PyMakeCopy_2 )
+    MakeCopy_2.SetName( 'MakeCopy_2' )
+    MakeCopy_2.SetAuthor( '' )
+    MakeCopy_2.SetComment( 'Compute Node' )
+    MakeCopy_2.Coords( 388 , 181 )
+    IMakeCopy_2shape1 = MakeCopy_2.InPort( 'shape1' , 'objref' )
+    IMakeCopy_2Gate = MakeCopy_2.GetInPort( 'Gate' )
+    OMakeCopy_2shape = MakeCopy_2.OutPort( 'shape' , 'objref' )
+    OMakeCopy_2Gate = MakeCopy_2.GetOutPort( 'Gate' )
+    
+    PyMakeFuse_1 = []
+    PyMakeFuse_1.append( 'def MakeFuse_1(shape1,shape2):           ' )
+    PyMakeFuse_1.append( '    # fuse operation 3          ' )
+    PyMakeFuse_1.append( '    shape = MakeBoolean(shape1,shape2,3) ' )
+    PyMakeFuse_1.append( '    from SALOME_NamingServicePy import SALOME_NamingServicePy_i ' )
+    PyMakeFuse_1.append( '    myNamingService = SALOME_NamingServicePy_i(orb) ' )
+    PyMakeFuse_1.append( '    aSession = myNamingService.Resolve('/Kernel/Session') ' )
+    PyMakeFuse_1.append( '    aStudyId = aSession.GetActiveStudyId() ' )
+    PyMakeFuse_1.append( '    myStudyManager = myNamingService.Resolve('/myStudyManager') ' )
+    PyMakeFuse_1.append( '    aStudy = myStudyManager.GetStudyByID(aStudyId) ' )
+    PyMakeFuse_1.append( '    aSObject = geom.AddInStudy(aStudy, shape, "shape", None) ' )
+    PyMakeFuse_1.append( '    return shape ' )
+    MakeFuse_1 = GraphGeomEssai_1_1_1_1.INode( 'MakeFuse_1' , PyMakeFuse_1 )
+    MakeFuse_1.SetName( 'MakeFuse_1' )
+    MakeFuse_1.SetAuthor( '' )
+    MakeFuse_1.SetComment( 'Compute Node' )
+    MakeFuse_1.Coords( 779 , 161 )
+    IMakeFuse_1shape1 = MakeFuse_1.InPort( 'shape1' , 'objref' )
+    IMakeFuse_1shape2 = MakeFuse_1.InPort( 'shape2' , 'objref' )
+    IMakeFuse_1Gate = MakeFuse_1.GetInPort( 'Gate' )
+    OMakeFuse_1shape = MakeFuse_1.OutPort( 'shape' , 'objref' )
+    OMakeFuse_1Gate = MakeFuse_1.GetOutPort( 'Gate' )
+    
+    PyMakeTranslation_1 = []
+    PyMakeTranslation_1.append( 'def MakeTranslation_1(shape1,x1,y1,z1):   ' )
+    PyMakeTranslation_1.append( '    shape = MakeTranslation(shape1,x1,y1,z1)  ' )
+    PyMakeTranslation_1.append( '    return shape' )
+    MakeTranslation_1 = GraphGeomEssai_1_1_1_1.INode( 'MakeTranslation_1' , PyMakeTranslation_1 )
+    MakeTranslation_1.SetName( 'MakeTranslation_1' )
+    MakeTranslation_1.SetAuthor( '' )
+    MakeTranslation_1.SetComment( 'Compute Node' )
+    MakeTranslation_1.Coords( 580 , 2 )
+    IMakeTranslation_1shape1 = MakeTranslation_1.InPort( 'shape1' , 'objref' )
+    IMakeTranslation_1x1 = MakeTranslation_1.InPort( 'x1' , 'double' )
+    IMakeTranslation_1y1 = MakeTranslation_1.InPort( 'y1' , 'double' )
+    IMakeTranslation_1z1 = MakeTranslation_1.InPort( 'z1' , 'double' )
+    IMakeTranslation_1Gate = MakeTranslation_1.GetInPort( 'Gate' )
+    OMakeTranslation_1shape = MakeTranslation_1.OutPort( 'shape' , 'objref' )
+    OMakeTranslation_1Gate = MakeTranslation_1.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LgagGateMakeSphere_1Gate = GraphGeomEssai_1_1_1_1.Link( OgagGate , IMakeSphere_1Gate )
+    
+    LMakeSphere_1shapeMakeCopy_1shape1 = GraphGeomEssai_1_1_1_1.Link( OMakeSphere_1shape , IMakeCopy_1shape1 )
+    
+    LMakeSphere_1shapeMakeCopy_2shape1 = GraphGeomEssai_1_1_1_1.Link( OMakeSphere_1shape , IMakeCopy_2shape1 )
+    
+    LMakeCopy_1shapeMakeTranslation_1shape1 = GraphGeomEssai_1_1_1_1.Link( OMakeCopy_1shape , IMakeTranslation_1shape1 )
+    
+    LMakeCopy_2shapeMakeFuse_1shape2 = GraphGeomEssai_1_1_1_1.Link( OMakeCopy_2shape , IMakeFuse_1shape2 )
+    
+    LMakeTranslation_1shapeMakeFuse_1shape1 = GraphGeomEssai_1_1_1_1.Link( OMakeTranslation_1shape , IMakeFuse_1shape1 )
+    
+    # Input datas
+    IMakeSphere_1x1.Input( 0 )
+    IMakeSphere_1y1.Input( 0 )
+    IMakeSphere_1z1.Input( 0 )
+    IMakeSphere_1radius.Input( 20 )
+    IMakeTranslation_1x1.Input( 10 )
+    IMakeTranslation_1y1.Input( 10 )
+    IMakeTranslation_1z1.Input( 10 )
+    
+    # Output Ports of the graph
+    #OMakeFuse_1shape = MakeFuse_1.GetOutPort( 'shape' )
+    return GraphGeomEssai_1_1_1_1
+
+
+GraphGeomEssai_1_1_1_1 = DefGraphGeomEssai_1_1_1_1()
diff --git a/examples/GraphGeomEssai_py.xml b/examples/GraphGeomEssai_py.xml
new file mode 100644 (file)
index 0000000..52ca0b5
--- /dev/null
@@ -0,0 +1,361 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>GraphGeomEssai_1_1_1_1</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>GraphGeomEssai_1_1_1_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__radius</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>MakeFuse_1__shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>10/7/2002 - 14:53:2</creation-date>
+    <lastmodification-date>29/10/2004 - 15:7:37</lastmodification-date>
+    <editor-release>1.03</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>gag</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>gag</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>gag</FuncName>
+      <PyFunc><![CDATA[from batchmode_geompy import *   ]]></PyFunc>
+      <PyFunc><![CDATA[def gag():    ]]></PyFunc>
+      <PyFunc><![CDATA[    # This is a gag    ]]></PyFunc>
+      <PyFunc><![CDATA[    return 1 ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 14:58:4</creation-date>
+    <lastmodification-date>29/10/2004 - 14:58:4</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>0</x-position>
+    <y-position>166</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeSphere_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeSphere_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>radius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeSphere_1</FuncName>
+      <PyFunc><![CDATA[def MakeSphere_1(x1,y1,z1,radius):    ]]></PyFunc>
+      <PyFunc><![CDATA[    apoint=MakeVertex(x1,y1,z1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeSpherePntR(apoint,radius)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 14:58:4</creation-date>
+    <lastmodification-date>29/10/2004 - 14:58:4</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>181</x-position>
+    <y-position>86</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeCopy_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeCopy_1</FuncName>
+      <PyFunc><![CDATA[def MakeCopy_1(shape1):   ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeCopy(shape1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 14:58:4</creation-date>
+    <lastmodification-date>29/10/2004 - 14:58:4</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>386</x-position>
+    <y-position>2</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeCopy_2</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy_2</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeCopy_2</FuncName>
+      <PyFunc><![CDATA[def MakeCopy_2(shape1):   ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeCopy(shape1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 14:58:4</creation-date>
+    <lastmodification-date>29/10/2004 - 14:58:4</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>388</x-position>
+    <y-position>181</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeFuse_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeFuse_1</FuncName>
+      <PyFunc><![CDATA[def MakeFuse_1(shape1,shape2):           ]]></PyFunc>
+      <PyFunc><![CDATA[    # fuse operation 3          ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeBoolean(shape1,shape2,3) ]]></PyFunc>
+      <PyFunc><![CDATA[    from SALOME_NamingServicePy import SALOME_NamingServicePy_i ]]></PyFunc>
+      <PyFunc><![CDATA[    myNamingService = SALOME_NamingServicePy_i(orb) ]]></PyFunc>
+      <PyFunc><![CDATA[    aSession = myNamingService.Resolve('/Kernel/Session') ]]></PyFunc>
+      <PyFunc><![CDATA[    aStudyId = aSession.GetActiveStudyId() ]]></PyFunc>
+      <PyFunc><![CDATA[    myStudyManager = myNamingService.Resolve('/myStudyManager') ]]></PyFunc>
+      <PyFunc><![CDATA[    aStudy = myStudyManager.GetStudyByID(aStudyId) ]]></PyFunc>
+      <PyFunc><![CDATA[    aSObject = geom.AddInStudy(aStudy, shape, "shape", None) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 14:58:4</creation-date>
+    <lastmodification-date>29/10/2004 - 14:58:4</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>779</x-position>
+    <y-position>161</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeTranslation_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeTranslation_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeTranslation_1</FuncName>
+      <PyFunc><![CDATA[def MakeTranslation_1(shape1,x1,y1,z1):   ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeTranslation(shape1,x1,y1,z1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:1:27</creation-date>
+    <lastmodification-date>29/10/2004 - 15:1:27</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>580</x-position>
+    <y-position>2</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>gag</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeSphere_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeSphere_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy_2</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy_2</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape2</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeTranslation_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>GraphGeomEssai_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__x1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphGeomEssai_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__y1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphGeomEssai_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__z1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphGeomEssai_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__radius</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>radius</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>20</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphGeomEssai_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__x1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphGeomEssai_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__y1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GraphGeomEssai_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__z1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>10</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
index 0b08e95ceec84071822566c97baeca63e3786896..c888f5e63c65a6ed2959093e9ace179416dec10e 100755 (executable)
@@ -70,14 +70,18 @@ Adda.AddCoord( 2 , 7 , 332 )
 Adda.AddCoord( 3 , 645 , 334 )
 Adda.AddCoord( 4 , 645 , 204 )
 
-GraphInLinesUnValid.IsValid()
+statvalid = GraphInLinesUnValid.IsValid()
+if statvalid != 0 :
+    print "ERROR : GraphInLinesUnValid should not be valid"
+else :
+    print "Ok : GraphInLinesUnValid is not valid"
 
 # Creation of Output variables
-GraphInLinesUnValid.Run()
+statrun = GraphInLinesUnValid.Run()
+if statrun != 0 :
+    print "ERROR : GraphInLinesUnValid should not run"
+else :
+    print "Ok : GraphInLinesUnValid does not run"
 
-GraphInLinesUnValid.IsDone()
 
-GraphInLinesUnValid.State()
-
-GraphInLinesUnValid.PrintPorts()
 
index 8ab8feadf6fc03c62afe818134ceafedf466c1e6..39955f4d9a28e6e435d30b6c1cdd9c5919c23475 100755 (executable)
@@ -8,7 +8,9 @@ from GraphSwitch import *
 from GraphSwitch1 import *
 
 # Merge of GraphSwitch1 in GraphSwitch
-GraphSwitch.Merge( GraphSwitch1 )
+statmerge = GraphSwitch.Merge( GraphSwitch1 )
+if statmerge == 0 :
+    print "Failed to merge GraphSwitch1 in GraphSwitch"
 
 # Create a variable for each node of GraphSwitch :
 # IsOdd,IsOdd_1,InitLoopSwitch,InitLoop,EndOfInitLoopSwitch,EndOfInitLoop,Switch,Switch_1,EndOfSwitch,EndSwitch
index 51a98e6b5cf45433ddc4284a38572759abc07f91..8515637053211fce41693476fe3758a589bd4554 100644 (file)
@@ -126,5 +126,5 @@ SwitchEven = Switch.Port( 'Even' )
 
 GraphSwitch.Run()
 GraphSwitch.DoneW()
-GraphSwitch.State()
+print GraphSwitch.State()
 GraphSwitch.PrintPorts()
index fd38739f0904fdcb9d32c27b7a6d3e87e6b0fe7c..0af47224cd5a6ffd6da0ece672c85936f4ccf6ab 100755 (executable)
@@ -127,5 +127,5 @@ EndOfInitLoopMax = EndOfInitLoop.Port( 'Max' )
 
 GraphSwitch1.Run()
 GraphSwitch1.DoneW()
-GraphSwitch1.State()
+print GraphSwitch1.State()
 GraphSwitch1.PrintPorts()
index 42fa59cbc54223fa80d122d5da7c0f4c361b448b..f22827a1af1c1bd3d78bac6af0eddfe054c13fac 100755 (executable)
@@ -233,5 +233,5 @@ EndOfInitLoopMax = EndOfInitLoop.Port( 'Max' )
 
 GraphSwitchCrash.Run()
 GraphSwitchCrash.DoneW()
-GraphSwitchCrash.State()
+print GraphSwitchCrash.State()
 GraphSwitchCrash.PrintPorts()
index 45c77ac8d76d490b2e34506afc3c0e999ad4e060..bf78c8168ea9564a377cb030cb7ecb9999e8b4df 100755 (executable)
@@ -228,5 +228,5 @@ EndOfInitLoopMax = EndOfInitLoop.Port( 'Max' )
 
 GraphSwitchs.Run()
 GraphSwitchs.DoneW()
-GraphSwitchs.State()
+print GraphSwitchs.State()
 GraphSwitchs.PrintPorts()
index 5756e845ee79b567c2cd389d37fe20e996cc9c3e..c1ea545cbd47c751a5a3f4929b94648e5783fbc6 100644 (file)
@@ -267,7 +267,7 @@ GraphSyrControl.Run( 7 )
 
 GraphSyrControl.DoneW()
 
-GraphSyrControl.State()
+print GraphSyrControl.State()
 
 GraphSyrControl.PrintPorts()
 
index 97b63e5a93ba5ad1c991f9b496177dde4388769c..254113c4664bc02679dad3dbdc4126dae7dc3617 100755 (executable)
@@ -231,7 +231,7 @@ GraphSyrControl1.Run( 7 )
 
 GraphSyrControl1.DoneW()
 
-GraphSyrControl1.State()
+print GraphSyrControl1.State()
 
 GraphSyrControl1.PrintPorts()
 
index 51bd2d86baf2b17fa0f49f9a596d6f119b0dd352..b039fbf4d953b14bc61a1f86cdf1bae498e66ede 100644 (file)
@@ -387,5 +387,5 @@ EndL_OneEvenAVERAGE = EndL_OneEven.Port( 'AVERAGE' )
 
 GraphSyrControlAve.Run()
 GraphSyrControlAve.DoneW()
-GraphSyrControlAve.State()
+print GraphSyrControlAve.State()
 GraphSyrControlAve.PrintPorts()
index 16c74657319efeeb9c5cb6d87520654ccbc46459..dfafc54f68ef06319957e0e456c5591cb111103d 100644 (file)
@@ -235,3 +235,8 @@ label_beginKB = label_begin.Input( 'KB' , 0)
 
 # Creation of Output variables
 EndSwitch_OneEvenK = EndSwitch_OneEven.Port( 'K' )
+
+GraphSyrControlDefault.Run()
+GraphSyrControlDefault.DoneW()
+print GraphSyrControlDefault.State()
+GraphSyrControlDefault.PrintPorts()
index cf7becd7e3333e87933691025766a916f3e9f430..c8ce801b27b704d033313da2ee182437256ac29b 100644 (file)
@@ -208,3 +208,8 @@ label_beginKB = label_begin.Input( 'KB' , 0)
 
 # Creation of Output variables
 label_testFinished = label_test.Port( 'Finished' )
+
+GraphSyrControlGUI.Run()
+GraphSyrControlGUI.DoneW()
+print GraphSyrControlGUI.State()
+GraphSyrControlGUI.PrintPorts()
index 296d36ac35ad5832d60a54ee3fb8a132013aa863..7b274963b43be56dc3998314674aadadc7d148b3 100644 (file)
@@ -82,7 +82,7 @@ GraphSyracuseC.ThreadsMax()
 
 GraphSyracuseC.LevelMax()
 
-GraphSyracuseC.GraphsNumber()
+GraphSyracuseC.SubGraphsNumber()
 
 GraphSyracuseC.IsExecutable()
 
@@ -165,6 +165,7 @@ incr.Resume()
 test_ISONE.Resume()
 test_ISEVEN.Resume()
 GraphSyracuseC.DoneW()
+print GraphSyracuseC.State()
 GraphSyracuseC.PrintPorts()
 GraphSyracuseC.PrintThreads()
 
index 2ee258e140def199ed59bf29a264b7cd58a7217c..5961ab5924aee9682b9be5d5d3ec13222a45065b 100644 (file)
@@ -78,7 +78,7 @@ GraphSyracuseCEv.ThreadsMax()
 
 GraphSyracuseCEv.LevelMax()
 
-GraphSyracuseCEv.GraphsNumber()
+GraphSyracuseCEv.SubGraphsNumber()
 
 GraphSyracuseCEv.IsExecutable()
 
@@ -163,5 +163,6 @@ while aNode != None :
     aStatus,aNode,anEvent,aState = GraphSyracuseCEv.Event()
 
 GraphSyracuseCEv.DoneW()
+print GraphSyracuseCEv.State()
 GraphSyracuseCEv.PrintThreads()
 GraphSyracuseCEv.PrintPorts()
diff --git a/examples/GraphSyracuseC_Gate.py b/examples/GraphSyracuseC_Gate.py
deleted file mode 100644 (file)
index 2493180..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
-#
-#
-#
-#  File   : GraphSyracuseC_Gate.py
-#  Module : SuperVisionTest
-
-from SuperV import *
-# Graph creation 
-GraphSyracuseC_Gate = Graph( 'GraphSyracuseC_Gate' )
-GraphSyracuseC_Gate.SetName( 'GraphSyracuseC_Gate' )
-GraphSyracuseC_Gate.SetAuthor( 'JR' )
-GraphSyracuseC_Gate.SetComment( 'Syracuse algorithm' )
-GraphSyracuseC_Gate.Coords( 0 , 0 )
-
-# Creation of Factory Nodes
-test_ISEVEN = GraphSyracuseC_Gate.FNode( 'SyrComponent' , 'SyrComponent' , 'C_ISEVEN' )
-test_ISEVEN.SetName( 'test_ISEVEN' )
-test_ISEVEN.SetAuthor( '' )
-test_ISEVEN.SetContainer( 'localhost/FactoryServer' )
-test_ISEVEN.SetComment( 'C_ISEVEN from SyrComponent' )
-test_ISEVEN.Coords( 5 , 416 )
-test_ISONE = GraphSyracuseC_Gate.FNode( 'SyrComponent' , 'SyrComponent' , 'C_ISONE' )
-test_ISONE.SetName( 'test_ISONE' )
-test_ISONE.SetAuthor( '' )
-test_ISONE.SetContainer( 'localhost/FactoryServer' )
-test_ISONE.SetComment( 'C_ISONE from SyrComponent' )
-test_ISONE.Coords( 7 , 232 )
-m3p1 = GraphSyracuseC_Gate.FNode( 'SyrComponent' , 'SyrComponent' , 'C_M3P1' )
-m3p1.SetName( 'm3p1' )
-m3p1.SetAuthor( '' )
-m3p1.SetContainer( 'localhost/FactoryServer' )
-m3p1.SetComment( 'C_M3P1 from SyrComponent' )
-m3p1.Coords( 180 , 417 )
-div2 = GraphSyracuseC_Gate.FNode( 'SyrComponent' , 'SyrComponent' , 'C_DIV2' )
-div2.SetName( 'div2' )
-div2.SetAuthor( '' )
-div2.SetContainer( 'localhost/FactoryServer' )
-div2.SetComment( 'C_DIV2 from SyrComponent' )
-div2.Coords( 435 , 7 )
-div2_ISEVEN = GraphSyracuseC_Gate.FNode( 'SyrComponent' , 'SyrComponent' , 'C_ISEVEN' )
-div2_ISEVEN.SetName( 'div2_ISEVEN' )
-div2_ISEVEN.SetAuthor( '' )
-div2_ISEVEN.SetContainer( 'localhost/FactoryServer' )
-div2_ISEVEN.SetComment( 'C_ISEVEN from SyrComponent' )
-div2_ISEVEN.Coords( 663 , 193 )
-div2_ISONE = GraphSyracuseC_Gate.FNode( 'SyrComponent' , 'SyrComponent' , 'C_ISONE' )
-div2_ISONE.SetName( 'div2_ISONE' )
-div2_ISONE.SetAuthor( '' )
-div2_ISONE.SetContainer( 'localhost/FactoryServer' )
-div2_ISONE.SetComment( 'C_ISONE from SyrComponent' )
-div2_ISONE.Coords( 651 , 6 )
-incr = GraphSyracuseC_Gate.FNode( 'SyrComponent' , 'SyrComponent' , 'C_INCR' )
-incr.SetName( 'incr' )
-incr.SetAuthor( '' )
-incr.SetContainer( 'localhost/FactoryServer' )
-incr.SetComment( 'C_INCR from SyrComponent' )
-incr.Coords( 434 , 193 )
-
-# Creation of intermediate Output variables and of Control Links
-test_ISEVENOutGate = test_ISEVEN.Port( 'OutGate' )
-m3p1InGate = GraphSyracuseC_Gate.Link( test_ISEVENOutGate , m3p1.Port( 'InGate' ) )
-m3p1anEvenInteger = m3p1.Port( 'anEvenInteger' )
-div2anEvenInteger = GraphSyracuseC_Gate.Link( m3p1anEvenInteger , div2.Port( 'anEvenInteger' ) )
-div2anEvenInteger.AddCoord( 1 , 373 , 117 )
-div2anEvenInteger.AddCoord( 2 , 373 , 528 )
-div2anInteger = div2.Port( 'anInteger' )
-div2_ISONEanInteger = GraphSyracuseC_Gate.Link( div2anInteger , div2_ISONE.Port( 'anInteger' ) )
-div2_ISEVENanInteger = GraphSyracuseC_Gate.Link( div2anInteger , div2_ISEVEN.Port( 'anInteger' ) )
-div2_ISEVENanInteger.AddCoord( 1 , 626 , 302 )
-div2_ISEVENanInteger.AddCoord( 2 , 626 , 116 )
-
-# Creation of Input datas
-test_ISEVENanInteger = test_ISEVEN.Input( 'anInteger' , 31)
-test_ISONEanInteger = test_ISONE.Input( 'anInteger' , 31)
-m3p1anOddInteger = m3p1.Input( 'anOddInteger' , 31)
-incraCount = incr.Input( 'aCount' , 0)
-
-# Creation of Output variables
-test_ISEVENBoolEven = test_ISEVEN.Port( 'BoolEven' )
-test_ISONEBoolOne = test_ISONE.Port( 'BoolOne' )
-div2_ISEVENBoolEven = div2_ISEVEN.Port( 'BoolEven' )
-div2_ISONEBoolOne = div2_ISONE.Port( 'BoolOne' )
-incraNewCount = incr.Port( 'aNewCount' )
-
-
-GraphSyracuseC_Gate.Start()
-
-div2InanInteger = div2.Port( 'anEvenInteger' )
-
-m3p1.Suspend()
-
-div2_ISEVEN.SuspendDone()
-div2_ISONE.SuspendDone()
-
-test_ISEVEN.Resume()
-test_ISONE.Resume()
-
-# Attente de fin d'execution de test
-test_ISONE.DoneW()
-test_ISEVEN.DoneW()
-
-m3p1.SuspendedW()
-incr.SuspendedW()
-incr.SuspendDone()
-
-# Etats et Threads des nodes
-GraphSyracuseC_Gate.PrintThreads()
-
-BoolOne = int( test_ISONEBoolOne.ToString() )
-BoolEven = int( test_ISEVENBoolEven.ToString() )
-while BoolOne == 0 :
-    if BoolEven == 0 :
-        sts = div2_ISONE.ReRunAt('m3p1')
-        if sts == 0 :
-            print 'div2_ISONE.ReRunAt error'
-            break
-        sts = incr.ReRun()
-        if sts == 0 :
-            print 'incr.ReRun error'
-            break
-        sts = m3p1.DoneW()
-        if sts == 0 :
-            print 'm3p1.DoneW error'
-            break
-        sts = incr.DoneW()
-        if sts == 0 :
-            print 'incr.DoneW error'
-            break
-        sts = incraCount.Input( int( incraNewCount.ToString() ) + 1 )
-        if sts == 0 :
-            print 'incraCount.Input error'
-            break
-        BoolEven = 1 
-        BoolOne = 0
-        Current = int( m3p1anEvenInteger.ToString() )
-        print incraNewCount.ToString(),"m3p1",Current,BoolEven
-        if Current <= 0 :
-            break
-    if Current <= 0 :
-        break
-    while BoolEven == 1 :
-        sts = incr.ReRun()
-        if sts == 0 :
-            print 'incr.ReRun error'
-            break
-        sts = div2.DoneW()
-        if sts == 0 :
-            print 'div2.DoneW error'
-            break
-        sts = div2_ISEVEN.DoneW()
-        if sts == 0 :
-            print 'div2_ISEVEN.DoneW error'
-            break
-        sts = div2_ISONE.DoneW()
-        if sts == 0 :
-            print 'div2_ISONE.DoneW error'
-            break
-        sts = incr.DoneW()
-        if sts == 0 :
-            print 'incr.DoneW error'
-            break
-        sts = incraCount.Input( incraNewCount.ToString() )
-        if sts == 0 :
-            print 'incraCount.Input error'
-            break
-        BoolOne = int( div2_ISONEBoolOne.ToString() )
-        BoolEven = int( div2_ISEVENBoolEven.ToString() )
-        Current = int( div2anInteger.ToString() )
-        print incraNewCount.ToString(),"div2",Current,BoolEven,BoolOne
-        if Current <= 0 :
-            break
-        if BoolEven == 1 :
-            sts = div2InanInteger.Input( Current )
-            if sts == 0 :
-                print 'div2InanInteger.Input error'
-                break
-            sts = div2_ISONE.ReRunAt('div2')
-            if sts == 0 :
-                print 'div2_ISONE.ReRunAt error'
-                break
-    if Current <= 0 :
-        break
-    sts = m3p1anOddInteger.Input( Current )
-    if sts == 0 :
-        print 'm3p1anOddInteger.Input error'
-        break
-    sts = m3p1InGate.InPort().Input( 1 )
-    if sts == 0 :
-        print 'm3p1InGate.InPort error'
-        break
-
-
-GraphSyracuseC_Gate.PrintThreads()
-m3p1.Resume()
-div2.Resume()
-incr.Resume()
-div2_ISONE.Resume()
-div2_ISEVEN.Resume()
-GraphSyracuseC_Gate.DoneW()
-GraphSyracuseC_Gate.PrintPorts()
-GraphSyracuseC_Gate.PrintThreads()
-
diff --git a/examples/GraphSyracuseC_Gate.xml b/examples/GraphSyracuseC_Gate.xml
deleted file mode 100644 (file)
index 8b87cf7..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-<!DOCTYPE Dataflow>
-<dataflow>
-<info-list>
-<node>
-<component-name>?</component-name>
-   <interface-name>?</interface-name>
-   <node-name>GraphSyracuseC_Gate</node-name>
-   <kind>1</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>GraphSyracuseC_Gate</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>test_ISEVEN\anInteger</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>test_ISONE\anInteger</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>m3p1\anOddInteger</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>incr\aCount</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>test_ISEVEN\BoolEven</outParameter-name>     </outParameter>
-     <outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>test_ISONE\BoolOne</outParameter-name>     </outParameter>
-     <outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>div2_ISEVEN\BoolEven</outParameter-name>     </outParameter>
-     <outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>div2_ISONE\BoolOne</outParameter-name>     </outParameter>
-     <outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>incr\aNewCount</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>11/3/2003 - 16:25:34</creation-date>
-   <lastmodification-date>11/6/2003 - 16:1:11</lastmodification-date>
-   <editor-release>1.04</editor-release>
-   <author>JR</author>
-   <container>?</container>
-   <comment>Syracuse algorithm</comment>
-   <x-position>0</x-position>
-   <y-position>0</y-position>  </node> </info-list>
- <node-list>
-<node>
-<component-name>SyrComponent</component-name>
-   <interface-name>SyrComponent</interface-name>
-   <node-name>test_ISEVEN</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>C_ISEVEN</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>anInteger</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>BoolEven</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>11/6/2003 - 16:1:10</creation-date>
-   <lastmodification-date>11/6/2003 - 16:1:10</lastmodification-date>
-   <editor-release>1.04</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>C_ISEVEN from SyrComponent</comment>
-   <x-position>5</x-position>
-   <y-position>416</y-position>  </node>
-  <node>
-<component-name>SyrComponent</component-name>
-   <interface-name>SyrComponent</interface-name>
-   <node-name>test_ISONE</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>C_ISONE</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>anInteger</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>BoolOne</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>11/6/2003 - 16:1:10</creation-date>
-   <lastmodification-date>11/6/2003 - 16:1:10</lastmodification-date>
-   <editor-release>1.04</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>C_ISONE from SyrComponent</comment>
-   <x-position>7</x-position>
-   <y-position>232</y-position>  </node>
-  <node>
-<component-name>SyrComponent</component-name>
-   <interface-name>SyrComponent</interface-name>
-   <node-name>m3p1</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>C_M3P1</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>anOddInteger</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>anEvenInteger</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>11/6/2003 - 16:1:10</creation-date>
-   <lastmodification-date>11/6/2003 - 16:1:10</lastmodification-date>
-   <editor-release>1.04</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>C_M3P1 from SyrComponent</comment>
-   <x-position>180</x-position>
-   <y-position>417</y-position>  </node>
-  <node>
-<component-name>SyrComponent</component-name>
-   <interface-name>SyrComponent</interface-name>
-   <node-name>div2</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>C_DIV2</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>anEvenInteger</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>anInteger</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>11/6/2003 - 16:1:10</creation-date>
-   <lastmodification-date>11/6/2003 - 16:1:10</lastmodification-date>
-   <editor-release>1.04</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>C_DIV2 from SyrComponent</comment>
-   <x-position>435</x-position>
-   <y-position>7</y-position>  </node>
-  <node>
-<component-name>SyrComponent</component-name>
-   <interface-name>SyrComponent</interface-name>
-   <node-name>div2_ISEVEN</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>C_ISEVEN</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>anInteger</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>BoolEven</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>11/6/2003 - 16:1:11</creation-date>
-   <lastmodification-date>11/6/2003 - 16:1:11</lastmodification-date>
-   <editor-release>1.04</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>C_ISEVEN from SyrComponent</comment>
-   <x-position>663</x-position>
-   <y-position>193</y-position>  </node>
-  <node>
-<component-name>SyrComponent</component-name>
-   <interface-name>SyrComponent</interface-name>
-   <node-name>div2_ISONE</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>C_ISONE</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>anInteger</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>BoolOne</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>11/6/2003 - 16:1:11</creation-date>
-   <lastmodification-date>11/6/2003 - 16:1:11</lastmodification-date>
-   <editor-release>1.04</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>C_ISONE from SyrComponent</comment>
-   <x-position>651</x-position>
-   <y-position>6</y-position>  </node>
-  <node>
-<component-name>SyrComponent</component-name>
-   <interface-name>SyrComponent</interface-name>
-   <node-name>incr</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>C_INCR</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>aCount</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>aNewCount</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>11/6/2003 - 16:1:11</creation-date>
-   <lastmodification-date>11/6/2003 - 16:1:11</lastmodification-date>
-   <editor-release>1.04</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>C_INCR from SyrComponent</comment>
-   <x-position>434</x-position>
-   <y-position>193</y-position>  </node> </node-list>
- <link-list>
-<link>
-<fromnode-name>test_ISEVEN</fromnode-name>
-   <fromserviceparameter-name>OutGate</fromserviceparameter-name>
-   <tonode-name>m3p1</tonode-name>
-   <toserviceparameter-name>InGate</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>m3p1</fromnode-name>
-   <fromserviceparameter-name>anEvenInteger</fromserviceparameter-name>
-   <tonode-name>div2</tonode-name>
-   <toserviceparameter-name>anEvenInteger</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>373</x>
-     <y>117</y>    </coord>
-    <coord>
-<x>373</x>
-     <y>528</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>div2</fromnode-name>
-   <fromserviceparameter-name>anInteger</fromserviceparameter-name>
-   <tonode-name>div2_ISONE</tonode-name>
-   <toserviceparameter-name>anInteger</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>div2</fromnode-name>
-   <fromserviceparameter-name>anInteger</fromserviceparameter-name>
-   <tonode-name>div2_ISEVEN</tonode-name>
-   <toserviceparameter-name>anInteger</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>626</x>
-     <y>302</y>    </coord>
-    <coord>
-<x>626</x>
-     <y>116</y>    </coord>   </coord-list>  </link> </link-list>
- <data-list>
-<data>
-<fromnode-name>GraphSyracuseC_Gate</fromnode-name>
-   <fromserviceparameter-name>test_ISEVEN\anInteger</fromserviceparameter-name>
-   <tonode-name>test_ISEVEN</tonode-name>
-   <toserviceparameter-name>anInteger</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>31</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphSyracuseC_Gate</fromnode-name>
-   <fromserviceparameter-name>test_ISONE\anInteger</fromserviceparameter-name>
-   <tonode-name>test_ISONE</tonode-name>
-   <toserviceparameter-name>anInteger</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>31</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphSyracuseC_Gate</fromnode-name>
-   <fromserviceparameter-name>m3p1\anOddInteger</fromserviceparameter-name>
-   <tonode-name>m3p1</tonode-name>
-   <toserviceparameter-name>anOddInteger</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>31</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>GraphSyracuseC_Gate</fromnode-name>
-   <fromserviceparameter-name>incr\aCount</fromserviceparameter-name>
-   <tonode-name>incr</tonode-name>
-   <toserviceparameter-name>aCount</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data> </data-list></dataflow>
index b4effae39464e09e4ad7ece233d58a8e8e21d34e..bb2a62da9000c0cef59e8de879a6b08ae862c213 100644 (file)
@@ -6,7 +6,6 @@ from SuperV import *
 GraphSyracuseC_Void = Graph( 'GraphSyracuseC_Void' )
 print GraphSyracuseC_Void.SetName( 'GraphSyracuseC_Void' )
 print GraphSyracuseC_Void.SetAuthor( 'JR' )
-print GraphSyracuseC_Void.SetContainer( 'localhost/FactoryServer' )
 print GraphSyracuseC_Void.SetComment( 'Syracuse algorithm' )
 GraphSyracuseC_Void.Coords( 0 , 0 )
 
@@ -155,6 +154,7 @@ incr.Resume()
 div2_ISONE.Resume()
 div2_ISEVEN.Resume()
 GraphSyracuseC_Void.DoneW()
+print GraphSyracuseC_Void.State()
 GraphSyracuseC_Void.PrintPorts()
 GraphSyracuseC_Void.PrintThreads()
 
index 3e432a75c5fdf0c34c94a854baa89f737fe0e0eb..a46564e1cf5d4e5ca2bb0b9a3c818658d2675018 100644 (file)
@@ -5,7 +5,6 @@ from SuperV import *
 GraphSyracuseControl = Graph( 'GraphSyracuseControl' )
 print GraphSyracuseControl.SetName( 'GraphSyracuseControl' )
 print GraphSyracuseControl.SetAuthor( 'JR' )
-print GraphSyracuseControl.SetContainer( 'localhost/FactoryServer' )
 print GraphSyracuseControl.SetComment( 'Syracuse algorithm' )
 GraphSyracuseControl.Coords( 0 , 0 )
 
@@ -118,7 +117,7 @@ GraphSyracuseControl.Run()
 
 GraphSyracuseControl.DoneW()
 
-GraphSyracuseControl.State()
+print GraphSyracuseControl.State()
 
 GraphSyracuseControl.PrintPorts()
 
index fba4f9278c8d15123a5557541f067d18e2aae5dc..6f4d67f3e2ac750bf153f1ca002368dce4eae26d 100644 (file)
@@ -217,6 +217,7 @@ sts = result_Current.Resume()
 sts = result_Count.ControlClear()
 sts = result_Count.Resume()
 sts = GraphSyracuseCpp.DoneW()
+print sts
 GraphSyracuseCpp.PrintPorts()
 GraphSyracuseCpp.PrintThreads()
 
index 0c113e949235ea3bd8d4deba7681b5eaaaa9ed46..c773582050494ded9a747bbd4bedd59be320bd85 100755 (executable)
@@ -73,10 +73,18 @@ Subx.AddCoord( 4 , 565 , 141 )
 AddFuncValue = Add.Port( 'FuncValue' )
 Divz = Div.Port( 'z' )
 
-GraphInLinesUnValid.IsValid()
+statvalid = GraphInLinesUnValid.IsValid()
+if statvalid == 0 :
+    print "Unvalid graph : Ok"
+else :
+    print "Error : the graph should not be valid"
 
 # Creation of Output variables
-GraphUnValid.Run()
+statrun = GraphUnValid.Run()
+if statrun == 0 :
+    print "Unvalid graph ==> No Run : Ok"
+else :
+    print "Error : the graph is not valid and is running"
 
 GraphUnValid.IsDone()
 
diff --git a/examples/MacroWithGeom.py b/examples/MacroWithGeom.py
new file mode 100644 (file)
index 0000000..45bb132
--- /dev/null
@@ -0,0 +1,224 @@
+
+# Generated python file of Graph aNewDataFlow
+
+from SuperV import *
+
+# Graph creation of aNewDataFlow
+def DefaNewDataFlow() :
+    aNewDataFlow = Graph( 'aNewDataFlow' )
+    aNewDataFlow.SetName( 'aNewDataFlow' )
+    aNewDataFlow.SetAuthor( '' )
+    aNewDataFlow.SetComment( '' )
+    aNewDataFlow.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    TranslateDXDYDZ = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'TranslateDXDYDZ' )
+    TranslateDXDYDZ.SetName( 'TranslateDXDYDZ' )
+    TranslateDXDYDZ.SetAuthor( '' )
+    TranslateDXDYDZ.SetContainer( 'localhost/FactoryServer' )
+    TranslateDXDYDZ.SetComment( 'TranslateDXDYDZ from GEOM_Superv' )
+    TranslateDXDYDZ.Coords( 735 , 14 )
+    ITranslateDXDYDZtheObject = TranslateDXDYDZ.GetInPort( 'theObject' )
+    ITranslateDXDYDZtheDX = TranslateDXDYDZ.GetInPort( 'theDX' )
+    ITranslateDXDYDZtheDY = TranslateDXDYDZ.GetInPort( 'theDY' )
+    ITranslateDXDYDZtheDZ = TranslateDXDYDZ.GetInPort( 'theDZ' )
+    ITranslateDXDYDZGate = TranslateDXDYDZ.GetInPort( 'Gate' )
+    OTranslateDXDYDZreturn = TranslateDXDYDZ.GetOutPort( 'return' )
+    OTranslateDXDYDZGate = TranslateDXDYDZ.GetOutPort( 'Gate' )
+    
+    MakeCopy = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeCopy' )
+    MakeCopy.SetName( 'MakeCopy' )
+    MakeCopy.SetAuthor( '' )
+    MakeCopy.SetContainer( 'localhost/FactoryServer' )
+    MakeCopy.SetComment( 'MakeCopy from GEOM_Superv' )
+    MakeCopy.Coords( 477 , 14 )
+    IMakeCopytheOriginal = MakeCopy.GetInPort( 'theOriginal' )
+    IMakeCopyGate = MakeCopy.GetInPort( 'Gate' )
+    OMakeCopyreturn = MakeCopy.GetOutPort( 'return' )
+    OMakeCopyGate = MakeCopy.GetOutPort( 'Gate' )
+    
+    MakeBox = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeBox' )
+    MakeBox.SetName( 'MakeBox' )
+    MakeBox.SetAuthor( '' )
+    MakeBox.SetContainer( 'localhost/FactoryServer' )
+    MakeBox.SetComment( 'MakeBox from GEOM_Superv' )
+    MakeBox.Coords( 219 , 14 )
+    IMakeBoxtheX1 = MakeBox.GetInPort( 'theX1' )
+    IMakeBoxtheY1 = MakeBox.GetInPort( 'theY1' )
+    IMakeBoxtheZ1 = MakeBox.GetInPort( 'theZ1' )
+    IMakeBoxtheX2 = MakeBox.GetInPort( 'theX2' )
+    IMakeBoxtheY2 = MakeBox.GetInPort( 'theY2' )
+    IMakeBoxtheZ2 = MakeBox.GetInPort( 'theZ2' )
+    IMakeBoxGate = MakeBox.GetInPort( 'Gate' )
+    OMakeBoxreturn = MakeBox.GetOutPort( 'return' )
+    OMakeBoxGate = MakeBox.GetOutPort( 'Gate' )
+    
+    MakeCopy_1 = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeCopy' )
+    MakeCopy_1.SetName( 'MakeCopy_1' )
+    MakeCopy_1.SetAuthor( '' )
+    MakeCopy_1.SetContainer( 'localhost/FactoryServer' )
+    MakeCopy_1.SetComment( 'MakeCopy from GEOM_Superv' )
+    MakeCopy_1.Coords( 482 , 306 )
+    IMakeCopy_1theOriginal = MakeCopy_1.GetInPort( 'theOriginal' )
+    IMakeCopy_1Gate = MakeCopy_1.GetInPort( 'Gate' )
+    OMakeCopy_1return = MakeCopy_1.GetOutPort( 'return' )
+    OMakeCopy_1Gate = MakeCopy_1.GetOutPort( 'Gate' )
+    
+    MakeFuse = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeFuse' )
+    MakeFuse.SetName( 'MakeFuse' )
+    MakeFuse.SetAuthor( '' )
+    MakeFuse.SetContainer( 'localhost/FactoryServer' )
+    MakeFuse.SetComment( 'MakeFuse from GEOM_Superv' )
+    MakeFuse.Coords( 950 , 121 )
+    IMakeFusetheShape1 = MakeFuse.GetInPort( 'theShape1' )
+    IMakeFusetheShape2 = MakeFuse.GetInPort( 'theShape2' )
+    IMakeFuseGate = MakeFuse.GetInPort( 'Gate' )
+    OMakeFusereturn = MakeFuse.GetOutPort( 'return' )
+    OMakeFuseGate = MakeFuse.GetOutPort( 'Gate' )
+    
+    MakeSphere = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeSphere' )
+    MakeSphere.SetName( 'MakeSphere' )
+    MakeSphere.SetAuthor( '' )
+    MakeSphere.SetContainer( 'localhost/FactoryServer' )
+    MakeSphere.SetComment( 'MakeSphere from GEOM_Superv' )
+    MakeSphere.Coords( 227 , 409 )
+    IMakeSpheretheX = MakeSphere.GetInPort( 'theX' )
+    IMakeSpheretheY = MakeSphere.GetInPort( 'theY' )
+    IMakeSpheretheZ = MakeSphere.GetInPort( 'theZ' )
+    IMakeSpheretheRadius = MakeSphere.GetInPort( 'theRadius' )
+    IMakeSphereGate = MakeSphere.GetInPort( 'Gate' )
+    OMakeSpherereturn = MakeSphere.GetOutPort( 'return' )
+    OMakeSphereGate = MakeSphere.GetOutPort( 'Gate' )
+    
+    MakeFuse_1 = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeFuse' )
+    MakeFuse_1.SetName( 'MakeFuse_1' )
+    MakeFuse_1.SetAuthor( '' )
+    MakeFuse_1.SetContainer( 'localhost/FactoryServer' )
+    MakeFuse_1.SetComment( 'MakeFuse from GEOM_Superv' )
+    MakeFuse_1.Coords( 1217 , 389 )
+    IMakeFuse_1theShape1 = MakeFuse_1.GetInPort( 'theShape1' )
+    IMakeFuse_1theShape2 = MakeFuse_1.GetInPort( 'theShape2' )
+    IMakeFuse_1Gate = MakeFuse_1.GetInPort( 'Gate' )
+    OMakeFuse_1return = MakeFuse_1.GetOutPort( 'return' )
+    OMakeFuse_1Gate = MakeFuse_1.GetOutPort( 'Gate' )
+    
+    SetStudyID = aNewDataFlow.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'SetStudyID' )
+    SetStudyID.SetName( 'SetStudyID' )
+    SetStudyID.SetAuthor( '' )
+    SetStudyID.SetContainer( 'localhost/FactoryServer' )
+    SetStudyID.SetComment( 'SetStudyID from GEOM_Superv' )
+    SetStudyID.Coords( 7 , 269 )
+    ISetStudyIDtheStudyID = SetStudyID.GetInPort( 'theStudyID' )
+    ISetStudyIDGate = SetStudyID.GetInPort( 'Gate' )
+    OSetStudyIDGate = SetStudyID.GetOutPort( 'Gate' )
+    
+    # Creation of Macro Nodes
+    aNewDataFlow_1 = DefaNewDataFlow_1()
+    Macro_aNewDataFlow_1 = aNewDataFlow.GraphMNode( aNewDataFlow_1 )
+    Macro_aNewDataFlow_1.SetCoupled( 'aNewDataFlow_1' )
+    Macro_aNewDataFlow_1.SetName( 'Macro_aNewDataFlow_1' )
+    Macro_aNewDataFlow_1.SetAuthor( '' )
+    Macro_aNewDataFlow_1.SetComment( 'Macro Node' )
+    Macro_aNewDataFlow_1.Coords( 480 , 145 )
+    IMacro_aNewDataFlow_1sum__a = Macro_aNewDataFlow_1.GetInPort( 'sum__a' )
+    IMacro_aNewDataFlow_1sum__b = Macro_aNewDataFlow_1.GetInPort( 'sum__b' )
+    IMacro_aNewDataFlow_1Gate = Macro_aNewDataFlow_1.GetInPort( 'Gate' )
+    OMacro_aNewDataFlow_1Mult__b = Macro_aNewDataFlow_1.GetOutPort( 'Mult__b' )
+    OMacro_aNewDataFlow_1Gate = Macro_aNewDataFlow_1.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LMacro_aNewDataFlow_1Mult__bTranslateDXDYDZtheDY = aNewDataFlow.Link( OMacro_aNewDataFlow_1Mult__b , ITranslateDXDYDZtheDY )
+    
+    LTranslateDXDYDZreturnMakeFusetheShape1 = aNewDataFlow.Link( OTranslateDXDYDZreturn , IMakeFusetheShape1 )
+    
+    LMakeCopyreturnTranslateDXDYDZtheObject = aNewDataFlow.Link( OMakeCopyreturn , ITranslateDXDYDZtheObject )
+    
+    LMakeBoxreturnMakeCopytheOriginal = aNewDataFlow.Link( OMakeBoxreturn , IMakeCopytheOriginal )
+    
+    LMakeBoxreturnMakeCopy_1theOriginal = aNewDataFlow.Link( OMakeBoxreturn , IMakeCopy_1theOriginal )
+    
+    LMakeCopy_1returnMakeFusetheShape2 = aNewDataFlow.Link( OMakeCopy_1return , IMakeFusetheShape2 )
+    
+    LMakeFusereturnMakeFuse_1theShape1 = aNewDataFlow.Link( OMakeFusereturn , IMakeFuse_1theShape1 )
+    
+    LMakeSpherereturnMakeFuse_1theShape2 = aNewDataFlow.Link( OMakeSpherereturn , IMakeFuse_1theShape2 )
+    
+    LSetStudyIDGateMakeBoxGate = aNewDataFlow.Link( OSetStudyIDGate , IMakeBoxGate )
+    
+    LSetStudyIDGateMakeSphereGate = aNewDataFlow.Link( OSetStudyIDGate , IMakeSphereGate )
+    
+    # Input datas
+    IMacro_aNewDataFlow_1sum__a.Input( 1 )
+    IMacro_aNewDataFlow_1sum__b.Input( 2 )
+    ITranslateDXDYDZtheDX.Input( 25 )
+    ITranslateDXDYDZtheDZ.Input( 25 )
+    IMakeBoxtheX1.Input( 0 )
+    IMakeBoxtheY1.Input( 0 )
+    IMakeBoxtheZ1.Input( 0 )
+    IMakeBoxtheX2.Input( 50 )
+    IMakeBoxtheY2.Input( 50 )
+    IMakeBoxtheZ2.Input( 50 )
+    IMakeSpheretheX.Input( 0 )
+    IMakeSpheretheY.Input( 0 )
+    IMakeSpheretheZ.Input( 0 )
+    IMakeSpheretheRadius.Input( 12 )
+    ISetStudyIDtheStudyID.Input( 1 )
+    
+    # Output Ports of the graph
+    #OMakeFuse_1return = MakeFuse_1.GetOutPort( 'return' )
+    return aNewDataFlow
+
+# Graph creation of aNewDataFlow_1
+def DefaNewDataFlow_1() :
+    aNewDataFlow_1 = Graph( 'aNewDataFlow_1' )
+    aNewDataFlow_1.SetCoupled( 'Macro_aNewDataFlow_1' )
+    aNewDataFlow_1.SetName( 'aNewDataFlow_1' )
+    aNewDataFlow_1.SetAuthor( '' )
+    aNewDataFlow_1.SetComment( '' )
+    aNewDataFlow_1.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    PyMult = []
+    PyMult.append( 'def Mult(a): ' )
+    PyMult.append( '   b = a*3 ' )
+    PyMult.append( '   return b ' )
+    Mult = aNewDataFlow_1.INode( 'Mult' , PyMult )
+    Mult.SetName( 'Mult' )
+    Mult.SetAuthor( '' )
+    Mult.SetComment( 'Compute Node' )
+    Mult.Coords( 382 , 78 )
+    IMulta = Mult.InPort( 'a' , 'double' )
+    IMultGate = Mult.GetInPort( 'Gate' )
+    OMultb = Mult.OutPort( 'b' , 'double' )
+    OMultGate = Mult.GetOutPort( 'Gate' )
+    
+    Pysum = []
+    Pysum.append( 'def sum(a, b): ' )
+    Pysum.append( '   return a+b' )
+    sum = aNewDataFlow_1.INode( 'sum' , Pysum )
+    sum.SetName( 'sum' )
+    sum.SetAuthor( '' )
+    sum.SetComment( 'Compute Node' )
+    sum.Coords( 47 , 87 )
+    Isuma = sum.InPort( 'a' , 'double' )
+    Isumb = sum.InPort( 'b' , 'double' )
+    IsumGate = sum.GetInPort( 'Gate' )
+    Osums = sum.OutPort( 's' , 'double' )
+    OsumGate = sum.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LsumsMulta = aNewDataFlow_1.Link( Osums , IMulta )
+    
+    # Input Ports of the graph
+    #Isuma = sum.GetInPort( 'a' )
+    #Isumb = sum.GetInPort( 'b' )
+    
+    # Output Ports of the graph
+    #OMultb = Mult.GetOutPort( 'b' )
+    return aNewDataFlow_1
+
+
+aNewDataFlow = DefaNewDataFlow()
index ff3ad123074d12dde0d35614260fc65ba802b979..5dce47fbb2bc34335d5ffd09aeb02243225947af 100755 (executable)
@@ -5,63 +5,66 @@
 <node>
 <component-name>?</component-name>
     <interface-name>?</interface-name>
-    <node-name>GeomGraph_3</node-name>
+    <node-name>aNewDataFlow</node-name>
     <kind>1</kind>
     <coupled-node>?</coupled-node>
     <service>
-<service-name>GeomGraph_3</service-name>
+<service-name>aNewDataFlow</service-name>
      <inParameter-list>
 <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeBox__x1</inParameter-name>      </inParameter>
+       <inParameter-name>Macro_aNewDataFlow_1__sum__a</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeBox__y1</inParameter-name>      </inParameter>
+       <inParameter-name>Macro_aNewDataFlow_1__sum__b</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeBox__z1</inParameter-name>      </inParameter>
+       <inParameter-name>TranslateDXDYDZ__theDX</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeBox__x2</inParameter-name>      </inParameter>
+       <inParameter-name>TranslateDXDYDZ__theDZ</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeBox__y2</inParameter-name>      </inParameter>
+       <inParameter-name>MakeBox__theX1</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeBox__z2</inParameter-name>      </inParameter>
+       <inParameter-name>MakeBox__theY1</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeTranslation__x1</inParameter-name>      </inParameter>
+       <inParameter-name>MakeBox__theZ1</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeTranslation__z1</inParameter-name>      </inParameter>
+       <inParameter-name>MakeBox__theX2</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeSphere__x1</inParameter-name>      </inParameter>
+       <inParameter-name>MakeBox__theY2</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeSphere__y1</inParameter-name>      </inParameter>
+       <inParameter-name>MakeBox__theZ2</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeSphere__z1</inParameter-name>      </inParameter>
+       <inParameter-name>MakeSphere__theX</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>MakeSphere__radius</inParameter-name>      </inParameter>
+       <inParameter-name>MakeSphere__theY</inParameter-name>      </inParameter>
       <inParameter>
-<inParameter-type>long</inParameter-type>
-       <inParameter-name>Macro_aNewDataFlow_1_5_1__sum__a</inParameter-name>      </inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__theZ</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__theRadius</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>long</inParameter-type>
-       <inParameter-name>Macro_aNewDataFlow_1_5_1__sum__b</inParameter-name>      </inParameter>     </inParameter-list>
+       <inParameter-name>SetStudyID__theStudyID</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-       <outParameter-name>MakeFuse_1__shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>MakeFuse_1__return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
-    <creation-date>13/3/2003 - 11:46:34</creation-date>
-    <lastmodification-date>2/7/2004 - 11:13:17</lastmodification-date>
-    <editor-release>1.04</editor-release>
+    <creation-date>29/10/2004 - 14:37:33</creation-date>
+    <lastmodification-date>11/11/2004 - 13:15:14</lastmodification-date>
+    <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
     <comment>?</comment>
     <y-position>0</y-position>   </node>  </info-list>
   <node-list>
 <node>
-<component-name>GEOM</component-name>
-    <interface-name>GEOM</interface-name>
-    <node-name>MakeBox</node-name>
-    <kind>0</kind>
-    <coupled-node>?</coupled-node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>Macro_aNewDataFlow_1</node-name>
+    <kind>10</kind>
+    <coupled-node>aNewDataFlow_1</coupled-node>
     <service>
-<service-name>MakeBox</service-name>
+<service-name>aNewDataFlow_1</service-name>
      <inParameter-list>
 <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>x1</inParameter-name>      </inParameter>
-      <inParameter>
-<inParameter-type>double</inParameter-type>
-       <inParameter-name>y1</inParameter-name>      </inParameter>
-      <inParameter>
-<inParameter-type>double</inParameter-type>
-       <inParameter-name>z1</inParameter-name>      </inParameter>
-      <inParameter>
-<inParameter-type>double</inParameter-type>
-       <inParameter-name>x2</inParameter-name>      </inParameter>
-      <inParameter>
-<inParameter-type>double</inParameter-type>
-       <inParameter-name>y2</inParameter-name>      </inParameter>
+       <inParameter-name>sum__a</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>z2</inParameter-name>      </inParameter>     </inParameter-list>
+       <inParameter-name>sum__b</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>double</outParameter-type>
+       <outParameter-name>Mult__b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
-    <PyFunction-list/>
-    <creation-date>2/7/2004 - 11:10:39</creation-date>
-    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
-    <editor-release>1.04</editor-release>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>?</FuncName>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>11/11/2004 - 13:11:17</creation-date>
+    <lastmodification-date>11/11/2004 - 13:11:17</lastmodification-date>
+    <editor-release>2.0</editor-release>
     <author>?</author>
-    <container>localhost/FactoryServer</container>
-    <comment>MakeBox from Geometry</comment>
-    <x-position>5</x-position>
-    <y-position>101</y-position>   </node>
+    <container>?</container>
+    <comment>Macro Node</comment>
+    <x-position>480</x-position>
+    <y-position>145</y-position>   </node>
    <node>
-<component-name>GEOM</component-name>
-    <interface-name>GEOM</interface-name>
-    <node-name>MakeCopy</node-name>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>TranslateDXDYDZ</node-name>
     <kind>0</kind>
     <coupled-node>?</coupled-node>
     <service>
-<service-name>MakeCopy</service-name>
+<service-name>TranslateDXDYDZ</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theObject</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDZ</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
-    <creation-date>2/7/2004 - 11:10:39</creation-date>
-    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
-    <editor-release>1.04</editor-release>
+    <creation-date>11/11/2004 - 13:11:58</creation-date>
+    <lastmodification-date>11/11/2004 - 13:11:58</lastmodification-date>
+    <editor-release>2.0</editor-release>
     <author>?</author>
     <container>localhost/FactoryServer</container>
-    <comment>MakeCopy from Geometry</comment>
-    <x-position>235</x-position>
-    <y-position>77</y-position>   </node>
+    <comment>TranslateDXDYDZ from GEOM_Superv</comment>
+    <x-position>735</x-position>
+    <y-position>14</y-position>   </node>
    <node>
-<component-name>GEOM</component-name>
-    <interface-name>GEOM</interface-name>
-    <node-name>MakeCopy_1</node-name>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeCopy</node-name>
     <kind>0</kind>
     <coupled-node>?</coupled-node>
     <service>
 <service-name>MakeCopy</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theOriginal</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
-    <creation-date>2/7/2004 - 11:10:39</creation-date>
-    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
-    <editor-release>1.04</editor-release>
+    <creation-date>11/11/2004 - 13:12:24</creation-date>
+    <lastmodification-date>11/11/2004 - 13:12:24</lastmodification-date>
+    <editor-release>2.0</editor-release>
     <author>?</author>
     <container>localhost/FactoryServer</container>
-    <comment>MakeCopy from Geometry</comment>
-    <x-position>249</x-position>
-    <y-position>371</y-position>   </node>
+    <comment>MakeCopy from GEOM_Superv</comment>
+    <x-position>477</x-position>
+    <y-position>14</y-position>   </node>
    <node>
-<component-name>GEOM</component-name>
-    <interface-name>GEOM</interface-name>
-    <node-name>MakeTranslation</node-name>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeBox</node-name>
     <kind>0</kind>
     <coupled-node>?</coupled-node>
     <service>
-<service-name>MakeTranslation</service-name>
+<service-name>MakeBox</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-       <inParameter-name>shape1</inParameter-name>      </inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theX1</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>x1</inParameter-name>      </inParameter>
+       <inParameter-name>theY1</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>y1</inParameter-name>      </inParameter>
+       <inParameter-name>theZ1</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>z1</inParameter-name>      </inParameter>     </inParameter-list>
+       <inParameter-name>theX2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theY2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theZ2</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
-    <creation-date>2/7/2004 - 11:10:39</creation-date>
-    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
-    <editor-release>1.04</editor-release>
+    <creation-date>11/11/2004 - 13:12:49</creation-date>
+    <lastmodification-date>11/11/2004 - 13:12:49</lastmodification-date>
+    <editor-release>2.0</editor-release>
     <author>?</author>
     <container>localhost/FactoryServer</container>
-    <comment>MakeTranslation from Geometry</comment>
-    <x-position>449</x-position>
-    <y-position>86</y-position>   </node>
+    <comment>MakeBox from GEOM_Superv</comment>
+    <x-position>219</x-position>
+    <y-position>14</y-position>   </node>
    <node>
-<component-name>GEOM</component-name>
-    <interface-name>GEOM</interface-name>
-    <node-name>MakeFuse</node-name>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeCopy_1</node-name>
     <kind>0</kind>
     <coupled-node>?</coupled-node>
     <service>
-<service-name>MakeFuse</service-name>
+<service-name>MakeCopy</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-       <inParameter-name>shape1</inParameter-name>      </inParameter>
-      <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theOriginal</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
-    <creation-date>2/7/2004 - 11:10:39</creation-date>
-    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
-    <editor-release>1.04</editor-release>
+    <creation-date>11/11/2004 - 13:13:9</creation-date>
+    <lastmodification-date>11/11/2004 - 13:13:9</lastmodification-date>
+    <editor-release>2.0</editor-release>
     <author>?</author>
     <container>localhost/FactoryServer</container>
-    <comment>MakeFuse from Geometry</comment>
-    <x-position>678</x-position>
-    <y-position>224</y-position>   </node>
+    <comment>MakeCopy from GEOM_Superv</comment>
+    <x-position>482</x-position>
+    <y-position>306</y-position>   </node>
    <node>
-<component-name>GEOM</component-name>
-    <interface-name>GEOM</interface-name>
-    <node-name>MakeFuse_1</node-name>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeFuse</node-name>
     <kind>0</kind>
     <coupled-node>?</coupled-node>
     <service>
 <service-name>MakeFuse</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-       <inParameter-name>shape1</inParameter-name>      </inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape1</inParameter-name>      </inParameter>
       <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape2</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
-    <creation-date>2/7/2004 - 11:10:39</creation-date>
-    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
-    <editor-release>1.04</editor-release>
+    <creation-date>11/11/2004 - 13:13:47</creation-date>
+    <lastmodification-date>11/11/2004 - 13:13:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
     <author>?</author>
     <container>localhost/FactoryServer</container>
-    <comment>MakeFuse from Geometry</comment>
-    <x-position>909</x-position>
-    <y-position>340</y-position>   </node>
+    <comment>MakeFuse from GEOM_Superv</comment>
+    <x-position>950</x-position>
+    <y-position>121</y-position>   </node>
    <node>
-<component-name>GEOM</component-name>
-    <interface-name>GEOM</interface-name>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
     <node-name>MakeSphere</node-name>
     <kind>0</kind>
     <coupled-node>?</coupled-node>
      <inParameter-list>
 <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>x1</inParameter-name>      </inParameter>
+       <inParameter-name>theX</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>y1</inParameter-name>      </inParameter>
+       <inParameter-name>theY</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>z1</inParameter-name>      </inParameter>
+       <inParameter-name>theZ</inParameter-name>      </inParameter>
       <inParameter>
 <inParameter-type>double</inParameter-type>
-       <inParameter-name>radius</inParameter-name>      </inParameter>     </inParameter-list>
+       <inParameter-name>theRadius</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
-    <creation-date>2/7/2004 - 11:10:39</creation-date>
-    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
-    <editor-release>1.04</editor-release>
+    <creation-date>11/11/2004 - 13:14:15</creation-date>
+    <lastmodification-date>11/11/2004 - 13:14:15</lastmodification-date>
+    <editor-release>2.0</editor-release>
     <author>?</author>
     <container>localhost/FactoryServer</container>
-    <comment>MakeSphere from Geometry</comment>
-    <x-position>5</x-position>
-    <y-position>449</y-position>   </node>
+    <comment>MakeSphere from GEOM_Superv</comment>
+    <x-position>227</x-position>
+    <y-position>409</y-position>   </node>
    <node>
-<component-name>?</component-name>
-    <interface-name>?</interface-name>
-    <node-name>Macro_aNewDataFlow_1_5_1</node-name>
-    <kind>10</kind>
-    <coupled-node>aNewDataFlow_1_5_1</coupled-node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeFuse_1</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
     <service>
-<service-name>aNewDataFlow_1_5_1</service-name>
+<service-name>MakeFuse</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>long</inParameter-type>
-       <inParameter-name>sum__a</inParameter-name>      </inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape1</inParameter-name>      </inParameter>
       <inParameter>
-<inParameter-type>long</inParameter-type>
-       <inParameter-name>sum__b</inParameter-name>      </inParameter>     </inParameter-list>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape2</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>int</outParameter-type>
-       <outParameter-name>Mult__b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
-    <PyFunction-list>
-<PyFunction>
-<FuncName>?</FuncName>
-      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>2/7/2004 - 11:11:42</creation-date>
-    <lastmodification-date>2/7/2004 - 11:11:42</lastmodification-date>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 13:14:36</creation-date>
+    <lastmodification-date>11/11/2004 - 13:14:36</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
-    <container>?</container>
-    <comment>Macro Node</comment>
-    <x-position>237</x-position>
-    <y-position>215</y-position>   </node>  </node-list>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeFuse from GEOM_Superv</comment>
+    <x-position>1217</x-position>
+    <y-position>389</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>SetStudyID</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>SetStudyID</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>theStudyID</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 13:15:1</creation-date>
+    <lastmodification-date>11/11/2004 - 13:15:1</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>SetStudyID from GEOM_Superv</comment>
+    <x-position>7</x-position>
+    <y-position>269</y-position>   </node>  </node-list>
   <link-list>
 <link>
+<fromnode-name>Macro_aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>Mult__b</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDY</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>TranslateDXDYDZ</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>theShape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theObject</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
 <fromnode-name>MakeBox</fromnode-name>
-    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
     <tonode-name>MakeCopy</tonode-name>
-    <toserviceparameter-name>shape1</toserviceparameter-name>
-    <coord-list>
-<coord>
-<x>198</x>
-      <y>184</y>     </coord>
-     <coord>
-<x>199</x>
-      <y>209</y>     </coord>    </coord-list>   </link>
+    <toserviceparameter-name>theOriginal</toserviceparameter-name>
+    <coord-list/>   </link>
    <link>
 <fromnode-name>MakeBox</fromnode-name>
-    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
     <tonode-name>MakeCopy_1</tonode-name>
-    <toserviceparameter-name>shape1</toserviceparameter-name>
-    <coord-list>
-<coord>
-<x>198</x>
-      <y>441</y>     </coord>
-     <coord>
-<x>198</x>
-      <y>209</y>     </coord>    </coord-list>   </link>
-   <link>
-<fromnode-name>MakeCopy</fromnode-name>
-    <fromserviceparameter-name>shape</fromserviceparameter-name>
-    <tonode-name>MakeTranslation</tonode-name>
-    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <toserviceparameter-name>theOriginal</toserviceparameter-name>
     <coord-list/>   </link>
    <link>
 <fromnode-name>MakeCopy_1</fromnode-name>
-    <fromserviceparameter-name>shape</fromserviceparameter-name>
-    <tonode-name>MakeFuse</tonode-name>
-    <toserviceparameter-name>shape2</toserviceparameter-name>
-    <coord-list>
-<coord>
-<x>642</x>
-      <y>362</y>     </coord>
-     <coord>
-<x>642</x>
-      <y>442</y>     </coord>    </coord-list>   </link>
-   <link>
-<fromnode-name>MakeTranslation</fromnode-name>
-    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
     <tonode-name>MakeFuse</tonode-name>
-    <toserviceparameter-name>shape1</toserviceparameter-name>
-    <coord-list>
-<coord>
-<x>643</x>
-      <y>330</y>     </coord>
-     <coord>
-<x>644</x>
-      <y>195</y>     </coord>    </coord-list>   </link>
+    <toserviceparameter-name>theShape2</toserviceparameter-name>
+    <coord-list/>   </link>
    <link>
 <fromnode-name>MakeFuse</fromnode-name>
-    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
     <tonode-name>MakeFuse_1</tonode-name>
-    <toserviceparameter-name>shape1</toserviceparameter-name>
-    <coord-list>
-<coord>
-<x>872</x>
-      <y>445</y>     </coord>
-     <coord>
-<x>874</x>
-      <y>333</y>     </coord>    </coord-list>   </link>
+    <toserviceparameter-name>theShape1</toserviceparameter-name>
+    <coord-list/>   </link>
    <link>
 <fromnode-name>MakeSphere</fromnode-name>
-    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
     <tonode-name>MakeFuse_1</tonode-name>
-    <toserviceparameter-name>shape2</toserviceparameter-name>
-    <coord-list>
-<coord>
-<x>872</x>
-      <y>474</y>     </coord>
-     <coord>
-<x>871</x>
-      <y>552</y>     </coord>    </coord-list>   </link>
+    <toserviceparameter-name>theShape2</toserviceparameter-name>
+    <coord-list/>   </link>
    <link>
-<fromnode-name>Macro_aNewDataFlow_1_5_1</fromnode-name>
-    <fromserviceparameter-name>Mult__b</fromserviceparameter-name>
-    <tonode-name>MakeTranslation</tonode-name>
-    <toserviceparameter-name>y1</toserviceparameter-name>
+<fromnode-name>SetStudyID</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>SetStudyID</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
     <coord-list/>   </link>  </link-list>
   <data-list>
 <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeBox__x1</fromserviceparameter-name>
-    <tonode-name>MakeBox</tonode-name>
-    <toserviceparameter-name>x1</toserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>Macro_aNewDataFlow_1__sum__a</fromserviceparameter-name>
+    <tonode-name>Macro_aNewDataFlow_1</tonode-name>
+    <toserviceparameter-name>sum__a</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
-     <value>0</value>    </data-value>
+     <value>1</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeBox__y1</fromserviceparameter-name>
-    <tonode-name>MakeBox</tonode-name>
-    <toserviceparameter-name>y1</toserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>Macro_aNewDataFlow_1__sum__b</fromserviceparameter-name>
+    <tonode-name>Macro_aNewDataFlow_1</tonode-name>
+    <toserviceparameter-name>sum__b</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
-     <value>0</value>    </data-value>
+     <value>2</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDX</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDX</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeBox__z1</fromserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDZ</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDZ</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theX1</fromserviceparameter-name>
     <tonode-name>MakeBox</tonode-name>
-    <toserviceparameter-name>z1</toserviceparameter-name>
+    <toserviceparameter-name>theX1</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
      <value>0</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeBox__x2</fromserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theY1</fromserviceparameter-name>
     <tonode-name>MakeBox</tonode-name>
-    <toserviceparameter-name>x2</toserviceparameter-name>
+    <toserviceparameter-name>theY1</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
-     <value>50</value>    </data-value>
+     <value>0</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeBox__y2</fromserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theZ1</fromserviceparameter-name>
     <tonode-name>MakeBox</tonode-name>
-    <toserviceparameter-name>y2</toserviceparameter-name>
+    <toserviceparameter-name>theZ1</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
-     <value>50</value>    </data-value>
+     <value>0</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeBox__z2</fromserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theX2</fromserviceparameter-name>
     <tonode-name>MakeBox</tonode-name>
-    <toserviceparameter-name>z2</toserviceparameter-name>
+    <toserviceparameter-name>theX2</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
      <value>50</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeTranslation__x1</fromserviceparameter-name>
-    <tonode-name>MakeTranslation</tonode-name>
-    <toserviceparameter-name>x1</toserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theY2</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>theY2</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
-     <value>25</value>    </data-value>
+     <value>50</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeTranslation__z1</fromserviceparameter-name>
-    <tonode-name>MakeTranslation</tonode-name>
-    <toserviceparameter-name>z1</toserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeBox__theZ2</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>theZ2</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
-     <value>25</value>    </data-value>
+     <value>50</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeSphere__x1</fromserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theX</fromserviceparameter-name>
     <tonode-name>MakeSphere</tonode-name>
-    <toserviceparameter-name>x1</toserviceparameter-name>
+    <toserviceparameter-name>theX</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
      <value>0</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeSphere__y1</fromserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theY</fromserviceparameter-name>
     <tonode-name>MakeSphere</tonode-name>
-    <toserviceparameter-name>y1</toserviceparameter-name>
+    <toserviceparameter-name>theY</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
      <value>0</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeSphere__z1</fromserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theZ</fromserviceparameter-name>
     <tonode-name>MakeSphere</tonode-name>
-    <toserviceparameter-name>z1</toserviceparameter-name>
+    <toserviceparameter-name>theZ</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
      <value>0</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>MakeSphere__radius</fromserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theRadius</fromserviceparameter-name>
     <tonode-name>MakeSphere</tonode-name>
-    <toserviceparameter-name>radius</toserviceparameter-name>
+    <toserviceparameter-name>theRadius</toserviceparameter-name>
     <data-value>
 <value-type>7</value-type>
      <value>12</value>    </data-value>
     <coord-list/>   </data>
    <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>Macro_aNewDataFlow_1_5_1__sum__a</fromserviceparameter-name>
-    <tonode-name>Macro_aNewDataFlow_1_5_1</tonode-name>
-    <toserviceparameter-name>sum__a</toserviceparameter-name>
-    <data-value>
-<value-type>3</value-type>
-     <value>3</value>    </data-value>
-    <coord-list/>   </data>
-   <data>
-<fromnode-name>GeomGraph_3</fromnode-name>
-    <fromserviceparameter-name>Macro_aNewDataFlow_1_5_1__sum__b</fromserviceparameter-name>
-    <tonode-name>Macro_aNewDataFlow_1_5_1</tonode-name>
-    <toserviceparameter-name>sum__b</toserviceparameter-name>
+<fromnode-name>aNewDataFlow</fromnode-name>
+    <fromserviceparameter-name>SetStudyID__theStudyID</fromserviceparameter-name>
+    <tonode-name>SetStudyID</tonode-name>
+    <toserviceparameter-name>theStudyID</toserviceparameter-name>
     <data-value>
 <value-type>3</value-type>
-     <value>7</value>    </data-value>
+     <value>1</value>    </data-value>
     <coord-list/>   </data>  </data-list> </dataflow>
  <dataflow>
 <info-list>
 <node>
 <component-name>?</component-name>
     <interface-name>?</interface-name>
-    <node-name>aNewDataFlow_1_5_1</node-name>
+    <node-name>aNewDataFlow_1</node-name>
     <kind>1</kind>
     <coupled-node>?</coupled-node>
     <service>
-<service-name>aNewDataFlow_1_5_1</service-name>
+<service-name>aNewDataFlow_1</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>long</inParameter-type>
+<inParameter-type>double</inParameter-type>
        <inParameter-name>sum__a</inParameter-name>      </inParameter>
       <inParameter>
-<inParameter-type>long</inParameter-type>
+<inParameter-type>double</inParameter-type>
        <inParameter-name>sum__b</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>int</outParameter-type>
+<outParameter-type>double</outParameter-type>
        <outParameter-name>Mult__b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list/>
-    <creation-date>25/6/2004 - 17:42:12</creation-date>
-    <lastmodification-date>2/7/2004 - 11:11:42</lastmodification-date>
+    <creation-date>29/10/2004 - 14:40:44</creation-date>
+    <lastmodification-date>11/11/2004 - 13:11:18</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
 <node>
 <component-name>?</component-name>
     <interface-name>?</interface-name>
-    <node-name>sum</node-name>
+    <node-name>Mult</node-name>
     <kind>3</kind>
     <coupled-node>?</coupled-node>
     <service>
-<service-name>sum</service-name>
+<service-name>Mult</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>long</inParameter-type>
-       <inParameter-name>a</inParameter-name>      </inParameter>
-      <inParameter>
-<inParameter-type>long</inParameter-type>
-       <inParameter-name>b</inParameter-name>      </inParameter>     </inParameter-list>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>a</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>long</outParameter-type>
-       <outParameter-name>s</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>double</outParameter-type>
+       <outParameter-name>b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list>
 <PyFunction>
-<FuncName>sum</FuncName>
-      <PyFunc><![CDATA[def sum(a, b): ]]></PyFunc>
-      <PyFunc><![CDATA[   return a+b ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>2/7/2004 - 11:11:42</creation-date>
-    <lastmodification-date>2/7/2004 - 11:11:42</lastmodification-date>
+<FuncName>Mult</FuncName>
+      <PyFunc><![CDATA[def Mult(a): ]]></PyFunc>
+      <PyFunc><![CDATA[   b = a*3 ]]></PyFunc>
+      <PyFunc><![CDATA[   return b ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>11/11/2004 - 13:11:18</creation-date>
+    <lastmodification-date>11/11/2004 - 13:11:18</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
     <comment>Compute Node</comment>
-    <x-position>52</x-position>
-    <y-position>80</y-position>   </node>
+    <x-position>382</x-position>
+    <y-position>78</y-position>   </node>
    <node>
 <component-name>?</component-name>
     <interface-name>?</interface-name>
-    <node-name>Mult</node-name>
+    <node-name>sum</node-name>
     <kind>3</kind>
     <coupled-node>?</coupled-node>
     <service>
-<service-name>Mult</service-name>
+<service-name>sum</service-name>
      <inParameter-list>
 <inParameter>
-<inParameter-type>int</inParameter-type>
-       <inParameter-name>a</inParameter-name>      </inParameter>     </inParameter-list>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>b</inParameter-name>      </inParameter>     </inParameter-list>
      <outParameter-list>
 <outParameter>
-<outParameter-type>int</outParameter-type>
-       <outParameter-name>b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+<outParameter-type>double</outParameter-type>
+       <outParameter-name>s</outParameter-name>      </outParameter>     </outParameter-list>    </service>
     <DataStream-list/>
     <PyFunction-list>
 <PyFunction>
-<FuncName>Mult</FuncName>
-      <PyFunc><![CDATA[def Mult(a): ]]></PyFunc>
-      <PyFunc><![CDATA[   b = a*3 ]]></PyFunc>
-      <PyFunc><![CDATA[   return b ]]></PyFunc>     </PyFunction>    </PyFunction-list>
-    <creation-date>2/7/2004 - 11:11:42</creation-date>
-    <lastmodification-date>2/7/2004 - 11:11:42</lastmodification-date>
+<FuncName>sum</FuncName>
+      <PyFunc><![CDATA[def sum(a, b): ]]></PyFunc>
+      <PyFunc><![CDATA[   return a+b]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>11/11/2004 - 13:11:18</creation-date>
+    <lastmodification-date>11/11/2004 - 13:11:18</lastmodification-date>
     <editor-release>2.0</editor-release>
     <author>?</author>
     <container>?</container>
     <comment>Compute Node</comment>
-    <x-position>298</x-position>
-    <y-position>72</y-position>   </node>  </node-list>
+    <x-position>47</x-position>
+    <y-position>87</y-position>   </node>  </node-list>
   <link-list>
 <link>
 <fromnode-name>sum</fromnode-name>
diff --git a/examples/MacroWithGeom.xml_old b/examples/MacroWithGeom.xml_old
new file mode 100755 (executable)
index 0000000..ff3ad12
--- /dev/null
@@ -0,0 +1,639 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>GeomGraph_3</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>GeomGraph_3</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__x2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__y2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox__z2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__radius</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Macro_aNewDataFlow_1_5_1__sum__a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>Macro_aNewDataFlow_1_5_1__sum__b</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+       <outParameter-name>MakeFuse_1__shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>13/3/2003 - 11:46:34</creation-date>
+    <lastmodification-date>2/7/2004 - 11:13:17</lastmodification-date>
+    <editor-release>1.04</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>GEOM</component-name>
+    <interface-name>GEOM</interface-name>
+    <node-name>MakeBox</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeBox</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>2/7/2004 - 11:10:39</creation-date>
+    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
+    <editor-release>1.04</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeBox from Geometry</comment>
+    <x-position>5</x-position>
+    <y-position>101</y-position>   </node>
+   <node>
+<component-name>GEOM</component-name>
+    <interface-name>GEOM</interface-name>
+    <node-name>MakeCopy</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>2/7/2004 - 11:10:39</creation-date>
+    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
+    <editor-release>1.04</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeCopy from Geometry</comment>
+    <x-position>235</x-position>
+    <y-position>77</y-position>   </node>
+   <node>
+<component-name>GEOM</component-name>
+    <interface-name>GEOM</interface-name>
+    <node-name>MakeCopy_1</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>2/7/2004 - 11:10:39</creation-date>
+    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
+    <editor-release>1.04</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeCopy from Geometry</comment>
+    <x-position>249</x-position>
+    <y-position>371</y-position>   </node>
+   <node>
+<component-name>GEOM</component-name>
+    <interface-name>GEOM</interface-name>
+    <node-name>MakeTranslation</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeTranslation</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>2/7/2004 - 11:10:39</creation-date>
+    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
+    <editor-release>1.04</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeTranslation from Geometry</comment>
+    <x-position>449</x-position>
+    <y-position>86</y-position>   </node>
+   <node>
+<component-name>GEOM</component-name>
+    <interface-name>GEOM</interface-name>
+    <node-name>MakeFuse</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>2/7/2004 - 11:10:39</creation-date>
+    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
+    <editor-release>1.04</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeFuse from Geometry</comment>
+    <x-position>678</x-position>
+    <y-position>224</y-position>   </node>
+   <node>
+<component-name>GEOM</component-name>
+    <interface-name>GEOM</interface-name>
+    <node-name>MakeFuse_1</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>GEOM_Shape</inParameter-type>
+       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>2/7/2004 - 11:10:39</creation-date>
+    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
+    <editor-release>1.04</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeFuse from Geometry</comment>
+    <x-position>909</x-position>
+    <y-position>340</y-position>   </node>
+   <node>
+<component-name>GEOM</component-name>
+    <interface-name>GEOM</interface-name>
+    <node-name>MakeSphere</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeSphere</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>radius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Shape</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>2/7/2004 - 11:10:39</creation-date>
+    <lastmodification-date>2/7/2004 - 11:10:39</lastmodification-date>
+    <editor-release>1.04</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeSphere from Geometry</comment>
+    <x-position>5</x-position>
+    <y-position>449</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>Macro_aNewDataFlow_1_5_1</node-name>
+    <kind>10</kind>
+    <coupled-node>aNewDataFlow_1_5_1</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1_5_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>sum__a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>sum__b</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>int</outParameter-type>
+       <outParameter-name>Mult__b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>?</FuncName>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>2/7/2004 - 11:11:42</creation-date>
+    <lastmodification-date>2/7/2004 - 11:11:42</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Macro Node</comment>
+    <x-position>237</x-position>
+    <y-position>215</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>MakeBox</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>198</x>
+      <y>184</y>     </coord>
+     <coord>
+<x>199</x>
+      <y>209</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeBox</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>198</x>
+      <y>441</y>     </coord>
+     <coord>
+<x>198</x>
+      <y>209</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeCopy</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeTranslation</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>shape2</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>642</x>
+      <y>362</y>     </coord>
+     <coord>
+<x>642</x>
+      <y>442</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeTranslation</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>643</x>
+      <y>330</y>     </coord>
+     <coord>
+<x>644</x>
+      <y>195</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeFuse</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>872</x>
+      <y>445</y>     </coord>
+     <coord>
+<x>874</x>
+      <y>333</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeSphere</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape2</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>872</x>
+      <y>474</y>     </coord>
+     <coord>
+<x>871</x>
+      <y>552</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>Macro_aNewDataFlow_1_5_1</fromnode-name>
+    <fromserviceparameter-name>Mult__b</fromserviceparameter-name>
+    <tonode-name>MakeTranslation</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeBox__x1</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeBox__y1</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeBox__z1</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeBox__x2</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>x2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeBox__y2</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>y2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeBox__z2</fromserviceparameter-name>
+    <tonode-name>MakeBox</tonode-name>
+    <toserviceparameter-name>z2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation__x1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation__z1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__x1</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__y1</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__z1</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__radius</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>radius</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>12</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>Macro_aNewDataFlow_1_5_1__sum__a</fromserviceparameter-name>
+    <tonode-name>Macro_aNewDataFlow_1_5_1</tonode-name>
+    <toserviceparameter-name>sum__a</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>3</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>GeomGraph_3</fromnode-name>
+    <fromserviceparameter-name>Macro_aNewDataFlow_1_5_1__sum__b</fromserviceparameter-name>
+    <tonode-name>Macro_aNewDataFlow_1_5_1</tonode-name>
+    <toserviceparameter-name>sum__b</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>7</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow>
+ <dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>aNewDataFlow_1_5_1</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1_5_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>sum__a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>sum__b</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>int</outParameter-type>
+       <outParameter-name>Mult__b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>25/6/2004 - 17:42:12</creation-date>
+    <lastmodification-date>2/7/2004 - 11:11:42</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>sum</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>sum</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>b</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>long</outParameter-type>
+       <outParameter-name>s</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>sum</FuncName>
+      <PyFunc><![CDATA[def sum(a, b): ]]></PyFunc>
+      <PyFunc><![CDATA[   return a+b ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>2/7/2004 - 11:11:42</creation-date>
+    <lastmodification-date>2/7/2004 - 11:11:42</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>52</x-position>
+    <y-position>80</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>Mult</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>Mult</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>int</inParameter-type>
+       <inParameter-name>a</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>int</outParameter-type>
+       <outParameter-name>b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>Mult</FuncName>
+      <PyFunc><![CDATA[def Mult(a): ]]></PyFunc>
+      <PyFunc><![CDATA[   b = a*3 ]]></PyFunc>
+      <PyFunc><![CDATA[   return b ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>2/7/2004 - 11:11:42</creation-date>
+    <lastmodification-date>2/7/2004 - 11:11:42</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>298</x-position>
+    <y-position>72</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>sum</fromnode-name>
+    <fromserviceparameter-name>s</fromserviceparameter-name>
+    <tonode-name>Mult</tonode-name>
+    <toserviceparameter-name>a</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list/> </dataflow></supergraph>
diff --git a/examples/MacroWithGeom_py.py b/examples/MacroWithGeom_py.py
new file mode 100644 (file)
index 0000000..678d694
--- /dev/null
@@ -0,0 +1,264 @@
+
+# Generated python file of Graph aNewDataFlow_1_4_1_1_1_1
+
+from SuperV import *
+
+# Graph creation of aNewDataFlow_1_4_1_1_1_1
+def DefaNewDataFlow_1_4_1_1_1_1() :
+    aNewDataFlow_1_4_1_1_1_1 = Graph( 'aNewDataFlow_1_4_1_1_1_1' )
+    aNewDataFlow_1_4_1_1_1_1.SetName( 'aNewDataFlow_1_4_1_1_1_1' )
+    aNewDataFlow_1_4_1_1_1_1.SetAuthor( '' )
+    aNewDataFlow_1_4_1_1_1_1.SetComment( '' )
+    aNewDataFlow_1_4_1_1_1_1.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    Pygag = []
+    Pygag.append( 'from batchmode_geompy import *  ' )
+    Pygag.append( 'def gag():   ' )
+    Pygag.append( '    # This is a gag   ' )
+    Pygag.append( '    return 1   ' )
+    gag = aNewDataFlow_1_4_1_1_1_1.INode( 'gag' , Pygag )
+    gag.SetName( 'gag' )
+    gag.SetAuthor( '' )
+    gag.SetComment( 'Compute Node' )
+    gag.Coords( 0 , 123 )
+    IgagGate = gag.GetInPort( 'Gate' )
+    OgagGate = gag.GetOutPort( 'Gate' )
+    
+    PyMakeBox1 = []
+    PyMakeBox1.append( 'def MakeBox1(x1,y1,z1,x2,y2,z2):   ' )
+    PyMakeBox1.append( '    aBox = MakeBox(x1,y1,z1,x2,y2,z2)  ' )
+    PyMakeBox1.append( '    return aBox   ' )
+    MakeBox1 = aNewDataFlow_1_4_1_1_1_1.INode( 'MakeBox1' , PyMakeBox1 )
+    MakeBox1.SetName( 'MakeBox1' )
+    MakeBox1.SetAuthor( '' )
+    MakeBox1.SetComment( 'Compute Node' )
+    MakeBox1.Coords( 194 , 3 )
+    IMakeBox1x1 = MakeBox1.InPort( 'x1' , 'double' )
+    IMakeBox1y1 = MakeBox1.InPort( 'y1' , 'double' )
+    IMakeBox1z1 = MakeBox1.InPort( 'z1' , 'double' )
+    IMakeBox1x2 = MakeBox1.InPort( 'x2' , 'double' )
+    IMakeBox1y2 = MakeBox1.InPort( 'y2' , 'double' )
+    IMakeBox1z2 = MakeBox1.InPort( 'z2' , 'double' )
+    IMakeBox1Gate = MakeBox1.GetInPort( 'Gate' )
+    OMakeBox1shape = MakeBox1.OutPort( 'shape' , 'objref' )
+    OMakeBox1Gate = MakeBox1.GetOutPort( 'Gate' )
+    
+    PyMakeCopy_1 = []
+    PyMakeCopy_1.append( 'def MakeCopy_1(shape1):  ' )
+    PyMakeCopy_1.append( '    shape=MakeCopy(shape1) ' )
+    PyMakeCopy_1.append( '    return shape ' )
+    MakeCopy_1 = aNewDataFlow_1_4_1_1_1_1.INode( 'MakeCopy_1' , PyMakeCopy_1 )
+    MakeCopy_1.SetName( 'MakeCopy_1' )
+    MakeCopy_1.SetAuthor( '' )
+    MakeCopy_1.SetComment( 'Compute Node' )
+    MakeCopy_1.Coords( 389 , 3 )
+    IMakeCopy_1shape1 = MakeCopy_1.InPort( 'shape1' , 'objref' )
+    IMakeCopy_1Gate = MakeCopy_1.GetInPort( 'Gate' )
+    OMakeCopy_1shape = MakeCopy_1.OutPort( 'shape' , 'objref' )
+    OMakeCopy_1Gate = MakeCopy_1.GetOutPort( 'Gate' )
+    
+    PyMakeCopy_2 = []
+    PyMakeCopy_2.append( 'def MakeCopy_2(shape1):  ' )
+    PyMakeCopy_2.append( '    shape=MakeCopy(shape1)  ' )
+    PyMakeCopy_2.append( '    return shape ' )
+    MakeCopy_2 = aNewDataFlow_1_4_1_1_1_1.INode( 'MakeCopy_2' , PyMakeCopy_2 )
+    MakeCopy_2.SetName( 'MakeCopy_2' )
+    MakeCopy_2.SetAuthor( '' )
+    MakeCopy_2.SetComment( 'Compute Node' )
+    MakeCopy_2.Coords( 391 , 264 )
+    IMakeCopy_2shape1 = MakeCopy_2.InPort( 'shape1' , 'objref' )
+    IMakeCopy_2Gate = MakeCopy_2.GetInPort( 'Gate' )
+    OMakeCopy_2shape = MakeCopy_2.OutPort( 'shape' , 'objref' )
+    OMakeCopy_2Gate = MakeCopy_2.GetOutPort( 'Gate' )
+    
+    PyMakeSphere_1 = []
+    PyMakeSphere_1.append( 'def MakeSphere_1(x1,y1,z1,radius):   ' )
+    PyMakeSphere_1.append( '    apoint=MakeVertex(x1,y1,z1) ' )
+    PyMakeSphere_1.append( '    shape=MakeSpherePntR(apoint,radius) ' )
+    PyMakeSphere_1.append( '    return shape ' )
+    MakeSphere_1 = aNewDataFlow_1_4_1_1_1_1.INode( 'MakeSphere_1' , PyMakeSphere_1 )
+    MakeSphere_1.SetName( 'MakeSphere_1' )
+    MakeSphere_1.SetAuthor( '' )
+    MakeSphere_1.SetComment( 'Compute Node' )
+    MakeSphere_1.Coords( 203 , 315 )
+    IMakeSphere_1x1 = MakeSphere_1.InPort( 'x1' , 'double' )
+    IMakeSphere_1y1 = MakeSphere_1.InPort( 'y1' , 'double' )
+    IMakeSphere_1z1 = MakeSphere_1.InPort( 'z1' , 'double' )
+    IMakeSphere_1radius = MakeSphere_1.InPort( 'radius' , 'double' )
+    IMakeSphere_1Gate = MakeSphere_1.GetInPort( 'Gate' )
+    OMakeSphere_1shape = MakeSphere_1.OutPort( 'shape' , 'objref' )
+    OMakeSphere_1Gate = MakeSphere_1.GetOutPort( 'Gate' )
+    
+    PyMakeFuse_1 = []
+    PyMakeFuse_1.append( 'def MakeFuse_1(shape1,shape2): ' )
+    PyMakeFuse_1.append( '    # fuse operation 3 ' )
+    PyMakeFuse_1.append( '    shape = MakeBoolean(shape1,shape2,3)  ' )
+    PyMakeFuse_1.append( '    return shape ' )
+    MakeFuse_1 = aNewDataFlow_1_4_1_1_1_1.INode( 'MakeFuse_1' , PyMakeFuse_1 )
+    MakeFuse_1.SetName( 'MakeFuse_1' )
+    MakeFuse_1.SetAuthor( '' )
+    MakeFuse_1.SetComment( 'Compute Node' )
+    MakeFuse_1.Coords( 823 , 116 )
+    IMakeFuse_1shape1 = MakeFuse_1.InPort( 'shape1' , 'objref' )
+    IMakeFuse_1shape2 = MakeFuse_1.InPort( 'shape2' , 'objref' )
+    IMakeFuse_1Gate = MakeFuse_1.GetInPort( 'Gate' )
+    OMakeFuse_1shape = MakeFuse_1.OutPort( 'shape' , 'objref' )
+    OMakeFuse_1Gate = MakeFuse_1.GetOutPort( 'Gate' )
+    
+    PyMakeFuse_2 = []
+    PyMakeFuse_2.append( 'def MakeFuse_2(shape1,shape2):           ' )
+    PyMakeFuse_2.append( '    # fuse operation 3          ' )
+    PyMakeFuse_2.append( '    shape = MakeBoolean(shape1,shape2,3) ' )
+    PyMakeFuse_2.append( '    from SALOME_NamingServicePy import SALOME_NamingServicePy_i ' )
+    PyMakeFuse_2.append( '    myNamingService = SALOME_NamingServicePy_i(orb) ' )
+    PyMakeFuse_2.append( '    aSession = myNamingService.Resolve('/Kernel/Session') ' )
+    PyMakeFuse_2.append( '    aStudyId = aSession.GetActiveStudyId() ' )
+    PyMakeFuse_2.append( '    myStudyManager = myNamingService.Resolve('/myStudyManager') ' )
+    PyMakeFuse_2.append( '    aStudy = myStudyManager.GetStudyByID(aStudyId) ' )
+    PyMakeFuse_2.append( '    aSObject = geom.AddInStudy(aStudy, shape, "shape", None) ' )
+    PyMakeFuse_2.append( '    return shape ' )
+    MakeFuse_2 = aNewDataFlow_1_4_1_1_1_1.INode( 'MakeFuse_2' , PyMakeFuse_2 )
+    MakeFuse_2.SetName( 'MakeFuse_2' )
+    MakeFuse_2.SetAuthor( '' )
+    MakeFuse_2.SetComment( 'Compute Node' )
+    MakeFuse_2.Coords( 1049 , 295 )
+    IMakeFuse_2shape1 = MakeFuse_2.InPort( 'shape1' , 'objref' )
+    IMakeFuse_2shape2 = MakeFuse_2.InPort( 'shape2' , 'objref' )
+    IMakeFuse_2Gate = MakeFuse_2.GetInPort( 'Gate' )
+    OMakeFuse_2shape = MakeFuse_2.OutPort( 'shape' , 'objref' )
+    OMakeFuse_2Gate = MakeFuse_2.GetOutPort( 'Gate' )
+    
+    PyMakeTranslation_1 = []
+    PyMakeTranslation_1.append( 'def MakeTranslation_1(shape1,x1,y1,z1):   ' )
+    PyMakeTranslation_1.append( '    shape = MakeTranslation(shape1,x1,y1,z1)  ' )
+    PyMakeTranslation_1.append( '    return shape' )
+    MakeTranslation_1 = aNewDataFlow_1_4_1_1_1_1.INode( 'MakeTranslation_1' , PyMakeTranslation_1 )
+    MakeTranslation_1.SetName( 'MakeTranslation_1' )
+    MakeTranslation_1.SetAuthor( '' )
+    MakeTranslation_1.SetComment( 'Compute Node' )
+    MakeTranslation_1.Coords( 621 , 12 )
+    IMakeTranslation_1shape1 = MakeTranslation_1.InPort( 'shape1' , 'objref' )
+    IMakeTranslation_1x1 = MakeTranslation_1.InPort( 'x1' , 'double' )
+    IMakeTranslation_1y1 = MakeTranslation_1.InPort( 'y1' , 'double' )
+    IMakeTranslation_1z1 = MakeTranslation_1.InPort( 'z1' , 'double' )
+    IMakeTranslation_1Gate = MakeTranslation_1.GetInPort( 'Gate' )
+    OMakeTranslation_1shape = MakeTranslation_1.OutPort( 'shape' , 'objref' )
+    OMakeTranslation_1Gate = MakeTranslation_1.GetOutPort( 'Gate' )
+    
+    # Creation of Macro Nodes
+    aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1 = DefaNewDataFlow_1_5_1_1_3_3_1_1_1_3_1()
+    Macro_aNewDataFlow_1_5_1_1 = aNewDataFlow_1_4_1_1_1_1.GraphMNode( aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1 )
+    Macro_aNewDataFlow_1_5_1_1.SetCoupled( 'aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1' )
+    Macro_aNewDataFlow_1_5_1_1.SetName( 'Macro_aNewDataFlow_1_5_1_1' )
+    Macro_aNewDataFlow_1_5_1_1.SetAuthor( '' )
+    Macro_aNewDataFlow_1_5_1_1.SetComment( 'Macro Node' )
+    Macro_aNewDataFlow_1_5_1_1.Coords( 391 , 121 )
+    IMacro_aNewDataFlow_1_5_1_1sum__a = Macro_aNewDataFlow_1_5_1_1.GetInPort( 'sum__a' )
+    IMacro_aNewDataFlow_1_5_1_1sum__b = Macro_aNewDataFlow_1_5_1_1.GetInPort( 'sum__b' )
+    IMacro_aNewDataFlow_1_5_1_1Gate = Macro_aNewDataFlow_1_5_1_1.GetInPort( 'Gate' )
+    OMacro_aNewDataFlow_1_5_1_1Mult__b = Macro_aNewDataFlow_1_5_1_1.GetOutPort( 'Mult__b' )
+    OMacro_aNewDataFlow_1_5_1_1Gate = Macro_aNewDataFlow_1_5_1_1.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LgagGateMakeBox1Gate = aNewDataFlow_1_4_1_1_1_1.Link( OgagGate , IMakeBox1Gate )
+    
+    LgagGateMakeSphere_1Gate = aNewDataFlow_1_4_1_1_1_1.Link( OgagGate , IMakeSphere_1Gate )
+    LgagGateMakeSphere_1Gate.AddCoord( 1 , 175 , 470 )
+    LgagGateMakeSphere_1Gate.AddCoord( 2 , 175 , 198 )
+    
+    LMakeBox1shapeMakeCopy_1shape1 = aNewDataFlow_1_4_1_1_1_1.Link( OMakeBox1shape , IMakeCopy_1shape1 )
+    
+    LMakeBox1shapeMakeCopy_2shape1 = aNewDataFlow_1_4_1_1_1_1.Link( OMakeBox1shape , IMakeCopy_2shape1 )
+    LMakeBox1shapeMakeCopy_2shape1.AddCoord( 1 , 373 , 211 )
+    
+    LMakeCopy_1shapeMakeTranslation_1shape1 = aNewDataFlow_1_4_1_1_1_1.Link( OMakeCopy_1shape , IMakeTranslation_1shape1 )
+    
+    LMakeCopy_2shapeMakeFuse_1shape2 = aNewDataFlow_1_4_1_1_1_1.Link( OMakeCopy_2shape , IMakeFuse_1shape2 )
+    LMakeCopy_2shapeMakeFuse_1shape2.AddCoord( 1 , 674 , 207 )
+    
+    LMakeSphere_1shapeMakeFuse_2shape2 = aNewDataFlow_1_4_1_1_1_1.Link( OMakeSphere_1shape , IMakeFuse_2shape2 )
+    
+    LMakeFuse_1shapeMakeFuse_2shape1 = aNewDataFlow_1_4_1_1_1_1.Link( OMakeFuse_1shape , IMakeFuse_2shape1 )
+    LMakeFuse_1shapeMakeFuse_2shape1.AddCoord( 1 , 1017 , 366 )
+    LMakeFuse_1shapeMakeFuse_2shape1.AddCoord( 2 , 1017 , 187 )
+    
+    LMacro_aNewDataFlow_1_5_1_1Mult__bMakeTranslation_1y1 = aNewDataFlow_1_4_1_1_1_1.Link( OMacro_aNewDataFlow_1_5_1_1Mult__b , IMakeTranslation_1y1 )
+    
+    LMakeTranslation_1shapeMakeFuse_1shape1 = aNewDataFlow_1_4_1_1_1_1.Link( OMakeTranslation_1shape , IMakeFuse_1shape1 )
+    
+    # Input datas
+    IMakeBox1x1.Input( 0 )
+    IMakeBox1y1.Input( 0 )
+    IMakeBox1z1.Input( 0 )
+    IMakeBox1x2.Input( 50 )
+    IMakeBox1y2.Input( 50 )
+    IMakeBox1z2.Input( 50 )
+    IMakeSphere_1x1.Input( 0 )
+    IMakeSphere_1y1.Input( 0 )
+    IMakeSphere_1z1.Input( 0 )
+    IMakeSphere_1radius.Input( 12 )
+    IMacro_aNewDataFlow_1_5_1_1sum__a.Input( 1 )
+    IMacro_aNewDataFlow_1_5_1_1sum__b.Input( 2 )
+    IMakeTranslation_1x1.Input( 25 )
+    IMakeTranslation_1z1.Input( 25 )
+    
+    # Output Ports of the graph
+    #OMakeFuse_2shape = MakeFuse_2.GetOutPort( 'shape' )
+    return aNewDataFlow_1_4_1_1_1_1
+
+# Graph creation of aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1
+def DefaNewDataFlow_1_5_1_1_3_3_1_1_1_3_1() :
+    aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1 = Graph( 'aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1' )
+    aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1.SetCoupled( 'Macro_aNewDataFlow_1_5_1_1' )
+    aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1.SetName( 'aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1' )
+    aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1.SetAuthor( '' )
+    aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1.SetComment( '' )
+    aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    Pysum = []
+    Pysum.append( 'def sum(a, b): ' )
+    Pysum.append( '   return a+b ' )
+    sum = aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1.INode( 'sum' , Pysum )
+    sum.SetName( 'sum' )
+    sum.SetAuthor( '' )
+    sum.SetComment( 'Compute Node' )
+    sum.Coords( 52 , 80 )
+    Isuma = sum.InPort( 'a' , 'double' )
+    Isumb = sum.InPort( 'b' , 'double' )
+    IsumGate = sum.GetInPort( 'Gate' )
+    Osums = sum.OutPort( 's' , 'double' )
+    OsumGate = sum.GetOutPort( 'Gate' )
+    
+    PyMult = []
+    PyMult.append( 'def Mult(a): ' )
+    PyMult.append( '   b = a*3 ' )
+    PyMult.append( '   return b ' )
+    Mult = aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1.INode( 'Mult' , PyMult )
+    Mult.SetName( 'Mult' )
+    Mult.SetAuthor( '' )
+    Mult.SetComment( 'Compute Node' )
+    Mult.Coords( 298 , 72 )
+    IMulta = Mult.InPort( 'a' , 'double' )
+    IMultGate = Mult.GetInPort( 'Gate' )
+    OMultb = Mult.OutPort( 'b' , 'double' )
+    OMultGate = Mult.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LsumsMulta = aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1.Link( Osums , IMulta )
+    
+    # Input Ports of the graph
+    #Isuma = sum.GetInPort( 'a' )
+    #Isumb = sum.GetInPort( 'b' )
+    
+    # Output Ports of the graph
+    #OMultb = Mult.GetOutPort( 'b' )
+    return aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1
+
+
+aNewDataFlow_1_4_1_1_1_1 = DefaNewDataFlow_1_4_1_1_1_1()
diff --git a/examples/MacroWithGeom_py.xml b/examples/MacroWithGeom_py.xml
new file mode 100644 (file)
index 0000000..f73d935
--- /dev/null
@@ -0,0 +1,704 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>aNewDataFlow_1_4_1_1_1_1</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1_4_1_1_1_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__x2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__y2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeBox1__z2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__radius</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>Macro_aNewDataFlow_1_5_1_1__sum__a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>Macro_aNewDataFlow_1_5_1_1__sum__b</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>MakeFuse_2__shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>25/8/2004 - 16:28:50</creation-date>
+    <lastmodification-date>29/10/2004 - 15:25:57</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>gag</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>gag</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>gag</FuncName>
+      <PyFunc><![CDATA[from batchmode_geompy import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def gag():   ]]></PyFunc>
+      <PyFunc><![CDATA[    # This is a gag   ]]></PyFunc>
+      <PyFunc><![CDATA[    return 1   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>0</x-position>
+    <y-position>123</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeBox1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeBox1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y2</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeBox1</FuncName>
+      <PyFunc><![CDATA[def MakeBox1(x1,y1,z1,x2,y2,z2):   ]]></PyFunc>
+      <PyFunc><![CDATA[    aBox = MakeBox(x1,y1,z1,x2,y2,z2)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return aBox   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>194</x-position>
+    <y-position>3</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeCopy_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeCopy_1</FuncName>
+      <PyFunc><![CDATA[def MakeCopy_1(shape1):  ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeCopy(shape1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>389</x-position>
+    <y-position>3</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeCopy_2</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy_2</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeCopy_2</FuncName>
+      <PyFunc><![CDATA[def MakeCopy_2(shape1):  ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeCopy(shape1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>391</x-position>
+    <y-position>264</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeSphere_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeSphere_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>radius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeSphere_1</FuncName>
+      <PyFunc><![CDATA[def MakeSphere_1(x1,y1,z1,radius):   ]]></PyFunc>
+      <PyFunc><![CDATA[    apoint=MakeVertex(x1,y1,z1) ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeSpherePntR(apoint,radius) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>203</x-position>
+    <y-position>315</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeFuse_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeFuse_1</FuncName>
+      <PyFunc><![CDATA[def MakeFuse_1(shape1,shape2): ]]></PyFunc>
+      <PyFunc><![CDATA[    # fuse operation 3 ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeBoolean(shape1,shape2,3)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>823</x-position>
+    <y-position>116</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeFuse_2</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse_2</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeFuse_2</FuncName>
+      <PyFunc><![CDATA[def MakeFuse_2(shape1,shape2):           ]]></PyFunc>
+      <PyFunc><![CDATA[    # fuse operation 3          ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeBoolean(shape1,shape2,3) ]]></PyFunc>
+      <PyFunc><![CDATA[    from SALOME_NamingServicePy import SALOME_NamingServicePy_i ]]></PyFunc>
+      <PyFunc><![CDATA[    myNamingService = SALOME_NamingServicePy_i(orb) ]]></PyFunc>
+      <PyFunc><![CDATA[    aSession = myNamingService.Resolve('/Kernel/Session') ]]></PyFunc>
+      <PyFunc><![CDATA[    aStudyId = aSession.GetActiveStudyId() ]]></PyFunc>
+      <PyFunc><![CDATA[    myStudyManager = myNamingService.Resolve('/myStudyManager') ]]></PyFunc>
+      <PyFunc><![CDATA[    aStudy = myStudyManager.GetStudyByID(aStudyId) ]]></PyFunc>
+      <PyFunc><![CDATA[    aSObject = geom.AddInStudy(aStudy, shape, "shape", None) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>1049</x-position>
+    <y-position>295</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>Macro_aNewDataFlow_1_5_1_1</node-name>
+    <kind>10</kind>
+    <coupled-node>aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1_5_1_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>sum__a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>sum__b</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>double</outParameter-type>
+       <outParameter-name>Mult__b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>?</FuncName>
+      <PyFunc><![CDATA[?]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Macro Node</comment>
+    <x-position>391</x-position>
+    <y-position>121</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeTranslation_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeTranslation_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeTranslation_1</FuncName>
+      <PyFunc><![CDATA[def MakeTranslation_1(shape1,x1,y1,z1):   ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeTranslation(shape1,x1,y1,z1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:24:21</creation-date>
+    <lastmodification-date>29/10/2004 - 15:24:21</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>621</x-position>
+    <y-position>12</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>gag</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>gag</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>175</x>
+      <y>470</y>     </coord>
+     <coord>
+<x>175</x>
+      <y>198</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeBox1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeBox1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy_2</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>373</x>
+      <y>211</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeCopy_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy_2</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape2</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>674</x>
+      <y>207</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>MakeSphere_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_2</tonode-name>
+    <toserviceparameter-name>shape2</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeFuse_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_2</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list>
+<coord>
+<x>1017</x>
+      <y>366</y>     </coord>
+     <coord>
+<x>1017</x>
+      <y>187</y>     </coord>    </coord-list>   </link>
+   <link>
+<fromnode-name>Macro_aNewDataFlow_1_5_1_1</fromnode-name>
+    <fromserviceparameter-name>Mult__b</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeTranslation_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__x1</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__y1</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__z1</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__x2</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>x2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__y2</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>y2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeBox1__z2</fromserviceparameter-name>
+    <tonode-name>MakeBox1</tonode-name>
+    <toserviceparameter-name>z2</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__x1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__y1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__z1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__radius</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>radius</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>12</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>Macro_aNewDataFlow_1_5_1_1__sum__a</fromserviceparameter-name>
+    <tonode-name>Macro_aNewDataFlow_1_5_1_1</tonode-name>
+    <toserviceparameter-name>sum__a</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>1</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>Macro_aNewDataFlow_1_5_1_1__sum__b</fromserviceparameter-name>
+    <tonode-name>Macro_aNewDataFlow_1_5_1_1</tonode-name>
+    <toserviceparameter-name>sum__b</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>2</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__x1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_1_1_1_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__z1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>25</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow>
+ <dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1_5_1_1_3_3_1_1_1_3_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>sum__a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>sum__b</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>double</outParameter-type>
+       <outParameter-name>Mult__b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>25/6/2004 - 17:42:12</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>sum</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>sum</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>a</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>b</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>double</outParameter-type>
+       <outParameter-name>s</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>sum</FuncName>
+      <PyFunc><![CDATA[def sum(a, b): ]]></PyFunc>
+      <PyFunc><![CDATA[   return a+b ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>52</x-position>
+    <y-position>80</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>Mult</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>Mult</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>a</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>double</outParameter-type>
+       <outParameter-name>b</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>Mult</FuncName>
+      <PyFunc><![CDATA[def Mult(a): ]]></PyFunc>
+      <PyFunc><![CDATA[   b = a*3 ]]></PyFunc>
+      <PyFunc><![CDATA[   return b ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:22:47</creation-date>
+    <lastmodification-date>29/10/2004 - 15:22:47</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>298</x-position>
+    <y-position>72</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>sum</fromnode-name>
+    <fromserviceparameter-name>s</fromserviceparameter-name>
+    <tonode-name>Mult</tonode-name>
+    <toserviceparameter-name>a</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list/> </dataflow></supergraph>
index ca8ef7aa369263bcf498c64fa89e575bbc206b92..b8517043a20da95e38ddf8ccbacd15be35cbe0c2 100644 (file)
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : NewGraphGeomEssai.py
-#  Module : SuperVisionTest
 
-from SuperV import *
-# Graph creation 
-NewGraphGeomEssai = Graph( 'NewGraphGeomEssai' )
-print NewGraphGeomEssai.SetAuthor( '' )
-print NewGraphGeomEssai.SetComment( '' )
-NewGraphGeomEssai.Coords( 0 , 0 )
-
-# Creation of Nodes
-MakeSphere = NewGraphGeomEssai.Node( 'GEOM' , 'GEOM' , 'MakeSphere' )
-print MakeSphere.SetAuthor( '' )
-print MakeSphere.SetContainer( 'FactoryServer' )
-print MakeSphere.SetComment( '' )
-MakeSphere.Coords( 17 , 75 )
-MakeCopy = NewGraphGeomEssai.Node( 'GEOM' , 'GEOM' , 'MakeCopy' )
-print MakeCopy.SetAuthor( '' )
-print MakeCopy.SetContainer( 'FactoryServer' )
-print MakeCopy.SetComment( '' )
-MakeCopy.Coords( 219 , 12 )
-MakeTranslation = NewGraphGeomEssai.Node( 'GEOM' , 'GEOM' , 'MakeTranslation' )
-print MakeTranslation.SetAuthor( '' )
-print MakeTranslation.SetContainer( 'FactoryServer' )
-print MakeTranslation.SetComment( '' )
-MakeTranslation.Coords( 221 , 209 )
-MakeFuse = NewGraphGeomEssai.Node( 'GEOM' , 'GEOM' , 'MakeFuse' )
-print MakeFuse.SetAuthor( '' )
-print MakeFuse.SetContainer( 'FactoryServer' )
-print MakeFuse.SetComment( '' )
-MakeFuse.Coords( 465 , 106 )
-
-# Creation of intermediate Output variables and of links
-MakeSpheresphere = MakeSphere.Port( 'shape' )
-MakeCopyshape = NewGraphGeomEssai.Link( MakeSpheresphere , MakeCopy.Port( 'shape1' ) )
-MakeTranslationshape = NewGraphGeomEssai.Link( MakeSpheresphere , MakeTranslation.Port( 'shape1' ) )
-MakeCopycopy = MakeCopy.Port( 'shape' )
-MakeFuseshape1 = NewGraphGeomEssai.Link( MakeCopycopy , MakeFuse.Port( 'shape1' ) )
-MakeTranslationtranslation = MakeTranslation.Port( 'shape' )
-MakeFuseshape2 = NewGraphGeomEssai.Link( MakeTranslationtranslation , MakeFuse.Port( 'shape2' ) )
-
-# Creation of Input datas
-MakeSpherex1 = MakeSphere.Input( 'x1' , 0)
-MakeSpherey1 = MakeSphere.Input( 'y1' , 0)
-MakeSpherez1 = MakeSphere.Input( 'z1' , 0)
-MakeSphereradius = MakeSphere.Input( 'radius' , 50)
-MakeTranslationx1 = MakeTranslation.Input( 'x1' , 80)
-MakeTranslationy1 = MakeTranslation.Input( 'y1' , 0)
-MakeTranslationz1 = MakeTranslation.Input( 'z1' , 0)
+# Generated python file of Graph aNewDataFlow_1
 
-# Missing Input datas
-
-# Creation of Output variables
-MakeFuseresult = MakeFuse.Port( 'shape' )
-
-NewGraphGeomEssai.Run()
-
-NewGraphGeomEssai.DoneW()
+from SuperV import *
 
-NewGraphGeomEssai.State()
+# Graph creation of aNewDataFlow_1
+def DefaNewDataFlow_1() :
+    aNewDataFlow_1 = Graph( 'aNewDataFlow_1' )
+    aNewDataFlow_1.SetName( 'aNewDataFlow_1' )
+    aNewDataFlow_1.SetAuthor( '' )
+    aNewDataFlow_1.SetComment( '' )
+    aNewDataFlow_1.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    SetStudyID = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'SetStudyID' )
+    SetStudyID.SetName( 'SetStudyID' )
+    SetStudyID.SetAuthor( '' )
+    SetStudyID.SetContainer( 'localhost/FactoryServer' )
+    SetStudyID.SetComment( 'SetStudyID from GEOM_Superv' )
+    SetStudyID.Coords( 9 , 118 )
+    ISetStudyIDtheStudyID = SetStudyID.GetInPort( 'theStudyID' )
+    ISetStudyIDGate = SetStudyID.GetInPort( 'Gate' )
+    OSetStudyIDGate = SetStudyID.GetOutPort( 'Gate' )
+    
+    MakeSphere = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeSphere' )
+    MakeSphere.SetName( 'MakeSphere' )
+    MakeSphere.SetAuthor( '' )
+    MakeSphere.SetContainer( 'localhost/FactoryServer' )
+    MakeSphere.SetComment( 'MakeSphere from GEOM_Superv' )
+    MakeSphere.Coords( 202 , 58 )
+    IMakeSpheretheX = MakeSphere.GetInPort( 'theX' )
+    IMakeSpheretheY = MakeSphere.GetInPort( 'theY' )
+    IMakeSpheretheZ = MakeSphere.GetInPort( 'theZ' )
+    IMakeSpheretheRadius = MakeSphere.GetInPort( 'theRadius' )
+    IMakeSphereGate = MakeSphere.GetInPort( 'Gate' )
+    OMakeSpherereturn = MakeSphere.GetOutPort( 'return' )
+    OMakeSphereGate = MakeSphere.GetOutPort( 'Gate' )
+    
+    MakeCopy = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeCopy' )
+    MakeCopy.SetName( 'MakeCopy' )
+    MakeCopy.SetAuthor( '' )
+    MakeCopy.SetContainer( 'localhost/FactoryServer' )
+    MakeCopy.SetComment( 'MakeCopy from GEOM_Superv' )
+    MakeCopy.Coords( 425 , 11 )
+    IMakeCopytheOriginal = MakeCopy.GetInPort( 'theOriginal' )
+    IMakeCopyGate = MakeCopy.GetInPort( 'Gate' )
+    OMakeCopyreturn = MakeCopy.GetOutPort( 'return' )
+    OMakeCopyGate = MakeCopy.GetOutPort( 'Gate' )
+    
+    TranslateDXDYDZ = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'TranslateDXDYDZ' )
+    TranslateDXDYDZ.SetName( 'TranslateDXDYDZ' )
+    TranslateDXDYDZ.SetAuthor( '' )
+    TranslateDXDYDZ.SetContainer( 'localhost/FactoryServer' )
+    TranslateDXDYDZ.SetComment( 'TranslateDXDYDZ from GEOM_Superv' )
+    TranslateDXDYDZ.Coords( 428 , 197 )
+    ITranslateDXDYDZtheObject = TranslateDXDYDZ.GetInPort( 'theObject' )
+    ITranslateDXDYDZtheDX = TranslateDXDYDZ.GetInPort( 'theDX' )
+    ITranslateDXDYDZtheDY = TranslateDXDYDZ.GetInPort( 'theDY' )
+    ITranslateDXDYDZtheDZ = TranslateDXDYDZ.GetInPort( 'theDZ' )
+    ITranslateDXDYDZGate = TranslateDXDYDZ.GetInPort( 'Gate' )
+    OTranslateDXDYDZreturn = TranslateDXDYDZ.GetOutPort( 'return' )
+    OTranslateDXDYDZGate = TranslateDXDYDZ.GetOutPort( 'Gate' )
+    
+    MakeFuse = aNewDataFlow_1.FNode( 'GEOM_Superv' , 'GEOM_Superv' , 'MakeFuse' )
+    MakeFuse.SetName( 'MakeFuse' )
+    MakeFuse.SetAuthor( '' )
+    MakeFuse.SetContainer( 'localhost/FactoryServer' )
+    MakeFuse.SetComment( 'MakeFuse from GEOM_Superv' )
+    MakeFuse.Coords( 651 , 103 )
+    IMakeFusetheShape1 = MakeFuse.GetInPort( 'theShape1' )
+    IMakeFusetheShape2 = MakeFuse.GetInPort( 'theShape2' )
+    IMakeFuseGate = MakeFuse.GetInPort( 'Gate' )
+    OMakeFusereturn = MakeFuse.GetOutPort( 'return' )
+    OMakeFuseGate = MakeFuse.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LSetStudyIDGateMakeSphereGate = aNewDataFlow_1.Link( OSetStudyIDGate , IMakeSphereGate )
+    
+    LMakeSpherereturnMakeCopytheOriginal = aNewDataFlow_1.Link( OMakeSpherereturn , IMakeCopytheOriginal )
+    
+    LMakeSpherereturnTranslateDXDYDZtheObject = aNewDataFlow_1.Link( OMakeSpherereturn , ITranslateDXDYDZtheObject )
+    
+    LMakeCopyreturnMakeFusetheShape1 = aNewDataFlow_1.Link( OMakeCopyreturn , IMakeFusetheShape1 )
+    
+    LTranslateDXDYDZreturnMakeFusetheShape2 = aNewDataFlow_1.Link( OTranslateDXDYDZreturn , IMakeFusetheShape2 )
+    
+    # Input datas
+    ISetStudyIDtheStudyID.Input( 1 )
+    IMakeSpheretheX.Input( 0 )
+    IMakeSpheretheY.Input( 0 )
+    IMakeSpheretheZ.Input( 0 )
+    IMakeSpheretheRadius.Input( 50 )
+    ITranslateDXDYDZtheDX.Input( 80 )
+    ITranslateDXDYDZtheDY.Input( 0 )
+    ITranslateDXDYDZtheDZ.Input( 0 )
+    
+    # Output Ports of the graph
+    #OMakeFusereturn = MakeFuse.GetOutPort( 'return' )
+    return aNewDataFlow_1
 
-NewGraphGeomEssai.PrintPorts()
 
+aNewDataFlow_1 = DefaNewDataFlow_1()
diff --git a/examples/NewGraphGeomEssai.py_old b/examples/NewGraphGeomEssai.py_old
new file mode 100644 (file)
index 0000000..ca8ef7a
--- /dev/null
@@ -0,0 +1,84 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : NewGraphGeomEssai.py
+#  Module : SuperVisionTest
+
+from SuperV import *
+# Graph creation 
+NewGraphGeomEssai = Graph( 'NewGraphGeomEssai' )
+print NewGraphGeomEssai.SetAuthor( '' )
+print NewGraphGeomEssai.SetComment( '' )
+NewGraphGeomEssai.Coords( 0 , 0 )
+
+# Creation of Nodes
+MakeSphere = NewGraphGeomEssai.Node( 'GEOM' , 'GEOM' , 'MakeSphere' )
+print MakeSphere.SetAuthor( '' )
+print MakeSphere.SetContainer( 'FactoryServer' )
+print MakeSphere.SetComment( '' )
+MakeSphere.Coords( 17 , 75 )
+MakeCopy = NewGraphGeomEssai.Node( 'GEOM' , 'GEOM' , 'MakeCopy' )
+print MakeCopy.SetAuthor( '' )
+print MakeCopy.SetContainer( 'FactoryServer' )
+print MakeCopy.SetComment( '' )
+MakeCopy.Coords( 219 , 12 )
+MakeTranslation = NewGraphGeomEssai.Node( 'GEOM' , 'GEOM' , 'MakeTranslation' )
+print MakeTranslation.SetAuthor( '' )
+print MakeTranslation.SetContainer( 'FactoryServer' )
+print MakeTranslation.SetComment( '' )
+MakeTranslation.Coords( 221 , 209 )
+MakeFuse = NewGraphGeomEssai.Node( 'GEOM' , 'GEOM' , 'MakeFuse' )
+print MakeFuse.SetAuthor( '' )
+print MakeFuse.SetContainer( 'FactoryServer' )
+print MakeFuse.SetComment( '' )
+MakeFuse.Coords( 465 , 106 )
+
+# Creation of intermediate Output variables and of links
+MakeSpheresphere = MakeSphere.Port( 'shape' )
+MakeCopyshape = NewGraphGeomEssai.Link( MakeSpheresphere , MakeCopy.Port( 'shape1' ) )
+MakeTranslationshape = NewGraphGeomEssai.Link( MakeSpheresphere , MakeTranslation.Port( 'shape1' ) )
+MakeCopycopy = MakeCopy.Port( 'shape' )
+MakeFuseshape1 = NewGraphGeomEssai.Link( MakeCopycopy , MakeFuse.Port( 'shape1' ) )
+MakeTranslationtranslation = MakeTranslation.Port( 'shape' )
+MakeFuseshape2 = NewGraphGeomEssai.Link( MakeTranslationtranslation , MakeFuse.Port( 'shape2' ) )
+
+# Creation of Input datas
+MakeSpherex1 = MakeSphere.Input( 'x1' , 0)
+MakeSpherey1 = MakeSphere.Input( 'y1' , 0)
+MakeSpherez1 = MakeSphere.Input( 'z1' , 0)
+MakeSphereradius = MakeSphere.Input( 'radius' , 50)
+MakeTranslationx1 = MakeTranslation.Input( 'x1' , 80)
+MakeTranslationy1 = MakeTranslation.Input( 'y1' , 0)
+MakeTranslationz1 = MakeTranslation.Input( 'z1' , 0)
+
+# Missing Input datas
+
+# Creation of Output variables
+MakeFuseresult = MakeFuse.Port( 'shape' )
+
+NewGraphGeomEssai.Run()
+
+NewGraphGeomEssai.DoneW()
+
+NewGraphGeomEssai.State()
+
+NewGraphGeomEssai.PrintPorts()
+
index f0c5583fbb308c0f301d3f446fc8d5459da665b6..9cbb7e29394c929b1aa77cf63b555fa06608156c 100644 (file)
-<?xml version='1.0' encoding='us-ascii' ?>
-
-<!-- XML Dataflow -->
-
-<!-- Dataflow information -->
+<!DOCTYPE SuperGraph>
+<supergraph>
 <dataflow>
-       <info-list>
-               <node>
-                       <component-name>NewGraphGeomEssai</component-name>
-                       <interface-name>NewGraphGeomEssai</interface-name>
-                       <node-name>NewGraphGeomEssai</node-name>
-                       <kind>1</kind>
-                       <service>
-                               <service-name>NewGraphGeomEssai</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeSphere\x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeSphere\y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeSphere\z1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeSphere\radius</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeTranslation\x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeTranslation\y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>MakeTranslation\z1</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>MakeFuse\result</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <creation-date>12/12/2001 - 15:57:26</creation-date>
-                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
-                       <editor-release>1.00</editor-release>
-                       <author>?</author>
-                       <container>FactoryServer</container>
-                       <comment>?</comment>
-                       <x-position>0</x-position>
-                       <y-position>0</y-position>
-               </node>
-       </info-list>
-
-       <node-list>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeSphere</node-name>
-                       <kind>0</kind>
-                       <service>
-                               <service-name>MakeSphere</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>z1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>radius</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>sphere</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <creation-date>28/3/2002 - 15:32:51</creation-date>
-                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
-                       <editor-release>1.00</editor-release>
-                       <author>?</author>
-                       <container>FactoryServer</container>
-                       <comment>?</comment>
-                       <x-position>17</x-position>
-                       <y-position>75</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeCopy</node-name>
-                       <kind>0</kind>
-                       <service>
-                               <service-name>MakeCopy</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>copy</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <creation-date>28/3/2002 - 15:32:51</creation-date>
-                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
-                       <editor-release>1.00</editor-release>
-                       <author>?</author>
-                       <container>FactoryServer</container>
-                       <comment>?</comment>
-                       <x-position>219</x-position>
-                       <y-position>12</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeTranslation</node-name>
-                       <kind>0</kind>
-                       <service>
-                               <service-name>MakeTranslation</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>x1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>y1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>double</inParameter-type>
-                                               <inParameter-name>z1</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>translation</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <creation-date>28/3/2002 - 15:32:51</creation-date>
-                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
-                       <editor-release>1.00</editor-release>
-                       <author>?</author>
-                       <container>FactoryServer</container>
-                       <comment>?</comment>
-                       <x-position>221</x-position>
-                       <y-position>209</y-position>
-               </node>
-               <node>
-                       <component-name>GEOM</component-name>
-                       <interface-name>GEOM</interface-name>
-                       <node-name>MakeFuse</node-name>
-                       <kind>0</kind>
-                       <service>
-                               <service-name>MakeFuse</service-name>
-                               <inParameter-list>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape1</inParameter-name>
-                                       </inParameter>
-                                       <inParameter>
-                                               <inParameter-type>GEOM_Shape</inParameter-type>
-                                               <inParameter-name>shape2</inParameter-name>
-                                       </inParameter>
-                               </inParameter-list>
-                               <outParameter-list>
-                                       <outParameter>
-                                               <outParameter-type>GEOM_Shape</outParameter-type>
-                                               <outParameter-name>result</outParameter-name>
-                                       </outParameter>
-                               </outParameter-list>
-                       </service>
-                       <creation-date>28/3/2002 - 15:32:51</creation-date>
-                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
-                       <editor-release>1.00</editor-release>
-                       <author>?</author>
-                       <container>FactoryServer</container>
-                       <comment>?</comment>
-                       <x-position>465</x-position>
-                       <y-position>106</y-position>
-               </node>
-       </node-list>
-
-       <link-list>
-               <link>
-                       <fromnode-name>MakeSphere</fromnode-name>
-                       <fromserviceparameter-name>sphere</fromserviceparameter-name>
-                       <tonode-name>MakeCopy</tonode-name>
-                       <toserviceparameter-name>shape</toserviceparameter-name>
-                       <coord-list>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeSphere</fromnode-name>
-                       <fromserviceparameter-name>sphere</fromserviceparameter-name>
-                       <tonode-name>MakeTranslation</tonode-name>
-                       <toserviceparameter-name>shape</toserviceparameter-name>
-                       <coord-list>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeCopy</fromnode-name>
-                       <fromserviceparameter-name>copy</fromserviceparameter-name>
-                       <tonode-name>MakeFuse</tonode-name>
-                       <toserviceparameter-name>shape1</toserviceparameter-name>
-                       <coord-list>
-                       </coord-list>
-               </link>
-               <link>
-                       <fromnode-name>MakeTranslation</fromnode-name>
-                       <fromserviceparameter-name>translation</fromserviceparameter-name>
-                       <tonode-name>MakeFuse</tonode-name>
-                       <toserviceparameter-name>shape2</toserviceparameter-name>
-                       <coord-list>
-                       </coord-list>
-               </link>
-       </link-list>
-
-       <data-list>
-               <data>
-                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
-                       <fromserviceparameter-name>MakeSphere\x1</fromserviceparameter-name>
-                       <tonode-name>MakeSphere</tonode-name>
-                       <toserviceparameter-name>x1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
-                       <fromserviceparameter-name>MakeSphere\y1</fromserviceparameter-name>
-                       <tonode-name>MakeSphere</tonode-name>
-                       <toserviceparameter-name>y1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
-                       <fromserviceparameter-name>MakeSphere\z1</fromserviceparameter-name>
-                       <tonode-name>MakeSphere</tonode-name>
-                       <toserviceparameter-name>z1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
-                       <fromserviceparameter-name>MakeSphere\radius</fromserviceparameter-name>
-                       <tonode-name>MakeSphere</tonode-name>
-                       <toserviceparameter-name>radius</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>50</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
-                       <fromserviceparameter-name>MakeTranslation\x1</fromserviceparameter-name>
-                       <tonode-name>MakeTranslation</tonode-name>
-                       <toserviceparameter-name>x1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>80</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
-                       <fromserviceparameter-name>MakeTranslation\y1</fromserviceparameter-name>
-                       <tonode-name>MakeTranslation</tonode-name>
-                       <toserviceparameter-name>y1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-               <data>
-                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
-                       <fromserviceparameter-name>MakeTranslation\z1</fromserviceparameter-name>
-                       <tonode-name>MakeTranslation</tonode-name>
-                       <toserviceparameter-name>z1</toserviceparameter-name>
-                       <data-value>
-                               <value-type>3</value-type>
-                               <value>0</value>
-                       </data-value>
-                       <coord-list>
-                       </coord-list>
-               </data>
-       </data-list>
-
-</dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>aNewDataFlow_1</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>SetStudyID__theStudyID</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__theX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__theY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__theZ</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere__theRadius</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>TranslateDXDYDZ__theDX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>TranslateDXDYDZ__theDY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>TranslateDXDYDZ__theDZ</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>MakeFuse__return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>29/10/2004 - 11:15:45</creation-date>
+    <lastmodification-date>11/11/2004 - 13:5:45</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>SetStudyID</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>SetStudyID</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+       <inParameter-name>theStudyID</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 13:3:46</creation-date>
+    <lastmodification-date>11/11/2004 - 13:3:46</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>SetStudyID from GEOM_Superv</comment>
+    <x-position>9</x-position>
+    <y-position>118</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeSphere</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeSphere</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theZ</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theRadius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 13:4:18</creation-date>
+    <lastmodification-date>11/11/2004 - 13:4:18</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeSphere from GEOM_Superv</comment>
+    <x-position>202</x-position>
+    <y-position>58</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeCopy</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theOriginal</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 13:4:49</creation-date>
+    <lastmodification-date>11/11/2004 - 13:4:49</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeCopy from GEOM_Superv</comment>
+    <x-position>425</x-position>
+    <y-position>11</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>TranslateDXDYDZ</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>TranslateDXDYDZ</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theObject</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDX</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDY</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>theDZ</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 13:5:12</creation-date>
+    <lastmodification-date>11/11/2004 - 13:5:12</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>TranslateDXDYDZ from GEOM_Superv</comment>
+    <x-position>428</x-position>
+    <y-position>197</y-position>   </node>
+   <node>
+<component-name>GEOM_Superv</component-name>
+    <interface-name>GEOM_Superv</interface-name>
+    <node-name>MakeFuse</node-name>
+    <kind>0</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>GEOM_Object</inParameter-type>
+       <inParameter-name>theShape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>GEOM_Object</outParameter-type>
+       <outParameter-name>return</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>11/11/2004 - 13:5:36</creation-date>
+    <lastmodification-date>11/11/2004 - 13:5:36</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>localhost/FactoryServer</container>
+    <comment>MakeFuse from GEOM_Superv</comment>
+    <x-position>651</x-position>
+    <y-position>103</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>SetStudyID</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeSphere</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeCopy</tonode-name>
+    <toserviceparameter-name>theOriginal</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeSphere</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theObject</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>theShape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>TranslateDXDYDZ</fromnode-name>
+    <fromserviceparameter-name>return</fromserviceparameter-name>
+    <tonode-name>MakeFuse</tonode-name>
+    <toserviceparameter-name>theShape2</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>SetStudyID__theStudyID</fromserviceparameter-name>
+    <tonode-name>SetStudyID</tonode-name>
+    <toserviceparameter-name>theStudyID</toserviceparameter-name>
+    <data-value>
+<value-type>3</value-type>
+     <value>1</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theX</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>theX</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theY</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>theY</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theZ</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>theZ</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere__theRadius</fromserviceparameter-name>
+    <tonode-name>MakeSphere</tonode-name>
+    <toserviceparameter-name>theRadius</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDX</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDX</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>80</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDY</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDY</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1</fromnode-name>
+    <fromserviceparameter-name>TranslateDXDYDZ__theDZ</fromserviceparameter-name>
+    <tonode-name>TranslateDXDYDZ</tonode-name>
+    <toserviceparameter-name>theDZ</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
diff --git a/examples/NewGraphGeomEssai.xml_old b/examples/NewGraphGeomEssai.xml_old
new file mode 100644 (file)
index 0000000..f0c5583
--- /dev/null
@@ -0,0 +1,332 @@
+<?xml version='1.0' encoding='us-ascii' ?>
+
+<!-- XML Dataflow -->
+
+<!-- Dataflow information -->
+<dataflow>
+       <info-list>
+               <node>
+                       <component-name>NewGraphGeomEssai</component-name>
+                       <interface-name>NewGraphGeomEssai</interface-name>
+                       <node-name>NewGraphGeomEssai</node-name>
+                       <kind>1</kind>
+                       <service>
+                               <service-name>NewGraphGeomEssai</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeSphere\x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeSphere\y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeSphere\z1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeSphere\radius</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeTranslation\x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeTranslation\y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>MakeTranslation\z1</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>MakeFuse\result</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <creation-date>12/12/2001 - 15:57:26</creation-date>
+                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
+                       <editor-release>1.00</editor-release>
+                       <author>?</author>
+                       <container>FactoryServer</container>
+                       <comment>?</comment>
+                       <x-position>0</x-position>
+                       <y-position>0</y-position>
+               </node>
+       </info-list>
+
+       <node-list>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeSphere</node-name>
+                       <kind>0</kind>
+                       <service>
+                               <service-name>MakeSphere</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>z1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>radius</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>sphere</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <creation-date>28/3/2002 - 15:32:51</creation-date>
+                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
+                       <editor-release>1.00</editor-release>
+                       <author>?</author>
+                       <container>FactoryServer</container>
+                       <comment>?</comment>
+                       <x-position>17</x-position>
+                       <y-position>75</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeCopy</node-name>
+                       <kind>0</kind>
+                       <service>
+                               <service-name>MakeCopy</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>copy</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <creation-date>28/3/2002 - 15:32:51</creation-date>
+                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
+                       <editor-release>1.00</editor-release>
+                       <author>?</author>
+                       <container>FactoryServer</container>
+                       <comment>?</comment>
+                       <x-position>219</x-position>
+                       <y-position>12</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeTranslation</node-name>
+                       <kind>0</kind>
+                       <service>
+                               <service-name>MakeTranslation</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>x1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>y1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>double</inParameter-type>
+                                               <inParameter-name>z1</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>translation</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <creation-date>28/3/2002 - 15:32:51</creation-date>
+                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
+                       <editor-release>1.00</editor-release>
+                       <author>?</author>
+                       <container>FactoryServer</container>
+                       <comment>?</comment>
+                       <x-position>221</x-position>
+                       <y-position>209</y-position>
+               </node>
+               <node>
+                       <component-name>GEOM</component-name>
+                       <interface-name>GEOM</interface-name>
+                       <node-name>MakeFuse</node-name>
+                       <kind>0</kind>
+                       <service>
+                               <service-name>MakeFuse</service-name>
+                               <inParameter-list>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape1</inParameter-name>
+                                       </inParameter>
+                                       <inParameter>
+                                               <inParameter-type>GEOM_Shape</inParameter-type>
+                                               <inParameter-name>shape2</inParameter-name>
+                                       </inParameter>
+                               </inParameter-list>
+                               <outParameter-list>
+                                       <outParameter>
+                                               <outParameter-type>GEOM_Shape</outParameter-type>
+                                               <outParameter-name>result</outParameter-name>
+                                       </outParameter>
+                               </outParameter-list>
+                       </service>
+                       <creation-date>28/3/2002 - 15:32:51</creation-date>
+                       <lastmodification-date>28/3/2002 - 15:32:51</lastmodification-date>
+                       <editor-release>1.00</editor-release>
+                       <author>?</author>
+                       <container>FactoryServer</container>
+                       <comment>?</comment>
+                       <x-position>465</x-position>
+                       <y-position>106</y-position>
+               </node>
+       </node-list>
+
+       <link-list>
+               <link>
+                       <fromnode-name>MakeSphere</fromnode-name>
+                       <fromserviceparameter-name>sphere</fromserviceparameter-name>
+                       <tonode-name>MakeCopy</tonode-name>
+                       <toserviceparameter-name>shape</toserviceparameter-name>
+                       <coord-list>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeSphere</fromnode-name>
+                       <fromserviceparameter-name>sphere</fromserviceparameter-name>
+                       <tonode-name>MakeTranslation</tonode-name>
+                       <toserviceparameter-name>shape</toserviceparameter-name>
+                       <coord-list>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeCopy</fromnode-name>
+                       <fromserviceparameter-name>copy</fromserviceparameter-name>
+                       <tonode-name>MakeFuse</tonode-name>
+                       <toserviceparameter-name>shape1</toserviceparameter-name>
+                       <coord-list>
+                       </coord-list>
+               </link>
+               <link>
+                       <fromnode-name>MakeTranslation</fromnode-name>
+                       <fromserviceparameter-name>translation</fromserviceparameter-name>
+                       <tonode-name>MakeFuse</tonode-name>
+                       <toserviceparameter-name>shape2</toserviceparameter-name>
+                       <coord-list>
+                       </coord-list>
+               </link>
+       </link-list>
+
+       <data-list>
+               <data>
+                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
+                       <fromserviceparameter-name>MakeSphere\x1</fromserviceparameter-name>
+                       <tonode-name>MakeSphere</tonode-name>
+                       <toserviceparameter-name>x1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
+                       <fromserviceparameter-name>MakeSphere\y1</fromserviceparameter-name>
+                       <tonode-name>MakeSphere</tonode-name>
+                       <toserviceparameter-name>y1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
+                       <fromserviceparameter-name>MakeSphere\z1</fromserviceparameter-name>
+                       <tonode-name>MakeSphere</tonode-name>
+                       <toserviceparameter-name>z1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
+                       <fromserviceparameter-name>MakeSphere\radius</fromserviceparameter-name>
+                       <tonode-name>MakeSphere</tonode-name>
+                       <toserviceparameter-name>radius</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>50</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
+                       <fromserviceparameter-name>MakeTranslation\x1</fromserviceparameter-name>
+                       <tonode-name>MakeTranslation</tonode-name>
+                       <toserviceparameter-name>x1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>80</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
+                       <fromserviceparameter-name>MakeTranslation\y1</fromserviceparameter-name>
+                       <tonode-name>MakeTranslation</tonode-name>
+                       <toserviceparameter-name>y1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+               <data>
+                       <fromnode-name>NewGraphGeomEssai</fromnode-name>
+                       <fromserviceparameter-name>MakeTranslation\z1</fromserviceparameter-name>
+                       <tonode-name>MakeTranslation</tonode-name>
+                       <toserviceparameter-name>z1</toserviceparameter-name>
+                       <data-value>
+                               <value-type>3</value-type>
+                               <value>0</value>
+                       </data-value>
+                       <coord-list>
+                       </coord-list>
+               </data>
+       </data-list>
+
+</dataflow>
diff --git a/examples/NewGraphGeomEssai_py.py b/examples/NewGraphGeomEssai_py.py
new file mode 100644 (file)
index 0000000..94809ba
--- /dev/null
@@ -0,0 +1,127 @@
+
+# Generated python file of Graph aNewDataFlow_1_4_2_1
+
+from SuperV import *
+
+# Graph creation of aNewDataFlow_1_4_2_1
+def DefaNewDataFlow_1_4_2_1() :
+    aNewDataFlow_1_4_2_1 = Graph( 'aNewDataFlow_1_4_2_1' )
+    aNewDataFlow_1_4_2_1.SetName( 'aNewDataFlow_1_4_2_1' )
+    aNewDataFlow_1_4_2_1.SetAuthor( '' )
+    aNewDataFlow_1_4_2_1.SetComment( '' )
+    aNewDataFlow_1_4_2_1.Coords( 0 , 0 )
+    
+    # Creation of Factory Nodes
+    
+    # Creation of InLine Nodes
+    Pygag = []
+    Pygag.append( 'from batchmode_geompy import *  ' )
+    Pygag.append( 'def gag():   ' )
+    Pygag.append( '    # This is a gag   ' )
+    Pygag.append( '    return 1   ' )
+    gag = aNewDataFlow_1_4_2_1.INode( 'gag' , Pygag )
+    gag.SetName( 'gag' )
+    gag.SetAuthor( '' )
+    gag.SetComment( 'Compute Node' )
+    gag.Coords( 0 , 123 )
+    IgagGate = gag.GetInPort( 'Gate' )
+    OgagGate = gag.GetOutPort( 'Gate' )
+    
+    PyMakeCopy_1 = []
+    PyMakeCopy_1.append( 'def MakeCopy_1(shape1):  ' )
+    PyMakeCopy_1.append( '    shape=MakeCopy(shape1) ' )
+    PyMakeCopy_1.append( '    return shape ' )
+    MakeCopy_1 = aNewDataFlow_1_4_2_1.INode( 'MakeCopy_1' , PyMakeCopy_1 )
+    MakeCopy_1.SetName( 'MakeCopy_1' )
+    MakeCopy_1.SetAuthor( '' )
+    MakeCopy_1.SetComment( 'Compute Node' )
+    MakeCopy_1.Coords( 385 , 3 )
+    IMakeCopy_1shape1 = MakeCopy_1.InPort( 'shape1' , 'objref' )
+    IMakeCopy_1Gate = MakeCopy_1.GetInPort( 'Gate' )
+    OMakeCopy_1shape = MakeCopy_1.OutPort( 'shape' , 'objref' )
+    OMakeCopy_1Gate = MakeCopy_1.GetOutPort( 'Gate' )
+    
+    PyMakeSphere_1 = []
+    PyMakeSphere_1.append( 'def MakeSphere_1(x1,y1,z1,radius):   ' )
+    PyMakeSphere_1.append( '    apoint=MakeVertex(x1,y1,z1) ' )
+    PyMakeSphere_1.append( '    shape=MakeSpherePntR(apoint,radius) ' )
+    PyMakeSphere_1.append( '    return shape ' )
+    MakeSphere_1 = aNewDataFlow_1_4_2_1.INode( 'MakeSphere_1' , PyMakeSphere_1 )
+    MakeSphere_1.SetName( 'MakeSphere_1' )
+    MakeSphere_1.SetAuthor( '' )
+    MakeSphere_1.SetComment( 'Compute Node' )
+    MakeSphere_1.Coords( 193 , 67 )
+    IMakeSphere_1x1 = MakeSphere_1.InPort( 'x1' , 'double' )
+    IMakeSphere_1y1 = MakeSphere_1.InPort( 'y1' , 'double' )
+    IMakeSphere_1z1 = MakeSphere_1.InPort( 'z1' , 'double' )
+    IMakeSphere_1radius = MakeSphere_1.InPort( 'radius' , 'double' )
+    IMakeSphere_1Gate = MakeSphere_1.GetInPort( 'Gate' )
+    OMakeSphere_1shape = MakeSphere_1.OutPort( 'shape' , 'objref' )
+    OMakeSphere_1Gate = MakeSphere_1.GetOutPort( 'Gate' )
+    
+    PyMakeTranslation_1 = []
+    PyMakeTranslation_1.append( 'def MakeTranslation_1(shape1,x1,y1,z1):   ' )
+    PyMakeTranslation_1.append( '    shape = MakeTranslation(shape1,x1,y1,z1)  ' )
+    PyMakeTranslation_1.append( '    return shape  ' )
+    MakeTranslation_1 = aNewDataFlow_1_4_2_1.INode( 'MakeTranslation_1' , PyMakeTranslation_1 )
+    MakeTranslation_1.SetName( 'MakeTranslation_1' )
+    MakeTranslation_1.SetAuthor( '' )
+    MakeTranslation_1.SetComment( 'Compute Node' )
+    MakeTranslation_1.Coords( 388 , 146 )
+    IMakeTranslation_1shape1 = MakeTranslation_1.InPort( 'shape1' , 'objref' )
+    IMakeTranslation_1x1 = MakeTranslation_1.InPort( 'x1' , 'double' )
+    IMakeTranslation_1y1 = MakeTranslation_1.InPort( 'y1' , 'double' )
+    IMakeTranslation_1z1 = MakeTranslation_1.InPort( 'z1' , 'double' )
+    IMakeTranslation_1Gate = MakeTranslation_1.GetInPort( 'Gate' )
+    OMakeTranslation_1shape = MakeTranslation_1.OutPort( 'shape' , 'objref' )
+    OMakeTranslation_1Gate = MakeTranslation_1.GetOutPort( 'Gate' )
+    
+    PyMakeFuse_1 = []
+    PyMakeFuse_1.append( 'def MakeFuse_1(shape1,shape2):           ' )
+    PyMakeFuse_1.append( '    # fuse operation 3          ' )
+    PyMakeFuse_1.append( '    shape = MakeBoolean(shape1,shape2,3) ' )
+    PyMakeFuse_1.append( '    from SALOME_NamingServicePy import SALOME_NamingServicePy_i ' )
+    PyMakeFuse_1.append( '    myNamingService = SALOME_NamingServicePy_i(orb) ' )
+    PyMakeFuse_1.append( '    aSession = myNamingService.Resolve('/Kernel/Session') ' )
+    PyMakeFuse_1.append( '    aStudyId = aSession.GetActiveStudyId() ' )
+    PyMakeFuse_1.append( '    myStudyManager = myNamingService.Resolve('/myStudyManager') ' )
+    PyMakeFuse_1.append( '    aStudy = myStudyManager.GetStudyByID(aStudyId) ' )
+    PyMakeFuse_1.append( '    aSObject = geom.AddInStudy(aStudy, shape, "shape", None) ' )
+    PyMakeFuse_1.append( '    return shape ' )
+    MakeFuse_1 = aNewDataFlow_1_4_2_1.INode( 'MakeFuse_1' , PyMakeFuse_1 )
+    MakeFuse_1.SetName( 'MakeFuse_1' )
+    MakeFuse_1.SetAuthor( '' )
+    MakeFuse_1.SetComment( 'Compute Node' )
+    MakeFuse_1.Coords( 618 , 64 )
+    IMakeFuse_1shape1 = MakeFuse_1.InPort( 'shape1' , 'objref' )
+    IMakeFuse_1shape2 = MakeFuse_1.InPort( 'shape2' , 'objref' )
+    IMakeFuse_1Gate = MakeFuse_1.GetInPort( 'Gate' )
+    OMakeFuse_1shape = MakeFuse_1.OutPort( 'shape' , 'objref' )
+    OMakeFuse_1Gate = MakeFuse_1.GetOutPort( 'Gate' )
+    
+    # Creation of Links
+    LgagGateMakeSphere_1Gate = aNewDataFlow_1_4_2_1.Link( OgagGate , IMakeSphere_1Gate )
+    
+    LMakeCopy_1shapeMakeFuse_1shape1 = aNewDataFlow_1_4_2_1.Link( OMakeCopy_1shape , IMakeFuse_1shape1 )
+    
+    LMakeSphere_1shapeMakeCopy_1shape1 = aNewDataFlow_1_4_2_1.Link( OMakeSphere_1shape , IMakeCopy_1shape1 )
+    
+    LMakeSphere_1shapeMakeTranslation_1shape1 = aNewDataFlow_1_4_2_1.Link( OMakeSphere_1shape , IMakeTranslation_1shape1 )
+    
+    LMakeTranslation_1shapeMakeFuse_1shape2 = aNewDataFlow_1_4_2_1.Link( OMakeTranslation_1shape , IMakeFuse_1shape2 )
+    
+    # Input datas
+    IMakeSphere_1x1.Input( 0 )
+    IMakeSphere_1y1.Input( 0 )
+    IMakeSphere_1z1.Input( 0 )
+    IMakeSphere_1radius.Input( 50 )
+    IMakeTranslation_1x1.Input( 80 )
+    IMakeTranslation_1y1.Input( 0 )
+    IMakeTranslation_1z1.Input( 0 )
+    
+    # Output Ports of the graph
+    #OMakeFuse_1shape = MakeFuse_1.GetOutPort( 'shape' )
+    return aNewDataFlow_1_4_2_1
+
+
+aNewDataFlow_1_4_2_1 = DefaNewDataFlow_1_4_2_1()
diff --git a/examples/NewGraphGeomEssai_py.xml b/examples/NewGraphGeomEssai_py.xml
new file mode 100644 (file)
index 0000000..17ad7ca
--- /dev/null
@@ -0,0 +1,324 @@
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>aNewDataFlow_1_4_2_1</node-name>
+    <kind>1</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>aNewDataFlow_1_4_2_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeSphere_1__radius</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>MakeTranslation_1__z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>MakeFuse_1__shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list/>
+    <creation-date>25/8/2004 - 16:28:50</creation-date>
+    <lastmodification-date>29/10/2004 - 15:17:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>?</comment>
+    <x-position>0</x-position>
+    <y-position>0</y-position>   </node>  </info-list>
+  <node-list>
+<node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>gag</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>gag</service-name>
+     <inParameter-list/>
+     <outParameter-list/>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>gag</FuncName>
+      <PyFunc><![CDATA[from batchmode_geompy import *  ]]></PyFunc>
+      <PyFunc><![CDATA[def gag():   ]]></PyFunc>
+      <PyFunc><![CDATA[    # This is a gag   ]]></PyFunc>
+      <PyFunc><![CDATA[    return 1   ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:17:44</creation-date>
+    <lastmodification-date>29/10/2004 - 15:17:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>0</x-position>
+    <y-position>123</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeCopy_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeCopy_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeCopy_1</FuncName>
+      <PyFunc><![CDATA[def MakeCopy_1(shape1):  ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeCopy(shape1) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:17:44</creation-date>
+    <lastmodification-date>29/10/2004 - 15:17:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>385</x-position>
+    <y-position>3</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeSphere_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeSphere_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>radius</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeSphere_1</FuncName>
+      <PyFunc><![CDATA[def MakeSphere_1(x1,y1,z1,radius):   ]]></PyFunc>
+      <PyFunc><![CDATA[    apoint=MakeVertex(x1,y1,z1) ]]></PyFunc>
+      <PyFunc><![CDATA[    shape=MakeSpherePntR(apoint,radius) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:17:44</creation-date>
+    <lastmodification-date>29/10/2004 - 15:17:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>193</x-position>
+    <y-position>67</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeTranslation_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeTranslation_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>x1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>y1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>double</inParameter-type>
+       <inParameter-name>z1</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeTranslation_1</FuncName>
+      <PyFunc><![CDATA[def MakeTranslation_1(shape1,x1,y1,z1):   ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeTranslation(shape1,x1,y1,z1)  ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape  ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:17:44</creation-date>
+    <lastmodification-date>29/10/2004 - 15:17:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>388</x-position>
+    <y-position>146</y-position>   </node>
+   <node>
+<component-name>?</component-name>
+    <interface-name>?</interface-name>
+    <node-name>MakeFuse_1</node-name>
+    <kind>3</kind>
+    <coupled-node>?</coupled-node>
+    <service>
+<service-name>MakeFuse_1</service-name>
+     <inParameter-list>
+<inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape1</inParameter-name>      </inParameter>
+      <inParameter>
+<inParameter-type>objref</inParameter-type>
+       <inParameter-name>shape2</inParameter-name>      </inParameter>     </inParameter-list>
+     <outParameter-list>
+<outParameter>
+<outParameter-type>objref</outParameter-type>
+       <outParameter-name>shape</outParameter-name>      </outParameter>     </outParameter-list>    </service>
+    <DataStream-list/>
+    <PyFunction-list>
+<PyFunction>
+<FuncName>MakeFuse_1</FuncName>
+      <PyFunc><![CDATA[def MakeFuse_1(shape1,shape2):           ]]></PyFunc>
+      <PyFunc><![CDATA[    # fuse operation 3          ]]></PyFunc>
+      <PyFunc><![CDATA[    shape = MakeBoolean(shape1,shape2,3) ]]></PyFunc>
+      <PyFunc><![CDATA[    from SALOME_NamingServicePy import SALOME_NamingServicePy_i ]]></PyFunc>
+      <PyFunc><![CDATA[    myNamingService = SALOME_NamingServicePy_i(orb) ]]></PyFunc>
+      <PyFunc><![CDATA[    aSession = myNamingService.Resolve('/Kernel/Session') ]]></PyFunc>
+      <PyFunc><![CDATA[    aStudyId = aSession.GetActiveStudyId() ]]></PyFunc>
+      <PyFunc><![CDATA[    myStudyManager = myNamingService.Resolve('/myStudyManager') ]]></PyFunc>
+      <PyFunc><![CDATA[    aStudy = myStudyManager.GetStudyByID(aStudyId) ]]></PyFunc>
+      <PyFunc><![CDATA[    aSObject = geom.AddInStudy(aStudy, shape, "shape", None) ]]></PyFunc>
+      <PyFunc><![CDATA[    return shape ]]></PyFunc>     </PyFunction>    </PyFunction-list>
+    <creation-date>29/10/2004 - 15:17:44</creation-date>
+    <lastmodification-date>29/10/2004 - 15:17:44</lastmodification-date>
+    <editor-release>2.0</editor-release>
+    <author>?</author>
+    <container>?</container>
+    <comment>Compute Node</comment>
+    <x-position>618</x-position>
+    <y-position>64</y-position>   </node>  </node-list>
+  <link-list>
+<link>
+<fromnode-name>gag</fromnode-name>
+    <fromserviceparameter-name>Gate</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>Gate</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeCopy_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeSphere_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeCopy_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeSphere_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>shape1</toserviceparameter-name>
+    <coord-list/>   </link>
+   <link>
+<fromnode-name>MakeTranslation_1</fromnode-name>
+    <fromserviceparameter-name>shape</fromserviceparameter-name>
+    <tonode-name>MakeFuse_1</tonode-name>
+    <toserviceparameter-name>shape2</toserviceparameter-name>
+    <coord-list/>   </link>  </link-list>
+  <data-list>
+<data>
+<fromnode-name>aNewDataFlow_1_4_2_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__x1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__y1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__z1</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1</fromnode-name>
+    <fromserviceparameter-name>MakeSphere_1__radius</fromserviceparameter-name>
+    <tonode-name>MakeSphere_1</tonode-name>
+    <toserviceparameter-name>radius</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>50</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__x1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>x1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>80</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__y1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>y1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>
+   <data>
+<fromnode-name>aNewDataFlow_1_4_2_1</fromnode-name>
+    <fromserviceparameter-name>MakeTranslation_1__z1</fromserviceparameter-name>
+    <tonode-name>MakeTranslation_1</tonode-name>
+    <toserviceparameter-name>z1</toserviceparameter-name>
+    <data-value>
+<value-type>7</value-type>
+     <value>0</value>    </data-value>
+    <coord-list/>   </data>  </data-list> </dataflow></supergraph>
diff --git a/examples/SupervRheolefGraph.py b/examples/SupervRheolefGraph.py
deleted file mode 100755 (executable)
index 65c720f..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-
-# Generated python file of Graph aNewDataFlow
-
-from SuperV import *
-# Graph creation 
-aNewDataFlow = Graph( 'aNewDataFlow' )
-aNewDataFlow.SetName( 'aNewDataFlow' )
-aNewDataFlow.SetAuthor( '' )
-aNewDataFlow.SetComment( '' )
-aNewDataFlow.Coords( 0 , 0 )
-
-# Creation of Factory Nodes
-
-InitCL = aNewDataFlow.FNode( 'CLRheolef' , 'CLRheolef' , 'InitCL' )
-InitCL.SetName( 'InitCL' )
-InitCL.SetAuthor( '' )
-InitCL.SetContainer( 'localhost/FactoryServer' )
-InitCL.SetComment( 'InitCL from CLRheolef' )
-InitCL.Coords( 414 , 334 )
-
-MakeBox = aNewDataFlow.FNode( 'Geometry' , 'Geometry' , 'MakeBox' )
-MakeBox.SetName( 'MakeBox' )
-MakeBox.SetAuthor( '' )
-MakeBox.SetContainer( 'localhost/FactoryServer' )
-MakeBox.SetComment( 'MakeBox from Geometry' )
-MakeBox.Coords( 7 , 29 )
-
-MeshGeomShapeSup = aNewDataFlow.FNode( 'QMG' , 'QMG' , 'MeshGeomShapeSup' )
-MeshGeomShapeSup.SetName( 'MeshGeomShapeSup' )
-MeshGeomShapeSup.SetAuthor( '' )
-MeshGeomShapeSup.SetContainer( 'localhost/FactoryServer' )
-MeshGeomShapeSup.SetComment( 'MeshGeomShapeSup from QMG' )
-MeshGeomShapeSup.Coords( 372 , 0 )
-
-SolveSup = aNewDataFlow.FNode( 'Rheolef' , 'Rheolef' , 'SolveSup' )
-SolveSup.SetName( 'SolveSup' )
-SolveSup.SetAuthor( '' )
-SolveSup.SetContainer( 'localhost/FactoryServer' )
-SolveSup.SetComment( 'SolveSup from Rheolef' )
-SolveSup.Coords( 1030 , 304 )
-
-ModifyCL = aNewDataFlow.FNode( 'CLRheolef' , 'CLRheolef' , 'ModifyCL' )
-ModifyCL.SetName( 'ModifyCL' )
-ModifyCL.SetAuthor( '' )
-ModifyCL.SetContainer( 'localhost/FactoryServer' )
-ModifyCL.SetComment( 'ModifyCL from CLRheolef' )
-ModifyCL.Coords( 602 , 335 )
-
-MakeBoolean = aNewDataFlow.FNode( 'Geometry' , 'Geometry' , 'MakeBoolean' )
-MakeBoolean.SetName( 'MakeBoolean' )
-MakeBoolean.SetAuthor( '' )
-MakeBoolean.SetContainer( 'localhost/FactoryServer' )
-MakeBoolean.SetComment( 'MakeBoolean from Geometry' )
-MakeBoolean.Coords( 188 , 30 )
-
-MakeBox_1 = aNewDataFlow.FNode( 'Geometry' , 'Geometry' , 'MakeBox' )
-MakeBox_1.SetName( 'MakeBox_1' )
-MakeBox_1.SetAuthor( '' )
-MakeBox_1.SetContainer( 'localhost/FactoryServer' )
-MakeBox_1.SetComment( 'MakeBox from Geometry' )
-MakeBox_1.Coords( 0 , 325 )
-
-MakeTranslation = aNewDataFlow.FNode( 'Geometry' , 'Geometry' , 'MakeTranslation' )
-MakeTranslation.SetName( 'MakeTranslation' )
-MakeTranslation.SetAuthor( '' )
-MakeTranslation.SetContainer( 'localhost/FactoryServer' )
-MakeTranslation.SetComment( 'MakeTranslation from Geometry' )
-MakeTranslation.Coords( 190 , 325 )
-
-FindNode = aNewDataFlow.FNode( 'QMG' , 'QMG' , 'FindNode' )
-FindNode.SetName( 'FindNode' )
-FindNode.SetAuthor( '' )
-FindNode.SetContainer( 'localhost/FactoryServer' )
-FindNode.SetComment( 'FindNode from QMG' )
-FindNode.Coords( 621 , 0 )
-
-ValueOf = aNewDataFlow.FNode( 'Rheolef' , 'Rheolef' , 'ValueOf' )
-ValueOf.SetName( 'ValueOf' )
-ValueOf.SetAuthor( '' )
-ValueOf.SetContainer( 'localhost/FactoryServer' )
-ValueOf.SetComment( 'ValueOf from Rheolef' )
-ValueOf.Coords( 832 , 42 )
-
-ModifyCL_1 = aNewDataFlow.FNode( 'CLRheolef' , 'CLRheolef' , 'ModifyCL' )
-ModifyCL_1.SetName( 'ModifyCL_1' )
-ModifyCL_1.SetAuthor( '' )
-ModifyCL_1.SetContainer( 'localhost/FactoryServer' )
-ModifyCL_1.SetComment( 'ModifyCL from CLRheolef' )
-ModifyCL_1.Coords( 800 , 334 )
-
-Plot = aNewDataFlow.FNode( 'Rheolef' , 'Rheolef' , 'Plot' )
-Plot.SetName( 'Plot' )
-Plot.SetAuthor( '' )
-Plot.SetContainer( 'localhost/FactoryServer' )
-Plot.SetComment( 'Plot from Rheolef' )
-Plot.Coords( 1029 , 41 )
-
-Add = aNewDataFlow.FNode( 'AddComponent' , 'AddComponent' , 'Add' )
-Add.SetName( 'Add' )
-Add.SetAuthor( '' )
-Add.SetContainer( 'localhost/FactoryServer' )
-Add.SetComment( 'Add from AddComponent' )
-Add.Coords( 0 , 610 )
-
-# Creation of Links
-InitCLreturn = InitCL.Port( 'return' )
-ModifyCLmyRheolefData = aNewDataFlow.Link( InitCLreturn , ModifyCL.Port( 'myRheolefData' ) )
-
-MakeBoxshape = MakeBox.Port( 'shape' )
-MakeBooleanshape1 = aNewDataFlow.Link( MakeBoxshape , MakeBoolean.Port( 'shape1' ) )
-
-MeshGeomShapeSupreturn = MeshGeomShapeSup.Port( 'return' )
-SolveSupmyMesh = aNewDataFlow.Link( MeshGeomShapeSupreturn , SolveSup.Port( 'myMesh' ) )
-SolveSupmyMesh.AddCoord( 1 , 985 , 442 )
-SolveSupmyMesh.AddCoord( 2 , 984 , 301 )
-SolveSupmyMesh.AddCoord( 3 , 561 , 300 )
-SolveSupmyMesh.AddCoord( 4 , 561 , 83 )
-
-InitCLmyMesh = aNewDataFlow.Link( MeshGeomShapeSupreturn , InitCL.Port( 'myMesh' ) )
-InitCLmyMesh.AddCoord( 1 , 385 , 502 )
-InitCLmyMesh.AddCoord( 2 , 384 , 301 )
-InitCLmyMesh.AddCoord( 3 , 561 , 300 )
-InitCLmyMesh.AddCoord( 4 , 561 , 81 )
-
-FindNodeaMesh = aNewDataFlow.Link( MeshGeomShapeSupreturn , FindNode.Port( 'aMesh' ) )
-
-SolveSupreturn = SolveSup.Port( 'return' )
-ValueOfaField = aNewDataFlow.Link( SolveSupreturn , ValueOf.Port( 'aField' ) )
-ValueOfaField.AddCoord( 1 , 818 , 122 )
-ValueOfaField.AddCoord( 2 , 817 , 26 )
-ValueOfaField.AddCoord( 3 , 1216 , 26 )
-ValueOfaField.AddCoord( 4 , 1218 , 385 )
-
-ModifyCLreturn = ModifyCL.Port( 'return' )
-ModifyCL_1myRheolefData = aNewDataFlow.Link( ModifyCLreturn , ModifyCL_1.Port( 'myRheolefData' ) )
-
-MakeBooleanshape = MakeBoolean.Port( 'shape' )
-MeshGeomShapeSupshape = aNewDataFlow.Link( MakeBooleanshape , MeshGeomShapeSup.Port( 'shape' ) )
-
-MakeBox_1shape = MakeBox_1.Port( 'shape' )
-MakeTranslationshape1 = aNewDataFlow.Link( MakeBox_1shape , MakeTranslation.Port( 'shape1' ) )
-
-MakeTranslationshape = MakeTranslation.Port( 'shape' )
-MakeBooleanshape2 = aNewDataFlow.Link( MakeTranslationshape , MakeBoolean.Port( 'shape2' ) )
-MakeBooleanshape2.AddCoord( 1 , 182 , 140 )
-MakeBooleanshape2.AddCoord( 2 , 181 , 261 )
-MakeBooleanshape2.AddCoord( 3 , 363 , 260 )
-MakeBooleanshape2.AddCoord( 4 , 363 , 411 )
-MakeBooleanshape2.AddCoord( 5 , 327 , 408 )
-
-FindNodereturn = FindNode.Port( 'return' )
-ValueOfnumberOfNode = aNewDataFlow.Link( FindNodereturn , ValueOf.Port( 'numberOfNode' ) )
-ValueOfnumberOfNode.AddCoord( 1 , 799 , 152 )
-ValueOfnumberOfNode.AddCoord( 2 , 798 , 81 )
-
-ValueOfreturn = ValueOf.Port( 'return' )
-PlotValue = aNewDataFlow.Link( ValueOfreturn , Plot.Port( 'Value' ) )
-
-ModifyCL_1return = ModifyCL_1.Port( 'return' )
-SolveSupmyRheolefData = aNewDataFlow.Link( ModifyCL_1return , SolveSup.Port( 'myRheolefData' ) )
-
-Addz = Add.Port( 'z' )
-MakeTranslationy1 = aNewDataFlow.Link( Addz , MakeTranslation.Port( 'y1' ) )
-MakeTranslationy1.AddCoord( 1 , 181 , 464 )
-MakeTranslationy1.AddCoord( 2 , 182 , 720 )
-
-FindNodey = aNewDataFlow.Link( Addz , FindNode.Port( 'y' ) )
-FindNodey.AddCoord( 1 , 592 , 139 )
-FindNodey.AddCoord( 2 , 593 , 720 )
-
-PlotPosition = aNewDataFlow.Link( Addz , Plot.Port( 'Position' ) )
-PlotPosition.AddCoord( 1 , 1010 , 150 )
-PlotPosition.AddCoord( 2 , 1011 , 720 )
-
-# Creation of Input datas
-InitCLstudyId = InitCL.Input( 'studyId' , 1)
-InitCLdataName = InitCL.Input( 'dataName' , 'BoxData')
-InitCLsource = InitCL.Input( 'source' , 0)
-MakeBoxx1 = MakeBox.Input( 'x1' , 0)
-MakeBoxy1 = MakeBox.Input( 'y1' , 0)
-MakeBoxz1 = MakeBox.Input( 'z1' , 0)
-MakeBoxx2 = MakeBox.Input( 'x2' , 100)
-MakeBoxy2 = MakeBox.Input( 'y2' , 500)
-MakeBoxz2 = MakeBox.Input( 'z2' , 50)
-MeshGeomShapeSupstudyId = MeshGeomShapeSup.Input( 'studyId' , 1)
-MeshGeomShapeSupsizeControl = MeshGeomShapeSup.Input( 'sizeControl' , 999999)
-MeshGeomShapeSupcurveControl = MeshGeomShapeSup.Input( 'curveControl' , 0.5)
-MeshGeomShapeSuptolmesh = MeshGeomShapeSup.Input( 'tolmesh' , 1e-05)
-MeshGeomShapeSuptolskin = MeshGeomShapeSup.Input( 'tolskin' , 0)
-SolveSupstudyId = SolveSup.Input( 'studyId' , 1)
-ModifyCLfaceToModify = ModifyCL.Input( 'faceToModify' , 3)
-ModifyCLnewFaceCLtype = ModifyCL.Input( 'newFaceCLtype' , 1)
-ModifyCLnewFaceValue = ModifyCL.Input( 'newFaceValue' , 0)
-MakeBooleanoperation = MakeBoolean.Input( 'operation' , 2)
-MakeBox_1x1 = MakeBox_1.Input( 'x1' , 0)
-MakeBox_1y1 = MakeBox_1.Input( 'y1' , 0)
-MakeBox_1z1 = MakeBox_1.Input( 'z1' , 0)
-MakeBox_1x2 = MakeBox_1.Input( 'x2' , 40)
-MakeBox_1y2 = MakeBox_1.Input( 'y2' , 40)
-MakeBox_1z2 = MakeBox_1.Input( 'z2' , 70)
-MakeTranslationx1 = MakeTranslation.Input( 'x1' , 30)
-MakeTranslationz1 = MakeTranslation.Input( 'z1' , -10)
-FindNodex = FindNode.Input( 'x' , 50)
-FindNodez = FindNode.Input( 'z' , 25)
-ModifyCL_1faceToModify = ModifyCL_1.Input( 'faceToModify' , 5)
-ModifyCL_1newFaceCLtype = ModifyCL_1.Input( 'newFaceCLtype' , 1)
-ModifyCL_1newFaceValue = ModifyCL_1.Input( 'newFaceValue' , 1)
-PlotFilename = Plot.Input( 'Filename' , 'Result.plt')
-Addx = Add.Input( 'x' , 0)
-Addy = Add.Input( 'y' , 10)
-
-# Creation of Output variables
-AddFuncValue = Add.Port( 'FuncValue' )
diff --git a/examples/SupervRheolefGraph.xml b/examples/SupervRheolefGraph.xml
deleted file mode 100755 (executable)
index 0203403..0000000
+++ /dev/null
@@ -1,1072 +0,0 @@
-<!DOCTYPE Dataflow>
-<dataflow>
-<info-list>
-<node>
-<component-name>?</component-name>
-   <interface-name>?</interface-name>
-   <node-name>aNewDataFlow</node-name>
-   <kind>1</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>aNewDataFlow</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>InitCL\studyId</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>string</inParameter-type>
-      <inParameter-name>InitCL\dataName</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>InitCL\source</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox\x1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox\y1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox\z1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox\x2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox\y2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox\z2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>MeshGeomShapeSup\studyId</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MeshGeomShapeSup\sizeControl</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MeshGeomShapeSup\curveControl</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MeshGeomShapeSup\tolmesh</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MeshGeomShapeSup\tolskin</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>SolveSup\studyId</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>ModifyCL\faceToModify</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>ModifyCL\newFaceCLtype</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>ModifyCL\newFaceValue</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>MakeBoolean\operation</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox_1\x1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox_1\y1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox_1\z1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox_1\x2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox_1\y2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeBox_1\z2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeTranslation\x1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>MakeTranslation\z1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>FindNode\x</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>FindNode\z</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>ModifyCL_1\faceToModify</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>ModifyCL_1\newFaceCLtype</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>ModifyCL_1\newFaceValue</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>string</inParameter-type>
-      <inParameter-name>Plot\Filename</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>Add\x</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>Add\y</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>double</outParameter-type>
-      <outParameter-name>Add\FuncValue</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>14/7/2002 - 21:1:52</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>?</container>
-   <comment>?</comment>
-   <x-position>0</x-position>
-   <y-position>0</y-position>  </node> </info-list>
- <node-list>
-<node>
-<component-name>CLRheolef</component-name>
-   <interface-name>CLRheolef</interface-name>
-   <node-name>InitCL</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>InitCL</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>studyId</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>string</inParameter-type>
-      <inParameter-name>dataName</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>source</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>QMG_Mesh</inParameter-type>
-      <inParameter-name>myMesh</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>Rheolef_Data</outParameter-type>
-      <outParameter-name>return</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>InitCL from CLRheolef</comment>
-   <x-position>414</x-position>
-   <y-position>334</y-position>  </node>
-  <node>
-<component-name>Geometry</component-name>
-   <interface-name>Geometry</interface-name>
-   <node-name>MakeBox</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MakeBox</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>x1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>y1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>z1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>x2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>y2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>z2</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeBox from Geometry</comment>
-   <x-position>7</x-position>
-   <y-position>29</y-position>  </node>
-  <node>
-<component-name>QMG</component-name>
-   <interface-name>QMG</interface-name>
-   <node-name>MeshGeomShapeSup</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MeshGeomShapeSup</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>studyId</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>sizeControl</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>curveControl</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>tolmesh</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>tolskin</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>QMG_Mesh</outParameter-type>
-      <outParameter-name>return</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MeshGeomShapeSup from QMG</comment>
-   <x-position>372</x-position>
-   <y-position>0</y-position>  </node>
-  <node>
-<component-name>Rheolef</component-name>
-   <interface-name>Rheolef</interface-name>
-   <node-name>SolveSup</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>SolveSup</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>studyId</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>Rheolef_Data</inParameter-type>
-      <inParameter-name>myRheolefData</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>QMG_Mesh</inParameter-type>
-      <inParameter-name>myMesh</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>Rheolef_Field</outParameter-type>
-      <outParameter-name>return</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>SolveSup from Rheolef</comment>
-   <x-position>1030</x-position>
-   <y-position>304</y-position>  </node>
-  <node>
-<component-name>CLRheolef</component-name>
-   <interface-name>CLRheolef</interface-name>
-   <node-name>ModifyCL</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>ModifyCL</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>Rheolef_Data</inParameter-type>
-      <inParameter-name>myRheolefData</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>faceToModify</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>newFaceCLtype</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>newFaceValue</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>Rheolef_Data</outParameter-type>
-      <outParameter-name>return</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>ModifyCL from CLRheolef</comment>
-   <x-position>602</x-position>
-   <y-position>335</y-position>  </node>
-  <node>
-<component-name>Geometry</component-name>
-   <interface-name>Geometry</interface-name>
-   <node-name>MakeBoolean</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MakeBoolean</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>operation</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeBoolean from Geometry</comment>
-   <x-position>188</x-position>
-   <y-position>30</y-position>  </node>
-  <node>
-<component-name>Geometry</component-name>
-   <interface-name>Geometry</interface-name>
-   <node-name>MakeBox_1</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MakeBox</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>x1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>y1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>z1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>x2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>y2</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>z2</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeBox from Geometry</comment>
-   <x-position>0</x-position>
-   <y-position>325</y-position>  </node>
-  <node>
-<component-name>Geometry</component-name>
-   <interface-name>Geometry</interface-name>
-   <node-name>MakeTranslation</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>MakeTranslation</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>GEOM_Shape</inParameter-type>
-      <inParameter-name>shape1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>x1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>y1</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>z1</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>GEOM_Shape</outParameter-type>
-      <outParameter-name>shape</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>MakeTranslation from Geometry</comment>
-   <x-position>190</x-position>
-   <y-position>325</y-position>  </node>
-  <node>
-<component-name>QMG</component-name>
-   <interface-name>QMG</interface-name>
-   <node-name>FindNode</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>FindNode</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>QMG_Mesh</inParameter-type>
-      <inParameter-name>aMesh</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>x</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>y</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>z</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>long</outParameter-type>
-      <outParameter-name>return</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>FindNode from QMG</comment>
-   <x-position>621</x-position>
-   <y-position>0</y-position>  </node>
-  <node>
-<component-name>Rheolef</component-name>
-   <interface-name>Rheolef</interface-name>
-   <node-name>ValueOf</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>ValueOf</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>Rheolef_Field</inParameter-type>
-      <inParameter-name>aField</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>numberOfNode</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>double</outParameter-type>
-      <outParameter-name>return</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>ValueOf from Rheolef</comment>
-   <x-position>832</x-position>
-   <y-position>42</y-position>  </node>
-  <node>
-<component-name>CLRheolef</component-name>
-   <interface-name>CLRheolef</interface-name>
-   <node-name>ModifyCL_1</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>ModifyCL</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>Rheolef_Data</inParameter-type>
-      <inParameter-name>myRheolefData</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>faceToModify</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>long</inParameter-type>
-      <inParameter-name>newFaceCLtype</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>newFaceValue</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>Rheolef_Data</outParameter-type>
-      <outParameter-name>return</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>ModifyCL from CLRheolef</comment>
-   <x-position>800</x-position>
-   <y-position>334</y-position>  </node>
-  <node>
-<component-name>Rheolef</component-name>
-   <interface-name>Rheolef</interface-name>
-   <node-name>Plot</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>Plot</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>Value</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>Position</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>string</inParameter-type>
-      <inParameter-name>Filename</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list/>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>Plot from Rheolef</comment>
-   <x-position>1029</x-position>
-   <y-position>41</y-position>  </node>
-  <node>
-<component-name>AddComponent</component-name>
-   <interface-name>AddComponent</interface-name>
-   <node-name>Add</node-name>
-   <kind>0</kind>
-   <coupled-node>?</coupled-node>
-   <service>
-<service-name>Add</service-name>
-    <inParameter-list>
-<inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>x</inParameter-name>     </inParameter>
-     <inParameter>
-<inParameter-type>double</inParameter-type>
-      <inParameter-name>y</inParameter-name>     </inParameter>    </inParameter-list>
-    <outParameter-list>
-<outParameter>
-<outParameter-type>double</outParameter-type>
-      <outParameter-name>FuncValue</outParameter-name>     </outParameter>
-     <outParameter>
-<outParameter-type>double</outParameter-type>
-      <outParameter-name>z</outParameter-name>     </outParameter>    </outParameter-list>   </service>
-   <Parameter-list/>
-   <PyFunction-list/>
-   <creation-date>19/9/2003 - 15:24:7</creation-date>
-   <lastmodification-date>19/9/2003 - 15:24:7</lastmodification-date>
-   <editor-release>1.03</editor-release>
-   <author>?</author>
-   <container>localhost/FactoryServer</container>
-   <comment>Add from AddComponent</comment>
-   <x-position>0</x-position>
-   <y-position>610</y-position>  </node> </node-list>
- <link-list>
-<link>
-<fromnode-name>InitCL</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>ModifyCL</tonode-name>
-   <toserviceparameter-name>myRheolefData</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>MakeBox</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MakeBoolean</tonode-name>
-   <toserviceparameter-name>shape1</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>MeshGeomShapeSup</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>SolveSup</tonode-name>
-   <toserviceparameter-name>myMesh</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>985</x>
-     <y>442</y>    </coord>
-    <coord>
-<x>984</x>
-     <y>301</y>    </coord>
-    <coord>
-<x>561</x>
-     <y>300</y>    </coord>
-    <coord>
-<x>561</x>
-     <y>83</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>MeshGeomShapeSup</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>InitCL</tonode-name>
-   <toserviceparameter-name>myMesh</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>385</x>
-     <y>502</y>    </coord>
-    <coord>
-<x>384</x>
-     <y>301</y>    </coord>
-    <coord>
-<x>561</x>
-     <y>300</y>    </coord>
-    <coord>
-<x>561</x>
-     <y>81</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>MeshGeomShapeSup</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>FindNode</tonode-name>
-   <toserviceparameter-name>aMesh</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>SolveSup</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>ValueOf</tonode-name>
-   <toserviceparameter-name>aField</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>818</x>
-     <y>122</y>    </coord>
-    <coord>
-<x>817</x>
-     <y>26</y>    </coord>
-    <coord>
-<x>1216</x>
-     <y>26</y>    </coord>
-    <coord>
-<x>1218</x>
-     <y>385</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>ModifyCL</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>ModifyCL_1</tonode-name>
-   <toserviceparameter-name>myRheolefData</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>MakeBoolean</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MeshGeomShapeSup</tonode-name>
-   <toserviceparameter-name>shape</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>MakeBox_1</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MakeTranslation</tonode-name>
-   <toserviceparameter-name>shape1</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>MakeTranslation</fromnode-name>
-   <fromserviceparameter-name>shape</fromserviceparameter-name>
-   <tonode-name>MakeBoolean</tonode-name>
-   <toserviceparameter-name>shape2</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>182</x>
-     <y>140</y>    </coord>
-    <coord>
-<x>181</x>
-     <y>261</y>    </coord>
-    <coord>
-<x>363</x>
-     <y>260</y>    </coord>
-    <coord>
-<x>363</x>
-     <y>411</y>    </coord>
-    <coord>
-<x>327</x>
-     <y>408</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>FindNode</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>ValueOf</tonode-name>
-   <toserviceparameter-name>numberOfNode</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>799</x>
-     <y>152</y>    </coord>
-    <coord>
-<x>798</x>
-     <y>81</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>ValueOf</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>Plot</tonode-name>
-   <toserviceparameter-name>Value</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>ModifyCL_1</fromnode-name>
-   <fromserviceparameter-name>return</fromserviceparameter-name>
-   <tonode-name>SolveSup</tonode-name>
-   <toserviceparameter-name>myRheolefData</toserviceparameter-name>
-   <coord-list/>  </link>
-  <link>
-<fromnode-name>Add</fromnode-name>
-   <fromserviceparameter-name>z</fromserviceparameter-name>
-   <tonode-name>MakeTranslation</tonode-name>
-   <toserviceparameter-name>y1</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>181</x>
-     <y>464</y>    </coord>
-    <coord>
-<x>182</x>
-     <y>720</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>Add</fromnode-name>
-   <fromserviceparameter-name>z</fromserviceparameter-name>
-   <tonode-name>FindNode</tonode-name>
-   <toserviceparameter-name>y</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>592</x>
-     <y>139</y>    </coord>
-    <coord>
-<x>593</x>
-     <y>720</y>    </coord>   </coord-list>  </link>
-  <link>
-<fromnode-name>Add</fromnode-name>
-   <fromserviceparameter-name>z</fromserviceparameter-name>
-   <tonode-name>Plot</tonode-name>
-   <toserviceparameter-name>Position</toserviceparameter-name>
-   <coord-list>
-<coord>
-<x>1010</x>
-     <y>150</y>    </coord>
-    <coord>
-<x>1011</x>
-     <y>720</y>    </coord>   </coord-list>  </link> </link-list>
- <data-list>
-<data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>InitCL\studyId</fromserviceparameter-name>
-   <tonode-name>InitCL</tonode-name>
-   <toserviceparameter-name>studyId</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>1</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>InitCL\dataName</fromserviceparameter-name>
-   <tonode-name>InitCL</tonode-name>
-   <toserviceparameter-name>dataName</toserviceparameter-name>
-   <data-value>
-<value-type>18</value-type>
-    <value>BoxData</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>InitCL\source</fromserviceparameter-name>
-   <tonode-name>InitCL</tonode-name>
-   <toserviceparameter-name>source</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox\x1</fromserviceparameter-name>
-   <tonode-name>MakeBox</tonode-name>
-   <toserviceparameter-name>x1</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox\y1</fromserviceparameter-name>
-   <tonode-name>MakeBox</tonode-name>
-   <toserviceparameter-name>y1</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox\z1</fromserviceparameter-name>
-   <tonode-name>MakeBox</tonode-name>
-   <toserviceparameter-name>z1</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox\x2</fromserviceparameter-name>
-   <tonode-name>MakeBox</tonode-name>
-   <toserviceparameter-name>x2</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>100</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox\y2</fromserviceparameter-name>
-   <tonode-name>MakeBox</tonode-name>
-   <toserviceparameter-name>y2</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>500</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox\z2</fromserviceparameter-name>
-   <tonode-name>MakeBox</tonode-name>
-   <toserviceparameter-name>z2</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>50</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MeshGeomShapeSup\studyId</fromserviceparameter-name>
-   <tonode-name>MeshGeomShapeSup</tonode-name>
-   <toserviceparameter-name>studyId</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>1</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MeshGeomShapeSup\sizeControl</fromserviceparameter-name>
-   <tonode-name>MeshGeomShapeSup</tonode-name>
-   <toserviceparameter-name>sizeControl</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>999999</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MeshGeomShapeSup\curveControl</fromserviceparameter-name>
-   <tonode-name>MeshGeomShapeSup</tonode-name>
-   <toserviceparameter-name>curveControl</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0.5</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MeshGeomShapeSup\tolmesh</fromserviceparameter-name>
-   <tonode-name>MeshGeomShapeSup</tonode-name>
-   <toserviceparameter-name>tolmesh</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>1e-05</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MeshGeomShapeSup\tolskin</fromserviceparameter-name>
-   <tonode-name>MeshGeomShapeSup</tonode-name>
-   <toserviceparameter-name>tolskin</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>SolveSup\studyId</fromserviceparameter-name>
-   <tonode-name>SolveSup</tonode-name>
-   <toserviceparameter-name>studyId</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>1</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>ModifyCL\faceToModify</fromserviceparameter-name>
-   <tonode-name>ModifyCL</tonode-name>
-   <toserviceparameter-name>faceToModify</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>3</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>ModifyCL\newFaceCLtype</fromserviceparameter-name>
-   <tonode-name>ModifyCL</tonode-name>
-   <toserviceparameter-name>newFaceCLtype</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>1</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>ModifyCL\newFaceValue</fromserviceparameter-name>
-   <tonode-name>ModifyCL</tonode-name>
-   <toserviceparameter-name>newFaceValue</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBoolean\operation</fromserviceparameter-name>
-   <tonode-name>MakeBoolean</tonode-name>
-   <toserviceparameter-name>operation</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>2</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox_1\x1</fromserviceparameter-name>
-   <tonode-name>MakeBox_1</tonode-name>
-   <toserviceparameter-name>x1</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox_1\y1</fromserviceparameter-name>
-   <tonode-name>MakeBox_1</tonode-name>
-   <toserviceparameter-name>y1</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox_1\z1</fromserviceparameter-name>
-   <tonode-name>MakeBox_1</tonode-name>
-   <toserviceparameter-name>z1</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox_1\x2</fromserviceparameter-name>
-   <tonode-name>MakeBox_1</tonode-name>
-   <toserviceparameter-name>x2</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>40</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox_1\y2</fromserviceparameter-name>
-   <tonode-name>MakeBox_1</tonode-name>
-   <toserviceparameter-name>y2</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>40</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeBox_1\z2</fromserviceparameter-name>
-   <tonode-name>MakeBox_1</tonode-name>
-   <toserviceparameter-name>z2</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>70</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeTranslation\x1</fromserviceparameter-name>
-   <tonode-name>MakeTranslation</tonode-name>
-   <toserviceparameter-name>x1</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>30</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>MakeTranslation\z1</fromserviceparameter-name>
-   <tonode-name>MakeTranslation</tonode-name>
-   <toserviceparameter-name>z1</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>-10</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>FindNode\x</fromserviceparameter-name>
-   <tonode-name>FindNode</tonode-name>
-   <toserviceparameter-name>x</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>50</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>FindNode\z</fromserviceparameter-name>
-   <tonode-name>FindNode</tonode-name>
-   <toserviceparameter-name>z</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>25</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>ModifyCL_1\faceToModify</fromserviceparameter-name>
-   <tonode-name>ModifyCL_1</tonode-name>
-   <toserviceparameter-name>faceToModify</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>5</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>ModifyCL_1\newFaceCLtype</fromserviceparameter-name>
-   <tonode-name>ModifyCL_1</tonode-name>
-   <toserviceparameter-name>newFaceCLtype</toserviceparameter-name>
-   <data-value>
-<value-type>3</value-type>
-    <value>1</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>ModifyCL_1\newFaceValue</fromserviceparameter-name>
-   <tonode-name>ModifyCL_1</tonode-name>
-   <toserviceparameter-name>newFaceValue</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>1</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>Plot\Filename</fromserviceparameter-name>
-   <tonode-name>Plot</tonode-name>
-   <toserviceparameter-name>Filename</toserviceparameter-name>
-   <data-value>
-<value-type>18</value-type>
-    <value>Result.plt</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>Add\x</fromserviceparameter-name>
-   <tonode-name>Add</tonode-name>
-   <toserviceparameter-name>x</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>0</value>   </data-value>
-   <coord-list/>  </data>
-  <data>
-<fromnode-name>aNewDataFlow</fromnode-name>
-   <fromserviceparameter-name>Add\y</fromserviceparameter-name>
-   <tonode-name>Add</tonode-name>
-   <toserviceparameter-name>y</toserviceparameter-name>
-   <data-value>
-<value-type>7</value-type>
-    <value>10</value>   </data-value>
-   <coord-list/>  </data> </data-list></dataflow>
index 1c57f136146899b1507e8915cc304d1d679beedb..67f8e2af2fa7bba5916491d3c1ed32f9dfe02cd4 100644 (file)
@@ -20,6 +20,6 @@ myPy.Run( 3 )
 
 myPy.DoneW()
 
-myPy.State()
+print myPy.State()
 
 myPy.PrintPorts()
index 7e8c0367f3f5a9d29768679b96323ef16334492d..03a70178525769c696c2e1803369f729a5625fe9 100644 (file)
@@ -16,7 +16,7 @@
                <component-username>Supervisor</component-username>
                <component-type>SUPERV</component-type>
                <component-author>ARS</component-author>
-               <component-version> 1.0</component-version>
+               <component-version>2.1.0</component-version>
                <component-comment>Supervision control GUI</component-comment>
                <component-multistudy>1</component-multistudy>
                <component-icone>ModuleSupervision.png</component-icone>
index c26850984744d7d86d9fca07d9d4f78d9a8c7906..e65d8b9aafdeffe3ca114a52bec65ecd49be25f2 100755 (executable)
@@ -23,9 +23,9 @@
                                <popup-item item-id="304" pos-id="9" label-id="Modify Dataflow" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
                        </menu-item>
 
-                       <menu-item label-id="Supervision" item-id="300" pos-id="3">
+                       <menu-item label-id="Supervisor" item-id="300" pos-id="3">
                                <popup-item item-id="305" pos-id="1" label-id="Reload"         icon-id="reload.png" tooltip-id="Reload Dataflow" accel-id="" toggle-id="" execute-action=""/>
-                               <popup-item item-id="309" pos-id="2" label-id="Components"     icon-id="components.png"     tooltip-id="Components"        accel-id="" toggle-id="" execute-action=""/>
+                               <popup-item item-id="309" pos-id="2" label-id="Add Node to Dataflow"     icon-id="components.png"     tooltip-id="Add Node to Dataflow"        accel-id="" toggle-id="" execute-action=""/>
                                <separator pos-id="3"/>
                                 <popup-item item-id="306" pos-id="4" label-id="Run"            icon-id="run.png"    tooltip-id="Run Dataflow"    accel-id="" toggle-id="" execute-action=""/>
                                <popup-item item-id="310" pos-id="5" label-id="Step by Step"   icon-id="steps.png"  tooltip-id="Step by Step execution" accel-id="" toggle-id="" execute-action=""/>
                </menubar>
 
                <toolbar label-id="Supervisor">
-                       <toolbutton-item item-id="301" label-id="Import"         icon-id="import.gif"         tooltip-id="Import Dataflow"   accel-id="" toggle-id="" execute-action=""/>
-                       <toolbutton-item item-id="302" label-id="Export"         icon-id="export.gif"         tooltip-id="Export Dataflow"   accel-id="" toggle-id="" execute-action=""/>
-                       <toolbutton-item item-id="303" label-id="New"            icon-id="edit.png"           tooltip-id="New Dataflow"      accel-id="" toggle-id="" execute-action=""/>
-                       <toolbutton-item item-id="304" label-id="Modify"         icon-id="modify.png"         tooltip-id="Modify Dataflow"   accel-id="" toggle-id="" execute-action=""/>
-                       <toolbutton-item item-id="305" label-id="Reload"         icon-id="reload.png"         tooltip-id="Reload Dataflow"   accel-id="" toggle-id="" execute-action=""/>
-                       <toolbutton-item item-id="309" label-id="Components"     icon-id="components.png"     tooltip-id="Components"        accel-id="" toggle-id="" execute-action=""/>
+                       <toolbutton-item item-id="301" label-id="Import"                   icon-id="import.gif"         tooltip-id="Import Dataflow"   accel-id="" toggle-id="" execute-action=""/>
+                       <toolbutton-item item-id="302" label-id="Export"                   icon-id="export.gif"         tooltip-id="Export Dataflow"   accel-id="" toggle-id="" execute-action=""/>
+                       <toolbutton-item item-id="303" label-id="New"                      icon-id="edit.png"           tooltip-id="New Dataflow"      accel-id="" toggle-id="" execute-action=""/>
+                       <toolbutton-item item-id="304" label-id="Modify"                   icon-id="modify.png"         tooltip-id="Modify Dataflow"   accel-id="" toggle-id="" execute-action=""/>
+                       <toolbutton-item item-id="305" label-id="Reload"                   icon-id="reload.png"         tooltip-id="Reload Dataflow"   accel-id="" toggle-id="" execute-action=""/>
+                       <toolbutton-item item-id="309" label-id="Add Node to Dataflow"     icon-id="components.png"     tooltip-id="Add Node to Dataflow"        accel-id="" toggle-id="" execute-action=""/>
                </toolbar>
 
                <toolbar label-id="Execution">
index ebd1646dae108052fe863467dd99cfdcecdb90e3..495d795f8bff95ac31241c37d3a60ecfd326e9ef 100644 (file)
@@ -200,14 +200,11 @@ namespace GraphBase {
       CORBA::Object_ptr StringToObject(char * obj ) const ;
 
   } ;
-# ifdef _DEBUG_
 
-//             *GraphBase::Base::_fdebug << "      " /*<< setw(3*(*GraphBase::Base::_prof_debug)) */<< " "
+# ifdef _DEBUG_
 
 #   define cdebug if ( GraphBase::Base::_fdebug )  *GraphBase::Base::_fdebug << "      "
-
 #   define cdebug_in if ( GraphBase::Base::_fdebug ) *GraphBase::Base::_fdebug << endl << "-->" << " "
-
 #   define cdebug_out if ( GraphBase::Base::_fdebug ) *GraphBase::Base::_fdebug << endl << "<--" << " "
 
 # else
@@ -217,7 +214,7 @@ namespace GraphBase {
 #   define cdebug_out cdebug
 #   define debugFile(x) 
 
-# endif
+#endif
 
 } ;
 
index 1cce3b212b0687aa3df7b0db997bc2ed656fb14b..46c44076bf2dad79edb4decd3d0d3faf3e94669b 100644 (file)
@@ -82,7 +82,8 @@ GraphBase::ComputingNode::ComputingNode() :
               //_SubGraphNumber ) ;
   Kind( SUPERV::DataFlowGraph ) ;
   _NamingService = NULL ;
-  _Node = SUPERV::CNode::_nil() ;
+  _Node_var = SUPERV::CNode::_nil() ;
+  _Node_Impl = NULL ;
   _InNode = NULL ;
   _ThreadNo = pthread_self() ;
   cdebug << "GraphBase::Node::Node "  << this << " "  << endl ;
@@ -119,7 +120,8 @@ GraphBase::ComputingNode::ComputingNode( CORBA::ORB_ptr ORB ,
   Kind( DataFlowkind ) ;
   _ORB = CORBA::ORB::_duplicate( ORB ) ;
   _NamingService = ptrNamingService ;
-  _Node = SUPERV::CNode::_nil() ;
+  _Node_var = SUPERV::CNode::_nil() ;
+  _Node_Impl = NULL ;
   _InNode = NULL ;
   _ThreadNo = pthread_self() ;
 
@@ -159,7 +161,8 @@ GraphBase::ComputingNode::ComputingNode( CORBA::ORB_ptr ORB ,
 
   _ORB = CORBA::ORB::_duplicate( ORB ) ;
   _NamingService = ptrNamingService ;
-  _Node = SUPERV::CNode::_nil() ;
+  _Node_var = SUPERV::CNode::_nil() ;
+  _Node_Impl = NULL ;
   _InNode = NULL ;
   _ThreadNo = pthread_self() ;
 
@@ -348,16 +351,7 @@ bool GraphBase::ComputingNode::IsLinked(const char * ToServiceParameterName ) {
 bool GraphBase::ComputingNode::HasInput(const char * ToServiceParameterName ) {
   bool RetVal = false ;
   const GraphBase::InPort * theInPort = GetInPort( ToServiceParameterName ) ;
-#if 0
-  if ( IsDataFlowNode() && theInPort ) {
-    RetVal = true ;
-  }
-  else 
-#endif
   if ( theInPort ) {
-//    cout << "GraphBase::ComputingNode::HasInput theInPort " << theInPort << " " << theInPort->PortName() << " of "
-//         << theInPort->NodeName() << " IsDataConnected " << theInPort->IsDataConnected() << " OutPort "
-//         << theInPort->GetOutPort() << endl ;
     RetVal = theInPort->IsDataConnected() ;
   }
   else {
@@ -534,7 +528,55 @@ void GraphBase::ComputingNode::UpdateMacroPorts( GraphBase::Graph * aGraph ) {
       }
     }
   }
-  cdebug_out << "GraphBase::ComputingNode::UpdateMacroPorts" << endl;
+  bool ErrPort = false ;
+  if ( aGraph->GetNodeInPortsSize() != GetNodeInPortsSize() ||
+       aGraph->GetNodeOutPortsSize() != GetNodeOutPortsSize() ) {
+    ErrPort = true ;
+  }
+  for ( i = 0 ; i < aGraph->GetNodeInPortsSize() && i < GetNodeInPortsSize() ; i++ ) {
+    if ( !strcmp( aGraph->GetNodeInPort( i )->PortName() , GetNodeInPort( i )->PortName() ) ) {
+      ErrPort = true ;
+    }
+  }
+  for ( i = 0 ; i < aGraph->GetNodeOutPortsSize() && i < GetNodeOutPortsSize() ; i++ ) {
+    if ( !strcmp( aGraph->GetNodeOutPort( i )->PortName() , GetNodeOutPort( i )->PortName() ) ) {
+      ErrPort = true ;
+    }
+  }
+  if ( ErrPort ) {
+    for ( i = 0 ; i < aGraph->GetNodeInPortsSize() || i < GetNodeInPortsSize() ; i++ ) {
+      if ( i < aGraph->GetNodeInPortsSize() && i < GetNodeInPortsSize() ) {
+        cdebug << "ComputingNode::UpdateMacroPorts In" << i << " " << aGraph->GetNodeInPort( i )->PortName()
+               << "  " << GetNodeInPort( i )->PortName() << endl ;
+      }
+      else if ( i >= GetNodeInPortsSize() ) {
+        cdebug << "ComputingNode::UpdateMacroPorts In" << i << " " << aGraph->GetNodeInPort( i )->PortName()
+               << endl ;
+      }
+      else {
+        cdebug << "ComputingNode::UpdateMacroPorts In" << i << " " << GetNodeInPort( i )->PortName()
+               << endl ;
+      }
+    }
+    for ( i = 0 ; i < aGraph->GetNodeOutPortsSize() || i < GetNodeOutPortsSize() ; i++ ) {
+      if ( i < aGraph->GetNodeOutPortsSize() && i < GetNodeOutPortsSize() ) {
+        cdebug << "ComputingNode::UpdateMacroPorts Out" << i << " " << aGraph->GetNodeOutPort( i )->PortName()
+               << " != " << GetNodeOutPort( i )->PortName() << endl ;
+      }
+      else if ( i >= GetNodeOutPortsSize() ) {
+        cdebug << "ComputingNode::UpdateMacroPorts Out" << i << " " << aGraph->GetNodeOutPort( i )->PortName()
+               << endl ;
+      }
+      else {
+        cdebug << "ComputingNode::UpdateMacroPorts Out" << i << " " << GetNodeOutPort( i )->PortName()
+               << endl ;
+      }
+    }
+  }
+  cdebug_out << "GraphBase::ComputingNode::UpdateMacroPorts"
+             << aGraph->Name() << " InPorts(" << aGraph->GetNodeInPortsSize() << ") OutPorts("
+             << aGraph->GetNodeOutPortsSize() << ") to MacroNode " << Name() << " InPorts("
+             << GetNodeInPortsSize() << ") OutPorts(" << GetNodeOutPortsSize() << ")" << endl;
 }
 
 void GraphBase::ComputingNode::SetMacroDatas( GraphBase::Graph * aGraph ,
@@ -1100,7 +1142,11 @@ bool GraphBase::ComputingNode::SavePY( ostream &f , const char * aGraphName ,
 // JR : the bug was at line 927 : && HasDataStream() != 0 was missing
   if ( IsDataFlowNode() || ( IsDataStreamNode() && HasDataStream() == 0 ) ) {
     f << "    " << Name() << " = Graph( '" << Name() << "' )" << endl ;
-  }
+     if ( GraphMacroLevel() ) {
+      f << "    " << Name() << ".SetCoupled( '"
+        << ((GraphBase::GOTONode * ) this)->CoupledNodeName() << "' )" << endl ;
+    }
+ }
   else if ( IsDataStreamNode() && HasDataStream() != 0 ) {
     f << "    " << Name() << " = StreamGraph( '" << Name() << "' )" << endl ;
     long Timeout ;
@@ -1189,6 +1235,7 @@ bool GraphBase::ComputingNode::SavePY( ostream &f , const char * aGraphName ,
       else {
         f << "    " << Name() << " = " << aGraphName << ".GraphMNode( ? )" << endl ;
       }
+      f << "    " << Name() << ".SetCoupled( '" << aCoupledNode->Name() << "' )" << endl ;
     }
     else {
 //      char * EndName = NULL ;
index 65e38489bdb0521f54fadaa42bec6634042725b5..f11309c57ce94158c3702774266e68605e0c9dc0 100644 (file)
@@ -16,6 +16,8 @@
 
 #include "DataFlowBase_StreamNode.hxx"
 
+class CNode_Impl ;
+
 namespace GraphBase {
 
   class Graph ;
@@ -30,7 +32,8 @@ namespace GraphBase {
       SALOME_NamingService * _NamingService ;
 //->StreamNode      int                  * _Graph_prof_debug ;
 //->StreamNode      ofstream             * _Graph_fdebug ;
-      SUPERV::CNode_var      _Node ;
+      SUPERV::CNode_var      _Node_var ;
+      CNode_Impl           * _Node_Impl ;
       void                 * _InNode ; // From GraphExecutor:: or GraphEditor::
       bool                   _ObjInterface ;
 
@@ -117,8 +120,8 @@ namespace GraphBase {
 //                       }
 //                     }
 //                        cdebug << _NodeName << " " << Name() << endl ;
-                        return _Node ; } ;
-      void SetObjRef(SUPERV::CNode_var aNode) {
+                         return _Node_var ; } ;
+      void SetObjRef( SUPERV::CNode_var aNode_var ) {
 //                        char * _NodeName ;
 //                        if ( CORBA::is_nil( _Node ) ) {
 //                          _NodeName = "NilRef" ;
@@ -128,9 +131,14 @@ namespace GraphBase {
 //                     }
 //                        cdebug << "ComputingNode::SetObjRef( " << _Node << " "
 //                               << _NodeName << " ) " << Name() << " --> " ;
-                        _Node = aNode ;
+                        _Node_var = aNode_var ;
 //                        cdebug << _Node << " " << _Node->Name() << " ) " << Name() << endl ;
                         } ;
+
+      CNode_Impl * ObjImpl() const { return _Node_Impl ; } ;
+      void SetObjImpl( CNode_Impl * aNode_Impl ) {
+                       _Node_Impl = aNode_Impl ; } ;
+
       void InNode( void * anInNode ) {
 //           cdebug << "GraphBase::ComputingNode::InNode " << Name() << endl ;
            _InNode = anInNode ; } ;
index 2ffb9ba63a261d1463297f33a927831f40f1959a..fa2e10f1bbffdb44dc41d09b54954bc9e3739281 100644 (file)
@@ -119,8 +119,6 @@ int GraphBase::DataNode::CheckDataServerNodes() const {
     else {
       cdebug << "InPort " << anOutPort->PortName() << " " << anOutPort->PortType() << " "
              << anOutPort->PortStatus() << " of DataFlow " << Name()  << " has Data : "
-//           << _DataFlowDataPorts->GetNodeOutPort(i)->Value() << " kind "
-//           << _DataFlowDataPorts->GetNodeOutPort(i)->Kind()
              << endl ;
     }
   }
index 3f444507cd2808895bb45bdef1951ba0743e0045..d13d2d7f5a86989602bfdd87a7872e5e66caa29d 100644 (file)
@@ -167,7 +167,7 @@ bool GraphBase::FactoryNode::Computer(const char *c) {
   if ( _Computer != FACTORYSERVER )
     delete [] _Computer ;
   _Computer = my_strdup(c);
-  cdebug_in << "GraphBase::FactoryNode::Computer('" << _Computer << "')" << endl;
+  cdebug << "GraphBase::FactoryNode::Computer('" << _Computer << "')" << endl;
   cdebug_out << "GraphBase::FactoryNode::Computer" << endl;
   return true ;
 }
index 530cd0e24ce7687a1b8257953724e97e65d93066..c7e779e7ccdcdf563d4429b06926fcc73cd5e1c5 100644 (file)
@@ -107,26 +107,26 @@ void GraphBase::GOTONode::CoupledNode( GraphBase::InLineNode * aCoupledNode ) {
 }
 
 const GraphBase::InLineNode * GraphBase::GOTONode::CoupledNode() const {
-  cdebug << this << " " << Name() << " GraphBase::GOTONode::CoupledNode() --> " ;
-  if ( _CoupledNode ) {
-    cdebug << _CoupledNode->Name() ;
-  }
-  else {
-    cdebug << "NULL" ;
-  }
-  cdebug << endl ;
+//  cdebug << this << " " << Name() << " GraphBase::GOTONode::CoupledNode() --> " ;
+//  if ( _CoupledNode ) {
+//    cdebug << _CoupledNode->Name() ;
+//  }
+//  else {
+//    cdebug << "NULL" ;
+//  }
+//  cdebug << endl ;
   return _CoupledNode ;
 }
 
 GraphBase::InLineNode * GraphBase::GOTONode::CoupledNode() {
-  cdebug << this << " " << Name() << " GraphBase::GOTONode::CoupledNode() --> " ;
-  if ( _CoupledNode ) {
-    cdebug << _CoupledNode->Name() ;
-  }
-  else {
-    cdebug << "NULL" ;
-  }
-  cdebug << endl ;
+//  cdebug << this << " " << Name() << " GraphBase::GOTONode::CoupledNode() --> " ;
+//  if ( _CoupledNode ) {
+//    cdebug << _CoupledNode->Name() ;
+//  }
+//  else {
+//    cdebug << "NULL" ;
+//  }
+//  cdebug << endl ;
   return _CoupledNode ;
 }
 
index 2a15de708234321f93ec6ad645edd194410fab79..1d057a0af16d08ce242f8ae7a7ff5a39d0c5d50e 100644 (file)
@@ -35,7 +35,6 @@ GraphBase::Graph::Graph() :
            DataNode() {
   cdebug << "GraphBase::Graph::Graph" << endl ;
   _GraphNodesSize = 0 ;
-  _GraphImpl = NULL ;
 }
 
 GraphBase::Graph::Graph( CORBA::ORB_ptr ORB ,
@@ -47,7 +46,6 @@ GraphBase::Graph::Graph( CORBA::ORB_ptr ORB ,
 //                         const char * DebugFileName ) :
            DataNode( ORB ,ptrNamingService , DataFlowName , DataFlowkind , Graph_prof_debug , Graph_fdebug ) {
   _Orb = CORBA::ORB::_duplicate( ORB ) ;
-  _GraphImpl = NULL ;
   Set_prof_debug( Graph_prof_debug , Graph_fdebug ) ;
   cdebug << "GraphBase::Graph::Graph( " << DataFlowName << ") GraphNodesSize() " << GraphNodesSize() << endl ;
   _GraphNodesSize = 0 ;
@@ -75,7 +73,6 @@ GraphBase::Graph::Graph( CORBA::ORB_ptr ORB ,
                      DataFlowEditorRelease , DataFlowAuthor , DataFlowComment ) {
   _Orb = CORBA::ORB::_duplicate( ORB ) ;
   _GraphNodesSize = 0 ;
-  _GraphImpl = NULL ;
   Set_prof_debug( Graph_prof_debug , Graph_fdebug ) ;
   cdebug_in << "GraphBase::Graph::Graph" << endl ;
   DataService( ORB , DataFlowService , Graph_prof_debug , Graph_fdebug ) ;
@@ -520,6 +517,7 @@ bool GraphBase::Graph::AddNode( GraphBase::ComputingNode * aNode ) {
         cdebug << i << ". ERROR" << endl ;
       }
     }
+    aNode->GraphOfNode( this ) ;
   }
   cdebug_out << "GraphBase::Graph::AddNode " << _GraphNodesSize << " Nodes. "
              << aNode->ServiceName() << endl;
@@ -576,16 +574,16 @@ bool GraphBase::Graph::ReNameNode( const char* OldNodeName ,
            }
          }
           char* OldNodePortName = new char[ strlen( OldNodeName ) +
-                                            strlen( aNode->GetChangeNodeInPort( i )->PortName() ) + 2 ] ;
+                                            strlen( aNode->GetChangeNodeInPort( i )->PortName() ) + 3 ] ;
           char* NewNodePortName = new char[ strlen( NewNodeName ) +
-                                            strlen( aNode->GetChangeNodeInPort( i )->PortName() ) + 2 ] ;
+                                            strlen( aNode->GetChangeNodeInPort( i )->PortName() ) + 3 ] ;
           strcpy( OldNodePortName , OldNodeName ) ;
 //          strcat( OldNodePortName , "\\" ) ;
-          strcat( OldNodePortName , "_" ) ;
+          strcat( OldNodePortName , "__" ) ;
           strcat( OldNodePortName , aNode->GetChangeNodeInPort( i )->PortName() ) ;
           strcpy( NewNodePortName , NewNodeName ) ;
 //          strcat( NewNodePortName , "\\" ) ;
-          strcat( NewNodePortName , "_" ) ;
+          strcat( NewNodePortName , "__" ) ;
           strcat( NewNodePortName , aNode->GetChangeNodeInPort( i )->PortName() ) ;
           RetVal = anOutPort->ReNameInPort( OldNodePortName , NewNodePortName ) ;
           delete [] OldNodePortName ;
@@ -601,14 +599,14 @@ bool GraphBase::Graph::ReNameNode( const char* OldNodeName ,
       RetVal = true ;
     }
     else {
-      cdebug << "Node not found" << endl ;
+      cdebug << "ERROR Node not found" << endl ;
     }
   }
   else {
     RetVal = Name( NewNodeName ) ;
   }
 
-  cdebug_out << "GraphBase::Graph::ReNameNode" << endl;
+  cdebug_out << "GraphBase::Graph::ReNameNode RetVal " << RetVal << endl;
   return RetVal ;
 }
 
@@ -642,7 +640,8 @@ bool GraphBase::Graph::RemoveNode( const char* aNodeName ) {
          }
           else {
             GraphBase::ComputingNode * FromNode = GetChangeGraphNode( anOutPort->NodeName() ) ;
-            if ( !FromNode->IsGOTONode() ) {
+           // asv : 04.11.04 : IsGOTO -> IsOneOfGOTO, I believe that it fixes the bug 7120.
+           if ( !FromNode->IsOneOfGOTONodes() ) {
               if ( anInPort->IsDataStream() ) {
                 RetVal = FromNode->RemoveStreamLinkedNode( aNode ) ;
              }
@@ -753,22 +752,22 @@ bool GraphBase::Graph::AddLink( const char* FromNodeName ,
   if ( fromNode ) {
     fromPort = fromNode->GetChangeOutPort( FromServiceParameterName ) ;
     if ( !fromPort ) {
-      cdebug << "AddLink fromPort " << FromServiceParameterName << " FromNode("
+      cdebug << "ERROR AddLink fromPort " << FromServiceParameterName << " FromNode("
            << FromNodeName << ") not found." << endl ;
     }
   }
   else {
-    cdebug << "AddLink FromNode " << FromNodeName << " not found." << endl ;
+    cdebug << "ERROR AddLink FromNode " << FromNodeName << " not found." << endl ;
   }
   if ( toNode ) {
     toPort = toNode->GetChangeInPort( ToServiceParameterName ) ;
     if ( !toPort ) {
-      cdebug << "AddLink toPort " << ToServiceParameterName << " ToNode("
+      cdebug << "ERROR AddLink toPort " << ToServiceParameterName << " ToNode("
              << ToNodeName << ") not found." << endl ;
     }
   }
   else {
-    cdebug << "AddLink toNode " << ToNodeName << " not found." << endl ;
+    cdebug << "ERROR AddLink toNode " << ToNodeName << " not found." << endl ;
   }
 
   RetVal = AddLink( fromNode , fromPort , toNode , toPort ) ;
@@ -786,7 +785,7 @@ bool GraphBase::Graph::AddLink( const char* FromNodeName ,
 //    fromPort->PortStatus( DataConnected );
   }
 
-  cdebug_out << "GraphBase::Graph::AddLink" << endl;
+  cdebug_out << "GraphBase::Graph::AddLink " << RetVal << endl;
   return RetVal ;
 }
 
@@ -797,20 +796,20 @@ bool GraphBase::Graph::AddLink( GraphBase::ComputingNode *fromNode ,
 //  bool RetVal ;
 
   if ( !fromNode ) {
-    cdebug << "AddLink fromNode not found." << endl ;
+    cdebug << "ERROR AddLink fromNode not found." << endl ;
     return false ;
   }
   if ( !fromPort ) {
-    cdebug << "AddLink fromPort not found." << endl ;
+    cdebug << "ERROR AddLink fromPort not found." << endl ;
     return false ;
   }
 
   if ( !toNode ) {
-    cdebug << "AddLink toNode not found." << endl ;
+    cdebug << "ERROR AddLink toNode not found." << endl ;
     return false ;
   }
   if ( !toPort ) {
-    cdebug << "AddLink toPort not found." << endl ;
+    cdebug << "ERROR AddLink toPort not found." << endl ;
     return false ;
   }
   if ( ( fromPort->IsDataStream() && !toPort->IsDataStream() ) ||
@@ -1115,7 +1114,7 @@ bool GraphBase::Graph::AddInputData( const char* ToNodeName ,
       break;
     }
   cdebug << " ) in Graph " << Name() << endl;
-
   GraphBase::ComputingNode *toNode ;
   GraphBase::InPort *toPort ;
   char *aNodeName ;
@@ -1135,10 +1134,10 @@ bool GraphBase::Graph::AddInputData( const char* ToNodeName ,
 
   int i ;
   for ( i = 0 ; i < GetNodeOutDataNodePortsSize() ; i++ ) {
-    cdebug "Graph::AddInputData In" << i << " " << *GetNodeOutDataNodePort(i) << endl ;
+    cdebug << "Graph::AddInputData In" << i << " " << *GetNodeOutDataNodePort(i) << endl ;
   }
   for ( i = 0 ; i < GetNodeInDataNodePortsSize() ; i++ ) {
-    cdebug "Graph::AddInputData Out" << i << " " << *GetNodeInDataNodePort(i) << endl ;
+    cdebug << "Graph::AddInputData Out" << i << " " << *GetNodeInDataNodePort(i) << endl ;
   }
 
   if ( toNode && toPort ) {
@@ -1158,7 +1157,7 @@ bool GraphBase::Graph::AddInputData( const char* ToNodeName ,
     }
   }
   else {
-    cdebug << "Node and/or Port not found : " << aNodeName << " " << aPortName << endl ;
+    cdebug << "ERROR Node and/or Port not found : " << aNodeName << " " << aPortName << endl ;
   }
   delete aNodeName ;
   delete aPortName ;
@@ -1197,17 +1196,19 @@ bool GraphBase::Graph::ChangeInputData( const char * ToNodeName ,
       cdebug << "(other(tk_string,tk_double,tk_long,tk_objref)) ERROR";
       break;
     }
-  cdebug << ")" << endl;
-
-  GraphBase::ComputingNode *toNode = GetChangeGraphNode( ToNodeName ) ;
-
-  GraphBase::OutPort *fromPort = NULL ;
-  GraphBase::InPort *toPort = NULL ;
+  cdebug << " ) in Graph " << Name() << endl;
 
+  GraphBase::ComputingNode * toNode ;
+  GraphBase::InPort * toPort = NULL ;
+  char * aNodeName ;
+  char * aPortName ;
+  NodePort( ToNodeName , ToServiceParameterName , &aNodeName , &aPortName ) ;
+  toNode = GetChangeGraphNode( aNodeName ) ;
+  cdebug << "in Graph " << Name() << " aNodeName " << aNodeName << " aPortName " << aPortName << endl;
   if ( toNode ) {
-    toPort = toNode->GetChangeInPort( ToServiceParameterName ) ;
-    if ( toPort ) {
-      fromPort = toPort->GetOutPort();
+    toPort = toNode->GetChangeInPort( aPortName ) ;
+    if ( toPort && toPort->IsDataConnected() ) {
+      GraphBase::OutPort * fromPort = toPort->GetOutPort();
       if ( fromPort ) {
         RetVal = true ;
         fromPort->Value( aValue ) ;
@@ -1215,15 +1216,15 @@ bool GraphBase::Graph::ChangeInputData( const char * ToNodeName ,
         toPort->State( SUPERV::ReadyState ) ;
       }
       else {
-        cdebug << "ChangeInputData fromPort not found" << endl ;
+        cdebug << "ERROR ChangeInputData fromPort not found" << endl ;
       }
     }
     else {
-      cdebug << "ChangeInputData toPort not found" << endl ;
+      cdebug << "ERROR ChangeInputData toPort not found" << endl ;
     }
   }
   else {
-    cdebug << "ChangeInputData Node not found : " << ToNodeName << endl ;
+    cdebug << "ERROR ChangeInputData Node not found : " << ToNodeName << endl ;
   }
 
   cdebug_out << "GraphBase::Graph::ChangeInputData" << endl;
@@ -1280,7 +1281,7 @@ bool GraphBase::Graph::AddInputData( const char* ToNodeName ,
     }
   }
   else {
-    cdebug << "Node not found " << ToNodeName << " ERROR. Known nodes :" << endl ;
+    cdebug << "ERROR Node not found " << ToNodeName << " ERROR. Known nodes :" << endl ;
     map< string , int >::iterator aMapOfGraphNodesIterator ;
     int i = 0 ;
     for ( aMapOfGraphNodesIterator = _MapOfGraphNodes.begin() ;
@@ -1313,11 +1314,13 @@ bool GraphBase::Graph::AddOutputData( const char* FromNodeName ,
     anOutPort->State(  SUPERV::ReadyState ) ;
     anOutPort->Done( true ) ;
     cdebug << *anOutPort ;
+#ifdef _DEBUG_
     anOutPort->StringValue( *_fdebug ) ;
+#endif
     cdebug << endl ;
   }
   else {
-    cdebug << "Node not found" << endl ;
+    cdebug << "ERROR Node not found" << endl ;
     RetVal = false ;
   }
   cdebug_out << "GraphBase::Graph::AddOutputData " << RetVal << endl;
@@ -1703,7 +1706,11 @@ bool GraphBase::Graph::InLineServices() {
   cdebug_in << "GraphBase::Graph::InLineServices" << endl;
 
   int i , j ;
+
+#ifdef _DEBUG_
   ListPorts( *_Graph_fdebug , 0 ) ;
+#endif
+
   GraphBase::InLineNode * aINode ;
   SALOME_ModuleCatalog::Service aService ;
   for ( i = 0 ; i < GraphNodesSize() ; i++ ) {
@@ -2002,10 +2009,10 @@ bool GraphBase::Graph::Sort( int & SubStreamGraphsNumber ) {
         (_SortedNodes[ i ])[ j ]->SubGraph( 0 ) ;
         if ( (_SortedNodes[ i ])[ j ]->HasDataStream() ) {
           (_SortedNodes[ i ])[ j ]->SubStreamGraph( 0 ) ;
-       }
+        }
         else {
           (_SortedNodes[ i ])[ j ]->SubStreamGraph( -1 ) ;
-       }
+        }
       }
     }
 
@@ -2014,50 +2021,58 @@ bool GraphBase::Graph::Sort( int & SubStreamGraphsNumber ) {
     bool Graphs = true ;
     while ( Graphs ) {
       for ( i = 0 ; i <= _LevelsNumber ; i++ ) {
+        cdebug << endl << "LevelsNumber " << _LevelsNumber << " " << _NodesNumber[ i ]
+               << " Nodes :" << endl ;
         for ( j = 0 ; j <= _NodesNumber[ i ] ; j++ ) {
           GraphBase::ComputingNode * aNode = (_SortedNodes[ i ])[ j ] ;
-//       cdebug << "SubGraph " << aNode->SubGraph() << " " << aNode->Name()
-//                 << endl ;
+          cdebug << "    " << aNode->Name() << " SubGraph " << aNode->SubGraph() << endl ;
           int k ;
           for ( k = 0 ; k < aNode->LinkedNodesSize() ; k++ ) {
-           if ( aNode->LinkedNodes( k )->SubGraph() ) {
-              if ( aNode->LinkedNodes( k )->SubGraph() != aNode->SubGraph() &&
-                   aNode->LinkedNodes( k )->Level() == aNode->Level()+1 ) {
-               aNode->SubGraph( aNode->LinkedNodes( k )->SubGraph() ) ;
-//             cdebug << "   Linked " << aNode->LinkedNodes( k )->Name()
-//                       << " SubGraph(" << aNode->LinkedNodes( k )->SubGraph()
-//                       << ") ==>" << endl ;
-//                cdebug << "   SubGraph " << aNode->SubGraph() << " for "
-//                       << aNode->Name() << " ==> again" << endl ;
+         if ( aNode->LinkedNodes( k )->SubGraph() ) {
+              if ( aNode->LinkedNodes( k )->SubGraph() != aNode->SubGraph() ) {
+//                   && aNode->LinkedNodes( k )->Level() == aNode->Level()+1 ) {
+//           aNode->SubGraph( aNode->LinkedNodes( k )->SubGraph() ) ;
+                int OldSub = aNode->SubGraph() ;
+                int NewSub = aNode->LinkedNodes( k )->SubGraph() ;
+             cdebug << "        " << aNode->Name() << " changed SubGraph "
+                       << aNode->LinkedNodes( k )->SubGraph() << endl ;
                 int l ;
-                for ( l = 0 ; l < aNode->LinkedNodesSize() ; l++ ) {
-                  aNode->LinkedNodes( l )->SubGraph( aNode->SubGraph() ) ;
+                for ( l = 0 ; l <= _LevelsNumber ; l++ ) {
+                  int m ;
+                  for ( m = 0 ; m <= _NodesNumber[ l ] ; m++ ) {
+                    if ( (_SortedNodes[ l ])[ m ]->SubGraph() == OldSub ) {
+                      GraphBase::ComputingNode * aSubNode = (_SortedNodes[ l ])[ m ] ;
+                      aSubNode->SubGraph( NewSub ) ;
                }
+               }
+             }
                 Graphs = false ;
                 break ;
-             }
+           }
               else {
-//                cdebug << "   Linked " << aNode->LinkedNodes( k )->Name()
-//                       << " SubGraph(" << aNode->LinkedNodes( k )->SubGraph()
-//                       << ") distance > 1 ignored" << endl ;
-             }
+                cdebug << "        Linked " << aNode->LinkedNodes( k )->Name()
+                       << " same SubGraph " << aNode->LinkedNodes( k )->SubGraph() << endl ;
            }
+         }
             else {
-//              cdebug << "   Linked " << aNode->LinkedNodes( k )->Name()
-//                     << " GraphInit to " << aNode->SubGraph() << " from "
-//                     << aNode->Name() << endl ;
+              cdebug << "        LinkedNode " << aNode->LinkedNodes( k )->Name()
+                     << " initial SubGraph " << aNode->SubGraph() << endl ;
               aNode->LinkedNodes( k )->SubGraph( aNode->SubGraph() ) ;
-           }
          }
        }
-        if ( !Graphs )
+          if ( !Graphs ) {
+            break ;
+          }
+        }
+        if ( !Graphs ) {
           break ;
+        }
       }
       if ( Graphs ) {
-//        cdebug << endl << "SubGraphs result : " << endl ;
+        cdebug << endl << "SubGraphs result : " << endl ;
         break ;
       }
-//      cdebug << endl << "One more time" << endl ;
+      cdebug << endl << "One more time" << endl ;
       Graphs = true ;
     }
 // Make a sequential renumbering of SubGraphs :
@@ -2072,12 +2087,12 @@ bool GraphBase::Graph::Sort( int & SubStreamGraphsNumber ) {
           for ( j = 0 ; j <= _NodesNumber[ i ] ; j++ ) {
             if ( (_SortedNodes[ i ])[ j ]->SubGraph() == CurrGraphsNumber ) {
               (_SortedNodes[ i ])[ j ]->SubGraph( _SubGraphsNumber ) ;
-//              cdebug << "SubGraphsNumber " << _SubGraphsNumber << " " << " Level "
-//                     << i << " : " << (_SortedNodes[ i ])[ j ]->Name()
-//                     << endl ;
+              cdebug << "SubGraphsNumber " << _SubGraphsNumber << " " << " Level "
+                     << i << " : " << (_SortedNodes[ i ])[ j ]->Name()
+                     << endl ;
            }
           }
-       }
+        }
       }
     }
 
@@ -2188,7 +2203,9 @@ bool GraphBase::Graph::Sort( int & SubStreamGraphsNumber ) {
 //    }
   }
 
+#ifdef _DEBUG_
   ListPorts( *_Graph_fdebug , 0 ) ;
+#endif
 
   cdebug_out << "GraphBase::Graph::Sort" << endl;
   return true ;
@@ -2296,15 +2313,15 @@ bool GraphBase::Graph::LinkLoopNodes(bool & NewLink ) {
       GraphBase::GOTONode * aGOTONode = (GraphBase::GOTONode * ) aNode ;
       GraphBase::OutPort *anOutGate = aGOTONode->GetChangeNodeOutGate() ;
       if ( anOutGate->IsNotConnected() ) {
-        if ( !AddLink( aGOTONode , anOutGate ,
-                       aGOTONode->CoupledNode() , aGOTONode->CoupledNode()->GetChangeNodeInGate() ) ) {
-//          cdebug << "GraphBase::Graph::CreateService AddLink ERROR " << aGOTONode->Name() << "( "
-//                 << anOutGate->PortName() << " ) --> " << aGOTONode->CoupledNode()->Name() << "( "
-//                 << aGOTONode->CoupledNode()->GetChangeNodeInGate()->PortName() << " )" << endl ;
-          RetVal = false ;
-       }
-        else {
-          NewLink = true ;
+       RetVal = aGOTONode->CoupledNode() != NULL;
+       if ( RetVal ) {
+         RetVal = AddLink( aGOTONode , anOutGate ,
+                       aGOTONode->CoupledNode() , aGOTONode->CoupledNode()->GetChangeNodeInGate() );
+       // cdebug << "GraphBase::Graph::CreateService AddLink ERROR " << aGOTONode->Name() << "( "
+       //        << anOutGate->PortName() << " ) --> " << aGOTONode->CoupledNode()->Name() << "( "
+       //        << aGOTONode->CoupledNode()->GetChangeNodeInGate()->PortName() << " )" << endl ;
+         if ( !RetVal )
+           NewLink = true;
        }
       }
     }
@@ -2448,7 +2465,7 @@ SUPERV::GraphState GraphBase::Graph::PortState(
       if ( anInPort )
         anOutPort = anInPort->GetOutPort() ;
       else {
-        cdebug << "GraphBase::Graph::PortState OutPort/InPort not found --> "
+        cdebug << "ERROR GraphBase::Graph::PortState OutPort/InPort not found --> "
                << aRet << endl ;
       }
     }
@@ -2458,7 +2475,7 @@ SUPERV::GraphState GraphBase::Graph::PortState(
     }
   }
   else {
-    cdebug << "GraphBase::Graph::PortState Node not found --> " << aRet
+    cdebug << "ERROR GraphBase::Graph::PortState Node not found --> " << aRet
            << endl ;
   }
   delete theNode ;
@@ -2484,9 +2501,9 @@ const CORBA::Any * GraphBase::Graph::PortInData( const char* ToNodeName ,
       anOutPort = anInPort->GetOutPort() ;
       if ( anOutPort ) {
         aRet = anOutPort->Value() ;
-//        cdebug << "OutPort value " << anOutPort->NodeName() << "("
-//               << anOutPort->PortName() << ") --> InPort " << anInPort->NodeName()
-//               << "(" << anInPort->PortName() << ")" << endl ;
+        cdebug << "OutPort value " << anOutPort->NodeName() << "("
+               << anOutPort->PortName() << ") --> InPort " << anInPort->NodeName()
+               << "(" << anInPort->PortName() << ") " << anInPort->PortStatus() << endl ;
       }
       else {
         cdebug << "GraphBase::Graph::PortInData " << ToNodeName << " "
@@ -2584,4 +2601,3 @@ bool GraphBase::Graph::StartComponent(const int aThread ,
   cdebug_out << aThread << " GraphBase::Graph::StartComponent" << endl;
   return RetVal ;
 }
-
index 35c07ad28709ce4e17e36af4a558a9ac01598aa4..8035528cc93b7d57f322bec110c62a0bee0c6b86 100644 (file)
@@ -36,8 +36,6 @@
 #include "DataFlowBase_EndOfSwitchNode.hxx"
 #include "DataFlowBase_DataNode.hxx"
 
-class Graph_Impl ;
-
 namespace GraphBase {
 
   class Graph : public DataNode {
@@ -47,8 +45,8 @@ namespace GraphBase {
 //      int                 _Graph_prof_debug;
 //      ofstream          * _Graph_fdebug;
       CORBA::ORB_ptr      _Orb ;
-      SUPERV::Graph_var   _Graph ;
-      Graph_Impl        * _GraphImpl ;
+//      SUPERV::Graph_var   _Graph ;
+//      Graph_Impl        * _GraphImpl ;
 
 // Map of Nodes of the Graph
       map< string , int >      _MapOfGraphNodes ;
@@ -131,12 +129,12 @@ namespace GraphBase {
             return _prof_debug ; } ;
       ofstream * Graph_fdebug() { return _fdebug ; } ;
 
-      SUPERV::Graph_var ObjRef() const { return _Graph ; } ;
-      void SetObjRef( SUPERV::Graph_var aGraph ) {
-                      _Graph = aGraph ; } ;
-      Graph_Impl * ObjImpl() const { return _GraphImpl ; } ;
-      void SetObjImpl( Graph_Impl * aGraphImpl ) {
-                       _GraphImpl = aGraphImpl ; } ;
+//      SUPERV::Graph_var ObjRef() const { return _Graph ; } ;
+//      void SetObjRef( SUPERV::Graph_var aGraph ) {
+//                      _Graph = aGraph ; } ;
+//      Graph_Impl * ObjImpl() const { return _GraphImpl ; } ;
+//      void SetObjImpl( Graph_Impl * aGraphImpl ) {
+//                       _GraphImpl = aGraphImpl ; } ;
 
       void AddLinkedNode( const char* FromNodeName , GraphBase::ComputingNode * anOutNode ) {
            GetChangeGraphNode( FromNodeName )->AddLinkedNode( anOutNode ) ; } ;
index 8cfa68d934f80af8ee330effefddde6335a7fc78..795fb6b7da0b480a7b8551e39d1521cafa300d20 100644 (file)
@@ -84,7 +84,6 @@ bool GraphBase::Graph::LoadXml( CORBA::ORB_ptr _Orb ,
     cdebug << "Graph::LoadXml " << ListOfDataFlows.size() << " Graphs" << endl ;
   }
   else {
-    delete myXmlHandler ;
     cdebug << "Graph::LoadXml Graph status " << status << endl ;
     RetVal = false ;
   }
index f25acadf509af5ab7fa97755d843307429215b70..61d6cfa9227830361f4faf7e54f4b9c06857980b 100644 (file)
@@ -147,7 +147,7 @@ bool GraphBase::OutPort::ReNameInPort( const char* OldNodePortName ,
                                        const char* NewNodePortName ) {
   int index = _MapOfInPorts[ OldNodePortName ] ;
   if ( index <= 0 || index > _InPortsSize ) {
-    cdebug << "GraphBase::OutPort::ReNameLink Error " << OldNodePortName
+    cdebug << "GraphBase::OutPort::ReNameInPort Error " << OldNodePortName
            << " --> " << NewNodePortName << " index " << index << endl ;
     return false ;
   }
index f708c27ee1bee1f66248925a4c2baa720c469da3..ecc9e2a73cdf5f001a19a3d6fa4575c5b27e8412 100644 (file)
@@ -75,7 +75,10 @@ namespace GraphBase {
 // Even if an OutPort may be connected to several ports the PortStatus is unique
       const StatusOfPort PortStatus() const {
             return _Connected; } ;
-      void PortStatus(StatusOfPort c) { _Connected = c; } ;
+      void PortStatus( StatusOfPort PortSts ) {
+//           cdebug << "OutPort::PortStatus " << NodeName() << " " << PortName() << " "
+//                  << _Connected << " --> " << PortSts << endl ;
+           _Connected = PortSts ; } ;
       const bool IsNotConnected() const {
             return ( _Connected == NotConnected ) ; } ;
 //      const bool IsConnected() const {
index c31485ea7451092a7877bc0b8f2169bcdd3cbfd7..9b8c9a48b8daf4c1a1e149079e340dc3a2fb9720 100644 (file)
@@ -23,8 +23,8 @@ GraphBase::StreamNode::StreamNode() :
   _LevelNumber = -1 ;
   _SortedIndex = -1 ;
   _GraphEditor = NULL ;
-  _GraphExecutor = NULL ;
   _GraphMacroNode =  SUPERV::Graph::_nil() ;
+  _GraphOfNode = NULL ;
   _GraphMacroLevel = 0 ;
   _SubGraphNumber = 0 ;
   _SubStreamGraphNumber = 0 ;
@@ -50,8 +50,8 @@ GraphBase::StreamNode::StreamNode( const char * NodeName ,
   _LevelNumber = -1 ;
   _SortedIndex = -1 ;
   _GraphEditor = NULL ;
-  _GraphExecutor = NULL ;
   _GraphMacroNode =  SUPERV::Graph::_nil() ;
+  _GraphOfNode = NULL ;
   _GraphMacroLevel = 0 ;
   _SubGraphNumber = 0 ;
   _SubStreamGraphNumber = 0 ;
@@ -254,4 +254,3 @@ void GraphBase::StreamNode::ReNameStreamLinkedNode( const char* OldNodeName ,
   }
   cdebug_out << "GraphBase::StreamNode::ReNameStreamLinkedNode" << endl ;
 }
-
index 6b8a8abbe385472aad3e611b3cdfa3dcad3a39ea..10860c0587338c4d0ded17c1ab310d6c5f0c7b43 100644 (file)
@@ -20,12 +20,6 @@ namespace GraphEditor {
 
 }
 
-namespace GraphExecutor {
-
-  class DataFlow ;
-
-}
-
 namespace GraphBase {
 
   class Graph ;
@@ -55,10 +49,10 @@ namespace GraphBase {
       int                   _SortedIndex ;
 
       GraphEditor::DataFlow   * _GraphEditor ;
-      GraphExecutor::DataFlow * _GraphExecutor ;
 // If DataFlowGraph/DataStreamGraph in another graph :
 // the Graph if MacroNode and MacroNode if Graph
       SUPERV::Graph_var       _GraphMacroNode ;
+      GraphBase::Graph        * _GraphOfNode ;
 
       int                   _GraphMacroLevel ;
       int                   _SubGraphNumber ;
@@ -192,20 +186,13 @@ namespace GraphBase {
 
       void SetSubStreamGraph( int SubStreamGraphsNumber , int & RetVal ) ;
 
-      void SetGraphEditor( GraphEditor::DataFlow * aGraphEditor ) {
-           cdebug << "SetGraphEditor this " << this << " " << Name() << " : " << aGraphEditor << endl ;
+      void GraphEditor( GraphEditor::DataFlow * aGraphEditor ) {
+           cdebug << "StreamNode::GraphEditor this " << this << " " << Name() << " : _GraphEditor = " << aGraphEditor << endl ;
            _GraphEditor = aGraphEditor ; } ;
       GraphEditor::DataFlow * GraphEditor() const {
-           cdebug << "GraphEditor this " << this << " " << Name() << " : " << _GraphEditor << endl ;
+           cdebug << "StreamNode::GraphEditor this " << this << " " << Name() << " : " << _GraphEditor << endl ;
                           return _GraphEditor ; } ;
 
-      void SetGraphExecutor( GraphExecutor::DataFlow * aGraphExecutor ) {
-           cdebug << "SetGraphExecutor this " << this << " " << Name() << " : " << aGraphExecutor << endl ;
-           _GraphExecutor = aGraphExecutor ; } ;
-      GraphExecutor::DataFlow * GraphExecutor() const {
-           cdebug << "GraphExecutor this " << this << " " << Name() << " : " << _GraphExecutor << endl ;
-                          return _GraphExecutor ; } ;
-
       void GraphMacroLevel( int aGraphMacroLevel ) {
            cdebug << "GraphMacroLevel " << Name() << " " << aGraphMacroLevel << endl ;
            _GraphMacroLevel = aGraphMacroLevel ; } ;
@@ -217,6 +204,10 @@ namespace GraphBase {
              cdebug << "MacroObject GraphMacroNode " << this << " " << Name()
                     << " MacroObject(nil object). Error" << endl ;
           }
+           else {
+             cdebug << "MacroObject GraphMacroNode " << this << " " << Name()
+                    << " MacroObject " << _GraphMacroNode << endl ;
+          }
            _GraphMacroNode = aGraphMacroNode ; } ;
       SUPERV::Graph_var MacroObject() const {
                         if ( CORBA::is_nil( _GraphMacroNode ) ) {
@@ -225,6 +216,11 @@ namespace GraphBase {
                        }
                         return _GraphMacroNode ; } ;
 
+      void GraphOfNode( GraphBase::Graph * aGraph ) {
+           _GraphOfNode = aGraph ; } ;
+      GraphBase::Graph * GraphOfNode() {
+                         return _GraphOfNode ; } ;
+
       int SubGraph() const { return _SubGraphNumber ; } ;
       void SubGraph( int SubGraphNumber ) {
            _SubGraphNumber = SubGraphNumber ; } ;
index e321f124172d6ecc46a5ba6d2ea5bd19f9ebc053..1b1c8a6495e112fe41620a2abadbf31da332176d 100644 (file)
@@ -100,7 +100,7 @@ BIN_SERVER_IDL =
 
 CPPFLAGS+= $(PYTHON_INCLUDES) $(QT_MT_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) \
        -I${KERNEL_ROOT_DIR}/include/salome
-CXXFLAGS+= -g -D_DEBUG_ -D__x86__ -D__linux__ -ftemplate-depth-42 -Wall \
+CXXFLAGS+= -g -D__x86__ -D__linux__ -ftemplate-depth-42 -Wall \
        -I${KERNEL_ROOT_DIR}/include/salome
 LDFLAGS= -L../../lib/salome $(CORBA_LIBS) -lSalomeNS -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace \
        -lc $(PYTHON_LIBS) $(QT_MT_LIBS) $(OGL_LIBS) \
index a02e77d1b392e54269b3e8b8ef8f4074c7acc9ff..40d20bdda12fac5de919fd24e302e5a5ced5ab3d 100644 (file)
@@ -103,23 +103,4 @@ GraphEditor::DataFlow::~DataFlow() {
 //  delete _GT ;
 }
 
-#if 0
-GraphExecutor::DataFlow * GraphEditor::DataFlow::Run() {
-  cdebug_in << "GraphEditor::DataFlow::Run" << endl;
-  SUPERV::SGraph * theDataFlow ;
-  GraphExecutor::DataFlow * aDataFlowExecutor ;
-  theDataFlow = GetDataFlow() ;
-  aDataFlowExecutor = new GraphExecutor::DataFlow( NamingService() ,
-                                                   theDataFlow->Info.theName ) ;
-  if ( aDataFlowExecutor->LoadDataFlow( *theDataFlow ) ) {
-    aDataFlowExecutor->Run() ;
-  }
-  else {
-    MESSAGE( "GraphEditor::DataFlow::Run error while loading DataFlowExecutor")
-    delete aDataFlowExecutor ;
-  }
-  cdebug_out << "GraphEditor::DataFlow::Run" << endl;
-  return aDataFlowExecutor ;
-}
-#endif
 
index 5a96b2aa0b71af220fb91b33774ee93fc765ef6f..336a9e342df4dce253db68be11a4d9f8edc79497 100644 (file)
 #ifndef _DATAFLOWEDITOR_DATAFLOW_HXX
 #define _DATAFLOWEDITOR_DATAFLOW_HXX
 
-//#include "DataFlowExecutor_DataFlow.hxx"
-
-#include "DataFlowExecutor_DataFlow.hxx"
 #include "DataFlowEditor_OutNode.hxx"
 
+namespace GraphExecutor {
+  
+  class DataFlow;
+
+} 
+
 namespace GraphEditor {
 
   class DataFlow : public GraphEditor::OutNode {
@@ -210,10 +213,11 @@ namespace GraphEditor {
       bool IsValid() ;
       bool IsExecutable() ;
 
-      void Executing() ;
+      void Executing( bool b = true ) ;
       bool IsExecuting() ;
       void Editing() ;
       bool IsEditing() ;
+      bool UnValid() ;
       void EditedAfterExecution(bool EditedAfterExecution ) ;
       bool EditedAfterExecution() ;
 
index 1f82bf0d90447f779b7286cee9f8498314984d74..e09bb9f6ec2d8769b22f27650afa8c15d19950ad 100644 (file)
@@ -428,40 +428,27 @@ inline bool GraphEditor::DataFlow::IsExecutable() {
   return GraphEditor::OutNode::IsExecutable() ;
 }
 
-inline void GraphEditor::DataFlow::Executing() {
-  cdebug << "Executing _Executing = true " << endl ;
-  _Executing = true ;
+inline void GraphEditor::DataFlow::Executing( bool b ) {
+  cdebug << "Executing _Executing = " << b << endl ;
+  _Executing = b ;
 }
 
 inline bool GraphEditor::DataFlow::IsExecuting() {
-#if 0
-  //cout << " +++++> Old!" << endl;
-  if ( _DataFlowExecutor ) {
-    if ( _DataFlowExecutor->IsDone() ) {
-      _Executing = false ;
-    }
-    else {
-    _Executing = true ;
-    }
-  }
-  else {
-    _Executing = false ;
-  }
-#endif
-//  cdebug << "GraphEditor::DataFlow::IsExecuting _Executing " << _Executing << " DataFlowExecutor " << _DataFlowExecutor ;
+/*
   if ( _DataFlowExecutor ) {
     cdebug << " IsDone " << _DataFlowExecutor->IsDone() << " State " << _DataFlowExecutor->State() ;
   }
   cdebug << endl ;
-//  cout << "+++++++++++++> _Executing = " << _Executing << "  _DataFlowExecutor = " << _DataFlowExecutor << endl;
   if ( _Executing && _DataFlowExecutor ) {
     if ( _DataFlowExecutor->IsDone() ) {
       _Executing = false ;
     }
   }
+*/
   return _Executing ;
 }
 
+
 inline void GraphEditor::DataFlow::Editing() {
   cdebug << "Editing _Executing = false " << endl ;
   _Executing = false ;
@@ -479,6 +466,12 @@ inline bool GraphEditor::DataFlow::EditedAfterExecution() {
   return _EditedAfterExecution ;
 }
 
+inline bool GraphEditor::DataFlow::UnValid() {
+  Editing() ;
+  EditedAfterExecution( true ) ;
+  return GraphEditor::OutNode::UnValid() ;
+}
+
 inline bool GraphEditor::DataFlow::IsReadOnly() {
   return _ReadOnly ;
 }
index c8d282f73e9b6831de250625138aab0f35f2e8f9..3fbbd72332c69b8ae0aa309ea2f858b578486f61 100644 (file)
@@ -168,9 +168,9 @@ namespace GraphEditor {
       void SetObjRef(SUPERV::CNode_var aNode) {
                      _ComputingNode->SetObjRef( aNode ) ; } ;
 
-      Graph_Impl * ObjImpl() const { return _GraphMacroNode->ObjImpl() ; } ;
-      void SetObjImpl( Graph_Impl * aGraph ) {
-                     _GraphMacroNode->SetObjImpl( aGraph ) ; } ;
+      CNode_Impl * ObjImpl() const { return _ComputingNode->ObjImpl() ; } ;
+      void SetObjImpl( CNode_Impl * aGraph ) {
+                       _ComputingNode->SetObjImpl( aGraph ) ; } ;
 
       const SALOME_ModuleCatalog::Service * GetService() const {
             return _ComputingNode->GetService() ; } ;
index 71d498407589cf09a63e76d02d225caa2395bb5f..0b4f09df7b7e0ff481479679482c6f6bf1211c8e 100644 (file)
@@ -32,8 +32,28 @@ using namespace std;
 #include "DataFlowBase_EndOfLoopNode.hxx"
 #include "DataFlowBase_EndOfSwitchNode.hxx"
 
-#include "DataFlowExecutor_DataFlow.hxx"
-extern GraphExecutor::FiniteStateMachine * theAutomaton ;
+//map< string , GraphBase::Graph * > GraphEditor::OutNode::_MapOfGraphs;
+map< string , int > _MapOfGraphNames;
+
+string GraphInstanceName( const char * aGraphName ) {
+  int GraphInstanceNumber = _MapOfGraphNames[ aGraphName ] ;
+  if ( GraphInstanceNumber ) {
+    _MapOfGraphNames[ aGraphName ] = GraphInstanceNumber + 1 ;
+  }
+  else {
+    GraphInstanceNumber = 0 ;
+    _MapOfGraphNames[ aGraphName ] = GraphInstanceNumber + 1 ;
+  }
+  string theGraphInstanceName = string( aGraphName ) ;
+  if ( GraphInstanceNumber ) {
+    theGraphInstanceName += "_" ;
+    ostringstream astr ;
+    astr << GraphInstanceNumber ;
+    theGraphInstanceName += astr.str() ;
+  }
+  return theGraphInstanceName ;
+}
+
 
 // Implementation de la classe GraphEditor::Graph
 
@@ -65,19 +85,16 @@ GraphEditor::OutNode::OutNode( CORBA::ORB_ptr ORB ,
 
   if ( aKindOfNode == SUPERV::DataFlowGraph ) {
     _StreamGraph = NULL ;
-//    _Graph = new GraphBase::Graph( ORB , ptrNamingService , DataFlowName , DebugFileName ) ;
     _Graph = new GraphBase::Graph( ORB , ptrNamingService , DataFlowName , aKindOfNode ,
-                                   _prof_debug , _fdebug ) ;
+                                   _prof_debug , _fdebug ) ; 
+//    MapGraph( _Graph , _Graph->Name() ) ;
   }
   else if ( aKindOfNode == SUPERV::DataStreamGraph ) {
-//    _StreamGraph = new GraphBase::StreamGraph( ORB , ptrNamingService , DataFlowName , DebugFileName ) ;;
     _StreamGraph = new GraphBase::StreamGraph( ORB , ptrNamingService , DataFlowName , aKindOfNode ,
                                                _prof_debug , _fdebug ) ;
     _Graph = _StreamGraph ;
+//    MapGraph( _Graph , _Graph->Name() ) ;
   }
-//  if ( aKindOfNode == SUPERV::DataFlowGraph || aKindOfNode == SUPERV::DataStreamGraph ) {
-//    theAutomaton->MapGraph( _Graph , _Graph->Name() ) ;
-//  }
   _Orb = CORBA::ORB::_duplicate( ORB ) ;
   _Imported = false ;
   _Valid = false ;
@@ -101,11 +118,6 @@ GraphEditor::OutNode::OutNode(
                      const char * DataFlowComputer ,
                      const char * DataFlowComment ,
                      const char * DebugFileName ) {
-//             Graph( ORB , ptrNamingService , DataFlowService , DataFlowComponentName ,
-//                    DataFlowInterfaceName , DataFlowName , DataFlowkind ,
-//                    DataFlowFirstCreation , DataFlowLastModification  ,
-//                    DataFlowEditorRelease , DataFlowAuthor ,
-//                    DataFlowComputer , DataFlowComment , DebugFileName ) {
   _Graph = NULL ;
   Set_prof_debug( ORB , DebugFileName ) ;
 
@@ -117,7 +129,7 @@ GraphEditor::OutNode::OutNode(
                                    DataFlowEditorRelease , DataFlowAuthor ,
                                    DataFlowComputer , DataFlowComment ,
                                    _prof_debug , _fdebug ) ;
-//                                   DataFlowComputer , DataFlowComment , DebugFileName ) ;
+//    MapGraph( _Graph , _Graph->Name() ) ;
   }
   else if ( DataFlowkind == SUPERV::DataStreamGraph ) {
     _StreamGraph = new GraphBase::StreamGraph( ORB , ptrNamingService , DataFlowService , DataFlowComponentName ,
@@ -126,12 +138,9 @@ GraphEditor::OutNode::OutNode(
                                                DataFlowEditorRelease , DataFlowAuthor ,
                                                DataFlowComputer , DataFlowComment ,
                                                _prof_debug , _fdebug ) ;
-//                    DataFlowComputer , DataFlowComment , DebugFileName ) ;
     _Graph = _StreamGraph ;
+//    MapGraph( _Graph , _Graph->Name() ) ;
   }
-//  if ( DataFlowkind == SUPERV::DataFlowGraph || DataFlowkind == SUPERV::DataStreamGraph ) {
-//    theAutomaton->MapGraph( _Graph , _Graph->Name() ) ;
-//  }
   _Orb = CORBA::ORB::_duplicate( ORB ) ;
   _Imported = false ;
   _Valid = false ;
@@ -140,7 +149,7 @@ GraphEditor::OutNode::OutNode(
 } ;
 
 GraphEditor::OutNode::~OutNode() {
-//  theAutomaton->EraseGraph( Graph->Name() ) ;
+//  EraseGraph( Graph->Name() ) ;
 //  delete _DataFlowNode ;
 //  delete _DataFlowDatas ;
 //  delete _GT ;
@@ -148,14 +157,14 @@ GraphEditor::OutNode::~OutNode() {
 
 bool GraphEditor::OutNode::Name( const char * aName ) {
   bool RetVal = false ;
-  if ( !theAutomaton->GraphName( aName ) ) {
-    char * aGraphName = Graph()->Name() ;
+//  if ( !GraphName( aName ) ) {
+//    char * aGraphName = Graph()->Name() ;
     RetVal = Graph()->Name( aName ) ;
-    if ( RetVal ) {
-      theAutomaton->EraseGraph( aGraphName ) ;
-      theAutomaton->MapGraph( Graph() , aName ) ;
-    }
-  }
+//    if ( RetVal ) {
+//      EraseGraph( aGraphName ) ;
+//      MapGraph( Graph() , aName ) ;
+//    }
+//  }
   return RetVal ;
 }
 
@@ -208,8 +217,9 @@ bool GraphEditor::OutNode::LoadXml( const char* myFileName , GraphBase::ListOfSG
     cdebug << "GraphEditor::OutNode::LoadXml() No file" << endl;
     _Imported = true ;
     char * aDataFlowName = Graph()->Name() ;
-    Name( theAutomaton->GraphInstanceName( Graph()->Name() ).c_str() ) ;
-    theAutomaton->MapGraph( Graph() , Graph()->Name() ) ;
+//  Name( Graph()->Name() ) ;
+    Name( GraphInstanceName( Graph()->Name() ).c_str() ) ;
+//    MapGraph( Graph() , Graph()->Name() ) ;
     cdebug << "GraphEditor::OutNode::LoadXml() " << aDataFlowName << " --> " << Graph()->Name() << endl;
     RetVal = true ;
   }
@@ -250,8 +260,9 @@ bool GraphEditor::OutNode::LoadInfo(const GraphBase::SNode &aDataFlowInfo ) {
 //  InterfaceName( aDataFlowInfo.theInterfaceName.c_str() ) ;
   if ( Graph()->IsDataStreamNode() || aDataFlowInfo.theKind == SUPERV::DataFlowGraph ) {
     char * aDataFlowName = Graph()->Name() ;
-    Graph()->Name( theAutomaton->GraphInstanceName( aDataFlowInfo.theName.c_str() ).c_str() ) ;
-    theAutomaton->MapGraph( Graph() , Graph()->Name() ) ;
+//    Graph()->Name( aDataFlowInfo.theName.c_str() ) ;
+    Graph()->Name( GraphInstanceName( aDataFlowInfo.theName.c_str() ).c_str() ) ;
+//    MapGraph( Graph() , Graph()->Name() ) ;
     cdebug << "GraphEditor::OutNode::LoadInfo " << aDataFlowName << " --> " << Graph()->Name()
            << " aDataFlowInfo.Kind " << aDataFlowInfo.theKind << " Kind() " << Graph()->Kind() << endl ;
     if ( Graph()->IsDataStreamNode() ) {
@@ -394,21 +405,36 @@ bool GraphEditor::OutNode::LoadNodes(map< string , int > & aMapOfNodes ,
       return false ;
     }
   }
+
+  // setting coupled pairs of nodes: Loop-EndLoop, Switch-EndSwitch, InLine-GOTO, MacroNode-Graph
   for ( i = 0 ; i < (int ) aListOfNodes.size() ; i++ ) {
     GraphBase::SNode aNode = aListOfNodes[ i ] ;
     cdebug << "GraphEditor::OutNode::LoadNodes " << aNode.theName.c_str() << " Coupled to "
            << aNode.theCoupledNode.c_str() << endl ;
-    anInNode = (GraphEditor::InNode * ) Graph()->GetChangeGraphNode( aNode.theName.c_str() )->GetInNode() ;
+    anInNode = (GraphEditor::InNode * ) Graph()->GetChangeGraphNode( aMapOfNodes[ aNode.theName.c_str() ] )->GetInNode() ;
+
     if ( anInNode->IsOneOfGOTONodes() && strlen( aNode.theCoupledNode.c_str() ) ) {
-      GraphBase::GOTONode * aCoupledNode ;
-      aCoupledNode = (GraphBase::GOTONode * ) Graph()->GetGraphNode( aNode.theName.c_str() ) ;
-      GraphBase::GOTONode * aCoupledCoupledNode ;
-      aCoupledCoupledNode = (GraphBase::GOTONode * ) Graph()->GetChangeGraphNode( aNode.theCoupledNode.c_str() ) ;
-      if ( aCoupledCoupledNode != NULL ) {
-        aCoupledNode->CoupledNode( aCoupledCoupledNode ) ;
+      GraphBase::GOTONode * aGOTONode;
+      aGOTONode = (GraphBase::GOTONode * ) anInNode->ComputingNode() ;
+
+      // asv : 25.10.04 : if aNode is a MacroNode, then its coupled node (another Graph) is NOT in aMapOfNodes 
+      //                  and we must couple MacroNode only with name to its subgraph
+      if ( aGOTONode->IsMacroNode() ) {
+        cdebug << "GraphEditor::OutNode::LoadNodes MacroNode " << aNode.theName.c_str()
+              << " is Coupled ONLY WITH NAME to its subgraph " << aNode.theCoupledNode.c_str() << endl;
+        aGOTONode->CoupledNodeName( aNode.theCoupledNode.c_str() ) ;
       }
-      else {
-        aCoupledNode->CoupledNodeName( aNode.theCoupledNode.c_str() ) ;
+      else { // coupling Loop-EndLoop, Switch-EndSwitch, InLine-GOTO
+       // asv : fix for 6822 : using map because if aNode's name is the same as some existing node's name
+       // aMap will give the correct index any way (aMap has already a different name for aNode, SNode still has old name)
+       int aCoupledNodeIndex = aMapOfNodes[ aNode.theCoupledNode.c_str() ] ;
+       cdebug << "GraphEditor::OutNode::LoadNodes " << aNode.theCoupledNode.c_str()
+              << " index " << aCoupledNodeIndex << endl ;
+        GraphBase::GOTONode * aCoupledNode ;
+        aCoupledNode = (GraphBase::GOTONode * ) Graph()->GetChangeGraphNode( aCoupledNodeIndex ) ;
+        cdebug << "GraphEditor::OutNode::LoadNodes " << aNode.theName.c_str()
+               << " is now Coupled to " << aNode.theCoupledNode.c_str() << endl ;
+        aGOTONode->CoupledNode( aCoupledNode ) ;
       }
     }
   }
@@ -548,9 +574,11 @@ GraphBase::ListOfSGraphs * GraphEditor::OutNode::GetDataFlows( GraphBase::ListOf
   }
   int i ;
   for ( i = 0 ; i < (int ) (*aListOfDataFlows)[ index ].Nodes.size() ; i++ ) {
-    if ( Graph()->GetGraphNode( (*aListOfDataFlows)[ index ].Nodes[i].theName.c_str() )->IsMacroNode() ) {
-      string aCoupledNode = (*aListOfDataFlows)[ index ].Nodes[i].theCoupledNode ;
-      GraphBase::Graph * aGraph = theAutomaton->MapGraph( aCoupledNode.c_str() ) ;
+    const GraphBase::ComputingNode * aNode = Graph()->GetGraphNode( (*aListOfDataFlows)[ index ].Nodes[i].theName.c_str() ) ;
+    if ( aNode->IsMacroNode() ) {
+//      string aCoupledNodeName = (*aListOfDataFlows)[ index ].Nodes[i].theCoupledNode ;
+      GraphBase::Graph * aGraph = (GraphBase::Graph * ) ((GraphBase::GOTONode * ) aNode )->CoupledNode() ;
+//      GraphBase::Graph * aGraph = MapGraph( aCoupledNodeName.c_str() ) ;
       aGraph->GraphEditor()->GraphEditor::OutNode::GetDataFlows( aListOfDataFlows ) ;
     }
   }
@@ -694,8 +722,10 @@ GraphEditor::InNode * GraphEditor::OutNode::AddNode(
                                   NodeComputer , NodeComment , GeneratedName ,
                                   NodeX , NodeY ,
                                   _prof_debug , _fdebug ) ;
-//    MESSAGE( "GraphEditor::OutNode::AddNode " << hex << (void *) Nd << dec );
-//    if ( GraphBase::Graph::AddNode( Nd ) ) {
+    
+    // asv: 28.09.04 fix for 6621
+    //if ( Nd->IsMacroNode() )
+    //  MapGraph( Nd->GraphMacroNode(), aNodeName );
 
     if ( Graph()->IsDataStreamNode() && ( Nd->IsComputingNode() || Nd->IsFactoryNode() ) ) {
       unsigned int i ;
@@ -1695,10 +1725,27 @@ ostream & operator<< (ostream &fOut,const SUPERV::SDate &D)
   return fOut;
 }
 
+/*
+GraphBase::Graph * GraphEditor::OutNode::MapGraph( const char * aGraphName ) {
+  GraphBase::Graph * aGraph = _MapOfGraphs[ aGraphName ] ;
+  return aGraph ;
+}
 
+bool GraphEditor::OutNode::MapGraph( GraphBase::Graph * aGraph , const char * aGraphName ) {
+  if ( MapGraph( aGraphName ) ) {
+    return false ;
+  }
+  _MapOfGraphs[ aGraphName ] = aGraph ;
+  return true ;
+}
 
+void GraphEditor::OutNode::EraseGraph( const char * aGraphName ) {
+  _MapOfGraphs.erase( aGraphName ) ;
+}
 
-
-
+bool GraphEditor::OutNode::GraphName( const char * aGraphName ) {
+  return  _MapOfGraphNames[ aGraphName ] ;
+}
+*/
 
 
index 4c14b833bd361e734f014e353967ada41ad12a02..d5da3be4174a732b4b2b6abb643bf6e78f271422 100644 (file)
@@ -33,7 +33,6 @@
 
 namespace GraphEditor {
 
-//  class OutNode : public GraphBase::Graph {
   class OutNode : public GraphBase::Base {
     
     private :
@@ -79,6 +78,18 @@ namespace GraphEditor {
 
       void DateModification() ;
 
+      // asv 20.09.04 added from GraphExecutor::FiniteStateMachine class (removed from there)
+//      static map< string , GraphBase::Graph * > _MapOfGraphs ;
+//      static map< string , int >                _MapOfGraphNames ;
+    
+//      GraphBase::Graph * MapGraph( const char * aGraphName ) ;
+//      bool MapGraph( GraphBase::Graph * aGraph , const char * aGraphName ) ;
+//      void EraseGraph( const char * aGraphName ) ;
+//      bool GraphName( const char * aGraphName ) ;
+//      string GraphInstanceName( const char * aGraphName ) ;
+      // end added from FiniteStateMachine
+
+
     public:
 
       OutNode();
@@ -103,8 +114,6 @@ namespace GraphEditor {
                const char * DebugFileName ) ;
       virtual ~OutNode();
 
-      GraphExecutor::FiniteStateMachine * Automaton() { return theAutomaton ; } ;
-
       bool Name( const char * aName ) ;
 
       void Set_prof_debug( CORBA::ORB_ptr ORB , const char * DebugFileName ) ;
index 056901b774ddb4e35dcc830e981798c8d5023c57..4c991c452894f06d6c539fb00271ed5876ea453a 100644 (file)
@@ -60,9 +60,9 @@ BIN_SERVER_IDL =
 
 CPPFLAGS+= $(PYTHON_INCLUDES) $(QT_MT_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) \
        -I${KERNEL_ROOT_DIR}/include/salome
-CXXFLAGS+= -g -D_DEBUG_ -D__x86__ -D__linux__ -ftemplate-depth-42 -Wall \
+CXXFLAGS+= -g -D__x86__ -D__linux__ -ftemplate-depth-42 -Wall \
        -I${KERNEL_ROOT_DIR}/include/salome
-LDFLAGS+= -lSalomeNS -lSalomeLifeCycleCORBA -lSalomeSuperVisionBase -lSalomeSuperVisionExecutor -lOpUtil -lSALOMELocalTrace \
+LDFLAGS+= -lSalomeNS -lSalomeLifeCycleCORBA -lSalomeSuperVisionBase -lOpUtil -lSALOMELocalTrace \
        -lc $(QT_MT_LIBS) $(OGL_LIBS) -L${KERNEL_ROOT_DIR}/lib/salome
 #LIBS += -Xlinker -export-dynamic $(PYTHON_LIBS)
 
index 10d4cdb5e87f6917fb8636abee997d0a6753bc7e..a1da842bc21d9ca7bbbabe357dd0d7f6b71beb7a 100644 (file)
@@ -26,6 +26,7 @@
 
 using namespace std;
 #include "DataFlowExecutor_DataFlow.hxx"
+#include "DataFlowEditor_DataFlow.hxx"
 
 // Implementation de la classe GraphExecutor::Graph
 
@@ -115,8 +116,9 @@ bool GraphExecutor::DataFlow::ContainerKill( const char *aNodeName ) {
 }
 
 bool GraphExecutor::DataFlow::InputOfAny( const char * ToServiceParameterName ,
-                             const CORBA::Any & aValue ) {
-  cdebug_in "GraphExecutor::DataFlow::InputOfAny" << endl ;
+                                          const CORBA::Any & aValue ,
+                                          bool SomeDataReady ) {
+  cdebug_in <<"GraphExecutor::DataFlow::InputOfAny" << endl ;
   bool RetVal = false ;
   cdebug << pthread_self() << "GraphExecutor::DataFlow::::InputOfAny " << Graph()->Name() << "("
          << ToServiceParameterName << ")" << endl ;
@@ -124,85 +126,114 @@ bool GraphExecutor::DataFlow::InputOfAny( const char * ToServiceParameterName ,
     GraphBase::OutPort * anOutPort ;
     anOutPort = Graph()->GetChangeInDataNodePort( ToServiceParameterName ) ;
     cdebug << pthread_self() << "GraphExecutor::DataFlow::InputOfAny " << Graph()->Name()
-           << " " << ToServiceParameterName << " " << anOutPort->State() << " Done " << anOutPort->Done()
-           << endl ;
+           << " " << State() << " " << ToServiceParameterName << " " << anOutPort->State()
+           << " Done : " << anOutPort->Done() << endl ;
     RetVal = AddInputData( Graph()->Name() , ToServiceParameterName , aValue ) ;
     anOutPort->State(  SUPERV::ReadyState ) ;
+// There is only one port :
+    anOutPort->ChangeInPorts( 0 )->State( SUPERV::ReadyState ) ;
     anOutPort->Done( true ) ;
+// There is only one inport of a Node in an ReversedOutport of a graph :
     GraphExecutor::InNode * anInNode = (GraphExecutor::InNode * ) Graph()->GetChangeGraphNode( anOutPort->InPorts( 0 )->NodeName() )->GetInNode() ;
     cdebug << pthread_self() << "GraphExecutor::DataFlow::InputOfAny : " << anInNode->Name()
-           << "->SendSomeDataReady( " << Graph()->Name() << " ) " << endl ;
-    anInNode->SendSomeDataReady( Graph()->Name() ) ;
-    if ( anInNode->IsReady() ) {
-      cdebug << pthread_self() << "GraphExecutor::DataFlow::InputOfAny : " << anInNode->Name()
-             << "->SendEvent( GraphExecutor::ExecuteEvent ) "
-             << " " << anInNode->Name() << "->IsReady() " << anInNode->IsReady() << " State "
-             << anInNode->State() << endl ;
-      if ( anInNode->IsLockedDataWait() ) {
-        cdebug << pthread_self() << "GraphExecutor::DataFlow::InputOfAny : " << anInNode->Name()
-               << " IsLockedDataWait() ==> UnLockDataWait" << endl ;
-        anInNode->UnLockDataWait() ;
+           << "->SendSomeDataReady( " << Graph()->Name() << " ) for Port " << anOutPort->InPorts( 0 )->PortName()
+           << endl ;
+    if ( SomeDataReady ) {
+      MESSAGE( "GraphExecutor::InputOfAny " << Graph()->Name() << " SendSomeDataReady --> " << anInNode->Name()
+               << " " << anInNode->State() << " " << anOutPort->InPorts( 0 )->PortName() ) ;
+      int sts = anInNode->SendSomeDataReady( Graph()->Name() ) ;
+      cdebug << "GraphExecutor::DataFlow::InputOfAny " << anInNode->Name()
+             << "->SendSomeDataReady( " << Graph()->Name() << " ) sts " << sts << endl ;
+      if ( sts && anInNode->IsReady() ) {
+        cdebug << pthread_self() << "/" << anInNode->ThreadNo() << "GraphExecutor::DataFlow::InputOfAny : "
+               << anInNode->Name() << "->SendEvent( GraphExecutor::ExecuteEvent ) "
+               << " " << anInNode->Name() << "->IsReady() " << anInNode->IsReady() << " State "
+               << anInNode->State() << endl ;
+        if ( anInNode->IsLockedDataWait() ) {
+          cdebug << pthread_self() << "/" << anInNode->ThreadNo() << "GraphExecutor::DataFlow::InputOfAny : "
+                 << anInNode->Name() << " IsLockedDataWait() ==> UnLockDataWait" << endl ;
+          anInNode->UnLockDataWait() ;
+        }
+        anInNode->ThreadNo( 0 ) ;
+        anInNode->CreateNewThread( true ) ;
+        anInNode->SendEvent( GraphExecutor::ExecuteEvent ) ;
+//        State( GraphExecutor::ExecutingState ) ;
       }
-      anInNode->CreateNewThread( true ) ;
-      anInNode->SendEvent( GraphExecutor::ExecuteEvent ) ;
-      State( GraphExecutor::ExecutingState ) ;
     }
   }
-  cdebug_out << "GraphExecutor::DataFlow::InputOfAny " << RetVal << endl ;
+  else {
+    cdebug << pthread_self() << "GraphExecutor::DataFlow::InputOfAny GraphMacroLevel "
+           << Graph()->GraphMacroLevel() << " ERROR" << endl ;
+    MESSAGE( "GraphExecutor::DataFlow::InputOfAny GraphMacroLevel " << Graph()->GraphMacroLevel()
+             << " ERROR" ) ;
+  }
+  cdebug_out << pthread_self() << " GraphExecutor::DataFlow::InputOfAny " << RetVal << endl ;
   return RetVal ;
 }
 
 bool GraphExecutor::DataFlow::OutputOfAny( const char * aNodeName ,
                                            const char * ToServiceParameterName ,
                                            const CORBA::Any & aValue ) {
-  cdebug_in << "GraphExecutor::DataFlow::OutputOfAny" << endl ;
+  cdebug_in << pthread_self() << "/" << ThreadNo() << "GraphExecutor::DataFlow::OutputOfAny( " << aNodeName
+            << " , " << ToServiceParameterName
+            << " , aValue ) from " << Graph()->Name() << endl ;
   bool RetVal = false ;
-  GraphBase::Graph * aMacroGraph = (GraphBase::Graph * ) Graph()->GetChangeGraphNode( aNodeName ) ;
+  GraphBase::Graph * aMacroNode = (GraphBase::Graph * ) Graph()->GetChangeGraphNode( aNodeName ) ;
 //  GraphExecutor::InNode * anInNode = (GraphExecutor::InNode * ) aMacroGraph->GetInNode() ;
   RetVal = Graph()->AddOutputData( aNodeName , ToServiceParameterName , aValue ) ;
-  GraphBase::OutPort * anOutPort = aMacroGraph->GetChangeOutPort( ToServiceParameterName ) ;
+  GraphBase::OutPort * anOutPort = aMacroNode->GetChangeOutPort( ToServiceParameterName ) ;
   int i ;
+// Loop over Inports linked to that OutPort of the MacroNode
   for ( i = 0 ; i < anOutPort->InPortsSize() ; i++ ) {
-    if ( strcmp( anOutPort->ChangeInPorts( i )->NodeName() , Graph()->Name() ) ) {
-      cdebug << "GraphExecutor::DataFlow::OutputOfAny toNodeName " << anOutPort->ChangeInPorts( i )->NodeName()
-             << "(" << anOutPort->ChangeInPorts( i )->PortName() << ")" << endl ;
-      GraphExecutor::InNode * aLinkedNode = (GraphExecutor::InNode * ) Graph()->GetChangeGraphNode( anOutPort->ChangeInPorts( i )->NodeName() )->GetInNode() ;
+    const char * ToNodeName = anOutPort->ChangeInPorts( i )->NodeName() ;
+    const char * ToParameterName = anOutPort->ChangeInPorts( i )->PortName() ;
+    GraphBase::ComputingNode * aComputingNode = Graph()->GetChangeGraphNode( ToNodeName ) ;
+    if ( strcmp( ToNodeName , Graph()->Name() ) ) {
+      GraphExecutor::InNode * aLinkedNode = (GraphExecutor::InNode * ) aComputingNode->GetInNode() ;
+      cdebug << pthread_self() << "/" << aLinkedNode->ThreadNo()
+             << "GraphExecutor::DataFlow::OutputOfAny to Node "
+             << ToNodeName << "(" << ToParameterName << ") from MacroNode " << aNodeName << endl ;
       int sts ;
       if ( aLinkedNode->IsLockedDataWait() ) {
         cdebug << "GraphExecutor::DataFlow::OutputOfAny " << aLinkedNode->Name()
                << " IsLockedDataWait --> UnLockDataWait" << endl ;
       }
       sts = aLinkedNode->SendSomeDataReady( (char * ) aNodeName ) ;
-      cdebug << "GraphExecutor::DataFlow::OutputOfAny " << aLinkedNode->Name()
-             << "->SendSomeDataReady( " << aNodeName << " ) sts " << sts << endl ;
+      cdebug << pthread_self() << "/" << aLinkedNode->ThreadNo()
+             << "GraphExecutor::DataFlow::OutputOfAny " << aLinkedNode->Name()
+             << "->SendSomeDataReady( " << aNodeName << " ) sts " << sts << " " << aLinkedNode->State() << endl ;
       if ( sts ) {
         if ( aLinkedNode->State() == GraphExecutor::DataReadyState ) {
           aLinkedNode->CreateNewThreadIf( true ) ;
           aLinkedNode->UnLockDataWait() ;
-          int res = aLinkedNode->DataUndef_AllDataReadyAction() ;
+//          aLinkedNode->DataUndef_AllDataReadyAction() ;
+          aLinkedNode->SendEvent( GraphExecutor::ExecuteEvent ) ;
         }
       }
     }
     else if ( Graph()->GraphMacroLevel() != 0 ) {
-      cdebug << "GraphExecutor::DataFlow::OutputOfAny to MacroGraph " << anOutPort->ChangeInPorts( i )->NodeName()
-             << "(" << anOutPort->ChangeInPorts( i )->PortName() << ") " << Graph()->CoupledNodeName () << endl ;
-      Graph()->CoupledNode()->GraphExecutor()->OutputOfAny( Graph()->CoupledNodeName() ,
-                                                            anOutPort->ChangeInPorts( i )->PortName() ,
+      cdebug << pthread_self() << "/" << Graph()->CoupledNode()->ThreadNo()
+             << "GraphExecutor::DataFlow::OutputOfAny to that graph "
+             << ToNodeName << "(" << ToParameterName << ") " << State() << " " << Graph()->CoupledNodeName ()
+             << " sended recursively to the MacroNode coupled to that graph" << endl ;
+      Graph()->CoupledNode()->GraphEditor()->Executor()->OutputOfAny( Graph()->CoupledNodeName() ,
+                                                            ToParameterName ,
                                                             *anOutPort->Value() ) ;
     }
     else {
-      cdebug << "GraphExecutor::DataFlow::OutputOfAny to Graph " << anOutPort->ChangeInPorts( i )->NodeName()
-             << "(" << anOutPort->ChangeInPorts( i )->PortName() << ") ignored" << endl ;
+      cdebug << "GraphExecutor::DataFlow::OutputOfAny to Graph " << ToNodeName
+             << "(" << ToParameterName << ") ignored" << endl ;
     }
   }
-  cdebug_out << "GraphExecutor::DataFlow::OutputOfAny " << RetVal << endl ;
+  cdebug_out << pthread_self() << "/" << ThreadNo() << " GraphExecutor::DataFlow::OutputOfAny " << RetVal
+             << endl ;
   return RetVal ;
 }
 
 bool GraphExecutor::DataFlow::Kill() {
   cdebug_in << "GraphExecutor::DataFlow::Kill()" << endl;
   bool RetVal = GraphExecutor::OutNode::Kill() ;
-  cdebug_out << "GraphExecutor::DataFlow::Kill()" << endl;
+  cdebug_out << "GraphExecutor::DataFlow::Kill() " << RetVal << endl;
   return RetVal ;
 }
 
index 3c348afc63e7ea19563995729a4e914097db6e6f..ddbf2656db090da4191e93e1b08a75c8989dd9b6 100644 (file)
@@ -71,7 +71,8 @@ namespace GraphExecutor {
                             const char * ToParameterName ,
                             const CORBA::Any aValue = CORBA::Any() ) ;
       bool InputOfAny( const char * ToServiceParameterName ,
-                       const CORBA::Any & aValue ) ;
+                       const CORBA::Any & aValue ,
+                       const bool SomeDataReady = true ) ;
 
       bool OutputOfAny( const char * aNodeName ,
                         const char * ToServiceParameterName ,
index 9916c77c7912edf75b2e8752ab0c9ec9d1a0cda9..e044c34bc0b21591a4c36c1ce45ba8f77803c301 100644 (file)
@@ -588,7 +588,7 @@ bool GraphExecutor::FiniteStateMachine::PyFunction( const char * aPyFuncName , P
   
   return RetVal ;
 }
-
+/*
 GraphBase::Graph * GraphExecutor::FiniteStateMachine::MapGraph( const char * aGraphName ) {
   GraphBase::Graph * aGraph = _MapOfGraphs[ aGraphName ] ;
   //cout << "MapGraph " << aGraphName << " --> " << aGraph << endl ;
@@ -632,32 +632,37 @@ string GraphExecutor::FiniteStateMachine::GraphInstanceName( const char * aGraph
     //   << theGraphInstanceName << endl ;
   return theGraphInstanceName ;
 }
+*/
 
 void GraphExecutor::FiniteStateMachine::JoinThread() {
   if ( pthread_mutex_lock( &_MutexJoinWait ) ) {
-    perror("Join pthread_mutex_lock ") ;
+    perror("FiniteStateMachine:JoinThread pthread_mutex_lock ") ;
     exit( 0 ) ;
   }
   while ( _JoinThread ) {
     while ( _ThreadList.size() == 0) {
-//      MESSAGE( pthread_self() << " Join pthread_cond_wait" );
+//      MESSAGE( pthread_self() << " FiniteStateMachine:Join pthread_cond_wait" );
       if ( pthread_cond_wait( &_JoinWait , &_MutexJoinWait ) ) {
-        perror("Join pthread_cond_wait ") ;
+        perror("FiniteStateMachine:JoinThread pthread_cond_wait ") ;
       }
     }
     pthread_t _Thread = _ThreadList.front() ;
-//    MESSAGE( pthread_self() << " Join pthread_cond_waited : " << _Thread )
-    _ThreadList.pop_front() ;
-//    MESSAGE( pthread_self() << " Join pthread_join : " << _Thread );
+//    MESSAGE( pthread_self() << " FiniteStateMachine:JoinThread pthread_cond_waited : " << _Thread )
+//    MESSAGE( pthread_self() << " FiniteStateMachine:JoinThread pthread_join : " << _Thread );
     int joinsts = pthread_join( _Thread , NULL ) ;
-//    MESSAGE( pthread_self() << " Join pthread_joined : " << _Thread );
     if ( joinsts ) {
-      perror("Join pthread_join ") ;
-//      exit( 0 ) ;
+      perror("FiniteStateMachine:JoinThread pthread_join ") ;
+      MESSAGE( pthread_self() << " FiniteStateMachine:JoinThread pthread_join : " << _Thread
+               << " Error" );
+      exit( 0 ) ;
+    }
+    else {
+      MESSAGE( pthread_self() << " FiniteStateMachine:JoinThread pthread_joined : " << _Thread );
+      _ThreadList.pop_front() ;
     }
   }
   if ( pthread_mutex_unlock( &_MutexJoinWait ) ) {
-    perror("Join pthread_mutex_unlock ") ;
+    perror("FiniteStateMachine:JoinThread pthread_mutex_unlock ") ;
     exit( 0 ) ;
   }
 }
index 4389c4a4dd336db3f96e3b25ae0bd5eb38044099..f99c1914eef181fe93c073fad6d5b784551249f6 100644 (file)
@@ -162,8 +162,10 @@ namespace GraphExecutor {
       int                        _GraphExecutingNumber ;
 
       int                                _DbgFileNumber ;
-      map< string , GraphBase::Graph * > _MapOfGraphs ;
-      map< string , int >                _MapOfGraphNames ;
+
+// fields and methods that use them are moved to GraphEditor::OutNode class (asv 20.09.04)  
+//map< string , GraphBase::Graph * > _MapOfGraphs ;
+//map< string , int >                _MapOfGraphNames ;
 
       bool              _JoinThread ;
       pthread_t         _JoinThreadNo ;
@@ -184,16 +186,19 @@ namespace GraphExecutor {
       bool PyFunction( const char * aPyFuncName , PyObject * aPyFunction ) ;
       PyObject * PyFunction( const char * aPyFuncName ) ;
 
+
       string DbgFileNumber() {
              _DbgFileNumber += 1 ;
              ostringstream astr ;
              astr << _DbgFileNumber ;
              return astr.str() ; } ;
+/*
       GraphBase::Graph * MapGraph( const char * aGraphName ) ;
       bool MapGraph( GraphBase::Graph * aGraph , const char * aGraphName ) ;
       void EraseGraph( const char * aGraphName ) ;
       bool GraphName( const char * aGraphName ) ;
       string GraphInstanceName( const char * aGraphName ) ;
+*/
 
       void JoinThread() ;
       void JoinThread( pthread_t aThread ) ;
index 213e0ff8c5d58b2ce084c75e0e62f54a0e15d8e8..485e76d7ecfe2ca7f876ef95fcdc7a7d01add652 100644 (file)
@@ -459,13 +459,15 @@ void GraphExecutor::InNode::ExitThread() {
 bool GraphExecutor::InNode::Suspend() {
   cdebug_in << "GraphExecutor::InNode::Suspend " << Name() << " " << ThreadNo()
             << endl;
-  bool RetVal ;
+  bool RetVal = false ;
   if ( IsDone() ) {
-    ControlState( SUPERV::VoidState ) ;
+//If loop we need to suspend also    ControlState( SUPERV::VoidState ) ;
+    ControlState( SUPERV::ToSuspendState ) ;
+    RetVal = true ;
     if ( _OutNode->IsDone() ) {
       ControlState( SUPERV::VoidState ) ;
+      RetVal = false ;
     }
-    RetVal = false ;
   }
   else if ( IsWaiting() || IsReady() ) {
     ControlState( SUPERV::ToSuspendState ) ;
@@ -536,7 +538,8 @@ bool GraphExecutor::InNode::ContainerKill() {
 
 bool GraphExecutor::InNode::Kill() {
   cdebug_in << "GraphExecutor::InNode::Kill " << Name() << " " << ThreadNo() << " " 
-            << Automaton()->StateName( State() ) << endl;
+            << Automaton()->StateName( State() ) << " Threads " << _OutNode->Threads()
+            << " SuspendedThreads " << _OutNode->SuspendedThreads() << endl;
   bool RetVal ;
   if ( IsDone() ) {
     ControlState( SUPERV::ToKillState ) ; // if loop
@@ -599,14 +602,19 @@ bool GraphExecutor::InNode::Kill() {
       else if ( IsWaiting() ) {
         RetVal = true ;
       }
+      else if ( IsReady() ) {
+        RetVal = true ;
+      }
       else {
-        cdebug << "Kill and !IsDone and !IsRunning and !IsWaiting ?"
+        cdebug << "Kill and !IsDone and !IsRunning and !IsWaiting and !IsReady ?"
                << endl ;
         RetVal = false ;
       }
     }
   }
-  cdebug_out << "GraphExecutor::InNode::Kill" << endl ;
+  cdebug_out << "GraphExecutor::InNode::Kill" << Name() << " " << ThreadNo() << " " 
+             << Automaton()->StateName( State() ) << " Threads " << _OutNode->Threads()
+             << " SuspendedThreads " << _OutNode->SuspendedThreads()  << endl ;
   return RetVal ;
 }
 
@@ -1139,33 +1147,46 @@ void GraphExecutor::InNode::InitialState( GraphExecutor::OutNode * theOutNode )
       *anAny <<= (long ) 1 ;
       anOutPort->Value( anAny ) ;
     }
+// JR 15_09_2004 if backward link from GOTONode or EndLoopNode ==> DataConnected
     else if ( anInPort->IsGate() && anOutPort ) {
-      if ( IsComputingNode() || IsFactoryNode() ) {
-        anOutPort->State( SUPERV::WaitingState ) ;
-        anOutPort->Done( false ) ;
-      }
-      else if ( IsOneOfInLineNodes() ) {
+      anOutPort->State( SUPERV::WaitingState ) ;
+      anOutPort->Done( false ) ;
+      const GraphBase::ComputingNode * aFromNode =  _OutNode->Graph()->GetGraphNode( anOutPort->NodeName() ) ; 
+      if ( aFromNode->IsGOTONode() || aFromNode->IsEndLoopNode() ) { // ASV: bug with synchronization of Inline nodes (via Gate ports) fixed.  
+                                       // before was "else if ( IsOneOfInlineNodes() )"
+                                      // IsOneOfInline() == ( Inline || IsOneOfGOTO() ), so Inline are removed..
         anOutPort->PortStatus( DataConnected );
         anOutPort->State( SUPERV::ReadyState ) ;
         anOutPort->Done( true ) ;
       }
     }
-//    if ( ( anInPort->IsGate() || anInPort->IsBus() ) && anOutPort == NULL ) {
     if ( anInPort->IsGate() && anOutPort == NULL ) {
       Pc-- ;
+      cdebug << "InPort" << i << " " << anInPort->PortName() << " Not connected Pc " << Pc << endl ;
     }
     else if ( anOutPort ) {
       if ( anOutPort->IsDataConnected() || anOutPort->IsDataStream() ) {
         Pc-- ;
-      }
-      if ( anOutPort->IsDataConnected() || anOutPort->IsDataStream() ) {
         anOutPort->State( SUPERV::ReadyState ) ;
         anOutPort->Done( true ) ;
+        cdebug << "InPort" << i << " " << anInPort->PortName() << " " << anInPort->PortStatus()
+               << " " << theAutomaton->StateName( anOutPort->State() ) << " Pc " << Pc << endl ;
       }
       else if ( anOutPort->IsPortConnected() ) {
         anOutPort->State( SUPERV::WaitingState ) ;
         anOutPort->Done( false ) ;
+        cdebug << "InPort" << i << " " << anInPort->PortName() << " " << " " << anInPort->PortStatus()
+               << " " << theAutomaton->StateName( anOutPort->State() ) << " Pc " << Pc << endl ;
       }
+      else {
+        cdebug << "InPort" << i << " " << anInPort->PortName() << " " << anInPort->PortStatus()
+               << " OutPort " << anOutPort->NodeName() << " " << anOutPort->PortName() << " "
+               << theAutomaton->StateName( anOutPort->State() ) << " Pc " << Pc << endl ;
+      }
+    }
+    else {
+      cdebug << "InPort" << i << " " << anInPort->PortName() << " " << " " << anInPort->PortStatus()
+             << " no corresponding OutPort Pc " << Pc << endl ;
     }
     if ( anOutPort ) {
       if ( !anOutPort->IsDataStream() || anInPort->IsDataStream() ) {
index ca7ec689f55ea643873dc267bad2d4f0fbad02cb..01007014b839f7c50bcab9c025221b2a81335013 100644 (file)
@@ -43,7 +43,7 @@
 
 #include "DataFlowExecutor_FiniteStateMachine.hxx"
 
-#define MAXSTACKTHREADSIZE 8191
+#define MAXSTACKTHREADSIZE 127
 
 void * run_function(void *p);
 
@@ -220,9 +220,9 @@ namespace GraphExecutor {
       void SetObjRef( SUPERV::CNode_var aNode ) {
                      _ComputingNode->SetObjRef( aNode ) ; } ;
 
-      Graph_Impl * ObjImpl() const { return _GraphMacroNode->ObjImpl() ; } ;
-      void SetObjImpl( Graph_Impl * aGraph ) {
-                       _GraphMacroNode->SetObjImpl( aGraph ) ; } ;
+      CNode_Impl * ObjImpl() const { return _ComputingNode->ObjImpl() ; } ;
+      void SetObjImpl( CNode_Impl * aGraph ) {
+                       _ComputingNode->SetObjImpl( aGraph ) ; } ;
 
       Engines::Component_var Component() const ;
       Engines::Container_var Container() const ;
@@ -464,6 +464,8 @@ namespace GraphExecutor {
       long PyCpuUsed( bool tot = false ) ;
       void SetPyCpuUsed() ;
       long PyCpu() ;
+
+      bool PyRunSimpleString( char* thePyString );
     } ;
 
 } ;
index 835c0e11d5693a9e87817aa783ce3a89f74f1c0f..18b6ade4da530c69c54d7af8fa4ac4f1ab510146 100644 (file)
@@ -54,10 +54,8 @@ using namespace std;
 #include CORBA_CLIENT_HEADER(SALOME_Component)
 #include "SALOME_LifeCycleCORBA.hxx"
 
-//#include "StreamGraph_Impl.hxx"
-
-//#include "DataFlowExecutor_OutNode.hxx"
 #include "DataFlowExecutor_DataFlow.hxx"
+#include "DataFlowEditor_DataFlow.hxx"   // GraphEditor package must be built BEFORE
 
 
 static void UpperCase(std::string& rstr)
@@ -611,6 +609,8 @@ void * run_function(void *p) {
     exit(0) ;
   }
   aNode->ThreadStartAction() ;
+//  cout << "run_function " << aNode->Name() << "->ExecuteAction() Coupled : " << aNode->CoupledNode()
+//       << endl ;
   aNode->ExecuteAction() ;
   char * msg = new char[40] ;
   sprintf( msg , "%d" , (int ) aNode->ThreadNo() ) ;
@@ -936,7 +936,9 @@ int GraphExecutor::InNode::DataWaiting_SomeDataReadyAction() {
       cdebug << endl ;
 // MacroNode : give immediately the value to the corresponding graph
       if ( IsMacroNode() ) {
-        GraphExecutor::DataFlow * aMacroGraph = GraphMacroNode()->CoupledNode()->GraphExecutor() ;
+        cout << "SomeDataReadyAction " << GraphMacroNode() << " " << GraphMacroNode()->Name()
+             << " coupled to " << GraphMacroNode()->CoupledNode() << endl ;
+        GraphExecutor::DataFlow * aMacroGraph = GraphMacroNode()->CoupledNode()->GraphEditor()->Executor() ;
         cdebug << "SomeDataReadyAction MacroNode " << aMacroGraph->Graph()->Name() << " --> InputOfAny "
                << InReady << "/" << GetNodeInPortsSize() << " InPorts are Ready" << endl ;
 //        GraphMacroNode()->MacroObject()->InputOfAny( anInPort->PortName() , *anOutPort->Value() ) ;
@@ -1518,8 +1520,9 @@ int GraphExecutor::InNode::DataReady_ExecuteAction() {
     SendEvent( NewEvent ) ;
   }
   else {
-    GraphExecutor::DataFlow * aMacroGraph = GraphMacroNode()->CoupledNode()->GraphExecutor() ;
-    cdebug << ThreadNo() << " DataReady_ExecuteAction " << aMacroGraph->Graph()->Name() << " ->DoneWait()"
+    GraphExecutor::DataFlow * aMacroGraph = GraphMacroNode()->CoupledNode()->GraphEditor()->Executor() ;
+    cdebug << ThreadNo() << " DataReady_ExecuteAction " << aMacroGraph << " "
+           << aMacroGraph->Graph()->Name() << " ->DoneWait()"
            << " State " << aMacroGraph->State() << endl;
     aMacroGraph->DoneWait() ;
     cdebug << ThreadNo() << " DataReady_ExecuteAction " << Name() << " State " << aMacroGraph->State() << endl;
@@ -1575,7 +1578,7 @@ int GraphExecutor::InNode::SuspendedExecuting_ResumeAction() {
 }
 
 int GraphExecutor::InNode::Executing_KillAction() {
-  cdebug << ThreadNo() << " Executing_KillAction " << Name() << endl;
+  cdebug << ThreadNo() << " Executing_KillAction " << Name() << " Thread " << ThreadNo()<< endl;
   int RetVal = 0 ;
   if ( pthread_self() == ThreadNo() ) {
     cdebug << "Executing_KillAction would pthread_canceled itself" << endl ;
@@ -1588,10 +1591,10 @@ int GraphExecutor::InNode::Executing_KillAction() {
     perror("Executing_KillAction pthread_cancel error") ;
   }
   else {
-    cdebug << "Executing_KillAction : ThreadId " << ThreadNo()
+    cdebug << pthread_self() << " Executing_KillAction : ThreadId " << ThreadNo()
            << " pthread_canceled" << endl ;
     KillAction() ;
-    _OutNode->ExitThread() ;
+    _OutNode->ExitThread( ThreadNo() ) ;
     _OutNode->PushEvent( this , GraphExecutor::KilledExecutingEvent ,
                          GraphExecutor::KilledExecutingState ) ; 
   }
@@ -1599,16 +1602,16 @@ int GraphExecutor::InNode::Executing_KillAction() {
 }
 
 int GraphExecutor::InNode::Executing_StopAction() {
-  cdebug << ThreadNo() << " Executing_StopAction " << Name() << endl;
+  cdebug << ThreadNo() << " Executing_StopAction " << Name() << " Thread " << ThreadNo() << endl;
   int RetVal = 0 ;
   if ( pthread_cancel( ThreadNo() ) ) {
     perror("Executing_KillAction pthread_cancel error") ;
   }
   else {
-    cdebug << "Executing_KillAction : ThreadId " << ThreadNo()
+    cdebug << pthread_self() << " Executing_KillAction : ThreadId " << ThreadNo()
            << " pthread_canceled" << endl ;
     StopAction() ;
-    _OutNode->ExitThread() ;
+    _OutNode->ExitThread( ThreadNo() ) ;
     _OutNode->PushEvent( this , GraphExecutor::StoppedExecutingEvent ,
                          GraphExecutor::StoppedExecutingState ) ; 
   }
@@ -1736,11 +1739,22 @@ void GraphExecutor::InNode::SetWaitingStates(GraphExecutor::InNode * EndNode ) {
            !anOutPort->ChangeInPorts( j )->IsDataStream() &&
            !anOutPort->ChangeInPorts( j )->IsExternConnected() ) {
         cdebug << ThreadNo()
-               << " GraphExecutor::InNodeThreads::SetWaitingStates "
-               << Name() << "( " << anOutPort->PortName() << " " << anOutPort->PortStatus() << " ) --> InPort "
+               << " InNodeThreads::SetWaitingStates OutPort "
+               << Name() << "/" << anOutPort->ChangeInPorts( j )->NodeName() << "( "
+               << anOutPort->PortName() << " " << anOutPort->PortStatus() << " ) --> InPort "
+               << anOutPort->ChangeInPorts( j )->NodeName() << "( "
                << anOutPort->ChangeInPorts( j )->PortName() << " "
-               << anOutPort->ChangeInPorts( j )->PortStatus() << " from Node "
-               << anOutPort->ChangeInPorts( j )->NodeName() << endl;
+               << anOutPort->ChangeInPorts( j )->PortStatus() << " )" << endl;
+        if ( strcmp( anOutPort->ChangeInPorts( j )->GetOutPort()->NodeName() , Name() ) ) {
+// After EndLoopNode or GOTONode the Input Ports of LoopNode or LabelNode have their values from
+// EndLoopNode or GOTONode. But if there is several nested loops we should re-establish.
+          cdebug << ThreadNo()
+                 << " InNodeThreads::SetWaitingStates OutPort->ChangeInPorts( j )->OutPort()->NodeName "
+                 << anOutPort->ChangeInPorts( j )->GetOutPort()->NodeName() << " != "
+                 << Name() << " : Restored to " << anOutPort->NodeName() << "( "
+                 << anOutPort->PortName() << " )" << endl ;
+          anOutPort->ChangeInPorts( j )->ChangeOutPort( anOutPort ) ;
+        }
         GraphExecutor::InNode * aNode = (GraphExecutor::InNode * ) _OutNode->Graph()->GetChangeGraphNode( anOutPort->ChangeInPorts( j )->NodeName() )->GetInNode() ;
         if ( aNode != EndNode ) {
           aNode->SetWaitingStates( EndNode ) ;
@@ -2791,9 +2805,11 @@ bool GraphExecutor::InNode::OutParametersSet( bool Err ,
           bool fromGOTO = false ;
           const char * ToNodeName = anOutPort->ChangeInPorts( j )->NodeName() ;
           if ( !strcmp( ToNodeName , _OutNode->Graph()->Name() ) && _OutNode->Graph()->GraphMacroLevel() != 0 ) {
-            cdebug << "OutParametersSet ToNodeName " << _OutNode->Graph()->CoupledNode()
-                   << " GraphExecutor " << _OutNode->Graph()->CoupledNode()->GraphExecutor() << endl ;
-            _OutNode->Graph()->CoupledNode()->GraphExecutor()->OutputOfAny( _OutNode->Graph()->CoupledNodeName() ,
+            cdebug << "OutParametersSet ToNodeName " << _OutNode->Graph()->Name() << " CoupledNode "
+                   << _OutNode->Graph()->CoupledNodeName() << _OutNode->Graph()->CoupledNode()
+                   << endl ;
+            cdebug << " GraphExecutor " << _OutNode->Graph()->CoupledNode()->GraphEditor()->Executor() << endl ;
+            _OutNode->Graph()->CoupledNode()->GraphEditor()->Executor()->OutputOfAny( _OutNode->Graph()->CoupledNodeName() ,
                                                                             anOutPort->ChangeInPorts( j )->PortName() ,
                                                                             *anOutPort->Value() ) ;
          }
index 26b81bffa3f9fef0aff5e4ca1ae247f284d5545d..810a7c58309db9654020baee6c2a4e492263edb6 100644 (file)
@@ -30,7 +30,7 @@ using namespace std;
 
 #include "DataFlowExecutor_OutNode.hxx"
 
-// Implementation de la classe GraphEditor::GraphControl
+#include "DataFlowEditor_DataFlow.hxx"
 
 extern GraphExecutor::FiniteStateMachine * theAutomaton ;
 
@@ -67,7 +67,7 @@ GraphExecutor::OutNode::OutNode( CORBA::ORB_ptr ORB,
                                  const SUPERV::KindOfNode aKindOfNode ) {
 //               Graph( ORB , ptrNamingService , DataFlowName , DebugFileName ) {
   Set_prof_debug( ORB , DebugFileName ) ;
-  cdebug_in << "GraphEditor::OutNode::OutNode(" << DataFlowName << " , " << aKindOfNode << ")" << endl;
+  cdebug_in << "GraphExecutor::OutNode::OutNode(" << DataFlowName << " , " << aKindOfNode << ")" << endl;
   if ( aKindOfNode == SUPERV::DataFlowGraph ) {
     _StreamGraph = NULL ;
 //    _Graph = new GraphBase::Graph( ORB , ptrNamingService , DataFlowName , DebugFileName ) ;
@@ -98,7 +98,7 @@ GraphExecutor::OutNode::OutNode( CORBA::ORB_ptr ORB,
     perror("pthread_cond_init( &_JoinWait , NULL )") ;
     exit( 0 ) ;
   }
-  cdebug_out << "GraphEditor::OutNode::OutNode" << endl;
+  cdebug_out << "GraphExecutor::OutNode::OutNode" << endl;
 }
 
 GraphExecutor::OutNode::OutNode( CORBA::ORB_ptr ORB, 
@@ -122,7 +122,7 @@ GraphExecutor::OutNode::OutNode( CORBA::ORB_ptr ORB,
 //                                        DataFlowComputer , DataFlowComment , DebugFileName ) {
   Set_prof_debug( ORB , DebugFileName ) ;
 
-  cdebug_in << "GraphEditor::OutNode::OutNode(" << DataFlowName << " , " << DataFlowkind << ")" << endl;
+  cdebug_in << "GraphExecutor::OutNode::OutNode(" << DataFlowName << " , " << DataFlowkind << ")" << endl;
   if ( DataFlowkind == SUPERV::DataFlowGraph ) {
     _StreamGraph = NULL ;
     _Graph = new GraphBase::Graph( ORB , ptrNamingService , DataFlowService , DataFlowComponentName ,
@@ -212,7 +212,8 @@ bool GraphExecutor::OutNode::LoadDataFlow(const GraphBase::SGraph * aDataFlow )
   else {
     cdebug << "GraphExecutor::OutNode::LoadDataFlow ServiceName Error." << endl ;
   }
-  cdebug_in << "GraphExecutor::OutNode::LoadDataFlow " << RetVal << endl ;
+  cdebug_out << "GraphExecutor::OutNode::LoadDataFlow " << Graph()->Name() << " RetVal "
+             << RetVal << endl ;
   return RetVal ;
 }
 
@@ -346,7 +347,6 @@ bool GraphExecutor::OutNode::LoadNodes(const GraphBase::ListOfSNodes &aListOfNod
       else {
         aCoupledNode->CoupledNodeName( aNode.theCoupledNode.c_str() ) ;
       }
-      aCoupledNode->SetGraphExecutor( (GraphExecutor::DataFlow * ) this ) ;
     }
   }
   return RetVal ;
@@ -484,7 +484,7 @@ bool GraphExecutor::OutNode::Executable() {
 
 bool GraphExecutor::OutNode::Run( const bool AndSuspend ) {
   bool RetVal = false ;
-  cdebug_in << "GraphExecutor::OutNode::Run" << endl;
+  cdebug_in << "GraphExecutor::OutNode::Run( AndSuspend " << AndSuspend << " )" << endl;
 
   if ( Executable() ) {
     _ControlState = SUPERV::VoidState ;
@@ -492,6 +492,7 @@ bool GraphExecutor::OutNode::Run( const bool AndSuspend ) {
     Graph()->ThreadNo( pthread_self() ) ;
     Done( false ) ;
     _JustStarted = true ;
+    RetVal = true ;
     int i ;
     for ( i = 0 ; i < Graph()->GraphNodesSize() ; i++ ) {
       GraphExecutor::InNode * anInNode = (GraphExecutor::InNode *) Graph()->GraphNodes( i )->GetInNode() ;
@@ -521,25 +522,26 @@ bool GraphExecutor::OutNode::Run( const bool AndSuspend ) {
        }
       }
     }
-
+    /* asv : 29.09.04 : commented out because it does not do anything useful 
     for ( i = 0 ; i < Graph()->GraphNodesSize() ; i++ ) {
       GraphExecutor::InNode * anInNode = (GraphExecutor::InNode *) Graph()->GraphNodes( i )->GetInNode() ;
-      if ( anInNode->IsMacroNode() ) {
+      if ( RetVal && anInNode->IsMacroNode() ) {
         GraphBase::Graph * aMacroGraph = anInNode->GraphMacroNode() ;
         cdebug << "GraphExecutor::OutNode::Run " << anInNode << " MacroNode " << aMacroGraph
                << aMacroGraph->Name() << endl ;
         SUPERV::Graph_var iobject = anInNode->GraphMacroNode()->MacroObject() ;
         if ( CORBA::is_nil( iobject ) ) {
-          cdebug << "MacroObject() is a nil object. Error" << endl ;
+          cdebug << "GraphExecutor::OutNode::Run MacroObject() is a nil object. Error" << endl ;
+          RetVal = false ;
        }
         else {
-          cdebug << "MacroObject() is NOT a nil object." << endl ;
+          cdebug << "GraphExecutor::OutNode::Run MacroObject() is NOT a nil object." << endl ;
        }
       }
     }
-
+    */
     if ( Graph()->GraphMacroLevel() != 0 ) {
-      cdebug << "Execution starting GraphExecutor::Action_DataOk_RunService Node "
+      cdebug << "GraphExecutor::OutNode::Run Execution starting GraphExecutor::Action_DataOk_RunService Node "
              << Graph()->Name() << " GraphMacroLevel " << Graph()->GraphMacroLevel() << endl ;
       PushEvent( NULL , GraphExecutor::NoDataReadyEvent ,
                  GraphExecutor::DataUndefState ) ; 
@@ -620,7 +622,8 @@ bool GraphExecutor::OutNode::Run( const bool AndSuspend ) {
     }
   }
 
-  cdebug_out << "GraphExecutor::OutNode::Run GraphMacroLevel " << Graph()->GraphMacroLevel() << endl ;
+  cdebug_out << "GraphExecutor::OutNode::Run " << Graph()->Name() << " GraphMacroLevel "
+             << Graph()->GraphMacroLevel() << " RetVal " << RetVal << endl ;
   return RetVal ;
 }
 
@@ -706,6 +709,8 @@ void GraphExecutor::OutNode::CheckAllDone() {
         Done( true ) ;
         _JustStarted = false ;
       }
+      cdebug << Graph()->Name() << " alivenodes " << alivenodes << " OutNodeState " << OutNodeState
+             << endl ;
       PushEvent( NULL , GraphExecutor::EndExecuteEvent ,
                  OutNodeState ) ;
 //      Py_Finalize() ;
@@ -721,15 +726,16 @@ void GraphExecutor::OutNode::CheckAllDone() {
     cdebug << Graph()->Name() << " IS DONE : " <<  theAutomaton->StateName( AutomatonState() ) << " EventQSize "
              << EventQSize() << endl  ;
     cdebug << "================================================================================" << endl ;
-//    ostringstream astr ;
-//    astr << "Graph " << Graph()->Name() << " is done : "
-//         << theAutomaton->StateName( AutomatonState() ) ;
-//    Graph()->ObjImpl()->sendMessage( NOTIF_STEP, astr.str().c_str() ) ;
-    //cout << Graph()->Name() << " IS DONE : " <<  theAutomaton->StateName( AutomatonState() ) << " EventQSize "
-    //     << EventQSize() << endl  ;
-  }
-  cdebug_out << "GraphExecutor::OutNode::CheckAllDone " << IsDone()
-             << " GraphAutomatonState " << theAutomaton->StateName( AutomatonState() )
+
+    // asv : fix for 6798 and other bugs: "sift" the event queue after execution
+    siftEvents();
+
+    // asv : 25.10.04 : calling Editing() to indicate stop of execution
+    Graph()->GraphEditor()->Editing();
+  }
+  cdebug_out << "GraphExecutor::OutNode::CheckAllDone " << IsDone() << " this " << this << " "
+             << Graph()->Name() << " GraphAutomatonState "
+             << theAutomaton->StateName( AutomatonState() )
              << " State " << State() << " Threads " << _Threads << " SuspendedThreads "
              << _SuspendedThreads << " EventQSize " << EventQSize() << endl ;
 }
@@ -795,19 +801,22 @@ void GraphExecutor::OutNode::NewThread() {
   }
 }
 
-void GraphExecutor::OutNode::ExitThread() {
+void GraphExecutor::OutNode::ExitThread( pthread_t ThreadNumber ) {
   if ( pthread_mutex_lock( &_MutexWait ) ) {
     perror("pthread_mutex_lock _ExitThread") ;
     exit( 0 ) ;
   }
+  if ( ThreadNumber == 0 ) {
+    ThreadNumber = pthread_self() ;
+  }
   _Threads -= 1 ;
-  theAutomaton->JoinThread( pthread_self() ) ;
+  cdebug << pthread_self() << " ExitThread( " << ThreadNumber << " ) " << _Threads << " running threads "
+         << _SuspendedThreads << " suspended threads"
+         << endl ;
+  theAutomaton->JoinThread( ThreadNumber ) ;
   if ( pthread_cond_signal( &_JoinWait ) ) {
     perror("ExitThread pthread_cond_signal ") ;
   }
-  cdebug << "ExitThread : " << _Threads << " running threads "
-         << _SuspendedThreads << " suspended threads"
-         << endl ;
   if ( pthread_mutex_unlock( &_MutexWait ) ) {
     perror("pthread_mutex_unlock _ExitThread") ;
     exit( 0 ) ;
@@ -1177,15 +1186,14 @@ bool GraphExecutor::OutNode::PushEvent( GraphExecutor::InNode * aNode ,
     perror("PushEvent pthread_mutex_lock ") ;
     exit( 0 ) ;
   }
-  if ( aNode ) {
-    _EventNodes.push_back( aNode->Name() ) ;
-  }
-  else {
-    _EventNodes.push_back( Graph()->Name() ) ;
-  }
+  char* aNodeName = aNode ? aNode->Name() : Graph()->Name() ;
+  _EventNodes.push_back( aNodeName ) ;
   _Events.push_back( anEvent ) ;
   _States.push_back( aState ) ;
+
   pthread_cond_broadcast( &_EventWait );
+  cdebug << pthread_self() << " PushEvent Threads " << Threads() << " SuspendedThreads "
+         << SuspendedThreads() << " pthread_cond_broadcast _EventWait " << &_EventWait << endl ;
   if ( aNode ) {
 //    cdebug << aNode->ThreadNo() << " PushEvent " << aNode->Name() ;
 //    cdebug << " " << aNode->Automaton()->EventName( anEvent )
@@ -1224,6 +1232,13 @@ bool GraphExecutor::OutNode::Event( char ** aNodeName ,
                                     SUPERV::GraphEvent & anEvent ,
                                     SUPERV::GraphState & aState ,
                                     bool WithWait ) {
+  // asv : fixing problem of loops with large number of iterations (>5000)
+  // experimentally was found that number of non-handled by GUI events = (number_of_nodes x 7)
+  // or 7 events for each node - so what we want to do here is remove "old" events for nodes
+  // "on the fly".  Once again it is done in Stop(), Kill(), Done() functions.
+  if ( _EventNodes.size() > (unsigned int)Graph()->GraphNodesSize()*7 )
+    siftEvents();
+
   int ThreadsNumber ;
   int SuspendedThreadsNumber ;
   if ( _EventNodes.size() > 0 ) {
@@ -1287,7 +1302,8 @@ bool GraphExecutor::OutNode::Event( char ** aNodeName ,
     exit( 0 ) ;
   }
   if ( _EventNodes.size() > 0 ) {
-    cdebug_out << "GraphExecutor::OutNode::Event " << _EventNodes.size() << " in queue" << endl ;
+    cdebug_out << "GraphExecutor::OutNode::Event " << _EventNodes.size() << " in queue"
+               << *aNodeName << " " << anEvent << " " << aState << endl ;
   }
   return RetVal ;
 }
@@ -1522,9 +1538,13 @@ GraphExecutor::AutomatonState GraphExecutor::OutNode::AutomatonState() {
 GraphExecutor::AutomatonState GraphExecutor::OutNode::AutomatonState( const char * NodeName ) {
 //  cdebug_in << "GraphExecutor::OutNode::AutomatonState " << NodeName << endl;
   GraphExecutor::AutomatonState aret = GraphExecutor::UnKnownState ;
-  GraphExecutor::InNode *anInNode = (GraphExecutor::InNode *) Graph()->GetGraphNode( NodeName )->GetInNode() ;
-  if ( anInNode )
-    aret = anInNode->State() ;
+  const GraphBase::ComputingNode * aNode = Graph()->GetGraphNode( NodeName ) ;
+  if ( aNode ) {
+    GraphExecutor::InNode *anInNode = (GraphExecutor::InNode *) aNode->GetInNode() ;
+    if ( anInNode ) {
+      aret = anInNode->State() ;
+    }
+  }
 //  cdebug_out << "GraphExecutor::OutNode::AutomatonState" << endl ;
   return aret ;
 }
@@ -1538,9 +1558,13 @@ SUPERV::ControlState GraphExecutor::OutNode::ControlState() {
 SUPERV::ControlState GraphExecutor::OutNode::ControlState( const char * NodeName ) {
 //  cdebug_in << "GraphExecutor::OutNode::ControlState " << NodeName << endl;
   SUPERV::ControlState aret = SUPERV::VoidState ;
-  GraphExecutor::InNode *anInNode = (GraphExecutor::InNode *) Graph()->GetGraphNode( NodeName )->GetInNode() ;
-  if ( anInNode )
-    aret = anInNode->ControlState() ;
+  const GraphBase::ComputingNode * aNode = Graph()->GetGraphNode( NodeName ) ;
+  if ( aNode ) {
+    GraphExecutor::InNode *anInNode = (GraphExecutor::InNode *) aNode->GetInNode() ;
+    if ( anInNode ) {
+      aret = anInNode->ControlState() ;
+    }
+  }
 //  cdebug_out << "GraphExecutor::OutNode::ControlState" << endl ;
   return aret ;
 }
@@ -1553,9 +1577,13 @@ void GraphExecutor::OutNode::ControlClear() {
 
 void GraphExecutor::OutNode::ControlClear( const char * NodeName ) {
 //  cdebug_in << "GraphExecutor::OutNode::ControlClear " << NodeName << endl;
-  GraphExecutor::InNode *anInNode = (GraphExecutor::InNode *) Graph()->GetGraphNode( NodeName )->GetInNode() ;
-  if ( anInNode )
-    anInNode->ControlClear() ;
+  const GraphBase::ComputingNode * aNode = Graph()->GetGraphNode( NodeName ) ;
+  if ( aNode ) {
+    GraphExecutor::InNode *anInNode = (GraphExecutor::InNode *) aNode->GetInNode() ;
+    if ( anInNode ) {
+      anInNode->ControlClear() ;
+    }
+  }
 //  cdebug_out << "GraphExecutor::OutNode::ControlClear" << endl ;
 }
 
@@ -1586,7 +1614,7 @@ bool GraphExecutor::OutNode::IsDone() {
 bool GraphExecutor::OutNode::IsSuspended() {
 //  cdebug_in << "GraphExecutor::OutNode::IsSuspended" << endl;
   bool aret = false ;
-  if ( _SuspendedThreads == _Threads ) {
+  if ( _SuspendedThreads == _Threads && _Threads != 0 ) {
     aret = true ;
   }
 //  cdebug_out << "GraphExecutor::OutNode::IsSuspended" << endl ;
@@ -1839,7 +1867,15 @@ bool GraphExecutor::OutNode::Kill() {
     MESSAGE( Graph()->Name() << " IS NOT KILLED" ) ;
     MESSAGE("================================================================================") ;
   }
-  cdebug_out << "GraphExecutor::OutNode::Kill " << RetVal << endl ;
+  cdebug_out << "GraphExecutor::OutNode::Kill " << RetVal
+             << " Threads " << _Threads << " SuspendedThreads " << _SuspendedThreads  << endl ;
+
+  // remove "extra" events from the event queue
+  siftEvents();
+
+  // asv : 25.10.04 : calling Editing() to indicate stop of execution
+  Graph()->GraphEditor()->Editing();
+
   return RetVal ;
 }
 
@@ -1916,7 +1952,7 @@ bool GraphExecutor::OutNode::RunningWait() {
 }
 
 bool GraphExecutor::OutNode::DoneWait() {
-  cdebug_in << "GraphExecutor::OutNode::DoneWait" << endl;
+  cdebug_in << pthread_self() << " GraphExecutor::DoneWait " << this << " " << Graph()->Name() << endl;
   bool aret ;
   if ( pthread_mutex_lock( &_MutexWait ) ) {
     perror("pthread_mutex_lock _DoneWait") ;
@@ -1924,16 +1960,19 @@ bool GraphExecutor::OutNode::DoneWait() {
   }
   aret = IsDone() ;
   while ( !aret && !IsSuspended() && IsRunning() ) {
-    cdebug << "DoneWait pthread_cond_wait _EventWait" << endl;
+    cdebug << pthread_self() << " GraphExecutor::DoneWait " << this << " " << Graph()->Name()
+           << " DoneWait pthread_cond_wait _EventWait " << &_EventWait << endl;
     pthread_cond_wait( &_EventWait , &_MutexWait );
     aret = IsDone() ;
-    cdebug << "DoneWait pthread_cond_waited _EventWait " << aret << endl;
+    cdebug << pthread_self() << " GraphExecutor::DoneWait " << this << " " << Graph()->Name()
+           << " DoneWait pthread_cond_waited _EventWaited " << &_EventWait << " : "<< aret << endl;
   }
   if ( pthread_mutex_unlock( &_MutexWait ) ) {
     perror("pthread_mutex_lock _DoneWait") ;
     exit( 0 ) ;
   }
-  cdebug_out << "GraphExecutor::OutNode::DoneWait " << aret << endl ;
+  cdebug_out << pthread_self() << " GraphExecutor::DoneWait " << this << " " << Graph()->Name()
+             << " " << State() << " : " << aret << endl ;
   return aret ;
 }
 
@@ -2052,4 +2091,36 @@ const long GraphExecutor::OutNode::CpuUsed( const char * aNodeName ) {
   return 0 ;
 }
 
+// remove equal sets "Node-Event-State" from _EventNodes/_Events/_States queues
+void GraphExecutor::OutNode::siftEvents() {
+  list<char*>::reverse_iterator itNodes = _EventNodes.rbegin();
+  list<GraphExecutor::NodeEvent>::reverse_iterator itEvents = _Events.rbegin();
+  list<GraphExecutor::AutomatonState>::reverse_iterator itStates = _States.rbegin();
+  list<char*> _NewEventNodes;
+  list<GraphExecutor::NodeEvent> _NewEvents;
+  list<GraphExecutor::AutomatonState> _NewStates;
+  for ( ; itNodes != _EventNodes.rend() ; ++itNodes, ++itEvents, ++itStates) {
+    //cout << "----- aNodeName ==> " << *itNodes;
+    list<char*>::reverse_iterator itNewNodes = _NewEventNodes.rbegin();
+    bool found = false;
+    for ( ; itNewNodes != _NewEventNodes.rend() ; ++itNewNodes ) {
+      if ( !strcmp( *itNewNodes, *itNodes ) ) {
+       found = true;
+       break;
+      }
+    }
 
+    if ( found ) {
+      //cout << "   FOUND";
+    }
+    else {
+      _NewEventNodes.push_back( *itNodes );
+      _NewEvents.push_back( *itEvents );
+      _NewStates.push_back( *itStates );
+    }
+    //cout << endl;
+  }
+  _EventNodes = _NewEventNodes;
+  _Events = _NewEvents;
+  _States = _NewStates;
+}
index 72c38db464baf2be85d7b1b25d4c053a75a6992a..a882cf32bcb8228736553f89453b4b747f828e18 100644 (file)
@@ -75,6 +75,10 @@ namespace GraphExecutor {
 
       CORBA::ORB_ptr _Orb ;
 
+      // scan (reverse) the _EventNodes queue and leave only 1 (the last one that came) 
+      // event for every node
+      void siftEvents();
+
     public :
   
       OutNode() ;
@@ -152,7 +156,7 @@ namespace GraphExecutor {
       void PyThreadUnLock() ;
 
       void NewThread() ;
-      void ExitThread() ;
+      void ExitThread( pthread_t ThreadNumber = 0 ) ;
       void SuspendThread() ;
       void ResumeThread() ;
       long Threads() { return _Threads ; } ;
index 22ac4d0be1f10593360f6fe9bc285f7f146b1002..0d39581f47f86f582c4985afb5fa38b7add7986d 100644 (file)
@@ -15,6 +15,9 @@ using namespace std;
 #include <map>
 
 #include "DataFlowExecutor_InNode.hxx"
+#include "DataFlowExecutor_OutNode.hxx"
+
+#include "CASCatch_SignalsHandler.h" // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
 using namespace CORBA ;
 
@@ -128,8 +131,8 @@ PyObject * GraphExecutor::InNode::InitPyDynInvoke( char * PyFuncName ,
         aPyFunc += PyFuncName ;
         aPyFunc += " )\n" ;
         /*cdebug *///cout<< "InitPyDynInvoke PyRun_SimpleString " << endl << aPyFunc << endl ;
-        if ( PyRun_SimpleString( (char *) aPyFunc.c_str() ) ) {
-          cdebug << ThreadNo() << " " << Name() << " PyRun_SimpleString ERROR " << endl << aPyFunc << endl ;
+        if ( PyRunSimpleString( (char *) aPyFunc.c_str() ) ) {
+          cdebug << ThreadNo() << " " << Name() << " PyRunSimpleString ERROR " << endl << aPyFunc << endl ;
           RetVal = false ;
           Err = true ;
         }
@@ -138,7 +141,7 @@ PyObject * GraphExecutor::InNode::InitPyDynInvoke( char * PyFuncName ,
           thePyRunMethod = MyPyRunMethod ;
          
           Automaton()->PyFunction( PyFuncName , thePyRunMethod ) ;
-          cdebug << ThreadNo() << "PyRun_SimpleString( " << (*aPythonFunction)[ 0 ] << " ) " << endl ;
+          cdebug << ThreadNo() << "PyRunSimpleString( " << (*aPythonFunction)[ 0 ] << " ) " << endl ;
         }
       }
       if ( RetVal ) {
@@ -552,3 +555,31 @@ bool GraphExecutor::InNode::PyDynInvoke( PyObject * MyPyRunMethod ,
   return RetVal ;
 
 }
+
+// This method was created in order to wrap PyRun_SimpleString() with exception handling wrapper.
+// Python does not throw usual C++ style exceptions, so try-catch construct does not work for this
+// purpose.  Instead Python raises signals.  If these signals are not caught by the application
+// it will be caught by the OS and the application will be terminated : BUG PAL6869
+// Declaring CASCatch_SignalsHandler object redefines (!) standard C++ reserved words "try" and "catch".
+// Standard_Failure "exception" is a signal in fact, and it will be caught in the catch section.
+// Why do we finalize and re-initialize Python after catching the signal?  Because the Python stack
+// is corrupted after that.
+// Declaration of CASCatch_SignalsHandler forces us to add linkage with CASCADE libraries.. See Makefile.in.
+bool GraphExecutor::InNode::PyRunSimpleString( char* thePyString )
+{
+  CASCatch_SignalsHandler aSignalsHandler;
+  const bool ErrorValue = true;
+  bool aRet;
+  try {
+    aRet = PyRun_SimpleString( thePyString );
+  } catch( Standard_Failure ) {
+    MESSAGE( "ERROR: Exception caught running Python method." );
+    MESSAGE( "       Python was reinitialized.  Previous Python definitions are lost" );
+    Py_Finalize();
+    Py_Initialize();
+    Py_InitModule( "InitPyRunMethod" , MethodPyRunMethod );
+    _OutNode->PyInitialized( false );
+    aRet = ErrorValue;
+  }
+  return aRet;
+}
index ccf0b54623e3d08f34cc70428730a86cd4a1cda5..10707c953561b62b7c75c442b4622248adb8f57f 100644 (file)
@@ -45,11 +45,11 @@ LIB_CLIENT_IDL = SALOME_ModuleCatalog.idl \
 BIN_SRC = 
 BIN_SERVER_IDL = 
 
-CPPFLAGS+= $(PYTHON_INCLUDES) $(QT_MT_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) \
+CPPFLAGS+= $(PYTHON_INCLUDES) $(QT_MT_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) \
        -I${KERNEL_ROOT_DIR}/include/salome
-CXXFLAGS+= -g -D_DEBUG_ -D__x86__ -D__linux__ -ftemplate-depth-42 -Wall \
+CXXFLAGS+= -g -D__x86__ -D__linux__ -ftemplate-depth-42 -Wall \
        -I${KERNEL_ROOT_DIR}/include/salome
-LDFLAGS+= -export-dynamic -lSalomeNS -lSalomeLifeCycleCORBA -lSalomeSuperVisionBase -lOpUtil -lSALOMELocalTrace \
+LDFLAGS+= -export-dynamic -lSalomeNS -lSalomeLifeCycleCORBA -lSalomeSuperVisionBase -lSalomeSuperVisionEditor -lOpUtil -lSALOMELocalTrace -lCASCatch\
        -lc $(QT_MT_LIBS) $(OGL_LIBS) \
        -L${KERNEL_ROOT_DIR}/lib/salome
 #LIBS += -Xlinker -export-dynamic $(PYTHON_LIBS)
index cbd9e23993ef69bb4b01267502e2e517606091a5..a5b7bf22a8b6756a8e365bd22e3d083e5cac78bb 100644 (file)
@@ -31,6 +31,6 @@ VPATH=.:@srcdir@
 
 @COMMENCE@
 
-SUBDIRS = GraphBase GraphExecutor GraphEditor Supervision SUPERVGUI
+SUBDIRS = GraphBase GraphEditor GraphExecutor Supervision SUPERVGUI
 
 @MODULE@
index f622c04f0a455db9d257d8b2e6889237e06d3eec..e4c6bf35945c240f6361288c63da5275e45b132e 100644 (file)
@@ -108,10 +108,10 @@ QAD_StudyFrame* SUPERVGUI::createGraph() {
   QAD_StudyFrame* aStudyFrame = study->newWindow3d(study->getNextStudyFrameName(),
                                                   VIEW_GRAPHSUPERV, false);
   if (aStudyFrame) {
-    connect(aStudyFrame
-           SIGNAL(sfStudyFrameClosing(QAD_StudyFrame*)), 
+    connect(study
+           SIGNAL(supervStudyFrameClosing(QAD_ViewFrame*)), 
            &Supervision, 
-           SLOT(onGraphClosed(QAD_StudyFrame*)));
+           SLOT(onGraphClosed(QAD_ViewFrame*)));
   }
   return aStudyFrame;
 }
@@ -199,14 +199,50 @@ bool SUPERVGUI::isContains(QAD_Study* theStudy, const QString theKey) {
 }
 
 
-void SUPERVGUI::onGraphClosed(QAD_StudyFrame* theStudyFrame) {
-  QAD_ViewFrame* viewFrame = theStudyFrame->getRightFrame()->getViewFrame();
-  if(SUPERVGraph_ViewFrame* supervFrame = dynamic_cast<SUPERVGraph_ViewFrame*>(viewFrame)){
-    disconnect(theStudyFrame, 0 , this, 0);
+void SUPERVGUI::onGraphClosed(QAD_ViewFrame* theViewFrame) {
+  if(SUPERVGraph_ViewFrame* supervFrame = dynamic_cast<SUPERVGraph_ViewFrame*>(theViewFrame)){
+    disconnect(study, 0 , this, 0);
     SUPERVGraph_View* view = supervFrame->getViewWidget();
     SUPERVGUI_Main* aGraph = dynamic_cast<SUPERVGUI_Main*>(view);
     if (aGraph) {
       unregisterGraph(aGraph);
+      SUPERV_Graph aDataFlow = aGraph->getDataflow();
+      if ( !SUPERV_isNull( aDataFlow ) ) {
+       if ( aDataFlow->IsExecuting() ) {
+         const int aMsgResult = QMessageBox::warning(QAD_Application::getDesktop(),
+                                                     tr("WARNING"), 
+                                                     tr("MSG_DF_RUNNING"), 
+                                                     tr("MSG_DF_EXECUTION"), 
+                                                     tr("MSG_DF_KILL"));
+         if ( aMsgResult == 1 ) {
+           // KILL EXECUTION
+           if ( aDataFlow->Kill() ) {
+             // Kill() sends KillEvent and KillState to SUPERVGUI_Thread
+             // while sets myIsActive flag to false when it receives such event/state
+             // after myIsActive is false it calls QThread::exit() to terminate.
+
+             // why while() { qApp->processEvents() } ?
+             // because: SUPERVGUI_Thread::run() receives events, and calls myMain->execute()
+             // method using SALOME_Event paradigm, ProcessVoidEvent() function - 
+             // it puts this event to the main application event loop, in which we are being now.
+             // So if we block main GUI application thread (by calling aGraph->getMyThread()->wait() here)
+             // then we will have a deadlock of 2 threads waiting for one another 
+             while (aGraph->getMyThread()->running()) 
+               qApp->processEvents();
+           }
+         }
+         else { // BACKGROUND EXECUTION
+           emit KillMainThread(true); // set SUPERVGUI_Thread::myIsActive to false
+           while ( aGraph->getMyThread()->running() )
+             qApp->processEvents();
+         }
+       }
+       else { // EXECUTION IS FINISHED, JUST DESTROY THE SUPERVGUI_Thread object and return.
+         emit KillMainThread(true);
+         while ( aGraph->getMyThread()->running() ) 
+           qApp->processEvents();
+       }
+      }
     }
   }
 }
@@ -222,8 +258,10 @@ void SUPERVGUI::setMain(QWidget* w) {
   QAD_ViewFrame* viewFrame = aStudyFrame->getRightFrame()->getViewFrame();
   if(SUPERVGraph_ViewFrame* supervFrame = dynamic_cast<SUPERVGraph_ViewFrame*>(viewFrame)){
     SUPERVGraph_View* view = supervFrame->getViewWidget();
-    if (view)
+    if (view) {
       main = dynamic_cast<SUPERVGUI_Main*>(view);
+      connect(&Supervision, SIGNAL(KillMainThread(bool)), main->getMyThread(), SLOT(KillThread(bool)));
+    }
   }
   Trace("SUPERVGUI::setMain - main: "<<main);
 }
@@ -283,11 +321,22 @@ void SUPERVGUI::displayDataflow() {
                                 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No)
          return;
       }
-      aDataFlow = engine->getStreamGraph(ior);
+      //aDataFlow = engine->getStreamGraph(ior);
+      aDataFlow = engine->getGraph(ior);
       if (SUPERV_isNull(aDataFlow)) {
        QMessageBox::warning(0, tr("ERROR"), tr("MSG_ACCESS_BAD_IOR"));
        return;
       }
+      /* ASV: 20.10.04: fix for 6896
+      if (aDataFlow->IsStreamGraph()) {
+       SUPERV_StreamGraph aDataFlowStream = aDataFlow->ToStreamGraph();
+       if (SUPERV_isNull(aDataFlowStream)) {
+         QMessageBox::warning(0, tr("ERROR"), tr("MSG_ACCESS_BAD_IOR"));
+         return;
+       }
+       aDataFlow = aDataFlowStream;
+      }
+      */
     }
     QAD_StudyFrame* aStudyFrame = createGraph();
     SUPERVGraph_ViewFrame* aViewFrame = dynamic_cast<SUPERVGraph_ViewFrame*>
@@ -315,7 +364,6 @@ void SUPERVGUI::renameDataflow() {
       if (obj->FindAttribute(anAttr, "AttributeName")) {
        aName = SALOMEDS::AttributeName::_narrow(anAttr);
        QString nm = QString( aName->Value() );
-       bool ok = FALSE;
        nm = SALOMEGUI_NameDlg::getName( QAD_Application::getDesktop(), nm );
        if ( !nm.isEmpty() ) {
          QApplication::setOverrideCursor( Qt::waitCursor );
@@ -349,11 +397,22 @@ void SUPERVGUI::exportDataflow() {
 
 void SUPERVGUI::newDataflow() {
     Trace("SUPERVGUI::editDataflow");
+
+    //asv 20.10.04: removed 2 SUPERVGUI_Main constructors.  there is only ONE way 
+    //to create a Main object now: with a non-null DataFlow as a 3d parameter
+    //1. create a Graph object
+    SUPERV_Graph aNewDataFlow = engine->StreamGraph( MAIN_NEW );
+    if (SUPERV_isNull( aNewDataFlow )) {
+      QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_CANT_CREATE_DF"));
+      return;
+    }
+    //2. create a ViewFrame object
     QAD_StudyFrame* aStudyFrame = createGraph();
     SUPERVGraph_ViewFrame* aViewFrame = dynamic_cast<SUPERVGraph_ViewFrame*>
       (aStudyFrame->getRightFrame()->getViewFrame());
     if(aViewFrame){
-      main = new SUPERVGUI_Main(aViewFrame, desktop, false);
+      //3. bind Graph and ViewFrame -> create Main
+      main = new SUPERVGUI_Main(aViewFrame, desktop, aNewDataFlow );
       main->addNode();
       study->showFrame(aStudyFrame);
     }
@@ -526,9 +585,16 @@ void SUPERVGUI::whatIsSelected(const Handle(SALOME_InteractiveObject)& theObj, b
          SALOMEDS::GenericAttribute_var anAttr;
          if (obj->FindAttribute(anAttr, "AttributeIOR")) {
            SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
-           SUPERV_Graph aDataFlow = engine->getStreamGraph(anIOR->Value());
-           if (!SUPERV_isNull(aDataFlow)) 
-             theIsDataflow = true;
+           //SUPERV_Graph aDataFlow = engine->getStreamGraph(anIOR->Value());
+           SUPERV_Graph aDataFlow = engine->getGraph(anIOR->Value());
+           if (!SUPERV_isNull(aDataFlow)) {
+             if (aDataFlow->IsStreamGraph()) {
+               if (!SUPERV_isNull(aDataFlow->ToStreamGraph()))
+                 theIsDataflow = true;
+             }
+             else
+               theIsDataflow = true;
+           }
          }
          CORBA::String_var anObjectID = obj->GetID();
          CORBA::String_var aComponentID = comp->GetID();
index 977e71950a4604695d7cc88621c06eea5ec9faba..06c87a561bcb2680feb93d1acaff5bcf1c1ff318 100644 (file)
@@ -100,12 +100,15 @@ class SUPERVGUI: public SALOMEGUI {
     */
     void whatIsSelected(const Handle(SALOME_InteractiveObject)& theObj, bool& theIsOwner, bool& theIsDataflow);
 
+  signals:
+    void KillMainThread(bool theValue);
+
   private slots:
     void setMain(QWidget* w);
     void displayDataflow();
     void renameDataflow();
     void deleteObject();
-    void onGraphClosed(QAD_StudyFrame* );
+    void onGraphClosed(QAD_ViewFrame* );
 
   private:
     void loadEngine(SALOME_NamingService* namingService);
index 239575ee11a0d10b0dc06c0066e340be4c9bfe2a..dd0939e97fdef71e409a0505fbfb0d70fc164fcc 100644 (file)
@@ -69,7 +69,6 @@ bool SUPERVGUI_PortField::setNewValue() {
   if ( aTxt.isNull() || aTxt.isEmpty() ) return false;
   
   if ( aTxt.find( "Unknown" ) < 0 ) {
-  //cout<<" ===>  Set new value!"<<endl;
     return myPort->Input( Supervision.getEngine()->StringValue( aTxt ) );
   }
   return false;
index 3ca35955ef66619a8ff9cf172dbb5d572e9bfe81..fb1f77cf38661bbe4f61fd2b0308a312182f5143 100644 (file)
@@ -157,7 +157,7 @@ void SUPERVGUI_Canvas::updateLinks()
 }
 
 void SUPERVGUI_Canvas::sync() {
-  //  cout << "===> SUPERVGUI_Canvas::sync()"   << endl;
+  //  MESSAGE("===> SUPERVGUI_Canvas::sync()");
   if (SUPERV_isNull(myMain->getDataflow())) return;
       
   SUPERVGUI_CanvasNode* ihmNode;
@@ -174,7 +174,7 @@ void SUPERVGUI_Canvas::sync() {
  * Synchronizes Graph presentation with internal graph structure
  */
 void SUPERVGUI_Canvas::merge() {
-  //  cout << "===> SUPERVGUI_Canvas::merge()"   << endl;
+  //  MESSAGE("===> SUPERVGUI_Canvas::merge()");
   if (SUPERV_isNull(myMain->getDataflow())) return;
       
   SUPERVGUI_CanvasNode* ihmNode;
@@ -190,14 +190,12 @@ void SUPERVGUI_Canvas::merge() {
   MESSAGE("Graphs="<<nodes->Graphs.length());
 
   int n;
-  //cout << "  update nodes " << endl;
   UPDATENODES(CNodes, addComputeNode);
   UPDATENODES(FNodes, addComputeNode);
   UPDATENODES(INodes, addComputeNode);
   UPDATENODES(Graphs, addMacroNode);
   UPDATENODES(GNodes, addGOTONode);
 
-  //cout << "  update control nodes " << endl;
   UPDATECONTROLNODES(LNodes);    
   UPDATECONTROLNODES(SNodes);
 
@@ -210,7 +208,6 @@ void SUPERVGUI_Canvas::merge() {
   delete ihmList;
 
   // update links
-  //cout << "  update links " << endl;
   SUPERVGUI_CanvasLink* ihmLink;
   ihmList = queryList("SUPERVGUI_CanvasLink");
   /*
@@ -218,14 +215,12 @@ void SUPERVGUI_Canvas::merge() {
   */
   //SUPERV_Links links = myMain->getDataflow()->Links();
   SUPERV_Links links = myMain->getDataflow()->GLinks();
-  //cout << "===> Number of links " <<  links->length()  << endl;
   for (int i = 0; i < links->length(); i++) {
     UPDATELINK(links[i]);
   }
 
   /*
   SUPERV_StreamLinks slinks = myMain->getDataflow()->StreamLinks();
-  //cout << "===> Number of stream links " <<  slinks->length()  << endl;
   for (int i = 0; i < slinks->length(); i++) {
     UPDATELINK(slinks[i]);
   }
@@ -235,7 +230,6 @@ void SUPERVGUI_Canvas::merge() {
     SUPERV_StreamGraph aSGraph = myMain->getDataflow()->ToStreamGraph();
     if (!SUPERV_isNull(aSGraph)) {
       SUPERV_StreamLinks slinks = aSGraph->StreamLinks(); // <<- doesn't work!!!
-  //cout << "===> Number of stream links " <<  slinks->length()  << endl;
       for (int i = 0; i < slinks->length(); i++) {
        UPDATELINK(slinks[i]);
       }
@@ -276,7 +270,6 @@ void SUPERVGUI_Canvas::merge() {
     delete ihmLink;
   }
   delete ihmList;
-  //cout << "     merge done " << endl;
 }
 
 void SUPERVGUI_Canvas::setAsFromStudy(bool theToStudy)
index 21991ae60dd263c14737acc85bf496d8c17adec6..400fa1e6a4167969c5ebcf643585974dc90eadc6 100644 (file)
@@ -185,8 +185,10 @@ void SUPERVGUI_CanvasGotoNode::linkToNode() {
   SUPERVGUI_SelectInlineDlg* aDlg = new SUPERVGUI_SelectInlineDlg(getMain());
   if (aDlg->exec()) {
     QString aNodeName = aDlg->getName();
-    getGotoNode()->SetCoupled(aNodeName.latin1());
-    getMain()->getCanvas()->sync();
+    if (!aNodeName.isEmpty()) { //implement additional check from GUI side for bug PAL7007
+      getGotoNode()->SetCoupled(aNodeName.latin1());
+      getMain()->getCanvas()->sync();
+    }
   }
   delete aDlg;
 }
index 4ed27d15d741bcbf2d62166426ce14cf7768a114..74b6b762b769fd65dfb1bf8a7d8466a76c5a820c 100644 (file)
@@ -522,6 +522,12 @@ void SUPERVGUI_CanvasPointPrs::moveBy(double dx, double dy)
   QCanvasEllipse::moveBy(dx, dy);
   if (myInEdge) myInEdge->setFromPoint((int)x(), (int)y());
   if (myOutEdge) myOutEdge->setToPoint((int)x(), (int)y());
+  //resize canvas view if mouse is outside
+  int w = (int)(x()+dx) + width() + GRAPH_MARGIN;
+  int h = (int)(y()+dy) + height() + GRAPH_MARGIN;
+  if (canvas()->width() > w) w = canvas()->width();
+  if (canvas()->height() > h) h = canvas()->height();
+  if (canvas()->width() < w || canvas()->height() < h) canvas()->resize(w, h);
   if (myIndex > 0 && isMoving()) {
     myLink->getEngine()->ChangeCoord(myIndex, (int)x(), (int)y());
   }
index ce06ff84ae4090c0cd60e43f995380ac4ac94da7..273f161e23e90f68ea200e91d5eaa7545b930e42 100644 (file)
@@ -35,7 +35,6 @@ SUPERVGUI_CanvasNode::SUPERVGUI_CanvasNode(QObject* theParent, SUPERVGUI_Main* t
     myBrowseDlg(0)
 {
   Trace("SUPERVGUI_CanvasNode::SUPERVGUI_CanvasNode");
-  //cout << "===> SUPERVGUI_CanvasNode " << myNode->Name() << endl;
 
   setName(myNode->Name());
 
@@ -75,7 +74,6 @@ SUPERVGUI_CanvasNode::SUPERVGUI_CanvasNode(QObject* theParent, SUPERVGUI_Main* t
   }
 
   isIgnore = false;
-  //cout << "<=== SUPERVGUI_CanvasNode " << myNode->Name() << endl;
 }
 
 SUPERVGUI_CanvasNode::~SUPERVGUI_CanvasNode()
@@ -214,7 +212,7 @@ void SUPERVGUI_CanvasNode::move(int x, int y)
 
 void SUPERVGUI_CanvasNode::merge() 
 {
-  //cout << "===> SUPERVGUI_CanvasNode::merge() " << myNode->Name() << endl;
+  //MESSAGE("===> SUPERVGUI_CanvasNode::merge() " << myNode->Name());
   // synchronize port list
   bool update = false;
   isIgnore = true;
@@ -273,7 +271,7 @@ void SUPERVGUI_CanvasNode::merge()
 
 void SUPERVGUI_CanvasNode::sync() 
 {
-  //cout << "===> SUPERVGUI_CanvasNode::sync() " << myNode->Name() << ", state " << myNode->State() << endl;
+  //MESSAGE("===> SUPERVGUI_CanvasNode::sync() " << myNode->Name() << ", state " << myNode->State());
 
   //if myNode is a MacroNode then set it state to state of its subgraph
   if (myNode->IsMacro() && myMain->getDataflow()->IsExecuting()) {
@@ -486,26 +484,31 @@ bool SUPERVGUI_CanvasNode::eventFilter( QObject* o, QEvent* e )
   return QObject::eventFilter(o, e);
 }
 
-SUPERV_Port SUPERVGUI_CanvasNode::createInPort() 
+QStringList SUPERVGUI_CanvasNode::getPortsNamesIN(SUPERV_INode theNode, bool theInputPorts)
 {
-  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg();
-  if (aDlg->exec()) {
-    if (aDlg->getName().isEmpty() || aDlg->getType().isEmpty()) {
-      QMessageBox::warning( QAD_Application::getDesktop(), tr( "ERROR" ), tr( "MSG_CANT_CREATE_PORT" ) );
-      return NULL;
-    }
-    SUPERV_INode aNode = getInlineNode();
-    if (SUPERV_isNull(aNode)) {
-      MESSAGE("SUPERVGUI_CanvasNode::createInPort: Node is wrong type");
-      return NULL;
-    }
-    SUPERV_Ports aPorts = aNode->Ports();
+  QStringList aPNList;
+  if (!SUPERV_isNull(theNode)) {
+    SUPERV_Ports aPorts = theNode->Ports();
     for (int i=0; i<aPorts->length(); i++) {
-      if (aPorts[i]->IsInput() && aDlg->getName() == QString(aPorts[i]->Name())){
-       QMessageBox::warning(0, tr("ERROR"), tr("MSG_PORT_EXIST"));
-       return NULL;
+      if (theInputPorts) {
+       if (aPorts[i]->IsInput()) aPNList.append(QString(aPorts[i]->Name()));
       }
+      else 
+       if (!aPorts[i]->IsInput()) aPNList.append(QString(aPorts[i]->Name()));
     }
+  }
+  return aPNList;
+}
+
+SUPERV_Port SUPERVGUI_CanvasNode::createInPort() 
+{
+  SUPERV_INode aNode = getInlineNode();
+  if (SUPERV_isNull(aNode)) {
+    MESSAGE("SUPERVGUI_CanvasNode::createInPort: Node is wrong type");
+    return NULL;
+  }
+  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg(getPortsNamesIN(aNode,true));
+  if (aDlg->exec()) {
     SUPERV_Port aPort = aNode->InPort(aDlg->getName().latin1(),
                                      aDlg->getType().latin1());    
     delete aDlg;
@@ -517,20 +520,14 @@ SUPERV_Port SUPERVGUI_CanvasNode::createInPort()
 
 SUPERV_Port SUPERVGUI_CanvasNode::createOutPort() 
 {
-  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg();
+  SUPERV_INode aNode = getInlineNode();
+  if (SUPERV_isNull(aNode)) {
+    MESSAGE("SUPERVGUI_CanvasNode::createOutPort: Node is wrong type");
+    return NULL;
+  }
+  
+  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg(getPortsNamesIN(aNode,false));
   if (aDlg->exec()) {
-    SUPERV_INode aNode = getInlineNode();
-    if (SUPERV_isNull(aNode)) {
-      MESSAGE("SUPERVGUI_CanvasNode::createOutPort: Node is wrong type");
-      return NULL;
-    }
-    SUPERV_Ports aPorts = aNode->Ports();
-    for (int i=0; i<aPorts->length(); i++) {
-      if (!aPorts[i]->IsInput() && aDlg->getName() == QString(aPorts[i]->Name())){
-       QMessageBox::warning(0, tr("ERROR"), tr("MSG_PORT_EXIST"));
-       return NULL;
-      }
-    }
     SUPERV_Port aPort = aNode->OutPort(aDlg->getName().latin1(),
                                       aDlg->getType().latin1());
     delete aDlg;
index 9cf391c4bbdf662b56165edeff2a96730b20014c..f33d6cee9300df4333b4123599d6297ceaf5b77d 100644 (file)
@@ -12,6 +12,7 @@
 using namespace std;
 #include "SUPERVGUI_Def.h"
 #include "SUPERVGUI_BrowseNodeDlg.h"
+#include <qstringlist.h>
 
 class SUPERVGUI_Main;
 class SUPERVGUI_CanvasNodePrs;
@@ -61,6 +62,7 @@ class SUPERVGUI_CanvasNode : public QObject {
 
     SUPERV_Port createInPort();
     SUPERV_Port createOutPort();
+    QStringList getPortsNamesIN(SUPERV_INode theNode, bool theInputPorts);
 
     virtual QPopupMenu* getPopupMenu(QWidget* theParent);
 
index cda5aaf2762d5a9c2a1a7a0b7d841b54bb277b4f..f7e87930119a9709bdb234ac25f2a1809e9060e6 100644 (file)
@@ -511,7 +511,30 @@ void drawText(QPainter& thePainter, const QString& theText,
   int flags = theHAlign | Qt::AlignVCenter;
   QRect r(theRect.x() + TEXT_MARGIN, theRect.y(), 
          theRect.width() - 2*TEXT_MARGIN, theRect.height());
-  thePainter.drawText(r, flags, theText);
+
+  QWMatrix aMat = thePainter.worldMatrix();
+  if (aMat.m11() != 1.0) { 
+    // for scaled picture only
+    QRect r1 = aMat.mapRect(r);
+    QFont saved = thePainter.font();
+    QFont f(saved);
+    if (f.pointSize() == -1) {
+      f.setPixelSize(f.pixelSize()*aMat.m11());
+    }
+    else {
+      f.setPointSize(f.pointSize()*aMat.m11());
+    }
+    thePainter.save();
+    QWMatrix m;
+    thePainter.setWorldMatrix(m);
+    thePainter.setFont(f);
+    thePainter.drawText(r1, flags, theText);
+    thePainter.setFont(saved);
+    thePainter.restore();
+  }
+  else {
+    thePainter.drawText(r, flags, theText);
+  }
 }
 
 void SUPERVGUI_CanvasNodePrs::draw(QPainter& thePainter) 
index db186c34dd01121d235bb8813941041ea5a533a2..91f32e5eb94777027ef7806d5574434453ff82ca 100644 (file)
@@ -64,9 +64,13 @@ QPopupMenu* SUPERVGUI_CanvasPort::getPopupMenu(QWidget* theParent)
                            || myPort->Kind() == SUPERV::EndSwitchParameter);
     popup->insertSeparator();
   }
-  if ((myPort->IsEndSwitch() && myPort->IsInput()) ||
-      (myPort->IsInLine() && myPort->Node()->Kind() != SUPERV::EndLoopNode
-       && !(myPort->Node()->Kind() == SUPERV::LoopNode && !myPort->IsInput()))) {
+  if (myMain->isEditable() 
+      &&
+      ((myPort->IsEndSwitch() && myPort->IsInput()) 
+       ||
+       (myPort->IsInLine() && myPort->Node()->Kind() != SUPERV::EndLoopNode
+       && 
+       !(myPort->Node()->Kind() == SUPERV::LoopNode && !myPort->IsInput())))) {
     popup->insertItem(tr("ITM_DEL_PORT"), this, SLOT(remove()));    
   }
 
index 2f6f04ece4f8c53d22ed57b7cf2a683d9fba079c..dd0e9814c77cc45d3e45b26980a556ee707a1526 100644 (file)
@@ -77,6 +77,7 @@ SUPERVGUI_CanvasView::SUPERVGUI_CanvasView(SUPERVGUI_Canvas* theCanvas, SUPERVGU
 {
   setName("CanvasView");
 
+  myIsPanBtnClicked = false;
   myIsPanActivated = false;
   myIsZoomActivated = false;
   myIsLinkCreating = false;
@@ -143,7 +144,7 @@ SUPERVGUI_CanvasView::~SUPERVGUI_CanvasView()
 
 void SUPERVGUI_CanvasView::contentsMousePressEvent(QMouseEvent* theEvent) 
 {
-  //  cout << "===> SUPERVGUI_CanvasView::contentsMousePressEvent(...) "   << endl;
+  //  MESSAGE("===> SUPERVGUI_CanvasView::contentsMousePressEvent(...) ");
   myPoint = inverseWorldMatrix().map(theEvent->pos());
   myGlobalPoint = theEvent->globalPos();
   myCurrentItem = 0;
@@ -153,7 +154,7 @@ void SUPERVGUI_CanvasView::contentsMousePressEvent(QMouseEvent* theEvent)
 
   if (((theEvent->button() == Qt::MidButton) &&
        (theEvent->state() == Qt::ControlButton)) || 
-      myIsPanActivated) {
+      myIsPanBtnClicked) {
     myIsPanActivated = true;
     myCursor = cursor();
     setCursor(pan2Cursor);
@@ -364,7 +365,7 @@ void SUPERVGUI_CanvasView::contentsMouseMoveEvent(QMouseEvent* theEvent)
 
 void SUPERVGUI_CanvasView::contentsMouseReleaseEvent(QMouseEvent* theEvent) 
 {
-  //  cout << "===> SUPERVGUI_CanvasView::contentsMouseReleaseEvent(...) "   << endl;
+  //  MESSAGE("===> SUPERVGUI_CanvasView::contentsMouseReleaseEvent(...) ");
   if (myTimer->isActive()) myTimer->stop();
 
   if (myCurrentItem) {
@@ -381,6 +382,7 @@ void SUPERVGUI_CanvasView::contentsMouseReleaseEvent(QMouseEvent* theEvent)
 
   if (myIsPanActivated) {
     myIsPanActivated = false;
+    myIsPanBtnClicked = false;
     setCursor(myCursor);
   }
 
@@ -392,7 +394,7 @@ void SUPERVGUI_CanvasView::contentsMouseReleaseEvent(QMouseEvent* theEvent)
 
 void SUPERVGUI_CanvasView::contentsMouseDoubleClickEvent(QMouseEvent* theEvent)
 {
-  //  cout << "===> SUPERVGUI_CanvasView::contentsMouseDoubleClickEvent(...) "   << endl;
+  //  MESSAGE("===> SUPERVGUI_CanvasView::contentsMouseDoubleClickEvent(...) ");
   QPoint p = inverseWorldMatrix().map(theEvent->pos());
 
   // compute collision rectangle
@@ -461,7 +463,7 @@ void SUPERVGUI_CanvasView::changeBackground()
 
 void SUPERVGUI_CanvasView::ActivatePanning()
 {
-  myIsPanActivated = true;
+  myIsPanBtnClicked = true;
 }
 
 void SUPERVGUI_CanvasView::ResetView()
@@ -482,7 +484,7 @@ void SUPERVGUI_CanvasView::startSketch(SUPERVGUI_CanvasPort* thePort)
 
 void SUPERVGUI_CanvasView::endSketch(SUPERVGUI_CanvasPort* thePort)
 {
-  //  cout << "===> SUPERVGUI_CanvasView::endSketch(" << thePort->name() << ")"  << endl;
+  //  MESSAGE("===> SUPERVGUI_CanvasView::endSketch(" << thePort->name() << ")");
   if (!myIsLinkCreating) return;
 
   if (myLinkBuilder && myLinkBuilder->canCreateEngine(thePort)) {
index 7e1964080db2ed25d81275df0d7cd3f0aa09936c..564e28aa9141706bdcfb4b064a42a5297ad9275b 100644 (file)
@@ -70,6 +70,7 @@ class SUPERVGUI_CanvasView: public QCanvasView {
     int             myDelPntItem;
     int             myOrtoItem;
 
+    bool         myIsPanBtnClicked;
     bool         myIsPanActivated;
     bool         myIsZoomActivated;
     bool         myIsLinkCreating;
index a97a43e9ddb5b416a56c75deb8aee828a41f940a..0d40243d0fe07d4fe3052871a00543fe85236bd3 100644 (file)
@@ -397,6 +397,7 @@ SUPERVGUI_SelectInlineDlg::SUPERVGUI_SelectInlineDlg(SUPERVGUI_Main* theMain)
   aMainLayout->addWidget(aLabel, 0, 0);
 
   myCombo = new QComboBox(this);
+  myCombo->clear(); //for the additional check from GUI side for bug PAL7007
   SUPERV_Nodes aNodesList = theMain->getDataflow()->Nodes();  
   int i;
   for (i = 0; i < aNodesList->INodes.length(); i++) {
index ce4f2e22cb2c973e5a89d1eaa9e7d78dd0cf9556..59344f1d5f8cd103a3c0b06ac24a108d3b4b8535 100644 (file)
@@ -51,6 +51,9 @@ using namespace std;
 #include "SUPERVGUI_CanvasControlNode.h"
 #include <qvalidator.h>
 
+/*
+asv 20.10.04: removed 2 SUPERVGUI_Main constructors.  there is only ONE way 
+to create a Main object now: with a non-null DataFlow as a 3d parameter
 SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* theDesktop, bool fromIOR)
      : SUPERVGraph_View(theParent), 
        myLogged( false ),
@@ -125,8 +128,9 @@ SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* th
     init(theDesktop);
   }
 }
+*/
 
-SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* theDesktop, SUPERV_Graph cp)
+SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* theDesktop, SUPERV_Graph theDataFlow )
      : SUPERVGraph_View(theParent),
        myLogged( false ),
        myFiltered( false ),
@@ -139,8 +143,7 @@ SUPERVGUI_Main::SUPERVGUI_Main(SUPERVGraph_ViewFrame* theParent, QAD_Desktop* th
 {
   Trace("SUPERVGUI_Main::SUPERVGUI_Main (copy)");
   theParent->setViewWidget(this);  
-  //  dataflow = cp->Copy();
-  dataflow = cp;
+  dataflow = theDataFlow;
   if (SUPERV_isNull(dataflow)) {
     QMessageBox::warning(0, tr("ERROR"), tr("MSG_CANT_COPY"));
     close();
@@ -159,12 +162,9 @@ void SUPERVGUI_Main::init(QAD_Desktop* theDesktop) {
 
   myThread = new SUPERVGUI_Thread();
   myThread->setMain(this);
-  connect(this, SIGNAL(KillMyThread(bool)), myThread, SLOT(KillThread(bool)));
 
   myIsKilled = false;
-  //myIsRunned = false;
   myCurrentView = CANVAS;
-  //  myCurrentView = GRAPH;
   myIsFromStudy = false;
   myLastGraph = 0;
   study     = theDesktop->getActiveStudy();
@@ -183,7 +183,6 @@ void SUPERVGUI_Main::init(QAD_Desktop* theDesktop) {
     father = builder->NewComponent(STUDY_SUPERVISION);
     anAttr = builder->FindOrCreateAttribute(father, "AttributeName");
     aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    //aName->SetValue("Supervision");
     aName->SetValue(QAD_Application::getDesktop()->getComponentUserName( "SUPERV" ) );
     
     anAttr = builder->FindOrCreateAttribute(father, "AttributePixMap");
@@ -230,14 +229,17 @@ void SUPERVGUI_Main::init(QAD_Desktop* theDesktop) {
 }
 
 SUPERVGUI_Main::~SUPERVGUI_Main() {
-//cout << "===> SUPERVGUI_Main::~SUPERVGUI_Main() "   << endl;
   Trace("SUPERVGUI_Main::~SUPERVGUI_Main");
 
   // close all opened SubGraphs 
   QMap<QString, QAD_StudyFrame*>::iterator it;
   for (it = mySubGraphs.begin(); it != mySubGraphs.end(); ++it) {
     it.data()->removeEventFilter(this);
+    it.data()->disconnect();
     it.data()->close();
+
+    QAD_Study* aStudy = it.data()->getStudy();
+    aStudy->removeStudyFrame(it.data());
   }
   mySubGraphs.clear();
   mySubGraphMap.clear();
@@ -253,33 +255,11 @@ SUPERVGUI_Main::~SUPERVGUI_Main() {
     fclose( myLogFile );
   }
   graph->removeLinks();
-  delete myCanvas;
+  //delete myCanvas;
   //  delete notification; // kloss : nota bene : quand un datalow est detruit : verifier que les canaux de notification sont aussi detruit
   notification->_remove_ref();  // kloss : nota bene : quand un datalow est detruit : verifier que les canaux de notification sont aussi detruit
-  if (!SUPERV_isNull(dataflow)) {
-    if (dataflow->IsExecuting()) {
-      if (QMessageBox::warning(QAD_Application::getDesktop(),
-                              tr("WARNING"), 
-                              tr("MSG_DF_RUNNING"), 
-                              tr("MSG_DF_EXECUTION"), 
-                              tr("MSG_DF_KILL")) == 1) {
-       if (dataflow->Kill()) {
-         if (myThread->running()) 
-           myThread->wait();
-       }
-      }
-      else {
-       emit KillMyThread(true);
-       if (myThread->running()) 
-         myThread->wait();
-      }
-    }
-    else {
-      emit KillMyThread(true);
-      if (myThread->running()) 
-       myThread->wait();
-    }
-  }
+
+  delete myCanvas;
 }
 
 void SUPERVGUI_Main::filterNotification() {
@@ -349,7 +329,6 @@ void SUPERVGUI_Main::execute(char *  theNodeName, SUPERV::GraphState theNodeStat
       aGraphNodePrs->sync();
     }
     else if (aNodePrs) {
-      //aNodePrs->sync();
       aNodePrs->syncOnEvent(theNodeState);
     }
   }
@@ -507,7 +486,7 @@ void SUPERVGUI_Main::copy() {
     QString aNewName(tr("MSG_COPY_PREFIX").arg(++myCopyNum));
     aNewName += dataflow->Name();
     aNewGraph->SetName(aNewName);
-    SUPERVGUI_Main* m = new SUPERVGUI_Main(aViewFrame, 
+    /*SUPERVGUI_Main* m = */new SUPERVGUI_Main(aViewFrame, 
                                           Supervision.getDesktop(), 
                                           aNewGraph);
     study->showFrame(aStudyFrame);
@@ -516,8 +495,6 @@ void SUPERVGUI_Main::copy() {
 
 void SUPERVGUI_Main::openSubGraph(SUPERV_CNode theNode, bool correct)
 {
-  //cout << "===> SUPERVGUI_Main::openSubGraph(" << theNode->Name() << ")"  << endl;
-  //cout << "   macro node : " << theNode->IsMacro() << ", " << theNode->IsFlowMacro() << ", " << theNode->IsStreamMacro()  << endl;
   if (theNode->IsMacro()) {
     // get SubGraph from MacroNode
     SUPERV_Graph aMacro = SUPERV::Graph::_narrow(theNode);
@@ -536,7 +513,6 @@ void SUPERVGUI_Main::openSubGraph(SUPERV_CNode theNode, bool correct)
       QString aGraphName = aGraph->Name();
       QAD_StudyFrame* aStudyFrame;
       if (mySubGraphs.contains(aGraphName)) {
-       //cout << "     activate already opened dataflow " <<  aGraphName  << endl;
        aStudyFrame = mySubGraphs[aGraphName];
        aStudyFrame->setActiveWindow();
        aStudyFrame->setFocus();
@@ -547,7 +523,7 @@ void SUPERVGUI_Main::openSubGraph(SUPERV_CNode theNode, bool correct)
          SUPERVGraph_ViewFrame* aViewFrame = dynamic_cast<SUPERVGraph_ViewFrame*>
            (aStudyFrame->getRightFrame()->getViewFrame());
          if(aViewFrame) {
-           SUPERVGUI_Main* m = new SUPERVGUI_Main(aViewFrame, 
+           /*SUPERVGUI_Main* m = */new SUPERVGUI_Main(aViewFrame, 
                                                   Supervision.getDesktop(), 
                                                   aGraph);
            //    connect(aStudyFrame, SIGNAL(sfStudyFrameClosing(QAD_StudyFrame*)), 
@@ -1334,9 +1310,13 @@ bool SUPERVGUI_Main::isFiltered(char* graph,  char* node,   char* type, char* me
   return( b );
 }
 
+void SUPERVGUI_Main::closeEvent(QCloseEvent* e) {
+  e->accept();
+}
 
 
 void SUPERVGUI_Main::setPaletteBackgroundColor(const QColor& color) { 
+
   array->setPaletteBackgroundColor(color);
   graph->setPaletteBackgroundColor(color);
   myCanvas->setBackgroundColor(color);
@@ -1380,6 +1360,7 @@ void SUPERVGUI_Main::startTimer() {
 
 void SUPERVGUI_Main::executionFinished() {
   getStudy()->updateObjBrowser();
+  myCanvas->update();
 }
 
 void SUPERVGUI_Main::checkExecution() {
@@ -1405,7 +1386,8 @@ void SUPERVGUI_Thread::startThread(const char* m)
 {
   if (!myIsActive) {
     myIsActive = true;
-    QThread::start();
+    //QThread::start();
+    this->start();
     myMain->getMessage()->setMessage(m); 
     myMain->sync();
   }
@@ -1449,26 +1431,27 @@ void SUPERVGUI_Thread::run()
   myMain->startTimer();
   while(myIsActive) {
     myMain->getDataflow()->Event(aNode, aEvent, aState);
-      
+    
     if (aEvent == SUPERV::UndefinedEvent && aState == SUPERV::UndefinedState
        ||
        aEvent == SUPERV::NoEvent && aState == SUPERV::NoState
        ||
        aEvent == SUPERV::KillEvent && aState == SUPERV::KillState) {
+
       if (myMain->getEventNodes().count()) {
        myMain->removeEventNodes();
-      }
+      }    
       if (myMain->getStates().count()) {
        myMain->removeStates();
-      }
+      }    
       myIsActive = false;
     }
-    else {
-      if ( aNode != NULL) {
+    else {    
+      if ( aNode != NULL && !CORBA::is_nil( aNode ) ) {
        aName = aNode->Name();
       }
 
-      if ( aPrevNode == NULL ) {  //first initialize aPrev... variables
+      if ( aPrevNode == NULL || CORBA::is_nil( aPrevNode ) ) {  //first initialize aPrev... variables
        anEventNodes = myMain->getEventNodes();
        anEventNodes.append( &aName ) ;
        myMain->setEventNodes(anEventNodes);
@@ -1501,10 +1484,10 @@ void SUPERVGUI_Thread::run()
          myMain->setStates(aStates);
        }
       }
-    }
+    }      
     if (!myIsActive) {
       switch (myMain->getDataflow()->State()) {
-      case SUPERV_Editing : 
+      case SUPERV_Editing :     
        stopThread(myMain->getDataflow()->IsReadOnly()? tr("MSG_GRAPH_READONLY"): tr("MSG_GRAPH_EDITING"));
        break;
        
@@ -1516,7 +1499,7 @@ void SUPERVGUI_Thread::run()
        stopThread(tr("MSG_GRAPH_FINISHED"));
        break;
        
-      case SUPERV_Error : 
+      case SUPERV_Error :
        stopThread(tr("MSG_GRAPH_ABORTED"));
        break;
        
@@ -1527,24 +1510,26 @@ void SUPERVGUI_Thread::run()
 
       break;
     }
-
-    if (myMain->getEventNodes().count()) {
+    if ( myMain->getEventNodes().count() ) {    
       //if list not empty call execute() -> sync()
       char * aNodeName = *(myMain->getEventNodes().getFirst());
       SUPERV::GraphState aNodeState = *(myMain->getStates().getFirst());
 
       // It is PROHIBITED to deal with widgets in a secondary thread, so event posting is used here
       ProcessVoidEvent( new TNodeSyncEvent( myMain, &SUPERVGUI_Main::execute, aNodeName, aNodeState ) );
-            
+
       myMain->removeFirstEN();
       myMain->removeFirstS();
-
     }
 
     aPrevNode = aNode;
     aPrevEvent = aEvent;
     aPrevState = aState;
-    aPrevName = aPrevNode->Name();
+
+    if ( aPrevNode == NULL || CORBA::is_nil( aPrevNode ) ) 
+      aPrevName = "";
+    else 
+      aPrevName = aPrevNode->Name();
     
     //usleep(10);
     //msleep(5);
@@ -1553,7 +1538,8 @@ void SUPERVGUI_Thread::run()
 //   qApp->lock();
 //   myMain->getStudy()->updateObjBrowser();
 //   qApp->unlock();
-  // VSR: 04/12/03 <---
+  // VSR: 04/12/03 <---    
+
   QThread::exit();
 }
 
index b8140ecf5b5e07d81544d710d7efb3cbcfb3e7d3..043a915f59dc48d03ae876e5e305025c67bde654 100644 (file)
@@ -51,8 +51,8 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
   Q_OBJECT
 
   public:
-    SUPERVGUI_Main(SUPERVGraph_ViewFrame*, QAD_Desktop*, bool fromIOR);
-    SUPERVGUI_Main(SUPERVGraph_ViewFrame*, QAD_Desktop*, bool isModify, const char* filename);
+    //SUPERVGUI_Main(SUPERVGraph_ViewFrame*, QAD_Desktop*, bool fromIOR);
+    //SUPERVGUI_Main(SUPERVGraph_ViewFrame*, QAD_Desktop*, bool isModify, const char* filename);
     SUPERVGUI_Main(SUPERVGraph_ViewFrame*, QAD_Desktop*, SUPERV_Graph);
     virtual ~SUPERVGUI_Main();
 
@@ -156,6 +156,7 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
     void init(QAD_Desktop* parent);
     void syncNotification();
     bool isFiltered(char* graph, char* node, char* type, char* message, char* sender, long counter, char* date, long stamp);
+    void closeEvent(QCloseEvent*);
 
     SUPERV_Graph            dataflow;
 
index 1d5a39cb1197e50b3a1eaaa321b25a3ffcb141e7..74cf9ea58d6a67384d0abfac32b3f30d84d8a49d 100644 (file)
@@ -171,7 +171,6 @@ void SUPERVGUI_Node::setState(SUPERV::GraphState theState)
     myRunPopup->setItemEnabled(myStopItem, true);
     break;
   default:
-    //cout<<"### Node state = "<<theState<<endl;
     myStatus->setText("No Status");
     myStatus->setPaletteBackgroundColor(QColor(NODE_RED, NODE_GREEN, NODE_BLUE));
     myRunPopup->setItemEnabled(mySuspendItem, false);
@@ -418,26 +417,31 @@ void SUPERVGUI_Node::setNodeName(QString aName) {
     QMessageBox::warning( QAD_Application::getDesktop(), tr( "ERROR" ), tr( "MSG_CANT_RENAMENODE" ) );
 }
 
-
-SUPERV_Port SUPERVGUI_Node::createInPort() {
-  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg();
-  if (aDlg->exec()) {
-    if (aDlg->getName().isEmpty() || aDlg->getType().isEmpty()) {
-      QMessageBox::warning( QAD_Application::getDesktop(), tr( "ERROR" ), tr( "MSG_CANT_CREATE_PORT" ) );
-      return NULL;
-    }
-    SUPERV_INode aNode = getInlineNode();
-    if (SUPERV_isNull(aNode)) {
-      MESSAGE("SUPERVGUI_Node::createInPort: Node is wrong type");
-      return NULL;
-    }
-    SUPERV_Ports aPorts = aNode->Ports();
+QStringList SUPERVGUI_Node::getPortsNamesIN(SUPERV_INode theNode, bool theInputPorts)
+{
+  QStringList aPNList;
+  if (!SUPERV_isNull(theNode)) {
+    SUPERV_Ports aPorts = theNode->Ports();
     for (int i=0; i<aPorts->length(); i++) {
-      if (aDlg->getName() == QString(aPorts[i]->Name())){
-       QMessageBox::warning(0, tr("ERROR"), tr("MSG_PORT_EXIST"));
-       return NULL;
+      if (theInputPorts) {
+       if (aPorts[i]->IsInput()) aPNList.append(QString(aPorts[i]->Name()));
       }
+      else 
+       if (!aPorts[i]->IsInput()) aPNList.append(QString(aPorts[i]->Name()));
     }
+  }
+  return aPNList;
+}
+
+SUPERV_Port SUPERVGUI_Node::createInPort() {
+  SUPERV_INode aNode = getInlineNode();
+  if (SUPERV_isNull(aNode)) {
+    MESSAGE("SUPERVGUI_Node::createInPort: Node is wrong type");
+    return NULL;
+  }
+  
+  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg(getPortsNamesIN(aNode,true));
+  if (aDlg->exec()) {
     SUPERV_Port aPort = aNode->InPort(aDlg->getName().latin1(),
                                      aDlg->getType().latin1());    
     delete aDlg;
@@ -449,20 +453,14 @@ SUPERV_Port SUPERVGUI_Node::createInPort() {
 
 
 SUPERV_Port SUPERVGUI_Node::createOutPort() {
-  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg();
+  SUPERV_INode aNode = getInlineNode();
+  if (SUPERV_isNull(aNode)) {
+    MESSAGE("SUPERVGUI_Node::createInPort: Node is wrong type");
+    return NULL;
+  }
+  
+  SUPERVGUI_PortParamsDlg* aDlg = new SUPERVGUI_PortParamsDlg(getPortsNamesIN(aNode,false));
   if (aDlg->exec()) {
-    SUPERV_INode aNode = getInlineNode();
-    if (SUPERV_isNull(aNode)) {
-      MESSAGE("SUPERVGUI_Node::createInPort: Node is wrong type");
-      return NULL;
-    }
-    SUPERV_Ports aPorts = aNode->Ports();
-    for (int i=0; i<aPorts->length(); i++) {
-      if (aDlg->getName() == QString(aPorts[i]->Name())){
-       QMessageBox::warning(0, tr("ERROR"), tr("MSG_PORT_EXIST"));
-       return NULL;
-      }
-    }
     SUPERV_Port aPort = aNode->OutPort(aDlg->getName().latin1(),
                                       aDlg->getType().latin1());
     delete aDlg;
@@ -520,8 +518,9 @@ void SUPERVGUI_Node::editFunction() {
 static const char* MyTypeStrings[] = 
   {"string", "boolean", "char", "short", "int", "long", "float", "double", "objref"};
 
-SUPERVGUI_PortParamsDlg::SUPERVGUI_PortParamsDlg()
-  : QDialog(QAD_Application::getDesktop(), 0, true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu  )
+SUPERVGUI_PortParamsDlg::SUPERVGUI_PortParamsDlg(const QStringList& thePortsNames)
+  : QDialog(QAD_Application::getDesktop(), 0, true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu  ),
+    myPortsNames(thePortsNames)
 {
   setSizeGripEnabled( true );
   setCaption("Port parameters");
@@ -554,7 +553,7 @@ SUPERVGUI_PortParamsDlg::SUPERVGUI_PortParamsDlg()
   aBaseLayout->addMultiCellWidget( aBtnBox, 2, 2, 0, 1 );
 
   QPushButton* aOKBtn = new QPushButton( tr( "BUT_OK" ), aBtnBox );
-  connect( aOKBtn, SIGNAL( clicked() ), this, SLOT( accept() ) );
+  connect( aOKBtn, SIGNAL( clicked() ), this, SLOT( clickOnOk() ) );
   aBtnLayout->addWidget( aOKBtn );
 
   aBtnLayout->addStretch();
@@ -563,3 +562,13 @@ SUPERVGUI_PortParamsDlg::SUPERVGUI_PortParamsDlg()
   connect( aCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) );
   aBtnLayout->addWidget( aCancelBtn );
 }
+
+void SUPERVGUI_PortParamsDlg::clickOnOk()
+{
+  if (getName().isEmpty() || getType().isEmpty())
+    QMessageBox::warning( QAD_Application::getDesktop(), tr( "ERROR" ), tr( "MSG_CANT_CREATE_PORT" ) );
+  else if (myPortsNames.contains(getName()))
+    QMessageBox::warning( QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_PORT_EXIST") );
+  else  
+    accept();
+}
index 4acd05c138ed236f51557dec9e47290b862d8f75..05ca410201e23c926f6ab74ebb048a2e2dfd4b4f 100644 (file)
@@ -35,6 +35,7 @@ using namespace std;
 #include "SUPERVGUI_BrowseNodeDlg.h"
 #include <qcombobox.h>
 #include "SUPERVGUI_Port.h"
+#include <qstringlist.h>
 
 class SUPERVGUI_Main;
 
@@ -95,6 +96,7 @@ class SUPERVGUI_Node: public QFrame {
 
     SUPERV_Port createInPort();
     SUPERV_Port createOutPort();
+    QStringList getPortsNamesIN(SUPERV_INode theNode, bool theInputPorts);
 
  protected:
     void mousePressEvent(QMouseEvent* e);
@@ -160,15 +162,20 @@ class SUPERVGUI_PortParamsDlg: public QDialog {
   Q_OBJECT
     
  public:
-  SUPERVGUI_PortParamsDlg();
+  SUPERVGUI_PortParamsDlg(const QStringList& thePortsNames);
   ~SUPERVGUI_PortParamsDlg() {};
 
   QString getName() { return myNameTxt->text(); }
   QString getType() { return myTypeTxt->currentText(); }
 
+ public slots:
+  void clickOnOk();
+    
+   
  private:
   QLineEdit* myNameTxt;
   QComboBox* myTypeTxt;
+  QStringList myPortsNames;
 };
 
 
index 017ddebe8dc2f0a64a52a2ed3b9bb7495020dffd..026c1ae9de37b37ca62386cb6f71af4769610ca0 100644 (file)
@@ -395,7 +395,10 @@ void SUPERVGUI_Service::addComputeNode() {
              QMessageBox::warning(aDesktop, tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));    
              return;
            }
-           node->Coords(myX, myY);
+           //to appear a new node in the top-left corner of the current viewport
+           int cx, cy;
+           aMain->getCanvasView()->viewportToContents(myX, myY, cx, cy);
+           node->Coords(cx, cy);
            myX += NODE_DX;
            myY += NODE_DY;
            aMain->addComputeNode(SUPERV::CNode::_narrow(node));
@@ -441,13 +444,16 @@ void SUPERVGUI_Service::addFactoryNode() {
            
            MESSAGE ( " myService->TypeOfNode == " << myService->TypeOfNode ) 
 
+           int cx, cy;
            if ( myService->TypeOfNode == 0 ) { // ComputeNode
              SUPERV_CNode node = aMain->getDataflow()->CNode(*myService);
              if (CORBA::is_nil(node)) {
                QMessageBox::warning(aDesktop, tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));          
                return;
              }
-             node->Coords(myX, myY);
+             //to appear a new node in the top-left corner of the current viewport
+             aMain->getCanvasView()->viewportToContents(myX, myY, cx, cy);
+             node->Coords(cx, cy);
              myX += NODE_DX;
              myY += NODE_DY;
              aMain->addComputeNode(SUPERV::CNode::_narrow(node));
@@ -457,7 +463,9 @@ void SUPERVGUI_Service::addFactoryNode() {
                QMessageBox::warning(aDesktop, tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));          
                return;
              }
-             node->Coords(myX, myY);
+             //to appear a new node in the top-left corner of the current viewport
+             aMain->getCanvasView()->viewportToContents(myX, myY, cx, cy);
+             node->Coords(cx, cy);
              myX += NODE_DX;
              myY += NODE_DY;
              aMain->addComputeNode(SUPERV::CNode::_narrow(node));
@@ -492,6 +500,7 @@ void SUPERVGUI_Service::addInlineNode() {
     QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));        
   } else {
     int aSel = myTypeCombo->currentItem();
+    int cx, cy;
     switch (aSel) {
     case 0: // Computation
       if (myScriptPane->isDefined()) { 
@@ -501,7 +510,9 @@ void SUPERVGUI_Service::addInlineNode() {
          QMessageBox::warning(0, tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));       
          return;
        }
-       aNode->Coords(myX, myY);
+       //to appear a new node in the top-left corner of the current viewport
+       aMain->getCanvasView()->viewportToContents(myX, myY, cx, cy);
+       aNode->Coords(cx, cy);
        myX += NODE_DX;
        myY += NODE_DY;
        aMain->addComputeNode(SUPERV::CNode::_narrow(aNode));
@@ -518,8 +529,10 @@ void SUPERVGUI_Service::addInlineNode() {
          QMessageBox::warning(0, tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));       
          return;
        }
-       aStartNode->Coords(myX, myY);
-       aEndNode->Coords(myX + LABEL_WIDTH*2, myY);
+       //to appear a new node in the top-left corner of the current viewport
+       aMain->getCanvasView()->viewportToContents(myX, myY, cx, cy);
+       aStartNode->Coords(cx, cy);
+       aEndNode->Coords(cx + LABEL_WIDTH*2, cy);
        myX += NODE_DX;
        myY += NODE_DY;
        aMain->addControlNode(SUPERV::CNode::_narrow(aStartNode), SUPERV::CNode::_narrow(aEndNode), true);
@@ -537,8 +550,10 @@ void SUPERVGUI_Service::addInlineNode() {
          QMessageBox::warning(0, tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));       
          return;
        }
-       aStartNode->Coords(myX, myY);
-       aEndNode->Coords(myX + LABEL_WIDTH*2, myY);
+       //to appear a new node in the top-left corner of the current viewport
+       aMain->getCanvasView()->viewportToContents(myX, myY, cx, cy);
+       aStartNode->Coords(cx, cy);
+       aEndNode->Coords(cx + LABEL_WIDTH*2, cy);
        myX += NODE_DX;
        myY += NODE_DY;
        aMain->addControlNode(SUPERV::CNode::_narrow(aStartNode), SUPERV::CNode::_narrow(aEndNode), true);
@@ -557,7 +572,9 @@ void SUPERVGUI_Service::addInlineNode() {
          QMessageBox::warning(0, tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));       
          return;
        }
-       aGotoNode->Coords(myX, myY);
+       //to appear a new node in the top-left corner of the current viewport
+       aMain->getCanvasView()->viewportToContents(myX, myY, cx, cy);
+       aGotoNode->Coords(cx, cy);
        myX += NODE_DX;
        myY += NODE_DY;
        aMain->addGOTONode(SUPERV::GNode::_narrow(aGotoNode));
@@ -591,7 +608,10 @@ void SUPERVGUI_Service::addMacroNode() {
        QMessageBox::warning(0, tr("ERROR"), tr("MSG_CANT_CREATE_NODE"));         
        return;
       }
-      aNode->Coords(myX, myY);
+      //to appear a new node in the top-left corner of the current viewport
+      int cx, cy;
+      aMain->getCanvasView()->viewportToContents(myX, myY, cx, cy);
+      aNode->Coords(cx, cy);
       myX += NODE_DX;
       myY += NODE_DY;
       aMain->addMacroNode(SUPERV::CNode::_narrow(aNode));
@@ -606,7 +626,7 @@ void SUPERVGUI_Service::loadGraph() {
        if ( getenv( "ENABLE_MACRO_NODE" ) == NULL )
        // error! if ENABLE_MACRO_NODE is set - we should NOT get here by any means..
        {
-               //cout << "Error: ENABLE_MACRO_NODE is not set, but loadGraph() was called!" << endl;
+               //MESSAGE("Error: ENABLE_MACRO_NODE is not set, but loadGraph() was called!");
                return;
        }
 
@@ -807,7 +827,10 @@ SUPERV_Strings SUPERVGUI_PythonEditPane::getFunction() {
   SUPERV_Strings aStrings = new SUPERV::ListOfStrings();
   aStrings->length(myText->paragraphs());
   for (int i=0; i < myText->paragraphs(); i++) {
-    aStrings[i] = CORBA::string_dup(myText->text(i).latin1());
+    QString aLine = myText->text(i);
+    if (!aLine.right(1).compare(" "))
+      aLine = aLine.remove(aLine.length()-1,1);
+    aStrings[i] = CORBA::string_dup(aLine.latin1());
   }
   return aStrings._retn();
 }
index 5832601b18803583e18a1759472f4310b7b6e56f..72c0451849164f3b8847387ecbe7658797bc53bf 100644 (file)
@@ -85,7 +85,7 @@ msgstr "Ortho Mode"
 
 #:SUPERVGUI_Main.cxx:146
 msgid "WARNING"
-msgstr "Supervision Warning"
+msgstr "Supervisor Warning"
 
 #:SUPERVGUI_Main.cxx:147
 msgid "MSG_DF_RUNNING"
@@ -345,9 +345,6 @@ msgstr "Parameters..."
 msgid "MSG_STREAM_DLG_TIT"
 msgstr "Stream Port Parameters"
 
-msgid "MSG_STREAM_DLG_TIT"
-msgstr "Stream Port Parameters"
-
 msgid "MSG_STREAM_SCHEMA"
 msgstr "Schema"
 
index e33332e7de56304143ec974422c8e50c02d77677..1175c0051b039d634e73ff3735306d1a3f52baff 100644 (file)
@@ -42,9 +42,7 @@ CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb ,
   _Poa = poa ;
   _ContId = contId ;
   _DataFlowEditor = NULL ;
-  _DataFlowExecutor = NULL ;
   _DataFlowNode = NULL ;
-  _DataFlowExecutorNode = NULL ;
   if ( aKindOfNode == SUPERV::MacroNode ) {
     _IsNode = true ;
   }
@@ -85,8 +83,7 @@ CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb ,
   _Poa = poa ;
   _ContId = contId ;
   _DataFlowEditor = aDataFlowEditor ;
-  _DataFlowExecutor = NULL ;
-  DataFlowEditor()->Graph()->SetGraphEditor( aDataFlowEditor ) ;
+  DataFlowEditor()->Graph()->GraphEditor( aDataFlowEditor ) ;
   GraphBase::ListOfFuncName aFuncName ;
   GraphBase::ListOfPythonFunctions aPythonFunction ;
   if ( FuncName ) {
@@ -95,11 +92,10 @@ CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb ,
     aPythonFunction.resize(1) ;
     aPythonFunction[0] = &PythonFunction ;
   }
-  _DataFlowNode = _DataFlowEditor->AddNode( NodeService , "" , "" , NodeName ,
+  _DataFlowNode = DataFlowEditor()->AddNode( NodeService , "" , "" , NodeName ,
                                             NodeKindOfNode ,
                                             aFuncName ,
                                             aPythonFunction ) ;
-  _DataFlowExecutorNode = NULL ;
   _IsNode = true ;
 //  endService( "CNode_Impl::CNode_Impl" );  
 //  cout << "<-- CNode_Impl::CNode_Impl" << endl ;
@@ -131,13 +127,11 @@ CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb ,
   _Poa = poa ;
   _ContId = contId ;
   _DataFlowEditor = aDataFlowEditor ;
-  _DataFlowExecutor = NULL ;
-  DataFlowEditor()->Graph()->SetGraphEditor( aDataFlowEditor ) ;
-  _DataFlowNode = _DataFlowEditor->AddNode( NodeService , "" , "" , NodeName ,
+  DataFlowEditor()->Graph()->GraphEditor( aDataFlowEditor ) ;
+  _DataFlowNode = DataFlowEditor()->AddNode( NodeService , "" , "" , NodeName ,
                                             NodeKindOfNode ,
                                             aFuncName ,
                                             aPythonFunction ) ;
-  _DataFlowExecutorNode = NULL ;
   _IsNode = true ;
 //  endService( "CNode_Impl::CNode_Impl" );  
 }
@@ -163,10 +157,8 @@ CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb ,
   _Poa = poa ;
   _ContId = contId ;
   _DataFlowEditor = aDataFlowEditor ;
-  _DataFlowExecutor = NULL ;
-  DataFlowEditor()->Graph()->SetGraphEditor( aDataFlowEditor ) ;
+  DataFlowEditor()->Graph()->GraphEditor( aDataFlowEditor ) ;
   _DataFlowNode = aDataFlowNode ;
-  _DataFlowExecutorNode = NULL ;
   if ( aDataFlowNode ) {
     _IsNode = true ;
   }
@@ -176,40 +168,6 @@ CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb ,
 //  endService( "CNode_Impl::CNode_Impl" );  
 }
 
-CNode_Impl::CNode_Impl( CORBA::ORB_ptr orb ,
-                       PortableServer::POA_ptr poa ,
-                       PortableServer::ObjectId * contId , 
-                       const char *instanceName ,
-                        const char *interfaceName ,
-                        GraphExecutor::DataFlow * aDataFlowExecutor ,
-                        GraphExecutor::InNode * aDataFlowExecutorNode ) :
-  Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, false) {
-//  beginService( "CNode_Impl::CNode_Impl" );
-  if ( aDataFlowExecutorNode && aDataFlowExecutorNode->IsComputingNode() ) {
-//    MESSAGE( "CNode_Impl::CNode_Impl _poa->activate_object" );
-    _thisObj = this ;
-    _id = _poa->activate_object(_thisObj);
-  }
-  else {
-//    MESSAGE( "CNode_Impl::CNode_Impl NO _poa->activate_object " );
-  }
-  _Orb = CORBA::ORB::_duplicate(orb);
-  _Poa = poa ;
-  _ContId = contId ;
-  _DataFlowEditor = NULL ;
-  _DataFlowExecutor = aDataFlowExecutor ;
-  DataFlowExecutor()->Graph()->SetGraphExecutor( aDataFlowExecutor ) ;
-  _DataFlowNode = NULL ;
-  _DataFlowExecutorNode = aDataFlowExecutorNode ;
-  if ( aDataFlowExecutorNode ) {
-    _IsNode = true ;
-  }
-  else {
-    _IsNode = false ;
-  }
-//  endService( "CNode_Impl::CNode_Impl" );  
-}
-
 CNode_Impl::~CNode_Impl() {
   beginService( "CNode_Impl::~CNode_Impl" );
   endService( "CNode_Impl::~CNode_Impl" );
@@ -217,7 +175,7 @@ CNode_Impl::~CNode_Impl() {
 
 void CNode_Impl::destroy() {
   beginService( "CNode_Impl::Destroy" );
-  if ( _DataFlowEditor->IsEditing() ) {
+  if ( DataFlowEditor()->IsEditing() ) {
     if ( Delete() ) {
       _DataFlowNode = NULL ;
       _poa->deactivate_object(*_id) ;
@@ -232,11 +190,11 @@ void CNode_Impl::destroy() {
 bool CNode_Impl::Delete() {
   beginService( "CNode_Impl::Delete" );
   bool RetVal = false ;
-  if ( _DataFlowEditor->IsEditing() ) {
+  if ( DataFlowEditor()->IsEditing() ) {
     DeletePorts() ;
-    RetVal = _DataFlowEditor->RemoveNode( Name() ) ;
+    RetVal = DataFlowEditor()->RemoveNode( Name() ) ;
     if ( RetVal ) {
-      RetVal = _DataFlowEditor->UnValid() ;
+      RetVal = DataFlowEditor()->UnValid() ;
     }
   }
   endService( "CNode_Impl::Delete" );
@@ -245,16 +203,16 @@ bool CNode_Impl::Delete() {
 
 void CNode_Impl::DeletePorts() {
   beginService( "CNode_Impl::DeletePorts" );
-  if ( _DataFlowEditor->IsEditing() && _DataFlowNode ) {
+  if ( DataFlowEditor()->IsEditing() && DataFlowNode() ) {
     int i ;
-    for ( i = 0 ; i < _DataFlowNode->ComputingNode()->GetNodeInPortsSize() ; i++ ) {
-      SUPERV::Port_var aPort = _DataFlowNode->ComputingNode()->GetChangeNodeInPort( i )->ObjRef() ;
+    for ( i = 0 ; i < DataFlowNode()->ComputingNode()->GetNodeInPortsSize() ; i++ ) {
+      SUPERV::Port_var aPort = DataFlowNode()->ComputingNode()->GetChangeNodeInPort( i )->ObjRef() ;
       if ( !CORBA::is_nil( aPort ) ) {
         aPort->Remove() ;
       }
     }
-    for ( i = 0 ; i < _DataFlowNode->ComputingNode()->GetNodeOutPortsSize() ; i++ ) {
-      SUPERV::Port_var aPort = _DataFlowNode->ComputingNode()->GetChangeNodeOutPort( i )->ObjRef() ;
+    for ( i = 0 ; i < DataFlowNode()->ComputingNode()->GetNodeOutPortsSize() ; i++ ) {
+      SUPERV::Port_var aPort = DataFlowNode()->ComputingNode()->GetChangeNodeOutPort( i )->ObjRef() ;
       if ( !CORBA::is_nil( aPort ) ) {
         aPort->Remove() ;
       }
@@ -267,10 +225,10 @@ SALOME_ModuleCatalog::Service * CNode_Impl::Service() {
 //  beginService( "CNode_Impl::Service" );
   SALOME_ModuleCatalog::Service * RetVal ;
   if ( _IsNode ) {
-    RetVal = new SALOME_ModuleCatalog::Service( *_DataFlowNode->GetService() ) ;
+    RetVal = new SALOME_ModuleCatalog::Service( *DataFlowNode()->GetService() ) ;
   }
   else {
-    RetVal = new SALOME_ModuleCatalog::Service( *_DataFlowEditor->GetService() ) ;
+    RetVal = new SALOME_ModuleCatalog::Service( *DataFlowEditor()->GetService() ) ;
   }
 //  endService( "CNode_Impl::Service" );
   return RetVal ;
@@ -280,10 +238,10 @@ char * CNode_Impl::Name() {
 //  beginService( "CNode_Impl::Name" );
   char * RetVal = NULL ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->Name() ;
+    RetVal = DataFlowNode()->Name() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->Name() ;
+    RetVal = DataFlowEditor()->Graph()->Name() ;
   }
 //  endService( "CNode_Impl::Name" );
   return CORBA::string_dup( RetVal );
@@ -291,14 +249,14 @@ char * CNode_Impl::Name() {
 bool CNode_Impl::SetName( const char * aDataFlowName ) {
 //  beginService( "CNode_Impl::SetName" );
   bool RetVal = false ;
-  if ( _DataFlowEditor->IsEditing() ) {
+  if ( DataFlowEditor()->IsEditing() ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowEditor->ReNameNode( _DataFlowNode->Name() ,
+      RetVal = DataFlowEditor()->ReNameNode( DataFlowNode()->Name() ,
                                             aDataFlowName ) ;
     }
     else {
-//      RetVal = _DataFlowEditor->Graph()->Name( aDataFlowName ) ;
-      RetVal = _DataFlowEditor->Name( aDataFlowName ) ;
+//      RetVal = DataFlowEditor()->Graph()->Name( aDataFlowName ) ;
+      RetVal = DataFlowEditor()->Name( aDataFlowName ) ;
     }
   }
 //  endService( "CNode_Impl::SetName" );
@@ -308,10 +266,10 @@ SUPERV::KindOfNode CNode_Impl::Kind() {
 //  beginService( "CNode_Impl::Kind" );
   SUPERV::KindOfNode RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->Kind() ;
+    RetVal = DataFlowNode()->Kind() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->Kind() ;
+    RetVal = DataFlowEditor()->Graph()->Kind() ;
   }
 //  endService( "CNode_Impl::Kind" );
   return RetVal ;
@@ -320,10 +278,10 @@ bool CNode_Impl::IsGraph() {
 //  beginService( "CNode_Impl::IsGraph" );
   bool RetVal = false ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsDataFlowNode() ;
+    RetVal = DataFlowNode()->IsDataFlowNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsDataFlowNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsDataFlowNode() ;
   }
 //  endService( "CNode_Impl::IsGraph" );
   return RetVal ;
@@ -332,10 +290,10 @@ bool CNode_Impl::IsStreamGraph() {
 //  beginService( "CNode_Impl::IsStreamGraph" );
   bool RetVal = false ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsDataStreamNode() ;
+    RetVal = DataFlowNode()->IsDataStreamNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsDataStreamNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsDataStreamNode() ;
   }
 //  endService( "CNode_Impl::IsStreamGraph" );
   return RetVal ;
@@ -343,7 +301,7 @@ bool CNode_Impl::IsStreamGraph() {
 bool CNode_Impl::IsMacro() {
 //  beginService( "CNode_Impl::IsMacro" );
   bool RetVal = false ;
-  if ( _IsNode && _DataFlowNode->IsMacroNode() ) {
+  if ( _IsNode && DataFlowNode()->IsMacroNode() ) {
     RetVal = true ;
   }
 //  endService( "CNode_Impl::IsMacro" );
@@ -352,7 +310,7 @@ bool CNode_Impl::IsMacro() {
 bool CNode_Impl::IsFlowMacro() {
 //  beginService( "CNode_Impl::IsFlowMacro" );
   bool RetVal = false ;
-  if ( _IsNode && _DataFlowNode->IsMacroNode() && _DataFlowNode->ComputingNode()->MacroObject()->IsGraph() ) {
+  if ( _IsNode && DataFlowNode()->IsMacroNode() && DataFlowNode()->ComputingNode()->MacroObject()->IsGraph() ) {
     RetVal = true ;
   }
 //  endService( "CNode_Impl::IsFlowMacro" );
@@ -361,7 +319,7 @@ bool CNode_Impl::IsFlowMacro() {
 bool CNode_Impl::IsStreamMacro() {
 //  beginService( "CNode_Impl::IsStreamMacro" );
   bool RetVal = false ;
-  if ( _IsNode && _DataFlowNode->IsMacroNode() && _DataFlowNode->ComputingNode()->MacroObject()->IsStreamGraph() ) {
+  if ( _IsNode && DataFlowNode()->IsMacroNode() && DataFlowNode()->ComputingNode()->MacroObject()->IsStreamGraph() ) {
     RetVal = true ;
   }
 //  endService( "CNode_Impl::IsStreamMacro" );
@@ -385,10 +343,10 @@ bool CNode_Impl::IsComputing() {
 //  beginService( "CNode_Impl::IsComputing" );
   bool RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsComputingNode() ;
+    RetVal = DataFlowNode()->IsComputingNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsComputingNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsComputingNode() ;
   }
 //  endService( "CNode_Impl::IsComputing" );
   return RetVal ;
@@ -397,10 +355,10 @@ bool CNode_Impl::IsFactory() {
 //  beginService( "CNode_Impl::IsFactory" );
   bool RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsFactoryNode() ;
+    RetVal = DataFlowNode()->IsFactoryNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsFactoryNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsFactoryNode() ;
   }
 //  endService( "CNode_Impl::IsFactory" );
   return RetVal ;
@@ -409,10 +367,10 @@ bool CNode_Impl::IsInLine() {
 //  beginService( "CNode_Impl::IsInLine" );
   bool RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsInLineNode() ;
+    RetVal = DataFlowNode()->IsInLineNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsInLineNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsInLineNode() ;
   }
 //  endService( "CNode_Impl::IsInLine" );
   return RetVal ;
@@ -421,10 +379,10 @@ bool CNode_Impl::IsGOTO() {
 //  beginService( "CNode_Impl::IsGOTO" );
   bool RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsGOTONode() ;
+    RetVal = DataFlowNode()->IsGOTONode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsGOTONode() ;
+    RetVal = DataFlowEditor()->Graph()->IsGOTONode() ;
   }
 //  endService( "CNode_Impl::IsGOTO" );
   return RetVal ;
@@ -433,10 +391,10 @@ bool CNode_Impl::IsLoop() {
 //  beginService( "CNode_Impl::IsLoop" );
   bool RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsLoopNode() ;
+    RetVal = DataFlowNode()->IsLoopNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsLoopNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsLoopNode() ;
   }
 //  endService( "CNode_Impl::IsLoop" );
   return RetVal ;
@@ -445,10 +403,10 @@ bool CNode_Impl::IsEndLoop() {
 //  beginService( "CNode_Impl::IsEndLoop" );
   bool RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsEndLoopNode() ;
+    RetVal = DataFlowNode()->IsEndLoopNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsEndLoopNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsEndLoopNode() ;
   }
 //  endService( "CNode_Impl::IsEndLoop" );
   return RetVal ;
@@ -457,10 +415,10 @@ bool CNode_Impl::IsSwitch() {
 //  beginService( "CNode_Impl::IsSwitch" );
   bool RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsSwitchNode() ;
+    RetVal = DataFlowNode()->IsSwitchNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsSwitchNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsSwitchNode() ;
   }
 //  endService( "CNode_Impl::IsSwitch" );
   return RetVal ;
@@ -469,10 +427,10 @@ bool CNode_Impl::IsEndSwitch() {
 //  beginService( "CNode_Impl::IsEndSwitch" );
   bool RetVal = SUPERV::UnknownNode ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->IsEndSwitchNode() ;
+    RetVal = DataFlowNode()->IsEndSwitchNode() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->IsEndSwitchNode() ;
+    RetVal = DataFlowEditor()->Graph()->IsEndSwitchNode() ;
   }
 //  endService( "CNode_Impl::IsEndSwitch" );
   return RetVal ;
@@ -482,12 +440,12 @@ SUPERV::SDate CNode_Impl::CreationDate() {
 //  beginService( "CNode_Impl::CreationDate" );
   SUPERV::SDate_var RetVal ;
   if ( _IsNode ) {
-    RetVal = new SUPERV::SDate( _DataFlowNode->FirstCreation() ) ;
+    RetVal = new SUPERV::SDate( DataFlowNode()->FirstCreation() ) ;
   }
   else {
-//    cout << " CNode_Impl::CreationDate " << _DataFlowEditor->FirstCreation()
+//    cout << " CNode_Impl::CreationDate " << DataFlowEditor()->FirstCreation()
 //         << endl ;
-    RetVal = new SUPERV::SDate( _DataFlowEditor->Graph()->FirstCreation() ) ;
+    RetVal = new SUPERV::SDate( DataFlowEditor()->Graph()->FirstCreation() ) ;
   }
 //  endService( "CNode_Impl::CreationDate" );
   return (RetVal._retn()) ;
@@ -496,10 +454,10 @@ SUPERV::SDate CNode_Impl::LastUpdateDate() {
 //  beginService( "CNode_Impl::LastUpdateDate" );
   SUPERV::SDate_var RetVal ;
   if ( _IsNode ) {
-    RetVal = new SUPERV::SDate( _DataFlowNode->LastModification() ) ;
+    RetVal = new SUPERV::SDate( DataFlowNode()->LastModification() ) ;
   }
   else {
-    RetVal = new SUPERV::SDate( _DataFlowEditor->Graph()->LastModification() ) ;
+    RetVal = new SUPERV::SDate( DataFlowEditor()->Graph()->LastModification() ) ;
   }
 //  endService( "CNode_Impl::LastUpdateDate" );
   return  (RetVal._retn()) ;
@@ -508,10 +466,10 @@ char * CNode_Impl::Version() {
 //  beginService( "CNode_Impl::Version" );
   char * RetVal ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->EditorRelease() ;
+    RetVal = DataFlowNode()->EditorRelease() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->EditorRelease() ;
+    RetVal = DataFlowEditor()->Graph()->EditorRelease() ;
   }
 //  endService( "CNode_Impl::Version" );
   return CORBA::string_dup( RetVal ) ;
@@ -520,10 +478,10 @@ char * CNode_Impl::Author() {
 //  beginService( "CNode_Impl::Author" );
   char * RetVal ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->Author() ;
+    RetVal = DataFlowNode()->Author() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->Author() ;
+    RetVal = DataFlowEditor()->Graph()->Author() ;
   }
 //  endService( "CNode_Impl::Author" );
   return CORBA::string_dup( RetVal ) ;
@@ -531,12 +489,12 @@ char * CNode_Impl::Author() {
 bool CNode_Impl::SetAuthor( const char * aDataFlowAuthor ) {
 //  beginService( "CNode_Impl::SetAuthor" );
   bool RetVal = false ;
-  if ( _DataFlowEditor->IsEditing() ) {
+  if ( DataFlowEditor()->IsEditing() ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowNode->Author( aDataFlowAuthor ) ;
+      RetVal = DataFlowNode()->Author( aDataFlowAuthor ) ;
     }
     else {
-      RetVal = _DataFlowEditor->Graph()->Author( aDataFlowAuthor ) ;
+      RetVal = DataFlowEditor()->Graph()->Author( aDataFlowAuthor ) ;
     }
   }
 //  endService( "CNode_Impl::SetAuthor" );
@@ -546,10 +504,10 @@ char * CNode_Impl::Comment() {
 //  beginService( "CNode_Impl::Comment" );
   char * RetVal ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->Comment() ;
+    RetVal = DataFlowNode()->Comment() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->Comment() ;
+    RetVal = DataFlowEditor()->Graph()->Comment() ;
   }
 //  endService( "CNode_Impl::Comment" );
   return CORBA::string_dup( RetVal ) ;
@@ -557,12 +515,12 @@ char * CNode_Impl::Comment() {
 bool CNode_Impl::SetComment( const char * aDataFlowComment ) {
 //  beginService( "CNode_Impl::SetComment" );
   bool RetVal = false ;
-  if ( _DataFlowEditor->IsEditing() ) {
+  if ( DataFlowEditor()->IsEditing() ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowNode->Comment( aDataFlowComment ) ;
+      RetVal = DataFlowNode()->Comment( aDataFlowComment ) ;
     }
     else {
-      RetVal = _DataFlowEditor->Graph()->Comment( aDataFlowComment ) ;
+      RetVal = DataFlowEditor()->Graph()->Comment( aDataFlowComment ) ;
     }
   }
 //  endService( "CNode_Impl::SetComment" );
@@ -571,12 +529,12 @@ bool CNode_Impl::SetComment( const char * aDataFlowComment ) {
 
 void CNode_Impl::Coords(long X , long Y ) {
 //  beginService( "CNode_Impl::Coords" );
-  if ( _DataFlowEditor->IsEditing() ) {
+  if ( DataFlowEditor()->IsEditing() ) {
     if ( _IsNode ) {
-      ((GraphEditor::InNode *) _DataFlowNode)->Coordinates( X , Y ) ;
+      ((GraphEditor::InNode *) DataFlowNode())->Coordinates( X , Y ) ;
     }
     else {
-      _DataFlowEditor->Graph()->Coordinates( X , Y ) ;
+      DataFlowEditor()->Graph()->Coordinates( X , Y ) ;
     }
   }
 //  endService( "CNode_Impl::Coords" );
@@ -585,10 +543,10 @@ long CNode_Impl::X() {
 //  beginService( "CNode_Impl::X" );
   long RetVal ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->XCoordinate() ;
+    RetVal = DataFlowNode()->XCoordinate() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->XCoordinate() ;
+    RetVal = DataFlowEditor()->Graph()->XCoordinate() ;
   }
 //  endService( "CNode_Impl::X" );
   return RetVal ;
@@ -597,10 +555,10 @@ long CNode_Impl::Y() {
 //  beginService( "CNode_Impl::Y" );
   long RetVal ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->YCoordinate() ;
+    RetVal = DataFlowNode()->YCoordinate() ;
   }
   else {
-    RetVal = _DataFlowEditor->Graph()->YCoordinate() ;
+    RetVal = DataFlowEditor()->Graph()->YCoordinate() ;
   }
 //  endService( "CNode_Impl::Y" );
   return RetVal ;
@@ -612,25 +570,25 @@ SUPERV::Port_ptr CNode_Impl::Port( const char * ServiceParameterName ) {
   SUPERV::Port_var iobject = SUPERV::Port::_nil() ;
   bool aninport ;
   if ( _IsNode ) {
-    aninport = _DataFlowNode->GetInPort( ServiceParameterName ) ;
+    aninport = DataFlowNode()->GetInPort( ServiceParameterName ) ;
   }
   else {
-    aninport = _DataFlowEditor->GetInPort( ServiceParameterName ) ;
+    aninport = DataFlowEditor()->GetInPort( ServiceParameterName ) ;
   }  
   bool anoutport ;
   if ( _IsNode ) {
-    anoutport = _DataFlowNode->GetOutPort( ServiceParameterName ) ;
+    anoutport = DataFlowNode()->GetOutPort( ServiceParameterName ) ;
   }
   else {
-    anoutport = _DataFlowEditor->GetOutPort( ServiceParameterName ) ;
+    anoutport = DataFlowEditor()->GetOutPort( ServiceParameterName ) ;
   }
   if ( aninport ) {
     GraphBase::InPort * anInPort ;
     if ( _IsNode ) {
-      anInPort = _DataFlowNode->GetChangeInPort( ServiceParameterName ) ;
+      anInPort = DataFlowNode()->GetChangeInPort( ServiceParameterName ) ;
     }
     else {
-      anInPort = _DataFlowEditor->GetChangeInPort( ServiceParameterName ) ;
+      anInPort = DataFlowEditor()->GetChangeInPort( ServiceParameterName ) ;
     }
     if ( anInPort->IsDataStream() ) {
       MESSAGE( "CNode_Impl::Port ERROR IsDataStream " ) ;
@@ -642,17 +600,17 @@ SUPERV::Port_ptr CNode_Impl::Port( const char * ServiceParameterName ) {
       }
       bool hasinput ;
       if ( _IsNode ) {
-        hasinput = _DataFlowNode->HasInput( anInPort->PortName() ) ;
+        hasinput = DataFlowNode()->HasInput( anInPort->PortName() ) ;
       }
       else {
-        hasinput = _DataFlowEditor->HasInput( anInPort->PortName() ) ;
+        hasinput = DataFlowEditor()->HasInput( anInPort->PortName() ) ;
       }
       if ( hasinput ) {
         const CORBA::Any * anAny = anInPort->GetOutPort()->Value() ;
         myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                 instanceName() , interfaceName() ,
-                                _DataFlowEditor ,
-                                _DataFlowNode ,
+                                DataFlowEditor() ,
+                                DataFlowNode() ,
 //                                ServiceParameterName ,
                                 (GraphBase::Port * ) anInPort ,
                                 true ,
@@ -661,8 +619,8 @@ SUPERV::Port_ptr CNode_Impl::Port( const char * ServiceParameterName ) {
       else {
         myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                 instanceName() , interfaceName() ,
-                                _DataFlowEditor ,
-                                _DataFlowNode ,
+                                DataFlowEditor() ,
+                                DataFlowNode() ,
 //                                ServiceParameterName ) ;
                                 (GraphBase::Port * ) anInPort ,
                                 true ) ;
@@ -679,10 +637,10 @@ SUPERV::Port_ptr CNode_Impl::Port( const char * ServiceParameterName ) {
   else if ( anoutport ) {
     GraphBase::OutPort * anOutPort ;
     if ( _IsNode ) {
-      anOutPort = _DataFlowNode->GetChangeOutPort( ServiceParameterName ) ;
+      anOutPort = DataFlowNode()->GetChangeOutPort( ServiceParameterName ) ;
     }
     else {
-      anOutPort = _DataFlowEditor->GetChangeOutPort( ServiceParameterName ) ;
+      anOutPort = DataFlowEditor()->GetChangeOutPort( ServiceParameterName ) ;
     }
     if ( anOutPort->IsDataStream() ) {
       MESSAGE( "CNode_Impl::Port ERROR IsDataStream " ) ;
@@ -695,8 +653,8 @@ SUPERV::Port_ptr CNode_Impl::Port( const char * ServiceParameterName ) {
       const CORBA::Any * anAny = anOutPort->Value() ;
       myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                               instanceName() , interfaceName() ,
-                              _DataFlowEditor ,
-                              _DataFlowNode ,
+                              DataFlowEditor() ,
+                              DataFlowNode() ,
 //                              ServiceParameterName ,
                               (GraphBase::Port * ) anOutPort ,
                               false ,
@@ -721,21 +679,21 @@ SUPERV::Port_ptr CNode_Impl::Input( const char * ToServiceParameterName ,
                                     const SUPERV::Value_ptr aValue ) {
   bool begin = true ;
   SUPERV::Port_var iobject = SUPERV::Port::_nil() ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
   bool sts = false ;
   GraphBase::InPort * anInPort = NULL ;
-  if ( _DataFlowEditor->IsEditing() && _DataFlowEditor->Graph()->GraphMacroLevel() == 0 ) {
+if ( DataFlowEditor()->IsEditing() /*&& DataFlowEditor()->Graph()->GraphMacroLevel() == 0*/ ) {
     if ( _IsNode ) {
-      sts = _DataFlowEditor->AddInputData( _DataFlowNode->Name() ,
+      sts = DataFlowEditor()->AddInputData( DataFlowNode()->Name() ,
                                            ToServiceParameterName ,
                                            *aValue->ToAny() ) ;
-      anInPort = _DataFlowNode->GetChangeInPort( ToServiceParameterName ) ;
+      anInPort = DataFlowNode()->GetChangeInPort( ToServiceParameterName ) ;
     }
     else {
-      sts = _DataFlowEditor->AddInputData( _DataFlowEditor->Graph()->Name() ,
+      sts = DataFlowEditor()->AddInputData( DataFlowEditor()->Graph()->Name() ,
                                            ToServiceParameterName ,
                                            *aValue->ToAny() ) ;
-      anInPort = _DataFlowEditor->Graph()->GetChangeInPort( ToServiceParameterName ) ;
+      anInPort = DataFlowEditor()->Graph()->GetChangeInPort( ToServiceParameterName ) ;
     }
     if ( sts && anInPort ) {
       if ( CORBA::is_nil( anInPort->ObjRef() ) ) {
@@ -746,8 +704,8 @@ SUPERV::Port_ptr CNode_Impl::Input( const char * ToServiceParameterName ,
         Port_Impl * myPort ;
         myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                 instanceName() , interfaceName() ,
-                                _DataFlowEditor ,
-                                _DataFlowNode ,
+                                DataFlowEditor() ,
+                                DataFlowNode() ,
 //                                ToServiceParameterName ,
                                 (GraphBase::Port * ) anInPort ,
                                 true ,
@@ -761,19 +719,20 @@ SUPERV::Port_ptr CNode_Impl::Input( const char * ToServiceParameterName ,
         iobject = anInPort->ObjRef() ;
       }
     }
+    DataFlowEditor()->UnValid() ;
   }
-  else if ( _DataFlowExecutor ) {
+  else if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      sts = _DataFlowExecutor->ChangeInputData( _DataFlowNode->Name() ,
+      sts = aDataFlowExecutor->ChangeInputData( DataFlowNode()->Name() ,
                                                 ToServiceParameterName ,
                                                 *aValue->ToAny() ) ;
-      anInPort = _DataFlowNode->GetChangeInPort( ToServiceParameterName ) ;
+      anInPort = DataFlowNode()->GetChangeInPort( ToServiceParameterName ) ;
     }
     else {
-      sts = _DataFlowExecutor->ChangeInputData( _DataFlowEditor->Graph()->Name() ,
+      sts = aDataFlowExecutor->ChangeInputData( DataFlowEditor()->Graph()->Name() ,
                                                 ToServiceParameterName ,
                                                 *aValue->ToAny() ) ;
-      anInPort = _DataFlowEditor->Graph()->GetChangeInPort( ToServiceParameterName ) ;
+      anInPort = DataFlowEditor()->Graph()->GetChangeInPort( ToServiceParameterName ) ;
     }
     if ( sts && anInPort ) {
       if ( CORBA::is_nil( anInPort->ObjRef() ) ) {
@@ -784,8 +743,8 @@ SUPERV::Port_ptr CNode_Impl::Input( const char * ToServiceParameterName ,
         Port_Impl * myPort ;
         myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                 instanceName() , interfaceName() ,
-                                _DataFlowEditor ,
-                                _DataFlowNode ,
+                                DataFlowEditor() ,
+                                DataFlowNode() ,
 //                                ToServiceParameterName ,
                                 (GraphBase::Port * ) anInPort ,
                                 true ,
@@ -804,55 +763,13 @@ SUPERV::Port_ptr CNode_Impl::Input( const char * ToServiceParameterName ,
     endService( "CNode_Impl::Input" );
   }
   if ( CORBA::is_nil( iobject ) ) {
-    MESSAGE( "CNode_Impl::Input returns nil object _IsNode " << _IsNode << " sts " << sts << " anInPort "
-             << anInPort ) ;
+    MESSAGE( "CNode_Impl::Input returns nil object _IsNode " << _IsNode << " sts " << sts
+             << " Node " << Name() << " ToServiceParameterName " << ToServiceParameterName
+             << " anInPort " << anInPort ) ;
   }
-  DataFlowEditor()->UnValid() ;
   return SUPERV::Port::_duplicate( iobject ) ;
 }
 
-#if 0
-bool CNode_Impl::InputOfAny( const char * ToServiceParameterName ,
-                             const CORBA::Any & aValue ) {
-  beginService( "CNode_Impl::InputOfAny" );
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  bool RetVal = false ;
-  MESSAGE(  pthread_self() << "CNode_Impl::InputOfAny " << Name() << "(" << ToServiceParameterName << ")" ) ;
-  if ( !_DataFlowEditor->IsEditing() && _DataFlowExecutor && _DataFlowEditor->Graph()->GraphMacroLevel() ) {
-    if ( !_IsNode ) {
-      GraphBase::OutPort * anOutPort ;
-      anOutPort = _DataFlowExecutor->Graph()->GetChangeInDataNodePort( ToServiceParameterName ) ;
-      MESSAGE(  pthread_self() << "CNode_Impl::InputOfAny " << _DataFlowExecutor->Graph()->Name() << " " << ToServiceParameterName
-               << " " << anOutPort->State() << " Done " << anOutPort->Done() ) ;
-      RetVal = _DataFlowExecutor->AddInputData( _DataFlowExecutor->Graph()->Name() ,
-                                                ToServiceParameterName ,
-                                                aValue ) ;
-      anOutPort->State(  SUPERV::ReadyState ) ;
-      anOutPort->Done( true ) ;
-      GraphExecutor::InNode * anInNode = (GraphExecutor::InNode * ) _DataFlowExecutor->Graph()->GetChangeGraphNode( anOutPort->InPorts( 0 )->NodeName() )->GetInNode() ;
-      MESSAGE(  pthread_self() << "CNode_Impl::InputOfAny : " << anInNode->Name() << "->SendSomeDataReady( "
-               << _DataFlowExecutor->Graph()->Name() << " ) " ) ;
-      anInNode->SendSomeDataReady( _DataFlowExecutor->Graph()->Name() ) ;
-      if ( anInNode->IsReady() ) {
-        MESSAGE(  pthread_self() << "CNode_Impl::InputOfAny : " << anInNode->Name()
-                 << "->SendEvent( GraphExecutor::ExecuteEvent ) "
-                 << " " << anInNode->Name() << "->IsReady() " << anInNode->IsReady() << " State "
-                 << anInNode->State() ) ;
-        if ( anInNode->IsLockedDataWait() ) {
-          MESSAGE(  pthread_self() << "CNode_Impl::InputOfAny : " << anInNode->Name()
-                    << " IsLockedDataWait() ==> UnLockDataWait" ) ;
-          anInNode->UnLockDataWait() ;
-       }
-        anInNode->CreateNewThread( true ) ;
-        anInNode->SendEvent( GraphExecutor::ExecuteEvent ) ;
-        _DataFlowExecutor->State( GraphExecutor::ExecutingState ) ;
-      }
-    }
-  }
-  endService( "CNode_Impl::InputOfAny" );
-  return RetVal ;
-}
-#endif
 
 SUPERV::Port_ptr CNode_Impl::GetInPort( const char *aParameterName ) {
   SUPERV::Port_ptr Inobject = SUPERV::Port::_nil() ;
@@ -970,12 +887,12 @@ SUPERV::Link_ptr CNode_Impl::GetLink(const char * ToServiceParameterName ) {
   SUPERV::Link_var iobject = SUPERV::Link::_nil() ;
   char* FromNodeName ;
   char* FromServiceParameterName ;
-  bool status = _DataFlowEditor->GetLink( _DataFlowNode->Name() ,
+  bool status = DataFlowEditor()->GetLink( DataFlowNode()->Name() ,
                                           ToServiceParameterName ,
                                           & FromNodeName ,
                                           & FromServiceParameterName ) ;
   if ( status ) {
-    GraphBase::InPort * anInPort = _DataFlowNode->GetChangeInPort( ToServiceParameterName ) ;
+    GraphBase::InPort * anInPort = DataFlowNode()->GetChangeInPort( ToServiceParameterName ) ;
     if ( !anInPort->IsDataStream() && anInPort->GetOutPort() ) {
       GraphBase::OutPort * anOutPort = anInPort->GetOutPort() ;
       if ( CORBA::is_nil( anOutPort->InPortObjRef( anInPort ) ) ) {
@@ -986,10 +903,10 @@ SUPERV::Link_ptr CNode_Impl::GetLink(const char * ToServiceParameterName ) {
         bool Success ;
         Link_Impl * myLink = new Link_Impl( _Orb , _Poa , _ContId ,
                                             instanceName() , interfaceName() ,
-                                            _DataFlowEditor ,
-                                            _DataFlowNode ,
+                                            DataFlowEditor() ,
+                                            DataFlowNode() ,
                                             ToServiceParameterName ,
-                                            (GraphEditor::InNode *) _DataFlowEditor->Graph()->GetChangeGraphNode( FromNodeName )->GetInNode() ,
+                                            (GraphEditor::InNode *) DataFlowEditor()->Graph()->GetChangeGraphNode( FromNodeName )->GetInNode() ,
                                             FromServiceParameterName ,
                                             true , false , Success ) ;
         if ( Success ) {
@@ -1016,12 +933,12 @@ SUPERV::StreamLink_ptr CNode_Impl::GetStreamLink(const char * ToServiceParameter
   char* FromNodeName ;
   char* FromServiceParameterName ;
   if ( DataFlowEditor()->Graph()->IsDataStreamNode() ) {
-    bool status = _DataFlowEditor->GetLink( _DataFlowNode->Name() ,
+    bool status = DataFlowEditor()->GetLink( DataFlowNode()->Name() ,
                                             ToServiceParameterName ,
                                             & FromNodeName ,
                                             & FromServiceParameterName ) ;
     if ( status ) {
-      GraphBase::InPort * anInPort = _DataFlowNode->GetChangeInPort( ToServiceParameterName ) ;
+      GraphBase::InPort * anInPort = DataFlowNode()->GetChangeInPort( ToServiceParameterName ) ;
       if ( anInPort->IsDataStream() && anInPort->GetOutPort() ) {
         GraphBase::OutPort * anOutPort = anInPort->GetOutPort() ;
         if ( CORBA::is_nil( anOutPort->InPortObjRef( anInPort ) ) ) {
@@ -1033,10 +950,10 @@ SUPERV::StreamLink_ptr CNode_Impl::GetStreamLink(const char * ToServiceParameter
           StreamLink_Impl * myStreamLink = new StreamLink_Impl(
                                             _Orb , _Poa , _ContId ,
                                             instanceName() , interfaceName() ,
-                                            _DataFlowEditor ,
-                                            _DataFlowNode ,
+                                            DataFlowEditor() ,
+                                            DataFlowNode() ,
                                             ToServiceParameterName ,
-                                            (GraphEditor::InNode *) _DataFlowEditor->Graph()->GetChangeGraphNode( FromNodeName )->GetInNode() ,
+                                            (GraphEditor::InNode *) DataFlowEditor()->Graph()->GetChangeGraphNode( FromNodeName )->GetInNode() ,
                                             FromServiceParameterName ,
                                             true , Success ) ;
           if ( Success ) {
@@ -1064,28 +981,28 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
   int PortCount = 0 ;
   SUPERV::ListOfPorts_var RetVal = new SUPERV::ListOfPorts ;
   if ( _IsNode ) {
-    for ( i = 0 ; i < _DataFlowNode->GetNodeInPortsSize() ; i++ ) {
-      GraphBase::InPort * anInPort = _DataFlowNode->GetChangeNodeInPort( i ) ;
+    for ( i = 0 ; i < DataFlowNode()->GetNodeInPortsSize() ; i++ ) {
+      GraphBase::InPort * anInPort = DataFlowNode()->GetChangeNodeInPort( i ) ;
       if ( !anInPort->IsDataStream() ) {
         if ( begin ) {
           beginService( "CNode_Impl::Ports" );
           begin = false ;
         }
         if ( anInPort->IsLoop() || ( anInPort->IsGate() && anInPort->IsNotConnected() && 
-                                     ( _DataFlowEditor->IsExecuting() || _DataFlowEditor->IsReadOnly() ) ) ) {
+                                     ( IsExecuting() || DataFlowEditor()->IsReadOnly() ) ) ) {
 //          MESSAGE( "InPort " << i << " " << anInPort->PortName() << " of Node " << Name() << " ignored" ) ;
         }
         else if ( CORBA::is_nil( anInPort->ObjRef() ) ) {
 //          MESSAGE( "InPort " << i << " " << anInPort->PortName() << " of Node " << Name() << " IsExecuting "
-//                   << _DataFlowEditor->IsExecuting() << " IsGate/IsConnected " << anInPort->IsGate()
+//                   << IsExecuting() << " IsGate/IsConnected " << anInPort->IsGate()
 //                   << "/" << anInPort->IsNotConnected() ) ;
           Port_Impl * myPort ;
-          if ( _DataFlowNode->HasInput( anInPort->PortName() ) ) {
+          if ( DataFlowNode()->HasInput( anInPort->PortName() ) ) {
             const CORBA::Any * anAny = anInPort->GetOutPort()->Value() ;
             myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                     instanceName() , interfaceName() ,
-                                    _DataFlowEditor ,
-                                    _DataFlowNode ,
+                                    DataFlowEditor() ,
+                                    DataFlowNode() ,
                                     (GraphBase::Port * ) anInPort ,
                                     true ,
                                     anAny ) ;
@@ -1093,8 +1010,8 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
           else {
             myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                     instanceName() , interfaceName() ,
-                                    _DataFlowEditor ,
-                                    _DataFlowNode ,
+                                    DataFlowEditor() ,
+                                    DataFlowNode() ,
                                     (GraphBase::Port * ) anInPort ,
                                     true ) ;
           }
@@ -1118,15 +1035,15 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
 //        MESSAGE( "InPort " << i << " " << anInPort->PortName() << " of Node " << Name() << " IsDataStream" ) ;
       }
     }
-    for ( i = 0 ; i < _DataFlowNode->GetNodeOutPortsSize() ; i++ ) {
-      GraphBase::OutPort * anOutPort = _DataFlowNode->GetChangeNodeOutPort( i ) ;
+    for ( i = 0 ; i < DataFlowNode()->GetNodeOutPortsSize() ; i++ ) {
+      GraphBase::OutPort * anOutPort = DataFlowNode()->GetChangeNodeOutPort( i ) ;
       if ( !anOutPort->IsDataStream() ) {
         if ( begin ) {
           beginService( "CNode_Impl::Ports" );
           begin = false ;
         }
         if ( anOutPort->IsLoop() || ( anOutPort->IsGate() && anOutPort->IsNotConnected() &&
-                                      ( _DataFlowEditor->IsExecuting() || _DataFlowEditor->IsReadOnly() ) ) ) {
+                                      ( IsExecuting() || DataFlowEditor()->IsReadOnly() ) ) ) {
 //          MESSAGE( "OutPort " << i << " " << anOutPort->PortName() << " of Node " << Name() << " ignored" ) ;
         }
         else if ( CORBA::is_nil( anOutPort->ObjRef() ) ) {
@@ -1134,8 +1051,8 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
           const CORBA::Any * anAny = anOutPort->Value() ;
           Port_Impl * myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                               instanceName() , interfaceName() ,
-                                              _DataFlowEditor ,
-                                              _DataFlowNode ,
+                                              DataFlowEditor() ,
+                                              DataFlowNode() ,
                                               (GraphBase::Port * ) anOutPort ,
                                               false ,
                                               anAny ) ;
@@ -1161,11 +1078,12 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
     }
   }
   else {
-    if ( _DataFlowEditor->IsValid() ) {
-      RetVal->length( _DataFlowEditor->Graph()->GetNodeInDataNodePortsSize() +
-                      _DataFlowEditor->Graph()->GetNodeOutDataNodePortsSize() ) ;
-      for ( i = 0 ; i < _DataFlowEditor->Graph()->GetNodeInDataNodePortsSize() ; i++ ) {
-        GraphBase::OutPort * anOutPort = _DataFlowEditor->Graph()->GetChangeNodeInDataNodePort(i) ;
+    if ( DataFlowEditor()->IsValid() ) {
+      //DataFlowEditor()->Graph()->Values() ;
+      RetVal->length( DataFlowEditor()->Graph()->GetNodeInDataNodePortsSize() +
+                      DataFlowEditor()->Graph()->GetNodeOutDataNodePortsSize() ) ;
+      for ( i = 0 ; i < DataFlowEditor()->Graph()->GetNodeInDataNodePortsSize() ; i++ ) {
+        GraphBase::OutPort * anOutPort = DataFlowEditor()->Graph()->GetChangeNodeInDataNodePort(i) ;
         if ( !anOutPort->IsDataStream() ) {
           if ( CORBA::is_nil( anOutPort->ObjRef() ) ) {
             if ( begin ) {
@@ -1177,8 +1095,8 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
               const CORBA::Any * anAny = anOutPort->Value() ;
               myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                       instanceName() , interfaceName() ,
-                                      _DataFlowEditor ,
-                                      _DataFlowNode ,
+                                      DataFlowEditor() ,
+                                      DataFlowNode() ,
                                       (GraphBase::Port * ) anOutPort ,
                                       true ,
                                       anAny ) ;
@@ -1186,8 +1104,8 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
             else {
               myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                       instanceName() , interfaceName() ,
-                                      _DataFlowEditor ,
-                                      _DataFlowNode ,
+                                      DataFlowEditor() ,
+                                      DataFlowNode() ,
                                       (GraphBase::Port * ) anOutPort ,
                                       true ) ;
             }
@@ -1209,9 +1127,9 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
         else {
         }
       }
-      j = _DataFlowEditor->Graph()->GetNodeInDataNodePortsSize() ;
-      for ( i = 0 ; i < _DataFlowEditor->Graph()->GetNodeOutDataNodePortsSize() ; i++ ) {
-        GraphBase::InPort * anInPort = _DataFlowEditor->Graph()->GetChangeNodeOutDataNodePort(i) ;
+      j = DataFlowEditor()->Graph()->GetNodeInDataNodePortsSize() ;
+      for ( i = 0 ; i < DataFlowEditor()->Graph()->GetNodeOutDataNodePortsSize() ; i++ ) {
+        GraphBase::InPort * anInPort = DataFlowEditor()->Graph()->GetChangeNodeOutDataNodePort(i) ;
         if ( !anInPort->IsDataStream() ) {
           if ( CORBA::is_nil( anInPort->ObjRef() ) ) {
             if ( begin ) {
@@ -1223,8 +1141,8 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
               const CORBA::Any * anAny = anInPort->GetOutPort()->Value() ;
               myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                       instanceName() , interfaceName() ,
-                                      _DataFlowEditor ,
-                                      _DataFlowNode ,
+                                      DataFlowEditor() ,
+                                      DataFlowNode() ,
                                       (GraphBase::Port * ) anInPort ,
                                       false ,
                                       anAny ) ;
@@ -1232,8 +1150,8 @@ SUPERV::ListOfPorts * CNode_Impl::Ports() {
             else {
               myPort = new Port_Impl( _Orb , _Poa , _ContId ,
                                       instanceName() , interfaceName() ,
-                                      _DataFlowEditor ,
-                                      _DataFlowNode ,
+                                      DataFlowEditor() ,
+                                      DataFlowNode() ,
                                       anInPort ,
                                       false ) ;
             }
@@ -1278,31 +1196,31 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
 //    MESSAGE("CNode_Impl::StreamPorts NOT a DataStreamNode" ) ;
   }
   else if ( _IsNode ) {
-//    RetVal->length( _DataFlowNode->GetNodeInPortsSize() +
-//                    _DataFlowNode->GetNodeOutPortsSize() ) ;
-    for ( i = 0 ; i < _DataFlowNode->GetNodeInPortsSize() ; i++ ) {
-      GraphBase::InPort * anInPort = _DataFlowNode->GetChangeNodeInPort( i ) ;
+//    RetVal->length( DataFlowNode()->GetNodeInPortsSize() +
+//                    DataFlowNode()->GetNodeOutPortsSize() ) ;
+    for ( i = 0 ; i < DataFlowNode()->GetNodeInPortsSize() ; i++ ) {
+      GraphBase::InPort * anInPort = DataFlowNode()->GetChangeNodeInPort( i ) ;
       if ( anInPort->IsDataStream() ) {
         if ( begin ) {
           beginService( "CNode_Impl::StreamPorts" );
           begin = false ;
         }
         if ( anInPort->IsLoop() || ( anInPort->IsGate() && anInPort->IsNotConnected() && 
-                                     ( _DataFlowEditor->IsExecuting() || _DataFlowEditor->IsReadOnly() ) ) ) {
+                                     ( IsExecuting() || DataFlowEditor()->IsReadOnly() ) ) ) {
           MESSAGE( "InStreamPort " << i << " " << anInPort->PortName() << " of Node " << Name() << " ignored" ) ;
 //          RetVal[ i ] = SUPERV::StreamPort::_duplicate( SUPERV::StreamPort::_narrow( CORBA::Object::_nil() ) ) ;
         }
         else if ( CORBA::is_nil( anInPort->ObjRef() ) ) {
           MESSAGE( "InStreamPort " << i << " " << anInPort->PortName() << " of Node " << Name() << " IsExecuting "
-                   << _DataFlowEditor->IsExecuting() << " IsGate/IsConnected " << anInPort->IsGate()
+                   << IsExecuting() << " IsGate/IsConnected " << anInPort->IsGate()
                    << "/" << anInPort->IsNotConnected() ) ;
           StreamPort_Impl * myStreamPort ;
-          if ( _DataFlowNode->HasInput( anInPort->PortName() ) ) {
+          if ( DataFlowNode()->HasInput( anInPort->PortName() ) ) {
             const CORBA::Any * anAny = anInPort->GetOutPort()->Value() ;
             myStreamPort = new StreamPort_Impl( _Orb , _Poa , _ContId ,
                                     instanceName() , interfaceName() ,
-                                    _DataFlowEditor ,
-                                    _DataFlowNode ,
+                                    DataFlowEditor() ,
+                                    DataFlowNode() ,
                                     (GraphBase::Port * ) anInPort ,
                                     true ,
                                     anAny ) ;
@@ -1310,8 +1228,8 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
           else {
             myStreamPort = new StreamPort_Impl( _Orb , _Poa , _ContId ,
                                     instanceName() , interfaceName() ,
-                                    _DataFlowEditor ,
-                                    _DataFlowNode ,
+                                    DataFlowEditor() ,
+                                    DataFlowNode() ,
                                     (GraphBase::Port * ) anInPort ,
                                     true ) ;
           }
@@ -1335,25 +1253,25 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
 //        RetVal[ i ] = SUPERV::StreamPort::_duplicate( SUPERV::StreamPort::_narrow( CORBA::Object::_nil() ) ) ;
       }
     }
-    for ( i = 0 ; i < _DataFlowNode->GetNodeOutPortsSize() ; i++ ) {
-      GraphBase::OutPort * anOutPort = _DataFlowNode->GetChangeNodeOutPort( i ) ;
+    for ( i = 0 ; i < DataFlowNode()->GetNodeOutPortsSize() ; i++ ) {
+      GraphBase::OutPort * anOutPort = DataFlowNode()->GetChangeNodeOutPort( i ) ;
       if ( anOutPort->IsDataStream() ) {
         if ( begin ) {
           beginService( "CNode_Impl::StreamPorts" );
           begin = false ;
         }
         if ( anOutPort->IsLoop() || ( anOutPort->IsGate() && anOutPort->IsNotConnected() &&
-                                      ( _DataFlowEditor->IsExecuting() || _DataFlowEditor->IsReadOnly() ) ) ) {
+                                      ( IsExecuting() || DataFlowEditor()->IsReadOnly() ) ) ) {
           MESSAGE( "OutStreamPort " << i << " " << anOutPort->PortName() << " of Node " << Name() << " ignored" ) ;
-//          RetVal[ _DataFlowNode->GetNodeInPortsSize() + i ] = SUPERV::StreamPort::_duplicate( SUPERV::StreamPort::_narrow( CORBA::Object::_nil() ) ) ;
+//          RetVal[ DataFlowNode()->GetNodeInPortsSize() + i ] = SUPERV::StreamPort::_duplicate( SUPERV::StreamPort::_narrow( CORBA::Object::_nil() ) ) ;
         }
         else if ( CORBA::is_nil( anOutPort->ObjRef() ) ) {
           MESSAGE( "OutStreamPort " << i << " " << anOutPort->PortName() << " of Node " << Name() ) ;
           const CORBA::Any * anAny = anOutPort->Value() ;
           StreamPort_Impl * myStreamPort = new StreamPort_Impl( _Orb , _Poa , _ContId ,
                                               instanceName() , interfaceName() ,
-                                              _DataFlowEditor ,
-                                              _DataFlowNode ,
+                                              DataFlowEditor() ,
+                                              DataFlowNode() ,
                                               (GraphBase::Port * ) anOutPort ,
                                               false ,
                                               anAny ) ;
@@ -1379,11 +1297,11 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
     }
   }
   else {
-    if ( _DataFlowEditor->IsValid() ) {
-//      RetVal->length( _DataFlowEditor->Graph()->GetNodeInDataNodePortsSize() +
-//                      _DataFlowEditor->Graph()->GetNodeOutDataNodePortsSize() ) ;
-      for ( i = 0 ; i < _DataFlowEditor->Graph()->GetNodeInDataNodePortsSize() ; i++ ) {
-        GraphBase::OutPort * anOutPort = _DataFlowEditor->Graph()->GetChangeNodeInDataNodePort(i) ;
+    if ( DataFlowEditor()->IsValid() ) {
+//      RetVal->length( DataFlowEditor()->Graph()->GetNodeInDataNodePortsSize() +
+//                      DataFlowEditor()->Graph()->GetNodeOutDataNodePortsSize() ) ;
+      for ( i = 0 ; i < DataFlowEditor()->Graph()->GetNodeInDataNodePortsSize() ; i++ ) {
+        GraphBase::OutPort * anOutPort = DataFlowEditor()->Graph()->GetChangeNodeInDataNodePort(i) ;
         if ( anOutPort->IsDataStream() ) {
           if ( CORBA::is_nil( anOutPort->ObjRef() ) ) {
             if ( begin ) {
@@ -1395,8 +1313,8 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
               const CORBA::Any * anAny = anOutPort->Value() ;
               myStreamPort = new StreamPort_Impl( _Orb , _Poa , _ContId ,
                                       instanceName() , interfaceName() ,
-                                      _DataFlowEditor ,
-                                      _DataFlowNode ,
+                                      DataFlowEditor() ,
+                                      DataFlowNode() ,
                                       (GraphBase::Port * ) anOutPort ,
                                       true ,
                                       anAny ) ;
@@ -1404,8 +1322,8 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
             else {
               myStreamPort = new StreamPort_Impl( _Orb , _Poa , _ContId ,
                                       instanceName() , interfaceName() ,
-                                      _DataFlowEditor ,
-                                      _DataFlowNode ,
+                                      DataFlowEditor() ,
+                                      DataFlowNode() ,
                                       (GraphBase::Port * ) anOutPort ,
                                       true ) ;
             }
@@ -1428,9 +1346,9 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
 //          RetVal[ i ] = SUPERV::StreamPort::_duplicate( SUPERV::StreamPort::_narrow( CORBA::Object::_nil() ) ) ;
         }
       }
-      j = _DataFlowEditor->Graph()->GetNodeInDataNodePortsSize() ;
-      for ( i = 0 ; i < _DataFlowEditor->Graph()->GetNodeOutDataNodePortsSize() ; i++ ) {
-        GraphBase::InPort * anInPort = _DataFlowEditor->Graph()->GetChangeNodeOutDataNodePort(i) ;
+      j = DataFlowEditor()->Graph()->GetNodeInDataNodePortsSize() ;
+      for ( i = 0 ; i < DataFlowEditor()->Graph()->GetNodeOutDataNodePortsSize() ; i++ ) {
+        GraphBase::InPort * anInPort = DataFlowEditor()->Graph()->GetChangeNodeOutDataNodePort(i) ;
         if ( anInPort->IsDataStream() ) {
           if ( CORBA::is_nil( anInPort->ObjRef() ) ) {
             if ( begin ) {
@@ -1442,8 +1360,8 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
               const CORBA::Any * anAny = anInPort->GetOutPort()->Value() ;
               myStreamPort = new StreamPort_Impl( _Orb , _Poa , _ContId ,
                                       instanceName() , interfaceName() ,
-                                      _DataFlowEditor ,
-                                      _DataFlowNode ,
+                                      DataFlowEditor() ,
+                                      DataFlowNode() ,
                                       (GraphBase::Port * ) anInPort ,
                                       false ,
                                       anAny ) ;
@@ -1451,8 +1369,8 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
             else {
               myStreamPort = new StreamPort_Impl( _Orb , _Poa , _ContId ,
                                       instanceName() , interfaceName() ,
-                                      _DataFlowEditor ,
-                                      _DataFlowNode ,
+                                      DataFlowEditor() ,
+                                      DataFlowNode() ,
                                       anInPort ,
                                       false ) ;
             }
@@ -1490,12 +1408,12 @@ SUPERV::ListOfStreamPorts * CNode_Impl::StreamPorts() {
 SUPERV::ListOfLinks * CNode_Impl::Links() {
   beginService( "CNode_Impl::Links" ) ;
   SUPERV::ListOfLinks_var RetVal = new SUPERV::ListOfLinks ;
-  if ( _DataFlowNode ) {
-//    MESSAGE( "CNode_Impl::Links " << DataFlowEditor() << " " << DataFlowEditor()->Graph() << " " << DataFlowEditor()->Graph()->ObjImpl() << " " << _DataFlowNode->ComputingNode() << " " << _DataFlowNode->ComputingNode()->Name() ) ;
-    RetVal = DataFlowEditor()->Graph()->ObjImpl()->Links( _DataFlowNode->ComputingNode() , NULL ) ;
+  if ( DataFlowNode() ) {
+//    MESSAGE( "CNode_Impl::Links " << DataFlowEditor() << " " << DataFlowEditor()->Graph() << " " << DataFlowEditor()->Graph()->ObjImpl() << " " << DataFlowNode()->ComputingNode() << " " << DataFlowNode()->ComputingNode()->Name() ) ;
+    RetVal = ((Graph_Impl * ) DataFlowEditor()->Graph()->ObjImpl())->Links( DataFlowNode()->ComputingNode() , NULL ) ;
   }
   else {
-    RetVal = DataFlowEditor()->Graph()->ObjImpl()->Links( NULL , NULL ) ;
+    RetVal = ((Graph_Impl * ) DataFlowEditor()->Graph()->ObjImpl())->Links( NULL , NULL ) ;
   }
   MESSAGE( "CNode_Impl::Links " << RetVal->length() << " Links" ) ;
   endService( "CNode_Impl::Links" ) ;
@@ -1505,8 +1423,8 @@ SUPERV::ListOfLinks * CNode_Impl::Links() {
 SUPERV::ListOfStreamLinks * CNode_Impl::StreamLinks() {
   beginService( "CNode_Impl::StreamLinks" ) ;
   SUPERV::ListOfStreamLinks_var RetVal = new SUPERV::ListOfStreamLinks ;
-  if ( _DataFlowNode && DataFlowEditor()->Graph()->IsDataStreamNode() ) {
-    RetVal = ((StreamGraph_Impl *) (DataFlowEditor()->StreamGraph()->ObjImpl()))->StreamLinks( _DataFlowNode->ComputingNode() , NULL ) ;
+  if ( DataFlowNode() && DataFlowEditor()->Graph()->IsDataStreamNode() ) {
+    RetVal = ((StreamGraph_Impl *) (DataFlowEditor()->StreamGraph()->ObjImpl()))->StreamLinks( DataFlowNode()->ComputingNode() , NULL ) ;
   }
   else if ( DataFlowEditor()->Graph()->IsDataStreamNode() ) {
     RetVal = ((StreamGraph_Impl *) (DataFlowEditor()->StreamGraph()->ObjImpl()))->StreamLinks( NULL , NULL ) ;
@@ -1520,7 +1438,7 @@ long CNode_Impl::SubGraph() {
 //  beginService( "CNode_Impl::SubGraph" );
   long RetVal = 0 ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->SubGraph() ;
+    RetVal = DataFlowNode()->SubGraph() ;
   }
 //  endService( "CNode_Impl::SubGraph" );
   return RetVal ;
@@ -1530,7 +1448,7 @@ long CNode_Impl::SubStreamGraph() {
 //  beginService( "CNode_Impl::SubStreamGraph" );
   long RetVal = 0 ;
   if ( _IsNode ) {
-    RetVal = _DataFlowNode->SubStreamGraph() ;
+    RetVal = DataFlowNode()->SubStreamGraph() ;
   }
 //  endService( "CNode_Impl::SubStreamGraph" );
   return RetVal ;
@@ -1538,7 +1456,7 @@ long CNode_Impl::SubStreamGraph() {
 
 bool CNode_Impl::IsLinked(const char * ServiceParameterName ) {
   beginService( "CNode_Impl::IsLinked" );
-  bool RetVal = _DataFlowNode->IsLinked( ServiceParameterName ) ;
+  bool RetVal = DataFlowNode()->IsLinked( ServiceParameterName ) ;
   MESSAGE( Name() << "->IsLinked( '" << ServiceParameterName << "' )" ) ;
   endService( "CNode_Impl::IsLinked" );
   return RetVal ;
@@ -1546,7 +1464,7 @@ bool CNode_Impl::IsLinked(const char * ServiceParameterName ) {
 
 bool CNode_Impl::HasInput(const char * ServiceParameterName ) {
 //  beginService( "CNode_Impl::HasInput" );
-  bool RetVal = _DataFlowNode->HasInput( ServiceParameterName ) ;
+  bool RetVal = DataFlowNode()->HasInput( ServiceParameterName ) ;
 //  endService( "CNode_Impl::HasInput" );
   return RetVal ;
 }
@@ -1554,14 +1472,14 @@ bool CNode_Impl::HasInput(const char * ServiceParameterName ) {
 SUPERV::GraphState CNode_Impl::State() {
 //  beginService( "CNode_Impl::State" );
   SUPERV::GraphState RetVal = SUPERV::EditingState ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor && !_DataFlowEditor->EditedAfterExecution() ) {
-    //JR : 12/06/03  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor && !DataFlowEditor()->EditedAfterExecution() ) {
+    //JR : 12/06/03  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->State( Name() ) ;
+      RetVal = aDataFlowExecutor->State( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->State() ;
+      RetVal = aDataFlowExecutor->State() ;
     }
   }
 //  endService( "CNode_Impl::State" );
@@ -1570,13 +1488,13 @@ SUPERV::GraphState CNode_Impl::State() {
 long CNode_Impl::Thread() {
 //  beginService( "CNode_Impl::Thread" );
   long RetVal = 0 ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->Thread( Name() ) ;
+      RetVal = aDataFlowExecutor->Thread( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->Thread() ;
+      RetVal = aDataFlowExecutor->Thread() ;
     }
   }
 //  endService( "CNode_Impl::Thread" );
@@ -1585,13 +1503,13 @@ long CNode_Impl::Thread() {
 GraphExecutor::AutomatonState CNode_Impl::AutoState() {
 //  beginService( "CNode_Impl::AutoState" );
   GraphExecutor::AutomatonState RetVal = GraphExecutor::UnKnownState ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->AutomatonState( Name() ) ;
+      RetVal = aDataFlowExecutor->AutomatonState( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->AutomatonState() ;
+      RetVal = aDataFlowExecutor->AutomatonState() ;
     }
   }
 //  endService( "CNode_Impl::AutoState" );
@@ -1600,13 +1518,13 @@ GraphExecutor::AutomatonState CNode_Impl::AutoState() {
 SUPERV::ControlState CNode_Impl::Control() {
 //  beginService( "CNode_Impl::Control" );
   SUPERV::ControlState RetVal = SUPERV::VoidState ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->ControlState( Name() ) ;
+      RetVal = aDataFlowExecutor->ControlState( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->ControlState() ;
+      RetVal = aDataFlowExecutor->ControlState() ;
     }
   }
 //  endService( "CNode_Impl::Control" );
@@ -1615,13 +1533,13 @@ SUPERV::ControlState CNode_Impl::Control() {
 void CNode_Impl::ControlClear() {
 //  beginService( "CNode_Impl::ControlClear" );
 //  SUPERV::ControlState RetVal = SUPERV::VoidState ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      _DataFlowExecutor->ControlClear( Name() ) ;
+      aDataFlowExecutor->ControlClear( Name() ) ;
     }
     else {
-      _DataFlowExecutor->ControlClear() ;
+      aDataFlowExecutor->ControlClear() ;
     }
   }
 //  endService( "CNode_Impl::ControlClear" );
@@ -1631,13 +1549,13 @@ void CNode_Impl::ControlClear() {
 bool CNode_Impl::IsReady() {
 //  beginService( "CNode_Impl::IsReady" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->IsReady( Name() ) ;
+      RetVal = aDataFlowExecutor->IsReady( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->IsReady() ;
+      RetVal = aDataFlowExecutor->IsReady() ;
     }
   }
 //  endService( "CNode_Impl::IsReady" );
@@ -1647,13 +1565,13 @@ bool CNode_Impl::IsReady() {
 bool CNode_Impl::IsWaiting() {
 //  beginService( "CNode_Impl::IsWaiting" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->IsWaiting( Name() ) ;
+      RetVal = aDataFlowExecutor->IsWaiting( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->IsWaiting() ;
+      RetVal = aDataFlowExecutor->IsWaiting() ;
     }
   }
 //  endService( "CNode_Impl::IsWaiting" );
@@ -1663,13 +1581,13 @@ bool CNode_Impl::IsWaiting() {
 bool CNode_Impl::IsRunning() {
 //  beginService( "CNode_Impl::IsRunning" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->IsRunning( Name() ) ;
+      RetVal = aDataFlowExecutor->IsRunning( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->IsRunning() ;
+      RetVal = aDataFlowExecutor->IsRunning() ;
     }
   }
 //  endService( "CNode_Impl::IsRunning" );
@@ -1679,13 +1597,13 @@ bool CNode_Impl::IsRunning() {
 bool CNode_Impl::IsDone() {
 //  beginService( "CNode_Impl::IsDone" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->IsDone( Name() ) ;
+      RetVal = aDataFlowExecutor->IsDone( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->IsDone() ;
+      RetVal = aDataFlowExecutor->IsDone() ;
     }
   }
 //  endService( "CNode_Impl::IsDone" );
@@ -1695,13 +1613,13 @@ bool CNode_Impl::IsDone() {
 bool CNode_Impl::IsSuspended() {
 //  beginService( "CNode_Impl::IsSuspended" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->IsSuspended( Name() ) ;
+      RetVal = aDataFlowExecutor->IsSuspended( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->IsSuspended() ;
+      RetVal = aDataFlowExecutor->IsSuspended() ;
     }
   }
 //  endService( "CNode_Impl::IsSuspended" );
@@ -1711,13 +1629,13 @@ bool CNode_Impl::IsSuspended() {
 bool CNode_Impl::ReadyW() {
 //  beginService( "CNode_Impl::ReadyW" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->ReadyWait( Name() ) ;
+      RetVal = aDataFlowExecutor->ReadyWait( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->ReadyWait() ;
+      RetVal = aDataFlowExecutor->ReadyWait() ;
     }
   }
 //  endService( "CNode_Impl::ReadyW" );
@@ -1727,13 +1645,13 @@ bool CNode_Impl::ReadyW() {
 bool CNode_Impl::RunningW() {
 //  beginService( "CNode_Impl::RunningW" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->RunningWait( Name() ) ;
+      RetVal = aDataFlowExecutor->RunningWait( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->RunningWait() ;
+      RetVal = aDataFlowExecutor->RunningWait() ;
     }
   }
 //  endService( "CNode_Impl::RunningW" );
@@ -1743,13 +1661,13 @@ bool CNode_Impl::RunningW() {
 bool CNode_Impl::DoneW() {
 //  beginService( "CNode_Impl::DoneW" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->DoneWait( Name() ) ;
+      RetVal = aDataFlowExecutor->DoneWait( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->DoneWait() ;
+      RetVal = aDataFlowExecutor->DoneWait() ;
     }
   }
 //  endService( "CNode_Impl::DoneW" );
@@ -1759,13 +1677,13 @@ bool CNode_Impl::DoneW() {
 bool CNode_Impl::SuspendedW() {
 //  beginService( "CNode_Impl::SuspendedW" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->SuspendedWait( Name() ) ;
+      RetVal = aDataFlowExecutor->SuspendedWait( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->SuspendedWait() ;
+      RetVal = aDataFlowExecutor->SuspendedWait() ;
     }
   }
 //  endService( "CNode_Impl::SuspendedW" );
@@ -1775,10 +1693,10 @@ bool CNode_Impl::SuspendedW() {
 void CNode_Impl::ping() {
 //  beginService( "CNode_Impl::ping" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->Ping( Name() ) ;
+      RetVal = aDataFlowExecutor->Ping( Name() ) ;
     }
     else {
       RetVal = false ;
@@ -1791,13 +1709,13 @@ void CNode_Impl::ping() {
 bool CNode_Impl::ContainerKill() {
   beginService( "CNode_Impl::ContainerKill" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor && _DataFlowEditor->IsExecuting() ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor && IsExecuting() ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->ContainerKill( Name() ) ;
+      RetVal = aDataFlowExecutor->ContainerKill( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->ContainerKill() ;
+      RetVal = aDataFlowExecutor->ContainerKill() ;
     }
   }
   endService( "CNode_Impl::ContainerKill" );
@@ -1806,14 +1724,15 @@ bool CNode_Impl::ContainerKill() {
 bool CNode_Impl::Kill() {
   beginService( "CNode_Impl::Kill" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->Kill( Name() ) ;
+      RetVal = aDataFlowExecutor->Kill( Name() ) ;
+      MESSAGE( "Node "  << Name() << " execution was killed : " << RetVal ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->Kill() ;
-      MESSAGE( "Graph execution was killed " << RetVal ) ;
+      RetVal = aDataFlowExecutor->Kill() ;
+      MESSAGE( "Graph execution was killed " << RetVal ) ;
     }
   }
   endService( "CNode_Impl::Kill" );
@@ -1822,10 +1741,10 @@ bool CNode_Impl::Kill() {
 bool CNode_Impl::KillDone() {
 //  beginService( "CNode_Impl::KillDone" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->KillDone( Name() ) ;
+      RetVal = aDataFlowExecutor->KillDone( Name() ) ;
     }
   }
 //  endService( "CNode_Impl::KillDone" );
@@ -1833,22 +1752,22 @@ bool CNode_Impl::KillDone() {
 }
 bool CNode_Impl::Stop() {
 //  beginService( "CNode_Impl::Stop" );
-  bool RetVal ; // = _DataFlowExecutor->Stop() ;
+  bool RetVal ; // = aDataFlowExecutor->Stop() ;
 //  endService( "CNode_Impl::Stop" );
   return RetVal ;
 }
 bool CNode_Impl::Suspend() {
   beginService( "CNode_Impl::Suspend" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
       MESSAGE( "CNode_Impl::Suspend " << Name() ) ;
-      RetVal = _DataFlowExecutor->Suspend( Name() ) ;
+      RetVal = aDataFlowExecutor->Suspend( Name() ) ;
     }
     else {
-      MESSAGE( "CNode_Impl::Suspend " << _DataFlowExecutor->Graph()->Name() ) ;
-      RetVal = _DataFlowExecutor->Suspend() ;
+      MESSAGE( "CNode_Impl::Suspend " << aDataFlowExecutor->Graph()->Name() ) ;
+      RetVal = aDataFlowExecutor->Suspend() ;
     }
   }
   endService( "CNode_Impl::Suspend" );
@@ -1857,13 +1776,13 @@ bool CNode_Impl::Suspend() {
 bool CNode_Impl::SuspendDone() {
 //  beginService( "CNode_Impl::SuspendDone" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->SuspendDone( Name() ) ;
+      RetVal = aDataFlowExecutor->SuspendDone( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->SuspendDone() ;
+      RetVal = aDataFlowExecutor->SuspendDone() ;
     }
   }
 //  endService( "CNode_Impl::SuspendDone" );
@@ -1872,33 +1791,35 @@ bool CNode_Impl::SuspendDone() {
 bool CNode_Impl::Resume() {
   bool RetVal = false ;
   beginService( "CNode_Impl::Resume" );
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
       MESSAGE( "CNode_Impl::Resume " << Name() ) ;
-      RetVal = _DataFlowExecutor->Resume( Name() ) ;
+      RetVal = aDataFlowExecutor->Resume( Name() ) ;
     }
     else {
-      MESSAGE( "CNode_Impl::Resume " << _DataFlowExecutor->Graph()->Name() ) ;
-      RetVal = _DataFlowExecutor->Resume() ;
+      MESSAGE( "CNode_Impl::Resume " << aDataFlowExecutor->Graph()->Name() ) ;
+      RetVal = aDataFlowExecutor->Resume() ;
     }
   }
   endService( "CNode_Impl::Resume" );
   return RetVal ;
 }
 
+// Old method used in the past for initial study about GOTO and Loop
+// Should not be used
 bool CNode_Impl::Run() {
   beginService( "CNode_Impl::Run" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  MESSAGE( "CNode_Impl::Run DataFlowExecutor " << _DataFlowExecutor << Name() << " _IsNode " << _IsNode ) ;
-  if ( _DataFlowExecutor ) {
-    _DataFlowEditor->EditedAfterExecution( false ) ;
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  MESSAGE( "CNode_Impl::Run DataFlowExecutor " << aDataFlowExecutor << Name() << " _IsNode " << _IsNode ) ;
+  if ( aDataFlowExecutor ) {
+    DataFlowEditor()->EditedAfterExecution( false ) ;
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->Run( Name() , Name() , false ) ;
+      RetVal = aDataFlowExecutor->Run( Name() , Name() , false ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->Run( false ) ;
+      RetVal = aDataFlowExecutor->Run( false ) ;
     }
   }
   endService( "CNode_Impl::Run" );
@@ -1908,29 +1829,35 @@ bool CNode_Impl::Run() {
 bool CNode_Impl::ReRun() {
   beginService( "CNode_Impl::ReRun" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
-    _DataFlowEditor->EditedAfterExecution( false ) ;
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
+    DataFlowEditor()->EditedAfterExecution( false ) ;
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->Run( Name() , Name() , false ) ;
+      RetVal = aDataFlowExecutor->Run( Name() , Name() , false ) ;
     }
+// The GUI calls directly that method instead of calling Graph_Impl::Run() :
+// I redirect the call to Graph_Impl::Run()
     else if ( DataFlowEditor()->IsEditing() ) {
-      //      RetVal = _DataFlowExecutor->Run( false ) ;
-      return ((Graph_Impl::Graph_Impl *) this)->Graph_Impl::Run() ;
+      RetVal = ((Graph_Impl::Graph_Impl *) this)->Graph_Impl::Run() ;
+    }
+    else {
+      RetVal = aDataFlowExecutor->Run( false ) ;
     }
   }
   endService( "CNode_Impl::ReRun" );
   return RetVal ;
 }
 
+// Old method used in the past for initial study about GOTO and Loop
+// Should not be used
 bool CNode_Impl::ReRunAt( const char * aNodeName ) {
   beginService( "CNode_Impl::ReRunAt" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
-    _DataFlowEditor->EditedAfterExecution( false ) ;
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
+    DataFlowEditor()->EditedAfterExecution( false ) ;
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->Run( Name() , aNodeName , false ) ;
+      RetVal = aDataFlowExecutor->Run( Name() , aNodeName , false ) ;
     }
   }
   endService( "CNode_Impl::ReRunAt" );
@@ -1940,26 +1867,33 @@ bool CNode_Impl::ReRunAt( const char * aNodeName ) {
 bool CNode_Impl::ReStart() {
   beginService( "CNode_Impl::ReStart" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->Run( Name() , Name() , true ) ;
+      RetVal = aDataFlowExecutor->Run( Name() , Name() , true ) ;
+    }
+// The GUI calls directly that method instead of calling Graph_Impl::Start() :
+// I redirect the call to Graph_Impl::Start()
+    else if ( DataFlowEditor()->IsEditing() ) {
+      RetVal = ((Graph_Impl::Graph_Impl *) this)->Graph_Impl::Start() ;
     }
     else {
-      RetVal = _DataFlowExecutor->Run( true ) ;
+      RetVal = aDataFlowExecutor->Run( true ) ;
     }
   }
   endService( "CNode_Impl::ReStart" );
   return RetVal ;
 }
 
+// Old method used in the past for initial study about GOTO and Loop
+// Should not be used
 bool CNode_Impl::ReStartAt( const char * aNodeName ) {
   beginService( "CNode_Impl::ReStartAt" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->Run( Name() , aNodeName , true ) ;
+      RetVal = aDataFlowExecutor->Run( Name() , aNodeName , true ) ;
     }
   }
   endService( "CNode_Impl::ReStartAt" );
@@ -1968,16 +1902,25 @@ bool CNode_Impl::ReStartAt( const char * aNodeName ) {
 
 long CNode_Impl::CpuUsed() {
   long RetVal = 0 ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-  if ( _DataFlowExecutor ) {
+  GraphExecutor::DataFlow * aDataFlowExecutor = DataFlowEditor()->Executor() ;
+  if ( aDataFlowExecutor ) {
     if ( _IsNode ) {
-      RetVal = _DataFlowExecutor->CpuUsed( Name() ) ;
+      RetVal = aDataFlowExecutor->CpuUsed( Name() ) ;
     }
     else {
-      RetVal = _DataFlowExecutor->CpuUsed() ;
+      RetVal = aDataFlowExecutor->CpuUsed() ;
     }
   }
   return RetVal ;
 }
 
+bool CNode_Impl::IsExecuting() {
+  bool RetVal = false;
+  if ( !IsMacro() && DataFlowEditor() && DataFlowEditor()->Executor() ) {
+    if ( DataFlowEditor()->IsExecuting() && DataFlowEditor()->Executor()->IsDone() )
+      DataFlowEditor()->Executing( false );
 
+    RetVal = DataFlowEditor()->IsExecuting();
+  }
+  return RetVal;
+}
index d67d4d2f61c15857fa2ab1de241b1d43ece66fee..abe1edb925cfb45a9d9e64f6058be9b91bf0328d 100644 (file)
@@ -32,9 +32,7 @@ class CNode_Impl : public POA_SUPERV::CNode ,
     PortableServer::ObjectId * _ContId ;
 
     GraphEditor::DataFlow   * _DataFlowEditor ;
-    GraphExecutor::DataFlow * _DataFlowExecutor ;
     GraphEditor::InNode     * _DataFlowNode ;
-    GraphExecutor::InNode   * _DataFlowExecutorNode ;
     bool _IsNode ;
 
   public:
@@ -75,13 +73,6 @@ class CNode_Impl : public POA_SUPERV::CNode ,
                 const char *interfaceName ,
                 GraphEditor::DataFlow * DataFlowEditor ,
                 GraphEditor::InNode * DataFlowNode ) ;
-    CNode_Impl( CORBA::ORB_ptr orb ,
-               PortableServer::POA_ptr poa ,
-               PortableServer::ObjectId * contId , 
-               const char *instanceName ,
-                const char *interfaceName ,
-                GraphExecutor::DataFlow * DataFlowExecutor ,
-                GraphExecutor::InNode * DataFlowExecutorNode ) ;
     virtual ~CNode_Impl() ;
     virtual void destroy() ;
     virtual bool Delete() ;
@@ -92,18 +83,14 @@ class CNode_Impl : public POA_SUPERV::CNode ,
             _DataFlowEditor = DataFlowEditor ; } ;
     virtual GraphEditor::DataFlow * DataFlowEditor() {
             return _DataFlowEditor ; } ;
-    virtual void DataFlowExecutor( GraphExecutor::DataFlow * DataFlowExecutor ) {
-            _DataFlowExecutor = DataFlowExecutor ; } ;
+
     virtual GraphExecutor::DataFlow * DataFlowExecutor() {
-            return _DataFlowExecutor ; } ;
+            return DataFlowEditor()->Executor(); } ;
+
     virtual void DataFlowNode( GraphEditor::InNode * DataFlowNode ) {
             _DataFlowNode = DataFlowNode ; } ;
     virtual GraphEditor::InNode * DataFlowNode() {
             return _DataFlowNode ; } ;
-    virtual void DataFlowNode( GraphExecutor::InNode * DataFlowExecutorNode ) {
-            _DataFlowExecutorNode = DataFlowExecutorNode ; } ;
-    virtual GraphExecutor::InNode * DataFlowExecutorNode() {
-            return _DataFlowExecutorNode ; } ;
 
     virtual char * Name() ;
     virtual bool SetName( const char * aDataFlowName ) ;
@@ -120,27 +107,51 @@ class CNode_Impl : public POA_SUPERV::CNode ,
     virtual GraphEditor::InNode * DataFlowNode() const {
             return _DataFlowNode ; } ;
     virtual GraphBase::ComputingNode * BaseNode() {
-            return _DataFlowNode->ComputingNode() ; } ;
+            return DataFlowNode()->ComputingNode() ; } ;
 
     virtual SUPERV::CNode_var ObjRef() {
             SUPERV::CNode_var iobject = SUPERV::GNode::_nil() ;
-            if ( _DataFlowNode && _IsNode ) {
-              iobject = SUPERV::CNode::_narrow( _DataFlowNode->ObjRef() ) ;
+            if ( DataFlowNode() && _IsNode ) {
+              iobject = SUPERV::CNode::_narrow( DataFlowNode()->ObjRef() ) ;
            }
             else {
-              iobject = SUPERV::CNode::_narrow( _DataFlowEditor->Graph()->ObjRef() ) ;
+              iobject = SUPERV::CNode::_narrow( DataFlowEditor()->Graph()->ObjRef() ) ;
             }
             return iobject ; } ;
     virtual void SetObjRef(SUPERV::CNode_var aNode ) {
-            if ( _DataFlowNode && _IsNode ) {
-              _DataFlowNode->SetObjRef( aNode ) ;
+            if ( DataFlowNode() && _IsNode ) {
+              DataFlowNode()->SetObjRef( aNode ) ;
            }
             else {
-              if ( _DataFlowEditor ) {
-                _DataFlowEditor->Graph()->SetObjRef( SUPERV::Graph::_narrow( aNode ) ) ;
+              if ( DataFlowEditor() ) {
+                DataFlowEditor()->Graph()->SetObjRef( SUPERV::Graph::_narrow( aNode ) ) ;
              }
-              if ( _DataFlowExecutor ) {
-                _DataFlowExecutor->Graph()->SetObjRef( SUPERV::Graph::_narrow( aNode ) ) ;
+              if ( DataFlowExecutor() ) {
+                DataFlowExecutor()->Graph()->SetObjRef( SUPERV::Graph::_narrow( aNode ) ) ;
+             }
+
+            }
+          } ;
+
+    virtual CNode_Impl * ObjImpl() {
+            CNode_Impl * objimpl = NULL ;
+            if ( DataFlowNode() && _IsNode ) {
+              objimpl = DataFlowNode()->ObjImpl() ;
+           }
+            else {
+              objimpl = DataFlowEditor()->Graph()->ObjImpl() ;
+            }
+            return objimpl ; } ;
+    virtual void SetObjImpl( CNode_Impl * objimpl  ) {
+            if ( DataFlowNode() && _IsNode ) {
+              DataFlowNode()->SetObjImpl( objimpl ) ;
+           }
+            else {
+              if ( DataFlowEditor() ) {
+                DataFlowEditor()->Graph()->SetObjImpl( objimpl ) ;
+             }
+              if ( DataFlowExecutor() ) {
+                DataFlowExecutor()->Graph()->SetObjImpl( objimpl ) ;
              }
 
             }
@@ -246,6 +257,8 @@ class CNode_Impl : public POA_SUPERV::CNode ,
 
     virtual long CpuUsed() ;
 
+    virtual bool IsExecuting();
+
 } ;
 
 #endif
index e5913bda3e064fe430836bdcc7cc37b7e7f36934..04bc8da801b3c7d7c40bba7383c76532332984f0 100644 (file)
@@ -72,13 +72,10 @@ ELNode_Impl::~ELNode_Impl() {
 }
 
 void ELNode_Impl::destroy() {
-//  MESSAGE("-------->  ELNode_Impl::destroy()  BEGIN");
-//  beginService( "ELNode_Impl::Destroy" );
+  beginService( "ELNode_Impl::Destroy" );
   if ( DataFlowEditor()->IsEditing() ) {
-    MESSAGE("-------->  Editing dataflow");
     SUPERV::GNode_ptr aCoupled = SUPERV::GNode::_narrow( Coupled() ) ;
     if ( Delete() ) {
-      MESSAGE("-------->  Delete return true");
       _poa->deactivate_object(*_id) ;
       CORBA::release(_poa) ;
       delete(_id) ;
@@ -89,26 +86,19 @@ void ELNode_Impl::destroy() {
       aCoupled->destroy() ;
     }
   }
-//  endService( "ELNode_Impl::Destroy" );
-//  MESSAGE("-------->  ELNode_Impl::destroy()  END");
+  endService( "ELNode_Impl::Destroy" );
 }
 
 bool ELNode_Impl::Delete() {
-//  beginService( "ELNode_Impl::Delete" );
-  MESSAGE("-------->  ELNode_Impl::Delete()  BEGIN");
+  beginService( "ELNode_Impl::Delete" );
   bool RetVal = false ;
   if ( DataFlowEditor()->IsEditing() ) {
     DeletePorts() ;
-    MESSAGE("-------->  In Delete: Editing dataflow");
     RetVal = DataFlowEditor()->RemoveNode( Name() ) ;
-    MESSAGE("-------->  RetVal = "<<RetVal);
     if ( RetVal ) {
-      MESSAGE("-------->  Before IsValid");
       RetVal = DataFlowEditor()->IsValid() ;
-      MESSAGE("-------->  After IsValid");
     }
   }
-//  endService( "ELNode_Impl::Delete" );
-  MESSAGE("-------->  ELNode_Impl::Delete()  END");
+  endService( "ELNode_Impl::Delete" );
   return RetVal ;
 }
index 290df45fe3efda515812ade547a334e7d447c2d7..9fbd6d4be6a81ad9cc1b4ac1f2a6ab4a0b11eebd 100644 (file)
@@ -111,9 +111,7 @@ char * FNode_Impl::GetComponentName() {
 bool FNode_Impl::SetComponentName( const char * aComponentName ) {
 //  beginService( "FNode_Impl::SetComponentName" );
   bool RetVal = false ;
-  if ( DataFlowEditor()->IsEditing() ) {
-    RetVal = DataFlowNode()->ComponentName( aComponentName ) ;
-  }
+  RetVal = DataFlowNode()->ComponentName( aComponentName ) ;
 //  endService( "FNode_Impl::SetComponentName" );
   return RetVal ;
 }
@@ -126,9 +124,7 @@ char * FNode_Impl::GetInterfaceName() {
 bool FNode_Impl::SetInterfaceName( const char * anInterfaceName ) {
 //  beginService( "FNode_Impl::SetInterfaceName" );
   bool RetVal = false ;
-  if ( DataFlowEditor()->IsEditing() ) {
     RetVal = DataFlowNode()->InterfaceName( anInterfaceName ) ;
-  }
 //  endService( "FNode_Impl::SetInterfaceName" );
   return RetVal ;
 }
@@ -141,16 +137,17 @@ char * FNode_Impl::GetContainer() {
 bool FNode_Impl::SetContainer( const char * aDataFlowContainer ) {
 //  beginService( "FNode_Impl::SetContainer" );
   bool RetVal = false ;
-  GraphExecutor::DataFlow * _DataFlowExecutor = DataFlowEditor()->Executor() ;
-  if ( DataFlowEditor()->IsEditing() ) {
+//  GraphExecutor::DataFlow * _DataFlowExecutor = DataFlowEditor()->Executor() ;
+//  if ( DataFlowEditor()->IsEditing() ) {
     RetVal = DataFlowNode()->Computer( aDataFlowContainer ) ;
-  }
-  else if ( _DataFlowExecutor && ( _DataFlowExecutor->IsSuspended() ||
-            _DataFlowExecutor->IsSuspended( DataFlowNode()->Name() ) ) ) {
-    if ( _DataFlowExecutor->Graph()->GetChangeGraphNode( DataFlowNode()->Name() ) ) {
-      RetVal = ((GraphEditor::InNode * ) _DataFlowExecutor->Graph()->GetChangeGraphNode( DataFlowNode()->Name() )->GetInNode())->Computer( aDataFlowContainer ) ;
-    }
-  }
+//  }
+//  else if ( _DataFlowExecutor && ( _DataFlowExecutor->IsSuspended() ||
+//            _DataFlowExecutor->IsSuspended( DataFlowNode()->Name() ) ) ) {
+//    if ( _DataFlowExecutor->Graph()->GetChangeGraphNode( DataFlowNode()->Name() ) ) {
+//      RetVal = ((GraphEditor::InNode * ) _DataFlowExecutor->Graph()->GetChangeGraphNode( DataFlowNode()->Name() )->GetInNode())->Computer( aDataFlowContainer ) ;
+      DataFlowEditor()->UnValid() ;
+//    }
+//  }
 //  endService( "FNode_Impl::SetContainer" );
   return RetVal ;
 }
index 6d7cd4a29a6866193ed7e3bc5d54bbe167563626..9299a9763e49b342926cf5548af16da37a21712f 100644 (file)
@@ -130,31 +130,6 @@ GNode_Impl::GNode_Impl( CORBA::ORB_ptr orb ,
 //  endService( "GNode_Impl::GNode_Impl" );  
 }
 
-GNode_Impl::GNode_Impl( CORBA::ORB_ptr orb ,
-                     PortableServer::POA_ptr poa ,
-                     PortableServer::ObjectId * contId , 
-                     const char *instanceName ,
-                      const char *interfaceName ,
-                      GraphExecutor::DataFlow * aDataFlowExecutor ,
-                      GraphExecutor::InNode * aDataFlowExecutorNode ) :
-//  Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, false) {
-  INode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowExecutor , aDataFlowExecutorNode ) {
-//  beginService( "GNode_Impl::GNode_Impl" );
-  if ( DataFlowExecutorNode() && DataFlowExecutorNode()->IsGOTONode() ) {
-//    MESSAGE( "GNode_Impl::GNode_Impl " << DataFlowExecutorNode()->Name()
-//             << " _poa->activate_object" );
-    _thisObj = this ;
-    _id = _poa->activate_object(_thisObj);
-  }
-  else {
-//    MESSAGE( "GNode_Impl::GNode_Impl NO _poa->activate_object" );
-  }
-  _Orb = CORBA::ORB::_duplicate(orb);
-  _Poa = poa ;
-  _ContId = contId ;
-//  endService( "GNode_Impl::GNode_Impl" );  
-}
-
 GNode_Impl::~GNode_Impl() {
   beginService( "GNode_Impl::~GNode_Impl" );
   endService( "GNode_Impl::~GNode_Impl" );
@@ -177,6 +152,18 @@ bool GNode_Impl::Delete() {
   beginService( "GNode_Impl::Delete" );
   bool RetVal = false ;
   if ( DataFlowEditor()->IsEditing() ) {
+    if ( DataFlowNode() ) {
+      GraphBase::GOTONode * aGOTONode = DataFlowNode()->GOTONode() ;
+      if ( aGOTONode ) {
+        GraphBase::GOTONode * aCoupledNode = (GraphBase::GOTONode * ) aGOTONode->CoupledNode() ;
+        if ( aCoupledNode && ( aCoupledNode->IsOneOfGOTONodes() || aCoupledNode->IsDataFlowNode() ||
+                               aCoupledNode->IsDataStreamNode() ) ) {
+          aCoupledNode->CoupledNode( NULL ) ;
+          aCoupledNode->MacroObject( SUPERV::Graph::_nil() ) ;
+          aCoupledNode->GraphMacroLevel( 0 ) ;
+        }
+      }
+    }
     DeletePorts() ;
     RetVal = DataFlowEditor()->RemoveNode( Name() ) ;
     if ( RetVal )
@@ -227,3 +214,31 @@ SUPERV::INode_ptr GNode_Impl::Coupled() {
   return SUPERV::INode::_duplicate( iobject ) ;
 }
 
+bool GNode_Impl::SetCoupled( const char * anInLineNode )
+{
+  GraphBase::InLineNode * CoupledINode = (GraphBase::InLineNode * ) DataFlowEditor()->Graph()->GetGraphNode( anInLineNode ) ;
+  if ( !CoupledINode ) {
+    
+    // asv : 2.11.04 : nullify Coupled node if anInLineNode == "" (bug 7113)
+    if ( anInLineNode==NULL || !strlen( anInLineNode ) ) {
+      DataFlowNode()->CoupledNode( NULL );
+    }
+
+    return false;
+  } 
+  if ( ( IsGOTO() && ( CoupledINode->IsInLineNode() || CoupledINode->IsLoopNode() || CoupledINode->IsSwitchNode() ) ) ||
+       ( !IsGOTO() && ( IsLoop() || IsSwitch() || IsEndLoop() || IsEndSwitch() ) ) ) {
+    DataFlowNode()->CoupledNode( CoupledINode ) ;
+    if ( CoupledINode && IsSwitch() ) {
+      DataFlowEditor()->AddLink( Name() , "Default" ,CoupledINode->Name() , "Default" ) ;
+    }
+    else if ( CoupledINode && ( IsLoop() || IsEndLoop() ) ) {
+      DataFlowEditor()->AddLink( Name() , "DoLoop" , CoupledINode->Name() , "DoLoop" ) ;
+    }
+    else if ( CoupledINode && IsGOTO() ) {
+      DataFlowEditor()->AddLink( Name() , "OutGate" ,CoupledINode->Name() , "InGate" ) ;
+    }
+    return  true ;
+  }
+  return false ; 
+}
index 52ddcc187428fde931a7dc27014a3aed4e71303c..b5f87bbfe09c0833e3c4994c994956a8db6d9fce 100644 (file)
@@ -68,49 +68,12 @@ class GNode_Impl : public INode_Impl ,
                 const char *interfaceName ,
                 GraphEditor::DataFlow * DataFlowEditor ,
                 GraphEditor::InNode * DataFlowNode ) ;
-    GNode_Impl( CORBA::ORB_ptr orb ,
-               PortableServer::POA_ptr poa ,
-               PortableServer::ObjectId * contId , 
-               const char *instanceName ,
-                const char *interfaceName ,
-                GraphExecutor::DataFlow * DataFlowExecutor ,
-                GraphExecutor::InNode * DataFlowExecutorNode ) ;
     virtual ~GNode_Impl() ;
     virtual void destroy() ;
     virtual bool Delete() ;
 
-    virtual bool SetCoupled( const char * anInLineNode ) {
-            GraphBase::InLineNode * CoupledINode = (GraphBase::InLineNode * ) DataFlowEditor()->Graph()->GetGraphNode( anInLineNode ) ;
-//            cout << Name() << ".SetCoupled " << anInLineNode << endl ;
-//            if ( CoupledINode && ( IsGOTO() &&
-            if ( ( IsGOTO() &&
-                   ( CoupledINode->IsInLineNode() || CoupledINode->IsLoopNode() ||
-                     CoupledINode->IsSwitchNode() ) ) ||
-                 ( !IsGOTO() && ( IsLoop() || IsSwitch() ||
-                                  IsEndLoop() || IsEndSwitch() ) ) ) {
-              DataFlowNode()->CoupledNode( CoupledINode ) ;
-              if ( CoupledINode && IsSwitch() ) {
-                DataFlowEditor()->AddLink( Name() , "Default" ,
-                                           CoupledINode->Name() , "Default" ) ;
-             }
-              else if ( CoupledINode && ( IsLoop() || IsEndLoop() ) ) {
-                DataFlowEditor()->AddLink( Name() , "DoLoop" ,
-                                           CoupledINode->Name() , "DoLoop" ) ;
-             }
-              else if ( CoupledINode && IsGOTO() ) {
-                DataFlowEditor()->AddLink( Name() , "OutGate" ,
-                                           CoupledINode->Name() , "InGate" ) ;
-             }
-//              cout << "SetCoupled " << CoupledINode->Name() << endl ;
-              return  true ;
-           }
-//            cout << Name() << ".SetCoupled ERROR " << anInLineNode << " " << CoupledINode
-//                 << " of " << Kind() ;
-//            if ( CoupledINode ) {
-//              cout << " kinfOkCoupled " << CoupledINode->Kind() ;
-//         }
-//            cout << endl ;
-            return false ; } ;
+    virtual bool SetCoupled( const char * anInLineNode );
+
     virtual SUPERV::INode_ptr Coupled() ;
 
     virtual GraphBase::GOTONode * BaseNode() {
index 31358d78322d656f7ded040d322f1ff71f74d874..3af8ebd8201379064293c8b7cb6353d1bbb49ff1 100644 (file)
@@ -73,9 +73,9 @@ static void CreateEditor( CORBA::ORB_ptr orb ,
     }
   }
   string theDataFlowInstanceName = theDataFlowName ;
-  if ( !aXmlFile ) {
-    theDataFlowInstanceName = theAutomaton->GraphInstanceName( theDataFlowName ) ;
-  }
+//  if ( !aXmlFile ) {
+//    theDataFlowInstanceName = theAutomaton->GraphInstanceName( theDataFlowName ) ;
+//  }
   dbgfile += theDataFlowInstanceName ;
   dbgfile = dbgfile + "_" + theAutomaton->DbgFileNumber() + ".log" ;
   SALOME_NamingService * NamingService = new SALOME_NamingService( orb ) ;
@@ -84,10 +84,11 @@ static void CreateEditor( CORBA::ORB_ptr orb ,
                                                 aKindOfNode ) ;
   MESSAGE( "CreateEditor " << theDataFlowName << " uniquely named " << theDataFlowInstanceName << " created with "
            << dbgfile.c_str() ) ;
+
   delete [] theDataFlowName ;
 }
 
-static void CreateEditor( CORBA::ORB_ptr orb ,
+static void CreateExecutor( CORBA::ORB_ptr orb ,
                          const char *instanceName ,
                           const char *aDataFlowName ,
                           const SUPERV::KindOfNode aKindOfNode ,
@@ -116,8 +117,9 @@ static void CreateEditor( CORBA::ORB_ptr orb ,
   *aDataFlowExecutor = new GraphExecutor::DataFlow( orb , NamingService ,
                                                     theDataFlowInstanceName.c_str() , dbgfile.c_str() ,
                                                     aKindOfNode ) ;
-  MESSAGE( "CreateEditor " << theDataFlowName << " " << theDataFlowInstanceName << " created with "
+  MESSAGE( "CreateExecutor " << theDataFlowName << " " << theDataFlowInstanceName << " created with "
            << dbgfile.c_str() ) ;
+
   delete [] theDataFlowName ;
 }
 
@@ -136,6 +138,7 @@ Graph_Impl::Graph_Impl( CORBA::ORB_ptr orb ,
   _Orb = CORBA::ORB::_duplicate(orb);
   _Poa = poa ;
   _ContId = contId ;
+  _DebugFileName = NULL ;
   if ( aKindOfNode == SUPERV::DataFlowGraph || aKindOfNode == SUPERV::MacroNode ) {
 //    MESSAGE( "Graph_Impl::Graph_Impl _poa->activate_object" );
     _thisObj = this ;
@@ -150,12 +153,16 @@ Graph_Impl::Graph_Impl( CORBA::ORB_ptr orb ,
     GraphEditor::DataFlow * aDataFlowEditor ;
     CreateEditor( orb , instanceName , aDataFlowName , aKindOfNode ,
                   dbgfile , &aDataFlowEditor ) ;
+
+    if ( _DebugFileName ) {
+      delete [] _DebugFileName ;
+    }
     _DebugFileName = new char[ strlen( dbgfile.c_str() )+1 ] ;
     strcpy( _DebugFileName , dbgfile.c_str() ) ;
 
     _NamingService = new SALOME_NamingService( orb ) ;
     DataFlowEditor( aDataFlowEditor ) ;
-    DataFlowEditor()->Graph()->SetGraphEditor( aDataFlowEditor ) ;
+    DataFlowEditor()->Graph()->GraphEditor( aDataFlowEditor ) ;
     DataFlowEditor()->Graph()->SetObjImpl( this ) ;
   }
   pthread_mutex_init( &_MutexExecutorWait , NULL ) ;
@@ -173,7 +180,8 @@ Graph_Impl::Graph_Impl( CORBA::ORB_ptr orb ,
   GNode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowEditor , aDataFlowNode ) {
 //  beginService( "Graph_Impl::Graph_Impl" );
 //  MESSAGE( aDataFlowEditor->Graph()->Name() << " " );
-  if ( aDataFlowEditor->Graph()->IsDataFlowNode() || aDataFlowNode->IsMacroNode() ) {
+  if ( aDataFlowEditor->Graph()->IsDataFlowNode() ||
+       ( aDataFlowNode && aDataFlowNode->IsMacroNode() ) ) {
 //    MESSAGE( "Graph_Impl::Graph_Impl _poa->activate_object" );
     _thisObj = this ;
     _id = _poa->activate_object(_thisObj);
@@ -184,43 +192,15 @@ Graph_Impl::Graph_Impl( CORBA::ORB_ptr orb ,
   _Orb = CORBA::ORB::_duplicate(orb);
   _Poa = poa ;
   _ContId = contId ;
+  _DebugFileName = NULL ;
   DataFlowEditor( aDataFlowEditor ) ;
-    DataFlowEditor()->Graph()->SetGraphEditor( aDataFlowEditor ) ;
+  DataFlowEditor()->Graph()->GraphEditor( aDataFlowEditor ) ;
   DataFlowEditor()->Graph()->SetObjImpl( this ) ;
   pthread_mutex_init( &_MutexExecutorWait , NULL ) ;
 //  DataFlowExecutor( NULL ) ;
 //  endService( "Graph_Impl::Graph_Impl" );  
 }
 
-Graph_Impl::Graph_Impl( CORBA::ORB_ptr orb ,
-                       PortableServer::POA_ptr poa ,
-                       PortableServer::ObjectId * contId , 
-                       const char *instanceName ,
-                        const char *interfaceName ,
-                        GraphExecutor::DataFlow * aDataFlowExecutor ,
-                        GraphExecutor::InNode * aDataFlowExecutorNode ) :
-  GNode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowExecutor , aDataFlowExecutorNode ) {
-//  beginService( "Graph_Impl::Graph_Impl" );
-//  MESSAGE( aDataFlowExecutor->Graph()->Name() << " " );
-  if ( aDataFlowExecutor->Graph()->IsDataFlowNode() || aDataFlowExecutorNode->IsMacroNode() ) {
-//    MESSAGE( "Graph_Impl::Graph_Impl _poa->activate_object" );
-    _thisObj = this ;
-    _id = _poa->activate_object(_thisObj);
-  }
-  else {
-//    MESSAGE( "Graph_Impl::Graph_Impl NO _poa->activate_object " );
-  }
-  _Orb = CORBA::ORB::_duplicate(orb);
-  _Poa = poa ;
-  _ContId = contId ;
-  DataFlowExecutor( aDataFlowExecutor ) ;
-  DataFlowExecutor()->Graph()->SetGraphExecutor( aDataFlowExecutor ) ;
-  DataFlowExecutor()->Graph()->SetObjImpl( this ) ;
-  pthread_mutex_init( &_MutexExecutorWait , NULL ) ;
-//  DataFlowExecutor( NULL ) ;
-//  endService( "Graph_Impl::Graph_Impl" );  
-}
-
 Graph_Impl::Graph_Impl() {
 }
 
@@ -231,11 +211,25 @@ Graph_Impl::~Graph_Impl() {
 
 void Graph_Impl::destroy() {
   beginService( "Graph_Impl::destroy" );
+  if ( DataFlowNode() && DataFlowNode()->ComputingNode()->IsMacroNode() ) {
+    SUPERV::Graph_var aGraph = DataFlowNode()->GOTONode()->MacroObject() ;
+    GNode_Impl::Delete() ;
+    if ( !CORBA::is_nil( aGraph ) ) {
+      aGraph->destroy() ;
+    }
+  }
+  else {
+    SUPERV::Graph_var aGraph = DataFlowEditor()->Graph()->MacroObject() ;
+    GNode_Impl::Delete() ;
+    if ( !CORBA::is_nil( aGraph ) ) {
+      aGraph->destroy() ;
+    }
+  }
   _poa->deactivate_object(*_id) ;
   CORBA::release(_poa) ;
   delete(_id) ;
   _thisObj->_remove_ref();
-//  endService( "Graph_Impl::destroy" );
+  endService( "Graph_Impl::destroy" );
 }
 
 
@@ -293,7 +287,9 @@ bool Graph_Impl::LoadGraphs( GraphBase::ListOfSGraphs * aListOfDataFlows ) {
   bool RetVal = false ;
   if ( DataFlowEditor()->IsEditing() ) {
 //    RetVal = DataFlowEditor()->LoadDataFlows( aListOfDataFlows ) ;
-    RetVal = LoadDataFlows( DataFlowEditor() , aListOfDataFlows , 0 ) ;
+    if ( CORBA::is_nil( LoadDataFlows( DataFlowEditor() , aListOfDataFlows , 0 ) ) ) {
+      RetVal = false ;
+    }
   }
   endService( "Graph_Impl::LoadGraphs" );
   return RetVal ;
@@ -307,7 +303,9 @@ bool Graph_Impl::Import(const char * aXmlFile ) {
     RetVal = DataFlowEditor()->LoadXml( aXmlFile , aListOfDataFlows ) ;
     if ( RetVal && aXmlFile != NULL ) {
 //      RetVal = DataFlowEditor()->LoadDataFlows( &aListOfDataFlows ) ;
-      RetVal = LoadDataFlows( DataFlowEditor() , &aListOfDataFlows , 0 ) ;
+      if ( CORBA::is_nil( LoadDataFlows( DataFlowEditor() , &aListOfDataFlows , 0 ) ) ) {
+        RetVal = false ;
+      }
     }
   }
   endService( "Graph_Impl::Import" );
@@ -358,6 +356,7 @@ SUPERV::CNode_ptr Graph_Impl::CNode( const SALOME_ModuleCatalog::Service &NodeSe
       myNode->SetObjRef( SUPERV::CNode::_duplicate( iobject ) ) ;
     }
   }
+  DataFlowEditor()->UnValid() ;
   endService( "Graph_Impl::CNode" );
   return SUPERV::CNode::_duplicate( iobject ) ;
 }
@@ -381,6 +380,7 @@ SUPERV::FNode_ptr Graph_Impl::FNode( const char * NodeComponentName ,
       myNode->SetObjRef( SUPERV::FNode::_duplicate( iobject ) ) ;
     }
   }
+  DataFlowEditor()->UnValid() ;
   endService( "Graph_Impl::FNode" );
   return SUPERV::FNode::_duplicate( iobject ) ;
 }
@@ -432,6 +432,7 @@ SUPERV::GNode_ptr Graph_Impl::GNode( const char * FuncName ,
       }
     }
   }
+  DataFlowEditor()->UnValid() ;
   endService( "Graph_Impl::GNode" );
   return SUPERV::GNode::_duplicate( iobject ) ;
 }
@@ -498,6 +499,7 @@ SUPERV::LNode_ptr Graph_Impl::LNode( const char * InitName ,
     }
   }
   anEndOfLoop = SUPERV::ELNode::_duplicate( iendobject ) ;
+  DataFlowEditor()->UnValid() ;
   endService( "Graph_Impl::LNode" );
   return SUPERV::LNode::_duplicate( iobject ) ;
 }
@@ -551,24 +553,30 @@ SUPERV::SNode_ptr Graph_Impl::SNode( const char * FuncName ,
     }
   }
   anEndOfSwitch = SUPERV::ESNode::_duplicate( iendobject ) ;
+  DataFlowEditor()->UnValid() ;
   endService( "Graph_Impl::SNode" );
   return SUPERV::SNode::_duplicate( iobject ) ;
 }
 
 // WARNING : THIS IS COMPLICATED :
-bool Graph_Impl::LoadDataFlows( GraphEditor::DataFlow * aDataFlowEditor ,
-                                GraphBase::ListOfSGraphs * aListOfDataFlows ,
-                                int index ) {
+SUPERV::Graph_var Graph_Impl::LoadDataFlows( GraphEditor::DataFlow * aDataFlowEditor ,
+                                             GraphBase::ListOfSGraphs * aListOfDataFlows ,
+                                             int index ) {
   beginService( "Graph_Impl::EditorLoadDataFlows" ) ;
+  MESSAGE("Graph_Impl::LoadDataFlows index " << index << " " << (*aListOfDataFlows)[index].Info.theName.c_str() ) ;
+
   SUPERV::Graph_var iobject = SUPERV::Graph::_nil() ;
+// That method is recursive :
+// At first we load the supergraph with index = 0 :
+// (After we load the graph corresponding to each MacroNode :)
   if ( !aDataFlowEditor->LoadDataFlow( &(*aListOfDataFlows)[ index ] ) ) {
-    MESSAGE("Graph_Impl::LoadDataFlows failed" ) ;
-    return false ;
+    MESSAGE("Graph_Impl::LoadDataFlows failed " << (*aListOfDataFlows)[index].Info.theName.c_str() ) ;
+    return SUPERV::Graph::_duplicate( iobject ) ;
   }
 // That graph is not a StreamGraph :
   else if ( !aDataFlowEditor->Graph()->HasDataStream() ) {
     aDataFlowEditor->Graph()->Kind( SUPERV::DataFlowGraph ) ;
-    aDataFlowEditor->Graph()->SetGraphEditor( aDataFlowEditor ) ;
+//    aDataFlowEditor->Graph()->SetGraphEditor( aDataFlowEditor ) ;
     Graph_Impl * myGraph ;
 // We create a Graph ObjRef for that graph
     myGraph = new Graph_Impl( _Orb , _Poa, _ContId,
@@ -578,237 +586,262 @@ bool Graph_Impl::LoadDataFlows( GraphEditor::DataFlow * aDataFlowEditor ,
     CORBA::Object_var obj = _poa->id_to_reference(*id) ;
     iobject = SUPERV::Graph::_narrow( obj ) ;
     myGraph->SetObjRef( SUPERV::Graph::_duplicate( iobject ) ) ;
+    myGraph->SetObjImpl( (CNode_Impl * ) myGraph ) ;
     GraphBase::Graph * aGraph = myGraph->DataFlowEditor()->Graph() ;
     int i ;
+
+// asv: set Editor for the graph itself and for all its macro nodes
+    aGraph->GraphEditor( aDataFlowEditor );
+
+// For the supergraph or each graph of MacroNodes we search MacroNodes recursively :
     for ( i = 0 ; i < aGraph->GraphNodesSize() ; i++ ) {
       if ( aGraph->GraphNodes( i )->IsMacroNode() ) {
         GraphBase::GOTONode * aMacroNode = (GraphBase::GOTONode * ) aGraph->GraphNodes( i ) ;
 
+       // asv : 05.11.04 : fix of bug - "insert file" into existing graph with MacroNodes worked incorrectly!
+       // aMacroNode is an "old" node, and here we must analize only "new" nodes, that
+       // came from aListOfDataFlows and were loaded by aDataFlowEditor->LoadDataFlow( &(*aListOfDataFlows)[ index ] )
+       // so here we check if the node is "new" or "old"
+       if ( aMacroNode->GraphEditor() && aMacroNode->CoupledNode() )
+         continue;
 
+       // asv: set Editor for the graph itself and for all its macro nodes
+       aMacroNode->GraphEditor( aDataFlowEditor );
 
-// Creation of a GraphMacroNode in the current editor
+       // Creation of a GraphMacroNode ObjRef in the current editor
         SUPERV::Graph_var macroiobject = SUPERV::Graph::_nil() ;
-        string aMacroNodeName = string( "Macro_" ) + string( myGraph->Name() ) ;
         Graph_Impl * myMacroNode ;
         myMacroNode = new Graph_Impl( _Orb , _Poa, _ContId,
                                       instanceName() , interfaceName() ,
-                                      aMacroNodeName.c_str() , SUPERV::MacroNode ) ;
+                                      aMacroNode->Name() , SUPERV::MacroNode ) ;
         id = myMacroNode->getId() ;
         obj = _poa->id_to_reference(*id);
         macroiobject = SUPERV::Graph::_narrow( obj ) ;
-        myMacroNode->DataFlowEditor( DataFlowEditor() ) ;
-        aMacroNode->SetGraphEditor( DataFlowEditor() ) ;
+        myMacroNode->DataFlowEditor( aDataFlowEditor ) ;
         GraphEditor::InNode * aDataFlowNode = (GraphEditor::InNode * ) aMacroNode->GetInNode() ;
         myMacroNode->DataFlowNode( aDataFlowNode ) ;
         aDataFlowNode->SetObjRef( SUPERV::CNode::_duplicate( SUPERV::CNode::_narrow( obj ) ) ) ;
-        aDataFlowNode->SetObjImpl( this ) ;
-
-
-
-
+        aDataFlowNode->SetObjImpl( myMacroNode ) ;
 
         char * aCoupledNodeName = aMacroNode->CoupledNodeName() ;
         MESSAGE( "LoadDataFlows MacroNode " << aMacroNode->Name() << " --> " << aCoupledNodeName
                  << " to be searched among " << (*aListOfDataFlows).size() << " Graphs" ) ;
         int index ;
+        bool found = false ;
         for ( index = 0 ; index < (int ) (*aListOfDataFlows).size() ; index++ ) {
+          MESSAGE( "LoadDataFlows Graph" << index << " " << (*aListOfDataFlows)[index].Info.theName.c_str() ) ;
           if ( !strcmp( aCoupledNodeName , (*aListOfDataFlows)[index].Info.theName.c_str() ) ) {
+            found = true ;
             string dbgfile ;
 // At first create the editor and a StreamGraph
             GraphEditor::DataFlow * aMacroGraphDataFlowEditor ;
             CreateEditor( _Orb , instanceName() , aCoupledNodeName , SUPERV::DataStreamGraph ,
                           dbgfile , &aMacroGraphDataFlowEditor ) ;
-//            if ( !aDataFlowEditor->LoadDataFlow( aDataFlowEditor , aListOfDataFlows , index ) ) {
+
+            if ( _DebugFileName ) {
+              delete [] _DebugFileName ;
+            }
+            _DebugFileName = new char[ strlen( dbgfile.c_str() )+1 ] ;
+            strcpy( _DebugFileName , dbgfile.c_str() ) ;
+
             MESSAGE( "RECURSIVE IMPORT OF GRAPHS OF MACRONODES :" << aCoupledNodeName ) ;
-            if ( !LoadDataFlows( aMacroGraphDataFlowEditor , aListOfDataFlows , index ) ) {
+            if ( CORBA::is_nil( LoadDataFlows( aMacroGraphDataFlowEditor , aListOfDataFlows , index ) ) ) {
               MESSAGE("Graph_Impl::LoadDataFlows failed" ) ;
-              return false ;
+              return SUPERV::Graph::_duplicate( iobject ) ;
             }
 
 // That graph is not a StreamGraph :
             else if ( !aMacroGraphDataFlowEditor->Graph()->HasDataStream() ) {
-              aMacroGraphDataFlowEditor->Graph()->Kind( SUPERV::DataFlowGraph ) ;
-              aMacroGraphDataFlowEditor->Graph()->SetGraphEditor( aMacroGraphDataFlowEditor ) ;
               Graph_Impl * myMacroGraph ;
-// We create a Graph ObjRef for that graph
-              myMacroGraph = new Graph_Impl( _Orb , _Poa, _ContId,
-                                             instanceName() , interfaceName() ,
-                                             aMacroGraphDataFlowEditor , NULL ) ;
-              PortableServer::ObjectId * id = myMacroGraph->getId() ;
-              CORBA::Object_var obj = _poa->id_to_reference(*id);
-              SUPERV::Graph_var iobject = SUPERV::Graph::_narrow( obj ) ;
-              myMacroGraph->SetObjRef( SUPERV::Graph::_duplicate( iobject ) ) ;
+// The Graph ObjRef for that graph was already created
+              myMacroGraph = (Graph_Impl * ) aMacroGraphDataFlowEditor->Graph()->ObjImpl() ;
 
               GraphBase::Graph * aMacroGraph = myMacroGraph->DataFlowEditor()->Graph() ;
+             
               aMacroGraph->GraphMacroLevel( aGraph->GraphMacroLevel() + 1 ) ;
               aMacroGraph->CoupledNode( aMacroNode ) ;
-
-              aMacroGraph->MacroObject( SUPERV::Graph::_duplicate( iobject ) ) ;
               aMacroGraph->MacroObject( SUPERV::Graph::_duplicate( macroiobject ) ) ;
 
 // Set the GraphMacroNode ObjRef in the MacroNode
+              aMacroNode->GraphMacroLevel( aGraph->GraphMacroLevel() + 1 ) ;
               aMacroNode->CoupledNode( aMacroGraph ) ;
-              aMacroNode->MacroObject( SUPERV::Graph::_duplicate( iobject ) ) ;
+              aMacroNode->MacroObject( SUPERV::Graph::_narrow( aMacroGraphDataFlowEditor->Graph()->ObjRef() ) ) ;
+              MESSAGE( "LoadDataFlows aMacroGraph " << aMacroGraph << " " << aMacroGraph->Name()
+                       << " coupled to " << aMacroGraph->CoupledNode() << " "
+                       << aMacroGraph->CoupledNode()->Name() << " Editor " << aMacroGraph->GraphEditor() ) ;
+              MESSAGE( "LoadDataFlows aMacroNode " << aMacroNode << " " << aMacroNode->Name()
+                       << " coupled to " << aMacroNode->CoupledNode() << " "
+                       << aMacroNode->CoupledNode()->Name() << " Editor " << aMacroNode->GraphEditor() ) ;
+              MESSAGE( "LoadDataFlows current Graph " << aGraph << " " << aGraph->Name()
+                       << " coupled to " << aGraph->CoupledNode()
+                       << " Editor " << aGraph->GraphEditor() << " " << aGraph->Name() ) ;
            }
+            break ;
          }
        }
+        if ( !found ) {
+          return SUPERV::Graph::_duplicate( SUPERV::Graph::_nil() ) ;
+       }
       }
     }
   }
+  else if ( (*aListOfDataFlows).size() == 1 ) {
+    StreamGraph_Impl * myStreamGraph ;
+// We create a Graph ObjRef for that graph
+    myStreamGraph = new StreamGraph_Impl( _Orb , _Poa, _ContId,
+                                          instanceName() , interfaceName() ,
+                                          aDataFlowEditor , NULL ) ;
+    PortableServer::ObjectId * id = myStreamGraph->getId() ;
+    CORBA::Object_var obj = _poa->id_to_reference(*id) ;
+    SUPERV::StreamGraph_var Streamiobject = SUPERV::StreamGraph::_nil() ;
+    Streamiobject = SUPERV::StreamGraph::_narrow( obj ) ;
+    myStreamGraph->SetObjRef( SUPERV::StreamGraph::_duplicate( Streamiobject ) ) ;
+    myStreamGraph->SetObjImpl( (CNode_Impl * ) myStreamGraph ) ;
+//    iobject = SUPERV::Graph::_narrow( obj ) ;
+    iobject = SUPERV::Graph::_narrow( Streamiobject ) ;
+  }
+  else {
+    MESSAGE( "Graph_Impl::LoadDataFlows StreamGraph with MacroNodes not yet implemented" ) ;
+  }
 
   endService( "Graph_Impl::EditorLoadDataFlows" );
-  return true ;
+  return SUPERV::Graph::_duplicate( iobject ) ;
 }
 
-bool Graph_Impl::LoadDataFlows( GraphExecutor::DataFlow * aDataFlowExecutor ,
-                                GraphBase::ListOfSGraphs * aListOfDataFlows ,
-                                int index ) {
+SUPERV::Graph_var Graph_Impl::LoadDataFlows( GraphExecutor::DataFlow * aDataFlowExecutor ,
+                                             GraphBase::ListOfSGraphs * aListOfDataFlows ,
+                                             int index ) {
   beginService( "Graph_Impl::ExecutorLoadDataFlows" ) ;
-  MESSAGE("Graph_Impl::LoadDataFlows index " << index << " " << (*aListOfDataFlows)[index].Info.theName.c_str() ) ;
-  SUPERV::Graph_var iobject = SUPERV::Graph::_nil() ;
-// That method is recursive :
-// At first we load the supergraph with index = 0 :
-// (After we load the graph corresponding to each MacroNode :)
+  MESSAGE("Graph_Impl::LoadDataFlows(Executor) index " << index << " " << (*aListOfDataFlows)[index].Info.theName.c_str() << " aDataFlowExecutor " << aDataFlowExecutor ) ;
+
+  // That method is recursive :
+  // At first we load the supergraph with index = 0 :
+  // (After we load the graph corresponding to each MacroNode :)
   if ( !aDataFlowExecutor->LoadDataFlow( &(*aListOfDataFlows)[ index ] ) ) {
-    MESSAGE("Graph_Impl::LoadDataFlows failed" ) ;
-    return false ;
+    MESSAGE("Graph_Impl::LoadDataFlows(Executor) failed, could not LoadDataFlow(supergraph)" ) ;
+    return SUPERV::Graph::_duplicate( SUPERV::Graph::_nil() ) ;
   }
-// That graph is not a StreamGraph :
-  else if ( !aDataFlowExecutor->Graph()->HasDataStream() ) {
+
+  // That graph is not a StreamGraph :
+  else {
     aDataFlowExecutor->Graph()->Kind( SUPERV::DataFlowGraph ) ;
     GraphEditor::DataFlow * aDataFlowEditor ;
-    aDataFlowEditor = theAutomaton->MapGraph( (*aListOfDataFlows)[index].Info.theName.c_str() )->GraphEditor() ;
+    aDataFlowEditor = DataFlowEditor() ;
+    GraphBase::Graph * anEditorGraph = aDataFlowEditor->Graph() ;
+    GraphBase::Graph * anExecutorGraph = aDataFlowExecutor->Graph() ;
+    if ( aDataFlowEditor->Executor() ) {
+      delete aDataFlowEditor->Executor() ;
+      aDataFlowEditor->Executor( NULL ) ;
+      aDataFlowEditor->Editing() ;
+    }
     aDataFlowEditor->Executor( aDataFlowExecutor ) ;
-    aDataFlowEditor->Graph()->SetGraphEditor( aDataFlowEditor ) ;
-    aDataFlowEditor->Graph()->SetGraphExecutor( aDataFlowExecutor ) ;
-    aDataFlowExecutor->Graph()->SetGraphEditor( aDataFlowEditor ) ;
-    aDataFlowExecutor->Graph()->SetGraphExecutor( aDataFlowExecutor ) ;
-    Graph_Impl * myGraph ;
-// We create a Graph ObjRef for that graph
-    myGraph = new Graph_Impl( _Orb , _Poa, _ContId,
-                              instanceName() , interfaceName() ,
-                              aDataFlowExecutor , NULL ) ;
-    PortableServer::ObjectId * id = myGraph->getId() ;
-    CORBA::Object_var obj = _poa->id_to_reference(*id) ;
-    iobject = SUPERV::Graph::_narrow( obj ) ;
-    myGraph->SetObjRef( SUPERV::Graph::_duplicate( iobject ) ) ;
-    myGraph->DataFlowEditor( aDataFlowEditor ) ;
-    myGraph->DataFlowExecutor( aDataFlowExecutor ) ;
-    MESSAGE("ExecutorLoadDataFlows IsEditing " << myGraph->Name() << " "
-            << myGraph->DataFlowEditor() << " " << myGraph->DataFlowEditor()->IsEditing() << " "
-            << myGraph->DataFlowEditor()->Graph()->Name() << " "
-            << myGraph->DataFlowEditor()->Graph()->GraphEditor() << " "
-            << myGraph->DataFlowEditor()->Graph()->GraphEditor()->IsEditing() ) ;
-    GraphBase::Graph * aGraph = myGraph->DataFlowExecutor()->Graph() ;
-    int i ;
-// For the supergraph or each graph of MacroNodes we search MacroNodes recursively :
-    for ( i = 0 ; i < aGraph->GraphNodesSize() ; i++ ) {
-      if ( aGraph->GraphNodes( i )->IsMacroNode() ) {
-        GraphBase::GOTONode * aMacroNode = (GraphBase::GOTONode * ) aGraph->GraphNodes( i ) ;
-
-
-
-// Creation of a GraphMacroNode ObjRef in the current executor
-        SUPERV::Graph_var macroiobject = SUPERV::Graph::_nil() ;
-        string aMacroNodeName = string( "Macro_" ) + string( aGraph->Name() ) ;
-        Graph_Impl * myMacroNode ;
-        myMacroNode = new Graph_Impl( _Orb , _Poa, _ContId,
-                                      instanceName() , interfaceName() ,
-                                      aMacroNodeName.c_str() , SUPERV::MacroNode ) ;
-        id = myMacroNode->getId() ;
-        obj = _poa->id_to_reference(*id);
-        macroiobject = SUPERV::Graph::_narrow( obj ) ;
-        myMacroNode->DataFlowEditor( DataFlowEditor() ) ;
-        myMacroNode->DataFlowExecutor( DataFlowExecutor() ) ;
-        aMacroNode->SetGraphEditor( DataFlowEditor() ) ;
-        GraphExecutor::InNode * aDataFlowExecutorNode = (GraphExecutor::InNode * ) aMacroNode->GetInNode() ;
-        myMacroNode->DataFlowNode( aDataFlowExecutorNode ) ;
-        aDataFlowExecutorNode->SetObjRef( SUPERV::CNode::_duplicate( SUPERV::CNode::_narrow( obj ) ) ) ;
-        aDataFlowExecutorNode->SetObjImpl( this ) ;
-
-        char * aCoupledNodeName = aMacroNode->CoupledNodeName() ;
-        MESSAGE( "LoadDataFlows MacroNode " << aMacroNode->Name() << " --> " << aCoupledNodeName
-                 << " to be searched among " << (*aListOfDataFlows).size() << " Graphs" ) ;
-        int index ;
-        for ( index = 0 ; index < (int ) (*aListOfDataFlows).size() ; index++ ) {
-          if ( !strcmp( aCoupledNodeName , (*aListOfDataFlows)[index].Info.theName.c_str() ) ) {
-            string dbgfile ;
-// At first create the editor and a StreamGraph
-            GraphExecutor::DataFlow * aMacroGraphDataFlowExecutor ;
-            CreateEditor( _Orb , instanceName() , aCoupledNodeName , SUPERV::DataStreamGraph ,
-                          dbgfile , &aMacroGraphDataFlowExecutor ) ;
-//            if ( !aDataFlowEditor->LoadDataFlow( aDataFlowEditor , aListOfDataFlows , index ) ) {
-            MESSAGE( "RECURSIVE IMPORT OF GRAPHS OF MACRONODES :" << aCoupledNodeName ) ;
-            if ( !LoadDataFlows( aMacroGraphDataFlowExecutor , aListOfDataFlows , index ) ) {
-              MESSAGE("Graph_Impl::LoadDataFlows failed" ) ;
-              return false ;
-            }
-
-// That graph is not a StreamGraph :
-            else if ( !aMacroGraphDataFlowExecutor->Graph()->HasDataStream() ) {
-              aMacroGraphDataFlowExecutor->Graph()->Kind( SUPERV::DataFlowGraph ) ;
-              aMacroGraphDataFlowExecutor->Graph()->SetGraphExecutor( aMacroGraphDataFlowExecutor ) ;
-              GraphEditor::DataFlow * aDataFlow = theAutomaton->MapGraph( aCoupledNodeName )->GraphEditor() ;
-              if ( aDataFlow == NULL ) {
-                MESSAGE( "ExecutorLoadDataFlows NULL GraphEditor ERROR" ) ;
+    anExecutorGraph->GraphEditor( aDataFlowEditor ) ;
+
+    if ( !aDataFlowExecutor->Graph()->HasDataStream() ) {
+    // For the supergraph or each graph of MacroNodes we search MacroNodes recursively :
+      int i;
+      for ( i = 0 ; i < anExecutorGraph->GraphNodesSize() ; i++ ) {
+        if ( anExecutorGraph->GraphNodes( i )->IsMacroNode() ) {
+          GraphBase::GOTONode * aMacroNode = (GraphBase::GOTONode * ) anExecutorGraph->GraphNodes( i ) ;
+          aMacroNode->GraphEditor( aDataFlowEditor ) ;
+
+       // get the macro node's editor object
+          char * aMacroGraphName = aMacroNode->CoupledNodeName() ;
+          GraphBase::Graph* aMacroGraph =  (GraphBase::Graph*)((GraphBase::GOTONode *)anEditorGraph->GetGraphNode( aMacroNode->Name() ))->CoupledNode() ;
+       GraphEditor::DataFlow* aMacroGraphEditor = aMacroGraph->GraphEditor();
+
+          MESSAGE( "LoadDataFlows(Executor) MacroNode " << aMacroNode->Name() << " Coupled to " << aMacroGraphName
+                   << " to be searched among " << (*aListOfDataFlows).size() << " Graphs" << endl ) ;
+          int index;
+          bool found = false ;
+          for ( index = 0 ; index < (int ) (*aListOfDataFlows).size() && !found; index++ ) {
+            if ( !strcmp( aMacroGraphName , (*aListOfDataFlows)[index].Info.theName.c_str() ) )
+              found = true;
+         }
+         if ( !found ) {
+           MESSAGE("Graph_Impl::LoadDataFlows(Executor) failed, Macro node's coupled graph \"" << aMacroGraphName << "\" was not found" ) ;
+           return SUPERV::Graph::_duplicate( SUPERV::Graph::_nil() ) ;
+         }
+         index--; // it was incremented in "for ..." before last check ( !found ).
+       
+       // At first create the editor and a StreamGraph
+         string dbgfile ;
+         GraphExecutor::DataFlow * aMacroGraphExecutor ;
+         CreateExecutor( _Orb , instanceName() , aMacroGraphName , SUPERV::DataStreamGraph ,
+                       dbgfile , &aMacroGraphExecutor );
+
+       // set GraphMacroLevel for Executor's graph
+         GraphBase::Graph* aMacroGraphExe = aMacroGraphExecutor->Graph();
+            aMacroGraphExe->GraphMacroLevel( anExecutorGraph->GraphMacroLevel() + 1 );
+
+       // load data flows in MacroGraph's executor
+         Graph_Impl* aMacroGraphImpl = (Graph_Impl*) aMacroGraphEditor->Graph()->ObjImpl();
+         MESSAGE( "RECURSIVE IMPORT OF GRAPHS OF MACRONODES : " << aMacroGraphName ) ;
+         if ( CORBA::is_nil( aMacroGraphImpl->LoadDataFlows( aMacroGraphExecutor, aListOfDataFlows , index ) ) ) {
+           MESSAGE("Graph_Impl::LoadDataFlows(Executor) failed,  could not LoadDataFlow( MacroNodeGraph \"" <<aMacroGraphName << "\" )" ) ;
+           return SUPERV::Graph::_duplicate( SUPERV::Graph::_nil() ) ;
+         }
+         
+         // set coupled pair MacroNode <--> MacroGraph
+          aMacroGraphExe->CoupledNode( aMacroNode ) ;
+          aMacroNode->CoupledNode( aMacroGraphExe ) ;
+
+         // initialize MacroNode's InPorts with corresponding "external" values
+         int q ;
+         for ( q = 0 ; q < aMacroNode->GetNodeInPortsSize() ; q++ ) {
+           const GraphBase::InPort * anInPort = aMacroNode->GetNodeInPort( q ) ;
+           if ( anInPort->IsDataConnected() ) {
+             const char* aMacroGraphInPortName = aMacroGraph->GetNodeInPort( q )->PortName();
+             if ( !aMacroGraphExecutor->InputOfAny(  aMacroGraphInPortName, *anInPort->GetOutPort()->Value(),false ) ) {
+               return SUPERV::Graph::_duplicate( SUPERV::Graph::_nil() ) ;
              }
-              aMacroGraphDataFlowExecutor->Graph()->SetGraphEditor( aDataFlow ) ;
-              aMacroGraphDataFlowExecutor->Graph()->SetGraphExecutor( aMacroGraphDataFlowExecutor ) ;
-              aMacroGraphDataFlowExecutor->Graph()->SetGraphPorts() ;
-              Graph_Impl * myMacroGraph ;
-// We create a Graph ObjRef for that graph
-              myMacroGraph = new Graph_Impl( _Orb , _Poa, _ContId,
-                                             instanceName() , interfaceName() ,
-                                             aMacroGraphDataFlowExecutor , NULL ) ;
-              PortableServer::ObjectId * id = myMacroGraph->getId() ;
-              CORBA::Object_var obj = _poa->id_to_reference(*id);
-              SUPERV::Graph_var iobject = SUPERV::Graph::_narrow( obj ) ;
-              myMacroGraph->SetObjRef( SUPERV::Graph::_duplicate( iobject ) ) ;
-              myMacroGraph->DataFlowEditor( aDataFlow ) ;
-              aDataFlow->Executor( aMacroGraphDataFlowExecutor ) ;
-              myMacroGraph->DebugFileName( (char * ) dbgfile.c_str() ) ;
-
-              GraphBase::Graph * aMacroGraph = myMacroGraph->DataFlowExecutor()->Graph() ;
-              aMacroGraph->GraphMacroLevel( aGraph->GraphMacroLevel() + 1 ) ;
-
-// Set the MacroNode ObjRef in the GraphMacroNode
-              aMacroGraph->CoupledNode( aMacroNode ) ;
-              aMacroGraph->MacroObject( SUPERV::Graph::_duplicate( macroiobject ) ) ;
+             else {
+               MESSAGE( "LoadDataFlows(Executor) " << aMacroGraph->Name() << "->InputOfAny( " 
+                         << aMacroGraphInPortName << " , Value )" ) ;
+             }
+           }
+         } // end of init MacroNode's InPorts
 
-// Set the GraphMacroNode ObjRef in the MacroNode
-              aMacroNode->CoupledNode( aMacroGraph ) ;
-              aMacroNode->MacroObject( SUPERV::Graph::_duplicate( iobject ) ) ;
+         aMacroGraphImpl->Run() ;
 
-              iobject->Run() ;
-           }
-            break ;
-         }
-       }
-      }
+        }
+      } // end of for( get nodes of the graph...)
     }
-  }
+  } // end of setting initial graph's structure..
 
   endService( "Graph_Impl::ExecutorLoadDataFlows" );
-  return true ;
+
+  PortableServer::ObjectId * id = getId();
+  CORBA::Object_var obj = _poa->id_to_reference( *id );
+  SUPERV::Graph_var iobject = SUPERV::Graph::_narrow( obj ) ;
+  return SUPERV::Graph::_duplicate( iobject ) ;
 }
 
 SUPERV::Graph_ptr Graph_Impl::MNode( const char * aXmlFileName ) {
   beginService( "Graph_Impl::MNode" );
   SUPERV::Graph_var iobject = SUPERV::Graph::_nil() ;
-  if ( DataFlowEditor()->IsEditing() && !DataFlowEditor()->IsReadOnly() && !IsMacro() ) {
+  MESSAGE( "Graph_Impl::MNode( " << aXmlFileName << " )" ) ;
+  if ( !IsMacro() ) {
     GraphBase::ListOfSGraphs aListOfDataFlows ;
     string dbgfile ;
 // At first create the editor and a StreamGraph with the xml file
     GraphEditor::DataFlow * aDataFlowEditor ;
     CreateEditor( _Orb , instanceName() , aXmlFileName , SUPERV::DataStreamGraph ,
                   dbgfile , &aDataFlowEditor ) ;
+
+    if ( _DebugFileName ) {
+      delete [] _DebugFileName ;
+    }
+    _DebugFileName = new char[ strlen( dbgfile.c_str() )+1 ] ;
+    strcpy( _DebugFileName , dbgfile.c_str() ) ;
+
     int lenname = strlen( aXmlFileName ) ;
     bool loaded = false ;
 // Import of the xml file
     if ( lenname > 4 && !strcmp( &aXmlFileName[ lenname - 4 ] , ".xml" ) ) {
       loaded = aDataFlowEditor->LoadXml( aXmlFileName , aListOfDataFlows ) ;
       if ( loaded ) {
-        iobject = MNode( aDataFlowEditor , aListOfDataFlows ) ;
+        iobject = MNode( aDataFlowEditor , &aListOfDataFlows ) ;
       }
     }
   }
@@ -818,13 +851,16 @@ SUPERV::Graph_ptr Graph_Impl::MNode( const char * aXmlFileName ) {
 // WARNING : THIS IS COMPLICATED :
 // I should have to remove duplicated code ...
 SUPERV::Graph_ptr Graph_Impl::MNode( GraphEditor::DataFlow * aMacroGraphDataFlowEditor ,
-                                     GraphBase::ListOfSGraphs aListOfDataFlows ) {
+                                     GraphBase::ListOfSGraphs aListOfDataFlows ) {
   beginService( "Graph_Impl::MNode" ) ;
   SUPERV::Graph_var iobject = SUPERV::Graph::_nil() ;
   SUPERV::Graph_var macroiobject = SUPERV::Graph::_nil() ;
 
   if ( !IsMacro() ) {
-    if ( !aMacroGraphDataFlowEditor->LoadDataFlow( &aListOfDataFlows[ 0 ] ) ) {
+    MESSAGE( "Graph_Impl::MNode DataFlowEditor->LoadDataFlow" ) ;
+//    if ( !aMacroGraphDataFlowEditor->LoadDataFlow( &aListOfDataFlows[ 0 ] ) ) {
+    iobject = LoadDataFlows( aMacroGraphDataFlowEditor , aListOfDataFlows , 0 ) ;
+    if ( CORBA::is_nil( iobject ) ) {
       MESSAGE("Graph_Impl::MNode LoadDataFlow failed" ) ;
       return false ;
     }
@@ -832,27 +868,17 @@ SUPERV::Graph_ptr Graph_Impl::MNode( GraphEditor::DataFlow * aMacroGraphDataFlow
 // That graph is not a StreamGraph :
     else if ( !aMacroGraphDataFlowEditor->Graph()->HasDataStream() ) {
       aMacroGraphDataFlowEditor->Graph()->Kind( SUPERV::DataFlowGraph ) ;
-      aMacroGraphDataFlowEditor->Graph()->SetGraphEditor( aMacroGraphDataFlowEditor ) ;
-      Graph_Impl * myMacroGraph ;
-// We create a Graph ObjRef for that graph
-      myMacroGraph = new Graph_Impl( _Orb , _Poa, _ContId,
-                                     instanceName() , interfaceName() ,
-                                     aMacroGraphDataFlowEditor , NULL ) ;
-      PortableServer::ObjectId * id = myMacroGraph->getId() ;
-      CORBA::Object_var obj = _poa->id_to_reference(*id);
-      iobject = SUPERV::Graph::_narrow( obj ) ;
-      myMacroGraph->SetObjRef( SUPERV::Graph::_duplicate( iobject ) ) ;
-
-
+      aMacroGraphDataFlowEditor->Graph()->GraphEditor( aMacroGraphDataFlowEditor ) ;
 
+      Graph_Impl * myMacroGraph = (Graph_Impl * ) aMacroGraphDataFlowEditor->Graph()->ObjImpl() ;
 // Creation of a GraphMacroNode in the current editor
       string aMacroNodeName = string( "Macro_" ) + string( myMacroGraph->Name() ) ;
       Graph_Impl * myMacroNode ;
       myMacroNode = new Graph_Impl( _Orb , _Poa, _ContId,
                                     instanceName() , interfaceName() ,
                                     aMacroNodeName.c_str() , SUPERV::MacroNode ) ;
-      id = myMacroNode->getId() ;
-      obj = _poa->id_to_reference(*id);
+      PortableServer::ObjectId * id = myMacroNode->getId() ;
+      CORBA::Object_var obj = _poa->id_to_reference(*id);
       macroiobject = SUPERV::Graph::_narrow( obj ) ;
       myMacroNode->DataFlowEditor( DataFlowEditor() ) ;
 
@@ -876,13 +902,11 @@ SUPERV::Graph_ptr Graph_Impl::MNode( GraphEditor::DataFlow * aMacroGraphDataFlow
       aDataFlowNode->SetObjRef( SUPERV::CNode::_duplicate( SUPERV::CNode::_narrow( obj ) ) ) ;
       aDataFlowNode->SetObjImpl( this ) ;
 
-
-
       GraphBase::Graph * aGraph = myMacroGraph->DataFlowEditor()->Graph() ;
       GraphBase::Graph * aGraphOfMacroGraph = myMacroNode->DataFlowEditor()->Graph() ;
       GraphBase::Graph * aMacroGraph = myMacroNode->DataFlowNode()->GraphMacroNode() ;
       aMacroGraph->Kind( SUPERV::MacroNode ) ;
-      aMacroGraph->SetGraphEditor( DataFlowEditor() ) ;
+      aMacroGraph->GraphEditor( DataFlowEditor() ) ;
 // Creation of the Ports of the MacroNode from the ports of the GraphMacroNode
       aMacroGraph->SetMacroPorts( aGraph ) ;
 // Valid ==> creation of Service and the ports of the current Graph
@@ -894,8 +918,11 @@ SUPERV::Graph_ptr Graph_Impl::MNode( GraphEditor::DataFlow * aMacroGraphDataFlow
       aGraph->CoupledNode( aMacroGraph ) ;
       aGraph->MacroObject( SUPERV::Graph::_duplicate( macroiobject ) ) ;
 // Set the GraphMacroNode ObjRef in the MacroNode
+      aDataFlowNode->GraphMacroNode()->GraphMacroLevel( aGraphOfMacroGraph->GraphMacroLevel() + 1 ) ;
       aMacroGraph->CoupledNode( aGraph ) ;
+//      aGraphOfMacroGraph->CoupledNode( aGraph ) ;
       aMacroGraph->MacroObject( SUPERV::Graph::_duplicate( iobject ) ) ;
+//      aGraphOfMacroGraph->MacroObject( SUPERV::Graph::_duplicate( iobject ) ) ;
 //    aDataFlowNode->CoupledNode( aGraph ) ;
 //    aDataFlowNode->ComputingNode()->MacroObject( SUPERV::Graph::_duplicate( iobject ) ) ;
 // Set the MacroLevel of that graph
@@ -903,6 +930,15 @@ SUPERV::Graph_ptr Graph_Impl::MNode( GraphEditor::DataFlow * aMacroGraphDataFlow
       aMacroGraph->Coordinates( 0 , 0 ) ;
       MESSAGE( "DataFlowNode Graph " << this << " DataFlowEditor " << DataFlowEditor() << " aDataFlowNode "
                << aDataFlowNode << " " << aDataFlowNode->Name() << " created" ) ;
+      MESSAGE( "MNode aGraph " << aGraph << " " << aGraph->Name()
+               << " coupled to " << aGraph->CoupledNode() << " "
+               << aGraph->CoupledNode()->Name() ) ;
+      MESSAGE( "MNode aMacroGraph " << aMacroGraph << " " << aMacroGraph->Name()
+               << " coupled to " << aMacroGraph->CoupledNode() << " "
+               << aMacroGraph->CoupledNode()->Name() ) ;
+      MESSAGE( "MNode aMacroGraph " << myMacroNode->DataFlowEditor()->Graph() << " "
+               << myMacroNode->DataFlowEditor()->Graph()->Name()
+               << " coupled to " << myMacroNode->DataFlowEditor()->Graph()->CoupledNode() ) ;
     }
     else {
       delete aMacroGraphDataFlowEditor ;
@@ -912,6 +948,7 @@ SUPERV::Graph_ptr Graph_Impl::MNode( GraphEditor::DataFlow * aMacroGraphDataFlow
   return SUPERV::Graph::_duplicate( macroiobject ) ;
 }
 
+// For python supergraph
 SUPERV::Graph_ptr Graph_Impl::GraphMNode( SUPERV::Graph_ptr myMacroGraph ) {
   SUPERV::Graph_var iobject = myMacroGraph ;
   beginService( "Graph_Impl::GraphMNode" ) ;
@@ -921,6 +958,7 @@ SUPERV::Graph_ptr Graph_Impl::GraphMNode( SUPERV::Graph_ptr myMacroGraph ) {
 // Creation of a GraphMacroNode in the current editor
   if ( !IsMacro() ) {
     string aMacroNodeName = string( "Macro_" ) + string( myMacroGraph->Name() ) ;
+    //string aMacroNodeName = string( myMacroGraph->CoupledName() ) ;
     MESSAGE( "GraphMNode( " << myMacroGraph->Name() << " )" ) ;
     Graph_Impl * myMacroNode ;
     myMacroNode = new Graph_Impl( _Orb , _Poa, _ContId,
@@ -942,23 +980,24 @@ SUPERV::Graph_ptr Graph_Impl::GraphMNode( SUPERV::Graph_ptr myMacroGraph ) {
     aPythonFunction.resize( 1 ) ;
     aPythonFunction[0] = &aListOfStrings ;
     SALOME_ModuleCatalog::Service * aMacroNodeService = myMacroGraph->Service() ;
-    GraphEditor::InNode * aDataFlowNode = DataFlowEditor()->AddNode( *aMacroNodeService , "" , "" ,
-                                                                     aMacroNodeName.c_str() , SUPERV::MacroNode ,
-                                                                     aFuncName , aPythonFunction ) ;
+    GraphEditor::InNode * aDataFlowNode ;
+    aDataFlowNode = DataFlowEditor()->AddNode( *aMacroNodeService , "" , "" ,
+                                               aMacroNodeName.c_str() , SUPERV::MacroNode ,
+                                               aFuncName , aPythonFunction ) ;
     aDataFlowNode->SetPythonFunction( "" , aListOfStrings ) ;
     myMacroNode->DataFlowNode( aDataFlowNode ) ;
     aDataFlowNode->ComputingNode()->SetService( *aMacroNodeService ) ;
     aDataFlowNode->SetObjRef( SUPERV::CNode::_duplicate( SUPERV::CNode::_narrow( obj ) ) ) ;
     aDataFlowNode->SetObjImpl( this ) ;
 
-
-
-//    GraphBase::Graph * aGraph = myMacroGraph->DataFlowEditor()->Graph() ;
-    GraphBase::Graph * aGraph = DataFlowEditor()->Automaton()->MapGraph( myMacroGraph->Name() ) ;
+//    GraphBase::Graph * aGraph = DataFlowEditor()->Automaton()->MapGraph( myMacroGraph->Name() ) ;
+    GraphBase::Graph * aGraph ;
+    //DataFlowEditor()->Automaton()->GraphBase( &aGraph ) ;
+    myMacroGraph->Coupled() ;
     GraphBase::Graph * aGraphOfMacroGraph = myMacroNode->DataFlowEditor()->Graph() ;
     GraphBase::Graph * aMacroGraph = myMacroNode->DataFlowNode()->GraphMacroNode() ;
     aMacroGraph->Kind( SUPERV::MacroNode ) ;
-    aMacroGraph->SetGraphEditor( DataFlowEditor() ) ;
+    aMacroGraph->GraphEditor( DataFlowEditor() ) ;
 // Creation of the Ports of the MacroNode from the ports of the GraphMacroNode
     aMacroGraph->SetMacroPorts( aGraph ) ;
 // Valid ==> creation of Service and the ports of the current Graph
@@ -971,6 +1010,7 @@ SUPERV::Graph_ptr Graph_Impl::GraphMNode( SUPERV::Graph_ptr myMacroGraph ) {
     aGraph->CoupledNode( aMacroGraph ) ;
     aGraph->MacroObject( SUPERV::Graph::_duplicate( macroiobject ) ) ;
 // Set the GraphMacroNode ObjRef in the MacroNode
+    aDataFlowNode->GraphMacroNode()->GraphMacroLevel( aGraphOfMacroGraph->GraphMacroLevel() + 1 ) ;
     aMacroGraph->CoupledNode( aGraph ) ;
     aMacroGraph->MacroObject( SUPERV::Graph::_duplicate( iobject ) ) ;
 //    aDataFlowNode->CoupledNode( aGraph ) ;
@@ -979,7 +1019,8 @@ SUPERV::Graph_ptr Graph_Impl::GraphMNode( SUPERV::Graph_ptr myMacroGraph ) {
     aGraph->GraphMacroLevel( aGraphOfMacroGraph->GraphMacroLevel() + 1 ) ;
     aMacroGraph->Coordinates( 0 , 0 ) ;
     MESSAGE( aGraph->Name() << "->CoupledNode()->GraphEditor() : " << aGraph->CoupledNode()->GraphEditor() ) ;
-    MESSAGE( aMacroGraph->Name() << "->CoupledNode()->GraphEditor() : " << aMacroGraph->CoupledNode()->GraphEditor() ) ;
+    MESSAGE( aMacroGraph->Name() << "->CoupledNode()->GraphEditor() : "
+             << aMacroGraph->CoupledNode()->GraphEditor() ) ;
     MESSAGE( "DataFlowNode Graph " << this << " DataFlowEditor " << DataFlowEditor() << " aDataFlowNode "
              << aDataFlowNode << " " << aDataFlowNode->Name() << " created" ) ;
   }
@@ -1051,40 +1092,55 @@ SUPERV::CNode_ptr Graph_Impl::Node(char const * aNodeName ) {
 
 SUPERV::Link_ptr Graph_Impl::Link( SUPERV::Port_ptr OutPort ,
                                    SUPERV::Port_ptr InPort ) {
-  beginService( "Graph_Impl::Link" );
+//  beginService( "Graph_Impl::Link" );
   SUPERV::Link_var iobject = SUPERV::Link::_nil() ;
   if ( DataFlowEditor()->IsEditing() && !DataFlowEditor()->IsReadOnly() &&
        !OutPort->IsDataStream() && !InPort->IsDataStream() && !IsMacro() ) {
-    GraphBase::InPort * anInPort = DataFlowEditor()->GetNode( InPort->Node()->Name() )->ComputingNode()->GetChangeInPort( InPort->Name() ) ;
-    GraphBase::OutPort * anOutPort = DataFlowEditor()->GetNode( OutPort->Node()->Name() )->ComputingNode()->GetChangeOutPort( OutPort->Name() ) ;
-    if ( CORBA::is_nil( anOutPort->InPortObjRef( anInPort ) ) ) {
-      const char * DataFlowOutNodeName = OutPort->Node()->Name() ;
-      GraphEditor::InNode * DataFlowOutNode = DataFlowEditor()->GetNode( DataFlowOutNodeName ) ;
-      const char * DataFlowInNodeName = InPort->Node()->Name() ;
-      GraphEditor::InNode * DataFlowInNode = DataFlowEditor()->GetNode( DataFlowInNodeName ) ;
-      if ( DataFlowOutNode && DataFlowInNode ) {
-        bool Success ;
-        Link_Impl * myLink = new Link_Impl( _Orb , _Poa , _ContId ,
-                                            instanceName() , interfaceName() ,
-                                            DataFlowEditor() ,
-                                            DataFlowInNode ,
-                                            InPort->Name() ,
-                                            DataFlowOutNode ,
-                                            OutPort->Name() ,
-                                            true , false , Success ) ;
-        if ( Success ) {
-          PortableServer::ObjectId * id = myLink->getId() ;
-          CORBA::Object_var obj = _poa->id_to_reference(*id);
-          iobject = SUPERV::Link::_narrow(obj) ;
-          anOutPort->AddInPortObjRef( anInPort , SUPERV::Link::_duplicate( iobject ) ) ;
-       }
-      }
+    MESSAGE( "Graph_Impl::Link( " << OutPort->Node()->Name() << "( " << OutPort->Name() << " ) --> "
+             << InPort->Node()->Name() << "( " << InPort->Name() << " )" ) ;
+    GraphEditor::InNode * anInNode = DataFlowEditor()->GetNode( InPort->Node()->Name() ) ;
+    GraphEditor::InNode * anOutNode = DataFlowEditor()->GetNode( OutPort->Node()->Name() ) ;
+    if ( anInNode == NULL || anOutNode== NULL ) {
+      MESSAGE( "Graph_Impl::Link( " << OutPort->Node()->Name() << " " << anOutNode << " , "
+               << InPort->Node()->Name() << " " << anInNode << " ) Node(s) not found in " << Name() ) ;
     }
     else {
-      iobject = anOutPort->InPortObjRef( anInPort ) ;
+      GraphBase::InPort * anInPort = anInNode->ComputingNode()->GetChangeInPort( InPort->Name() ) ;
+      GraphBase::OutPort * anOutPort = anOutNode->ComputingNode()->GetChangeOutPort( OutPort->Name() ) ;
+      if ( anInPort == NULL || anOutPort== NULL ) {
+        MESSAGE( "Graph_Impl::Link( " << OutPort->Name() << " " << anOutPort << " , "
+                 << InPort->Name() << " " << anInPort << " ) Port(s) not found" ) ;
+      }
+      else if ( CORBA::is_nil( anOutPort->InPortObjRef( anInPort ) ) ) {
+        const char * DataFlowOutNodeName = OutPort->Node()->Name() ;
+        GraphEditor::InNode * DataFlowOutNode = DataFlowEditor()->GetNode( DataFlowOutNodeName ) ;
+        const char * DataFlowInNodeName = InPort->Node()->Name() ;
+        GraphEditor::InNode * DataFlowInNode = DataFlowEditor()->GetNode( DataFlowInNodeName ) ;
+        if ( DataFlowOutNode && DataFlowInNode ) {
+          bool Success ;
+          Link_Impl * myLink = new Link_Impl( _Orb , _Poa , _ContId ,
+                                              instanceName() , interfaceName() ,
+                                              DataFlowEditor() ,
+                                              DataFlowInNode ,
+                                              InPort->Name() ,
+                                              DataFlowOutNode ,
+                                              OutPort->Name() ,
+                                              true , false , Success ) ;
+          if ( Success ) {
+            PortableServer::ObjectId * id = myLink->getId() ;
+            CORBA::Object_var obj = _poa->id_to_reference(*id);
+            iobject = SUPERV::Link::_narrow(obj) ;
+            anOutPort->AddInPortObjRef( anInPort , SUPERV::Link::_duplicate( iobject ) ) ;
+         }
+        }
+      }
+      else {
+        iobject = anOutPort->InPortObjRef( anInPort ) ;
+      }
     }
   }
-  endService( "Graph_Impl::Link" );
+  DataFlowEditor()->UnValid() ;
+//  endService( "Graph_Impl::Link" );
   return SUPERV::Link::_duplicate( iobject ) ;
 }
 
@@ -1455,8 +1511,9 @@ SUPERV::ListOfLinks * Graph_Impl::Links( GraphBase::ComputingNode * theNode ,
           GraphBase::InPort * anInPort = anOutPort->ChangeInPorts( k ) ;
 //          MESSAGE( "              -->  In" << k << " " << anInPort->NodeName() << " " << anInPort->PortName()
 //                   << " " << anInPort->PortStatus() ) ;
-          if ( !anInPort->IsExternConnected() ) {
-            GraphEditor::InNode * toNode = (GraphEditor::InNode * ) DataFlowEditor()->Graph()->GetChangeGraphNode( anInPort->NodeName() )->GetInNode() ;
+          if ( anInPort->IsPortConnected() ) {
+           GraphBase::ComputingNode * aComputingNode = DataFlowEditor()->Graph()->GetChangeGraphNode( anInPort->NodeName() ) ;
+            GraphEditor::InNode * toNode = (GraphEditor::InNode * ) aComputingNode->GetInNode() ;
             if ( theNode == NULL ||
                  !strcmp( theNode->Name() , aNode->Name() ) ) {
               if ( !anInPort->IsDataStream() ) {
@@ -1570,22 +1627,27 @@ bool Graph_Impl::IsExecutable() {
 }
 
 bool Graph_Impl::IsEditing() {
-//  beginService( "Graph_Impl::IsEditing" );
+/*
   bool RetVal = false ;
   if ( !IsMacro() ) {
     RetVal = DataFlowEditor()->IsEditing() ;
   }
-//  endService( "Graph_Impl::IsEditing" );
   return RetVal ;
+*/
+  if ( IsMacro() )
+    return false;
+  return !IsExecuting();
 }
+
 bool Graph_Impl::IsExecuting() {
-//  beginService( "Graph_Impl::IsExecuting" );
+/*
   bool RetVal = false ;
   if ( !IsMacro() ) {
     RetVal = !DataFlowEditor()->IsEditing() ;
   }
-//  endService( "Graph_Impl::IsExecuting" );
   return RetVal ;
+*/
+  return CNode_Impl::IsExecuting();
 }
 
 bool Graph_Impl::IsReadOnly() {
@@ -1670,44 +1732,28 @@ bool Graph_Impl::Begin() {
     }
     if ( DataFlowExecutor() ) {
       MESSAGE( "Graph_Impl::Begin " << DataFlowExecutor()->Threads() << " threads" )
-      if ( DataFlowExecutor()->Threads() ) {
-        DataFlowExecutor()->JoinedWait() ;
-      }
+//      if ( DataFlowExecutor()->Threads() ) {
+//        DataFlowExecutor()->JoinedWait() ;
+//      }
       delete DataFlowExecutor() ;
-      DataFlowExecutor( NULL ) ;
       DataFlowEditor()->Executor( NULL ) ;
     }
     if ( DataFlowEditor()->IsExecutable() ) {
       DataFlowEditor()->EditedAfterExecution( false ) ;
-      int _ExecNumber = theAutomaton->ExecNumber() ;
-      char ExecNumber[30] ;
-      sprintf( ExecNumber , "_%d" , _ExecNumber ) ;
-      int len = strlen( _DebugFileName ) ;
-      char * DebugFileName = new char [ len + strlen( ExecNumber ) + 6 ] ;
-      strncpy( DebugFileName , _DebugFileName , len - 4 ) ;
-      DebugFileName[ len - 4 ] = '\0' ;
-      strcat( DebugFileName , ExecNumber ) ;
-      strcat( DebugFileName , "_Exec.log" ) ;
-      GraphExecutor::DataFlow * aDataFlowExecutor ;
       GraphBase::ListOfSGraphs * myListOfGraphs = DataFlowEditor()->GetDataFlows() ;
-      int i ;
-      for ( i = 0 ; i < (int ) myListOfGraphs->size() ; i++ ) {
-        GraphEditor::DataFlow * aDataFlowEditor ;
-        aDataFlowEditor = theAutomaton->MapGraph( (*myListOfGraphs)[ i ].Info.theName.c_str() )->GraphEditor() ;
-        MESSAGE("myListOfGraphs" << i << " " << (*myListOfGraphs)[ i ].Info.theName.c_str() << " "
-                << aDataFlowEditor << " IsEditing " << aDataFlowEditor->IsEditing() ) ;
-              
-      }
-      aDataFlowExecutor = new GraphExecutor::DataFlow( _Orb , _NamingService ,
-                                                       (*myListOfGraphs)[ 0 ].Info.theName.c_str() ,
-                                                       DebugFileName , Kind() ) ;
-      DataFlowExecutor( aDataFlowExecutor ) ;
+
+      GraphExecutor::DataFlow * aDataFlowExecutor ;
+      string dbgfile ;
+      CreateExecutor( _Orb , instanceName() , (*myListOfGraphs)[ 0 ].Info.theName.c_str() , Kind() ,
+                      dbgfile , &aDataFlowExecutor ) ;
+
       MESSAGE( "Graph_Impl::Begin : DataFlowExecutor created" );
-      RetVal = LoadDataFlows( DataFlowExecutor() , myListOfGraphs , 0 ) ;
-      if ( RetVal ) {
+      if ( !CORBA::is_nil( LoadDataFlows( aDataFlowExecutor, myListOfGraphs , 0 ) ) ) 
+        RetVal = true ;
+  
+      if ( RetVal )
         DataFlowExecutor()->Graph()->SetObjImpl( DataFlowEditor()->Graph()->ObjImpl() ) ;
-        DataFlowEditor()->Executor( DataFlowExecutor() ) ;
-      }
+    
     }
     if ( pthread_mutex_unlock( &_MutexExecutorWait ) ) {
       perror("pthread_mutex_unlock _MutexExecutorWait") ;
@@ -1719,7 +1765,7 @@ bool Graph_Impl::Begin() {
 bool Graph_Impl::Run() {
   beginService( "Graph_Impl::Run" );
   bool RetVal = false ;
-  if ( DataFlowEditor()->IsEditing() && !IsMacro() ) {
+  if ( ( DataFlowEditor()->IsEditing() || IsDone() ) && !IsMacro() ) {
     MESSAGE( "Graph_Impl::Run " << DataFlowEditor()->Graph()->Name() << " " << DataFlowEditor() << " IsEditing" );
     if ( DataFlowEditor()->Graph()->GraphMacroLevel() ) {
       MESSAGE( "Graph_Impl::Run " << DataFlowEditor()->Graph()->Name() << " GraphMacroLevel "
@@ -1737,34 +1783,50 @@ bool Graph_Impl::Run() {
       RetVal = CNode_Impl::Run() ;
     }
   }
-  else if ( !IsMacro() ) {
-    MESSAGE( "Graph_Impl::Run " << DataFlowEditor()->Graph()->Name() << " " << DataFlowEditor()
-             << " IsNOTEditing --> CNode_Impl::ReRun" );
-    DataFlowEditor()->Executing() ;
-    RetVal = CNode_Impl::ReRun() ;
-  }
+// It is necessary to reload the dataflow because of ports with input initial values changed
+// during execution to values of outport of EndLoopNode or GOTONode
+//  else if ( !IsMacro() && IsDone() ) {
+//    MESSAGE( "Graph_Impl::Run " << DataFlowEditor()->Graph()->Name() << " " << DataFlowEditor()
+//             << " IsNOTEditing --> CNode_Impl::ReRun" );
+//    DataFlowEditor()->Executing() ;
+//    RetVal = CNode_Impl::ReRun() ;
+//  }
+  MESSAGE( "Graph_Impl::Run " << DataFlowEditor()->Graph()->Name() << " RetVal " << RetVal ) ;
   endService( "Graph_Impl::Run" );
   return RetVal ;
 }
 bool Graph_Impl::Start() {
   beginService( "Graph_Impl::Start" );
   bool RetVal = false ;
-  if ( !IsMacro() ) {
-    if ( DataFlowEditor()->IsEditing() ) {
-      MESSAGE( "Graph_Impl::Start IsEditing" );
-      RetVal = Begin() ;
+  if ( ( DataFlowEditor()->IsEditing() || IsDone() ) && !IsMacro() ) {
+    MESSAGE( "Graph_Impl::Start " << DataFlowEditor()->Graph()->Name() << " " << DataFlowEditor() << " IsEditing" );
+    if ( DataFlowEditor()->Graph()->GraphMacroLevel() ) {
+      MESSAGE( "Graph_Impl::Start " << DataFlowEditor()->Graph()->Name() << " GraphMacroLevel "
+               << DataFlowEditor()->Graph()->GraphMacroLevel() ) ;
+      RetVal = true ;
     }
     else {
-      RetVal = true ;
+      MESSAGE( "Graph_Impl::Start " << DataFlowEditor()->Graph()->Name() << " GraphMacroLevel "
+               << DataFlowEditor()->Graph()->GraphMacroLevel() << " --> Begin()" ) ;
+      RetVal = Begin() ;
     }
     if ( RetVal ) {
-      MESSAGE( "Graph_Impl::(Re)Start " );
-      // Added by NKV to fix PAL6222 --> to be confirm by JR 
+      // Added by NKV to fix PAL6222 --> to be confirm by JR ; JR confirmed
       DataFlowEditor()->Executing() ;
       // End of NKV's correction
+      MESSAGE( "Graph_Impl::(Re)Start " );
       RetVal = ReStart() ;
     }
   }
+// It is necessary to reload the dataflow because of ports with input initial values changed
+// during execution to values of outport of EndLoopNode or GOTONode
+//  else if ( !IsMacro() && IsDone() ) {
+//    MESSAGE( "Graph_Impl::Start " << DataFlowEditor()->Graph()->Name() << " " << DataFlowEditor()
+//             << " IsNOTEditing --> CNode_Impl::ReStart" );
+//    DataFlowEditor()->Executing() ;
+//    RetVal = CNode_Impl::ReStart() ;
+//  }
+  MESSAGE( "Graph_Impl::Start " << DataFlowEditor()->Graph()->Name() << " RetVal " << RetVal ) ;
   endService( "Graph_Impl::Start" );
   return RetVal ;
 }
index 66c29baf2e630b403f81c1286031e85e881c2f9a..5f1d8c0230750301a3cca7e9fecfa9d8e21a9744 100644 (file)
@@ -80,13 +80,6 @@ class Graph_Impl : public POA_SUPERV::Graph ,
                 const char *interfaceName ,
                 GraphEditor::DataFlow * DataFlowEditor ,
                 GraphEditor::InNode * DataFlowNode ) ;
-    Graph_Impl( CORBA::ORB_ptr orb ,
-               PortableServer::POA_ptr poa ,
-               PortableServer::ObjectId * contId , 
-               const char *instanceName ,
-                const char *interfaceName ,
-                GraphExecutor::DataFlow * DataFlowExecutor ,
-                GraphExecutor::InNode * DataFlowExecutorNode ) ;
     virtual SUPERV::Graph_ptr Copy() ;
 
     virtual ~Graph_Impl() ;
@@ -140,16 +133,16 @@ class Graph_Impl : public POA_SUPERV::Graph ,
                           const SUPERV::ListOfStrings & PythonFunction ,
                           SUPERV::INode_out anEndOfSwitch ) ;
 
-    bool LoadDataFlows( GraphEditor::DataFlow * aDataFlowEditor ,
-                        GraphBase::ListOfSGraphs * aListOfDataFlows ,
-                        int index ) ;
-    bool LoadDataFlows( GraphExecutor::DataFlow * aDataFlowExecutor ,
-                        GraphBase::ListOfSGraphs * aListOfDataFlows ,
-                        int index ) ;
+    SUPERV::Graph_var LoadDataFlows( GraphEditor::DataFlow * aDataFlowEditor ,
+                                     GraphBase::ListOfSGraphs * aListOfDataFlows ,
+                                     int index ) ;
+    SUPERV::Graph_var LoadDataFlows( GraphExecutor::DataFlow * aDataFlowExecutor ,
+                                     GraphBase::ListOfSGraphs * aListOfDataFlows ,
+                                     int index ) ;
     virtual SUPERV::Graph_ptr MNode( const char * aXmlFileName ) ;
 
     virtual SUPERV::Graph_ptr MNode( GraphEditor::DataFlow * aDataFlowEditor ,
-                                     GraphBase::ListOfSGraphs aListOfDataFlows ) ;
+                                     GraphBase::ListOfSGraphs aListOfDataFlows ) ;
 
     virtual SUPERV::Graph_ptr GraphMNode( SUPERV::Graph_ptr aGraph ) ;
 
index a17f538e7005b58f152a406a9b358149080821c3..64a355c4e050ee5bf96911dd986de75523c9ee3a 100644 (file)
@@ -123,31 +123,6 @@ INode_Impl::INode_Impl( CORBA::ORB_ptr orb ,
 //  endService( "INode_Impl::INode_Impl" );  
 }
 
-INode_Impl::INode_Impl( CORBA::ORB_ptr orb ,
-                       PortableServer::POA_ptr poa ,
-                       PortableServer::ObjectId * contId , 
-                       const char *instanceName ,
-                        const char *interfaceName ,
-                        GraphExecutor::DataFlow * aDataFlowExecutor ,
-                        GraphExecutor::InNode * aDataFlowExecutorNode ) :
-//  Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, false) {
-  CNode_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowExecutor , aDataFlowExecutorNode ) {
-//  beginService( "INode_Impl::INode_Impl" );
-  if ( DataFlowExecutorNode() && DataFlowExecutorNode()->IsInLineNode() ) {
-//    MESSAGE( "INode_Impl::INode_Impl " << DataFlowExecutorNode()->Name()
-//             << " _poa->activate_object" );
-    _thisObj = this ;
-    _id = _poa->activate_object(_thisObj);
-  }
-  else {
-//    MESSAGE( "INode_Impl::INode_Impl NO _poa->activate_object" );
-  }
-  _Orb = CORBA::ORB::_duplicate(orb);
-  _Poa = poa ;
-  _ContId = contId ;
-//  endService( "INode_Impl::INode_Impl" );  
-}
-
 INode_Impl::~INode_Impl() {
   beginService( "INode_Impl::~INode_Impl" );
   endService( "INode_Impl::~INode_Impl" );
index f0324d495e7b734a679f11db4da257ee71deda5c..13000bf7a8be771d23ac870b7b0c589ad7972dab 100644 (file)
@@ -69,13 +69,6 @@ class INode_Impl : public CNode_Impl ,
                 const char *interfaceName ,
                 GraphEditor::DataFlow * DataFlowEditor ,
                 GraphEditor::InNode * DataFlowNode ) ;
-    INode_Impl( CORBA::ORB_ptr orb ,
-               PortableServer::POA_ptr poa ,
-               PortableServer::ObjectId * contId , 
-               const char *instanceName ,
-                const char *interfaceName ,
-                GraphExecutor::DataFlow * DataFlowExecutor ,
-                GraphExecutor::InNode * DataFlowExecutorNode ) ;
     virtual ~INode_Impl() ;
     virtual void destroy() ;
     virtual bool Delete() ;
index ce4f4677fee05eed871f55edd43c2b1657e1a743..d258747ee96bfcd54411c817827bd8e7782c9cd6 100644 (file)
@@ -91,12 +91,12 @@ void LNode_Impl::destroy() {
       aCoupled->destroy() ;
     }
   }
-//  endService( "LNode_Impl::Destroy" );
+  endService( "LNode_Impl::Destroy" );
 }
 
 bool LNode_Impl::Delete() {
   beginService( "LNode_Impl::Delete" );
-  bool RetVal = false ;
+  bool RetVal = false ;  
   if ( DataFlowEditor()->IsEditing() ) {
     DeletePorts() ;
     RetVal = DataFlowEditor()->RemoveNode( Name() ) ;
index cd9aed0a54d3b5e16a43ad940a97cacf7da09d01..60bce4d1947c1f5fd889854ee1a82f770b5a7a96 100755 (executable)
@@ -87,7 +87,7 @@ BIN_SERVER_IDL =
 
 CPPFLAGS+= $(PYTHON_INCLUDES) $(QT_MT_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) \
        -I${KERNEL_ROOT_DIR}/include/salome
-CXXFLAGS += -g -D_DEBUG_ -D__x86__ -D__linux__ -ftemplate-depth-42 -Wall \
+CXXFLAGS += -g -D__x86__ -D__linux__ -ftemplate-depth-42 -Wall \
        -I${KERNEL_ROOT_DIR}/include/salome
 LDFLAGS+= -lSalomeSuperVisionEditor -lSalomeSuperVisionExecutor -lSalomeSuperVisionBase \
        -lSalomeContainer -lSalomeNotification -lSalomeNS -lSalomeLifeCycleCORBA \
index 3593476c68e70998e00e0b108c3cd8e8c4003ba9..55a69f58008ea7618a670897621831f234a3b9ad 100644 (file)
@@ -175,9 +175,12 @@ bool Port_Impl::Input( const CORBA::Any * anAny ) {
     }
     else if ( _DataFlowEditor->IsExecuting() ) {
       GraphExecutor::DataFlow * _DataFlowExecutor = _DataFlowEditor->Executor() ;
-//      if ( _DataFlowExecutor && ( _DataFlowExecutor->IsSuspended() ||
-//           _DataFlowExecutor->IsSuspended( _DataFlowNode->Name() ) ) ) {
-      if ( _DataFlowExecutor ) {
+      
+      // asv: turn off Editor::_Executing flag
+      if ( _DataFlowExecutor->IsDone() ) {
+       _DataFlowEditor->Executing( false );
+      }
+      else {
         RetVal = _DataFlowExecutor->ChangeInputData( _DataFlowNode->Name() ,
                                                      _DataFlowPort->PortName() ,
                                                      *anAny ) ;
@@ -335,8 +338,8 @@ SUPERV::CNode_ptr Port_Impl::Node() {
 SUPERV::ListOfLinks * Port_Impl::Links() {
   beginService( "Port_Impl::Links" ) ;
   SUPERV::ListOfLinks_var RetVal = new SUPERV::ListOfLinks ;
-  RetVal = _DataFlowEditor->Graph()->ObjImpl()->Links( _DataFlowNode->ComputingNode() ,
-                                                       _DataFlowPort->PortName() ) ;
+  RetVal = _DataFlowEditor->Graph()->ObjImpl()->Links( /*_DataFlowNode->ComputingNode() ,
+                                                        _DataFlowPort->PortName()*/ ) ;
   MESSAGE( "Links of Node " << _DataFlowNode->ComputingNode()->Name()
            << " and of Port " << _DataFlowPort->PortName()
            << " _InputPort " << _InputPort ) ;
@@ -360,8 +363,8 @@ SUPERV::Link_ptr Port_Impl::Link() {
     SUPERV::ListOfLinks_var Links = new SUPERV::ListOfLinks ;
 //    cout << "Port_Impl::Link " << _DataFlowNode->Name() << " "
 //         << _DataFlowPort->PortName() << endl ;
-    Links = _DataFlowEditor->Graph()->ObjImpl()->Links( _DataFlowNode->ComputingNode() ,
-                                                        _DataFlowPort->PortName() ) ;
+    Links = _DataFlowEditor->Graph()->ObjImpl()->Links( /*_DataFlowNode->ComputingNode() ,
+                                                         _DataFlowPort->PortName()*/ ) ;
     if ( Links->length() ) {
       iobject = Links[ 0 ] ;
     }
index 315560d31748cd59010df5f8bf9068d97d70e927..6602d2c7fdc10d8db64bf54e941a1badf02e7bbd 100644 (file)
@@ -60,9 +60,9 @@ StreamGraph_Impl::StreamGraph_Impl( CORBA::ORB_ptr orb ,
                         GraphEditor::DataFlow * aDataFlowEditor ,
                         GraphEditor::InNode * aDataFlowNode ) :
   Graph_Impl( orb , poa , contId , instanceName , interfaceName , aDataFlowEditor , aDataFlowNode ) {
-  MESSAGE( aDataFlowNode->Name() << " " );
   beginService( "StreamGraph_Impl::StreamGraph_Impl" );
-  if ( aDataFlowNode->IsMacroNode() ) {
+  if ( aDataFlowEditor->Graph()->IsDataStreamNode() ||
+       ( aDataFlowNode && aDataFlowNode->IsMacroNode() ) ) {
     MESSAGE( "StreamGraph_Impl::StreamGraph_Impl _poa->activate_object" );
     _thisObj = this ;
     _id = _poa->activate_object(_thisObj);
index 7055d82d564e1f4bcc8983f51098d43494297456..613f6c6304ced8fb53af7e4f1f67f6ffb865999d 100644 (file)
@@ -37,6 +37,7 @@ except :
 import os
 import re
 from types import *
+import readline
 
 #try :
 #    SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
index f64b10fe504ce233ad0acc8e3e4f272576f94670..b5bf8f320bc198beffc92be5438907bed549101b 100644 (file)
@@ -100,7 +100,7 @@ SALOMEDS::TMPFile* SuperV_Impl::Save(SALOMEDS::SComponent_ptr theComponent,
   SALOMEDS::ListOfFileNames_var aSeq = new SALOMEDS::ListOfFileNames;
   
   TCollection_AsciiString myStudyName("");
-  if (isMultiFile) myStudyName = strdup(SALOMEDS_Tool::GetNameFromPath(theComponent->GetStudy()->URL()));
+  if (isMultiFile) myStudyName = (char*)SALOMEDS_Tool::GetNameFromPath(theComponent->GetStudy()->URL()).c_str();
 
   SALOMEDS::ChildIterator_var anIter = theComponent->GetStudy()->NewChildIterator(theComponent);
   TColStd_SequenceOfAsciiString aFileNames;
@@ -120,7 +120,7 @@ SALOMEDS::TMPFile* SuperV_Impl::Save(SALOMEDS::SComponent_ptr theComponent,
       CORBA::Object_var anObj = _orb->string_to_object(SALOMEDS::AttributeIOR::_narrow(anAttr)->Value()) ;
       SUPERV::Graph_var graph = SUPERV::Graph::_narrow(anObj);
       if (aTmpDir.Length() == 0)
-       aTmpDir = (isMultiFile)?TCollection_AsciiString((char*)theURL):SALOMEDS_Tool::GetTmpDir();
+       aTmpDir = (isMultiFile)?TCollection_AsciiString((char*)theURL):(char*)SALOMEDS_Tool::GetTmpDir().c_str();
       graph->Export((aTmpDir + aName).ToCString());
     }
   }
@@ -167,7 +167,7 @@ CORBA::Boolean SuperV_Impl::Load(SALOMEDS::SComponent_ptr theComponent,
   //    MESSAGE("SuperV_Impl::Load : IOR = " << IORSComponent << " , Url = " << aUrlOfFile);
   // Get a temporary directory for a file
   if (theStream.length() != 0) {
-    TCollection_AsciiString aTmpDir = (isMultiFile)?TCollection_AsciiString((char*)theURL):SALOMEDS_Tool::GetTmpDir();
+    TCollection_AsciiString aTmpDir = (isMultiFile)?TCollection_AsciiString((char*)theURL):(char*)SALOMEDS_Tool::GetTmpDir().c_str();
     myStrURL = strdup(aTmpDir.ToCString());
     SALOMEDS_Tool::PutStreamToFiles(theStream, myStrURL, isMultiFile);
   }
@@ -237,7 +237,7 @@ char* SuperV_Impl::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
   if (strcmp(aFatherID, aComponentID)) return CORBA::string_dup(aLocalPersistentID);
 
   string myStudyName("");
-  if (isMultiFile) myStudyName = strdup(SALOMEDS_Tool::GetNameFromPath(theSObject->GetStudy()->URL()));
+  if (isMultiFile) myStudyName = SALOMEDS_Tool::GetNameFromPath(theSObject->GetStudy()->URL());
 
   string aStr(myStrURL);
   aStr += myStudyName + string(aLocalPersistentID);
@@ -478,7 +478,7 @@ SALOMEDS::TMPFile* SuperV_Impl::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA:
   }
 
   // Get a temporary directory to store a temporary file
-  CORBA::String_var aTmpDir = SALOMEDS_Tool::GetTmpDir();
+  CORBA::String_var aTmpDir = SALOMEDS_Tool::GetTmpDir().c_str();
   // Create a list to store names of created files
   SALOMEDS::ListOfFileNames_var aSeq = new SALOMEDS::ListOfFileNames;
   aSeq->length(1);
@@ -528,7 +528,7 @@ SALOMEDS::SObject_ptr SuperV_Impl::PasteInto(const SALOMEDS::TMPFile& theStream,
     return aResultSO._retn();
   }
 
-  TCollection_AsciiString aTmpDir = SALOMEDS_Tool::GetTmpDir();
+  TCollection_AsciiString aTmpDir = (char*)SALOMEDS_Tool::GetTmpDir().c_str();
   SALOMEDS::ListOfFileNames_var aSeq = SALOMEDS_Tool::PutStreamToFiles(theStream, aTmpDir.ToCString(), false);
   TCollection_AsciiString aFullName;
   aFullName = aTmpDir+aSeq[0];
index 28ea393d8858c7a7e0c0ef1ca8f7f04a0c63dd43..d721730efd80767e47ef771319ad16ebba14b679 100644 (file)
@@ -37,6 +37,8 @@ using namespace std;
 
 #include "Value_Impl.hxx"
 
+#include "DataFlowExecutor_DataFlow.hxx"
+
 Value_Impl::Value_Impl( CORBA::ORB_ptr orb ,
                        PortableServer::POA_ptr poa ,
                        PortableServer::ObjectId * contId , 
index 81c7577a295a524c2bc2b833065d064871cdae02..bdc6441acc5d954ef8bf0bdc3c34ef7bdc60eb6e 100644 (file)
@@ -15,12 +15,16 @@ try :
     from batchmode_salome import naming_service
     from batchmode_salome import CORBA
     from batchmode_salome import myStudy
+    import SALOME_ModuleCatalog
+    import SUPERV
+    import SUPERV_idl
 except :
     import curses
     from LifeCycleCORBA import *
     from SALOME_NamingServicePy import *
     import SUPERV
     import SUPERV_idl
+    import SALOME_ModuleCatalog
     from batchmode_salome import *
 #    try :
 #        from libSuperVision_Swig import SuperV_Swig
@@ -28,11 +32,15 @@ except :
 #    except :
 #        SuperV_Swig = None
     orb = CORBA.ORB_init([''], CORBA.ORB_ID)
-    lcc = LifeCycleCORBA(orb)
+    #lcc = LifeCycleCORBA(orb)
+    while lcc._catalog == None:
+           lcc = LifeCycleCORBA(orb)
     naming_service = SALOME_NamingServicePy_i(orb)
 
+import os
 import re
 from types import *
+import readline
 import SALOMEDS
 import SALOMEDS_Attributes_idl
 #try :
@@ -45,9 +53,11 @@ import SALOMEDS_Attributes_idl
 #    print 'Supervision Component loaded'
                     
 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
-SuperVision.Swig = 0
+#SuperVision.Swig = 0
 
-modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
+modulecatalog = None
+while modulecatalog == None:
+       modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
 
 myBuilder = myStudy.NewBuilder()
 father = myStudy.FindComponent("SUPERV")
@@ -241,6 +251,11 @@ class CNode:
         if self.N.IsFactory() :
             print "ComponentName ",self.N.GetComponentName()
             print "InterfaceName ",self.N.GetInterfaceName()
+        if self.N.IsStreamGraph() :
+            Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
+            print "Timeout",Timeout
+            print "DataStreamTrace",DataStreamTrace
+            print "DeltaTime",DeltaTime
         aService = self.N.Service()
         print "Service Name  ",aService.ServiceName
         lenin = len( aService.ServiceinParameter )
@@ -301,6 +316,54 @@ class CNode:
 #        inp = Port( inp , self.N.Verbose )
 #        outp = Port( outp , self.N.Verbose )
 #        return sts,inp,outp
+    def InStreamPort( self , aParameterName , aParameterType , aDependency ):
+        aPort = self.N.InStreamPort( aParameterName , aParameterType , aDependency )
+        if aPort != None :
+            myPort = StreamPort( aPort , self.N.Verbose )
+            return myPort
+        if self.N.Verbose :
+            print "Error while creating the Port : ",aParameterName
+        return None
+    def OutStreamPort( self , aParameterName , aParameterType , aDependency ):
+        aPort = self.N.OutStreamPort( aParameterName , aParameterType , aDependency )
+        if aPort != None :
+            myPort = StreamPort( aPort , self.N.Verbose )
+            return myPort
+        if self.N.Verbose :
+            print "Error while creating the Port : ",aParameterName
+        return None
+    def GetInPort( self , aParameterName ):
+        aPort = self.N.GetInPort( aParameterName )
+        if aPort != None :
+            myPort = Port( aPort , self.N.Verbose )
+            return myPort
+        if self.N.Verbose :
+            print "Error while creating the Port : ",aParameterName
+        return None
+    def GetOutPort( self , aParameterName ):
+        aPort = self.N.GetOutPort( aParameterName )
+        if aPort != None :
+            myPort = Port( aPort , self.N.Verbose )
+            return myPort
+        if self.N.Verbose :
+            print "Error while creating the Port : ",aParameterName
+        return None
+    def GetInStreamPort( self , aParameterName ):
+        aPort = self.N.GetInStreamPort( aParameterName )
+        if aPort != None :
+            myPort = StreamPort( aPort , self.N.Verbose )
+            return myPort
+        if self.N.Verbose :
+            print "Error while creating the Port : ",aParameterName
+        return None
+    def GetOutStreamPort( self , aParameterName ):
+        aPort = self.N.GetOutStreamPort( aParameterName )
+        if aPort != None :
+            myPort = StreamPort( aPort , self.N.Verbose )
+            return myPort
+        if self.N.Verbose :
+            print "Error while creating the Port : ",aParameterName
+        return None
     def Ports( self ):
         ports = self.N.Ports()
         i = 0
@@ -308,13 +371,34 @@ class CNode:
             ports[ i ] = Port( ports[i] , self.N.Verbose )
             i = i + 1
         return ports
+    def StreamPorts( self ):
+        ports = self.N.StreamPorts()
+        i = 0
+        while i < len( ports ) :
+            ports[ i ] = StreamPort( ports[i] , self.N.Verbose )
+            i = i + 1
+        return ports
+    def AllPorts( self ):
+        allports = self.N.Ports()
+        lenports = len( allports )
+        i = 0
+        while i < lenports :
+            allports[ i ] = Port( allports[i] , self.N.Verbose )
+            i = i + 1
+        ports = self.N.StreamPorts()
+        i = 0
+        while i < len( ports ) :
+            allports.append( StreamPort( ports[i] , self.N.Verbose ) )
+            i = i + 1
+        return allports
     def ListPorts( self , *args ):
         if len( args ) == 0 :
             aName = self.N.Name()
         else :
             aName = args[ 0 ]
-        ports = self.N.Ports()
+        ports = self.AllPorts()
         listofports = ""
+        ilst = 0
         if len( ports ) :
             portsname = ports[ 0 ].Name()
             bs = portsname.find('\\')
@@ -322,9 +406,9 @@ class CNode:
                 portsname1,portsname2 = portsname.split('\\')
                 portsname = portsname1 + portsname2
             if ports[ 0 ].IsInput():
-                listofports = aName + 'In' + portsname
+                listofports = 'I' + aName + portsname
             else :
-                listofports = aName + 'Out' + portsname
+                listofports = 'O' + aName + portsname
             i = 1
             while i < len( ports ) :
                 portsname = ports[ i ].Name()
@@ -333,24 +417,32 @@ class CNode:
                     portsname1,portsname2 = portsname.split('\\')
                     portsname = portsname1 + portsname2
                 if ports[ i ].IsInput():
-                    listofports = listofports + ',' + aName + 'In' + portsname
+                    listofports = listofports + ',' + 'I' + aName + portsname
                 else :
-                    listofports = listofports + ',' + aName + 'Out' + portsname
+                    listofports = listofports + ',' + 'O' + aName + portsname
                 i = i + 1
         print listofports
         if len( ports ) == 1 :
-            listofports = "[" + listofports + "] = " + aName + ".Ports()"
+            listofports = "[" + listofports + "] = " + aName + ".AllPorts()"
         else :
-            listofports = listofports + " = " + aName + ".Ports()"
+            listofports = listofports + " = " + aName + ".AllPorts()"
         return listofports
     def PrintPorts( self ):
-        ports = self.N.Ports()
+        ports = self.AllPorts()
         i = 0
         while i < len( ports ) :
             Direction = "Out"
             if ports[ i ].IsInput() :
                 Direction = "In"
-            print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
+            if ( ports[ i ].IsDataStream() ) & ( self.N.IsStreamGraph() == 0 ) :
+                if ports[ i ].IsInput() :
+                    sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = ports[ i ].Params()
+                    print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
+                else :
+                    numberofvalues = ports[ i ].NumberOfValues()
+                    print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),'NumberOfValues',numberofvalues
+            else :
+                print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
             i = i + 1
     def Links( self ) :
         links = self.N.Links()
@@ -359,14 +451,66 @@ class CNode:
             links[ i ] = Link( links[i] , self.N.Verbose )
             i = i + 1
         return links
+    def StreamLinks( self ) :
+        links = self.N.StreamLinks()
+        i = 0
+        while i < len( links ) :
+            links[ i ] = StreamLink( links[i] , self.N.Verbose )
+            i = i + 1
+        return links
+    def AllLinks( self ) :
+        alllinks = self.N.Links()
+        lenlinks = len( alllinks )
+        i = 0
+        while i < lenlinks :
+            alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
+            i = i + 1
+        links = self.N.StreamLinks()
+        i = 0
+        while i < len( links ) :
+            alllinks.append( StreamLink( links[i] , self.N.Verbose ) )
+            i = i + 1
+        return alllinks
+    def ListLinks( self , *args ):
+        links = self.AllLinks()
+        if len( links ) :
+            listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
+            listoflinks = listoflinks + links[ 0 ].OutPort().Name()
+            listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
+            listoflinks = listoflinks + links[ 0 ].InPort().Name()
+            i = 1
+            while i < len( links ) :
+                listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
+                listoflinks = listoflinks + links[ i ].OutPort().Name()
+                listoflinks = listoflinks + links[ i ].InPort().Node().Name()
+                listoflinks = listoflinks + links[ i ].InPort().Name()
+                i = i + 1
+        print listoflinks
+        if len( args ) == 0 :
+            aName = self.N.Name()
+        else :
+            aName = args[ 0 ]
+        if len( links ) == 1 :
+            listoflinks = "[" + listoflinks + "] = " + aName + ".AllLinks()"
+        else :
+            listoflinks = listoflinks + " = " + aName + ".AllLinks()"
+        return listoflinks
     def PrintLinks( self ):
-        links = self.Links()
+        links = self.AllLinks()
         i = 0
         while i < len( links ) :
             links[i].Print()
             i = i + 1
+    def IsStreamGraph( self ):
+        return self.N.IsStreamGraph()
     def IsGraph( self ):
         return self.N.IsGraph()
+    def IsMacro( self ):
+        return self.N.IsMacro()
+    def IsFlowMacro( self ):
+        return self.N.IsFlowMacro()
+    def IsStreamMacro( self ):
+        return self.N.IsStreamMacro()
     def IsComputing( self ):
         return self.N.IsComputing()
     def IsFactory( self ):
@@ -383,8 +527,12 @@ class CNode:
         return self.N.IsSwitch()
     def IsEndSwitch( self ):
         return self.N.IsEndSwitch()
+    def GraphLevel( self ) :
+        return self.N.GraphLevel()
     def SubGraph( self ):
         return self.N.SubGraph()
+    def SubStreamGraph( self ):
+        return self.N.SubStreamGraph()
     def Thread( self ):
         return self.N.Thread()
     def IsWaiting( self ):
@@ -401,8 +549,6 @@ class CNode:
         return self.N.Control()
     def ControlClear( self ):
         return self.N.ControlClear()
-    def AutoState( self ):
-        return self.N.AutoState()
     def ReadyW( self ):
         return self.N.ReadyW()
     def RunningW( self ):
@@ -509,10 +655,6 @@ class INode(CNode):
         return self.N.PyFunction()
     def PyFuncName( self ):
         return self.N.PyFuncName()
-    def EPyFunc( self ):
-        PyFunc = self.N.PyFunction()
-        PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
-        self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
     def InPort( self , aParameterName , aParameterType ):
         aPort = self.N.InPort( aParameterName ,
                              aParameterType )
@@ -531,6 +673,10 @@ class INode(CNode):
         if self.N.Verbose :
             print "Error while creating the Port : ",aParameterName
         return None
+    def EPyFunc( self ):
+        PyFunc = self.N.PyFunction()
+        PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
+        self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
 
 ##########################################################
 class GNode(INode):
@@ -625,7 +771,7 @@ class ESNode(GNode):
 #        self.Parametername = aServicesParameter.Parametername
 
 ##########################################################
-class Graph(INode):
+class Graph(GNode):
 ##########################################################
     def __init__( self , aName ):
         try:
@@ -634,8 +780,14 @@ class Graph(INode):
             try:
                 graph = aName.G.Copy()
             except:
-                graph = None
+                graph = aName
         if graph != None :
+            if graph.IsStreamGraph() :
+                aGraph = graph.ToStreamGraph()
+                if aGraph != None :
+                    graph = StreamGraph( aGraph )
+                else :
+                    print "Graph creation failed"
             self.G = graph
             self.G.Verbose = 1
             self.N = graph
@@ -660,14 +812,14 @@ class Graph(INode):
             print ErrMsg
         return aNode
     def Node( self , aComponent , anInterface , aService ):
-        if SuperVision.Swig :
-            aService = Service_Swig( aService )
+        #if SuperVision.Swig :
+            #aService = Service_Swig( aService )
         return self.FNode( aComponent , anInterface , aService )
     def FNode( self , aComponent , anInterface , aService ):
         NodeComponent = modulecatalog.GetComponent( aComponent )
         aService = NodeComponent.GetService( anInterface , aService )
-        if SuperVision.Swig :
-            aService = Service_Swig( aService )
+        #if SuperVision.Swig :
+            #aService = Service_Swig( aService )
         aNode = self.G.FNode( aComponent , anInterface , aService )
         if aNode != None :
             myNode = FNode( aNode , self.G.Verbose )
@@ -786,6 +938,36 @@ class Graph(INode):
 #        if self.G.Verbose :
 #            print ErrMsg
 #        return aNode
+    def MNode( self , aGraphXml ):
+        aMNode = self.G.MNode( aGraphXml )
+        if aMNode != None :
+            myMNode = MNode( aMNode , self.G.Verbose )
+            return myMNode
+        ErrMsg = "Failed to create a MNode"
+        if self.G.Verbose :
+            print ErrMsg
+        return aMNode
+    def GraphMNode( self , aGraph ):
+        aGraphMNode = self.G.GraphMNode( aGraph.G )
+        if aGraphMNode != None :
+            myMNode = MNode( aGraphMNode , self.G.Verbose )
+            return myMNode
+        ErrMsg = "Failed to create a MNode"
+        if self.G.Verbose :
+            print ErrMsg
+        return aGraphMNode
+    def FlowObjRef( self ) :
+        aGraph = self.G.FlowObjRef()
+        if aGraph != None :
+            myGraph = Graph( aGraph )
+            return myGraph
+        return aGraph
+    def StreamObjRef( self ) :
+        aGraph = self.G.StreamObjRef()
+        if aGraph != None :
+            myGraph = StreamGraph( aGraph )
+            return myGraph
+        return aGraph
     def PrintService( self , aComponent , anInterface , aService ):
         NodeComponent = modulecatalog.GetComponent( aComponent )
         aService = NodeComponent.GetService( anInterface , aService )
@@ -831,8 +1013,8 @@ class Graph(INode):
         return self.G.LevelMax()
     def ThreadsMax( self ):
         return self.G.ThreadsMax()
-    def GraphsNumber( self ):
-        return self.G.GraphsNumber()
+    def SubGraphsNumber( self ):
+        return self.G.SubGraphsNumber()
     def LevelNodes( self , aLevel ):
         nodes = self.G.LevelNodes( aLevel )
         return self.nodesTuple( nodes )
@@ -940,6 +1122,12 @@ class Graph(INode):
             pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
             i = i + 1
             j = j + 1
+        n = len( nodes.Graphs )
+        i = 0
+        while i < n :
+            pynodes.append( MNode( nodes.Graphs[i] , self.G.Verbose ) )
+            i = i + 1
+            j = j + 1
         return pynodes
     def ListNodes( self , *args ):
         nodes = self.Nodes()
@@ -966,29 +1154,56 @@ class Graph(INode):
         i = 0
         while i < n :
             print ' '
-            nodes[i].Print()
+            nodes[ i ].Print()
             i = i + 1
     def PrintThreads( self ):
         nodes = self.Nodes()
         i = 0
         while i < len( nodes ) :
-            print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i].AutoState()
+            print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i]
             i = i + 1
     def GLinks( self ):
         links = self.G.GLinks()
         i = 0
-        while i < len( links ) :
+        linkslen = len( links )
+        #print 'GLinks ',linkslen,'Links'
+        while i < linkslen :
             links[ i ] = Link( links[i] , self.G.Verbose )
             i = i + 1
-        return links
+    def GStreamLinks( self ):
+        streamlinks = self.G.GStreamLinks()
+        i = 0 
+        #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
+        while i < len( streamlinks ) :
+            streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
+            i = i + 1
+        return streamlinks
+    def GAllLinks( self ) :
+        alllinks = self.G.GLinks()
+        lenlinks = len( alllinks )
+        i = 0
+        while i < lenlinks :
+            alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
+            i = i + 1
+        links = self.G.StreamLinks()
+        j = 0
+        while j < len(links) :
+            alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
+            i = i + 1
+            j = j + 1
+        return alllinks
     def ListLinks( self , *args ):
-        links = self.G.GLinks()
+        links = self.GAllLinks()
         if len( links ) :
-            listoflinks = links[ 0 ].InPort().Node().Name()
+            listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
+            listoflinks = listoflinks + links[ 0 ].OutPort().Name()
+            listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
             listoflinks = listoflinks + links[ 0 ].InPort().Name()
             i = 1
             while i < len( links ) :
-                listoflinks = listoflinks + ',' + links[ i ].InPort().Node().Name()
+                listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
+                listoflinks = listoflinks + links[ i ].OutPort().Name()
+                listoflinks = listoflinks + links[ i ].InPort().Node().Name()
                 listoflinks = listoflinks + links[ i ].InPort().Name()
                 i = i + 1
         print listoflinks
@@ -997,18 +1212,18 @@ class Graph(INode):
         else :
             aName = args[ 0 ]
         if len( links ) == 1 :
-            listoflinks = "[" + listoflinks + "] = " + aName + ".GLinks()"
+            listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
         else :
-            listoflinks = listoflinks + " = " + aName + ".GLinks()"
+            listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
         return listoflinks
     def PrintLinks( self ):
-        links = self.G.GLinks()
+        links = self.GAllLinks()
         i = 0
         while i < len( links ) :
-            Link( links[ i ] , self.G.Verbose ).Print()
+            links[ i ].Print()
             i = i + 1
-    def Graphs( self ):
-        graphs = self.G.Graphs()
+    def SubGraphsNodes( self , ):
+        graphs = self.G.SubGraphsNodes()
         outgraphs = graphs
         i = 0
         while i < len( graphs ) :
@@ -1025,6 +1240,14 @@ class Graph(INode):
         if self.G.Verbose :
             print ErrMsg
         return aCopy
+    def ToStreamGraph( self ):
+        aGraph = self.G.ToStreamGraph()
+        if aGraph != None :
+            return StreamGraph( aGraph )
+        return None
+    def SubGraphsNodes( self , aSubGraphsNumber ):
+        nodes = self.G.SubGraphsNodes( aSubGraphsNumber )
+        return self.nodesTuple( nodes )
     def Merge( self , aGraph ):
         return self.G.Merge( aGraph.G )
     def Destroy( self ):
@@ -1039,6 +1262,81 @@ class GraphE(Graph):
         self.G.Verbose = 1
         self.N = graph
         self.N.Verbose = 1
+    def ToStreamGraph( self ):
+        aGraph = self.G.ToStreamGraph()
+        if aGraph != None :
+            return StreamGraphE( aGraph )
+        return None
+
+##########################################################
+class MNode(Graph):
+##########################################################
+    def __init__( self , aMNode , Verbose ):
+        self.G = aMNode
+        self.G.Verbose = Verbose
+        self.N = aMNode
+        self.N.Verbose = Verbose
+
+##########################################################
+class StreamGraph(Graph):
+##########################################################
+    def __init__( self , aName ):
+        try:
+            graph = SuperVision.StreamGraph( aName )
+        except:
+            try:
+                graph = aName.G.StreamCopy()
+            except:
+                graph = aName
+        if graph != None :
+            self.G = graph
+            self.G.Verbose = 1
+            self.N = graph
+            self.N.Verbose = 1
+        else :
+            print "StreamGraph creation failed"
+    def StreamCopy( self ):
+        aCopy = self.G.StreamCopy()
+        if aCopy != None:
+            myCopy = StreamGraph( aCopy )
+            return myCopy
+        ErrMsg = "Failed to get a Copy of " + self.G.Name()
+        if self.G.Verbose :
+            print ErrMsg
+        return aCopy
+    def StreamLink( self , anOutStreamPort , anInStreamPort ) :
+        aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
+        if aStreamLink!= None:
+            myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
+            return myStreamLink
+        ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
+        if self.G.Verbose :
+            print ErrMsg
+        return aStreamLink        
+    def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
+        return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
+    def StreamParams( self ):
+        Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
+        return Timeout,DataStreamTrace,DeltaTime
+    def ToFlowGraph( self ):
+        return self.G.ToFlowGraph()
+    def SubStreamGraphsNumber( self ):
+        return self.G.SubStreamGraphsNumber()
+    def SubStreamGraphsNodes( self , aSubStreamGraphsNumber ):
+        nodes = self.G.SubStreamGraphsNodes( aSubStreamGraphsNumber )
+        return self.nodesTuple( nodes )
+    def StreamMerge( self , aStreamGraph ):
+        return self.G.StreamMerge( aStreamGraph.G )
+
+##########################################################
+class StreamGraphE(StreamGraph):
+##########################################################
+    def __init__( self , aName ):
+        graph = SuperVision.StreamGraphE( aName )
+        self.G = graph
+        self.G.Verbose = 1
+        self.N = graph
+        self.N.Verbose = 1
 
 ##########################################################
 class Value:
@@ -1133,6 +1431,8 @@ class Port:
         return self.P.IsSwitch()
     def IsEndSwitch( self ):
         return self.P.IsEndSwitch()
+    def IsDataStream( self ):
+        return self.P.IsDataStream()
 #    def IsBus( self ):
 #        return self.P.IsBus()
     def Done( self ):
@@ -1154,6 +1454,28 @@ class Port:
     def Destroy( self ):
         self.P.destroy()
 
+##########################################################
+class StreamPort(Port):
+##########################################################
+    def __init__( self , aPort , Verbose ):
+        self.P = aPort
+        self.P.Verbose = Verbose
+    def StreamLink( self ) :
+        return self.P.StreamLink()
+    def Dependency( self ) :
+        return self.P.Dependency()
+    def SetDependency( self , aDependency ) :
+        return self.P.SetDependency( aDependency )
+    def Params( self ) :
+        sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
+        return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
+    def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
+        return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
+    def NumberOfValues( self ) :
+        return self.P.NumberOfValues()
+    def SetNumberOfValues( self , aNumberOfValues ) :
+        return self.P.SetNumberOfValues( aNumberOfValues )
+
 ##########################################################
 class Link:
 ##########################################################
@@ -1178,8 +1500,17 @@ class Link:
         return None
     def Print( self ):
         anOutPort = self.L.OutPort()
+        anOutPortName = anOutPort.Name()
+        anOutPortKind = anOutPort.Kind()
+        anOutPortValue = anOutPort.ToString()
+        anOutNode = anOutPort.Node()
+        anOutNodeName = anOutNode.Name()
         anInPort = self.L.InPort()
-        print anOutPort.Node().Name(),'(',anOutPort.Name(),' ',anOutPort.Kind(),') =',anOutPort.ToString(),' --> ',anInPort.Node().Name(),'(',anInPort.Name(),')',' ',anInPort.Kind()
+        anInPortName = anInPort.Name()
+        anInPortKind = anInPort.Kind()
+        anInNode = anInPort.Node()
+        anInNodeName = anInNode.Name()
+        print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
     def CoordsSize( self ):
         return self.L.CoordsSize()
     def AddCoord( self , index , X , Y ):
@@ -1194,3 +1525,26 @@ class Link:
         self.L.destroy()
 
 
+
+##########################################################
+class StreamLink(Link):
+##########################################################
+    def __init__( self , aLink , Verbose ):
+        self.L = aLink
+        self.L.Verbose = Verbose
+    def OutStreamPort( self ):
+        aPort = self.L.OutStreamPort()
+        if aPort != None :
+            myPort = StreamPort( aPort , self.L.Verbose )
+            return myPort
+        if self.L.Verbose :
+            print "Error while getting the Port : "
+        return None
+    def InStreamPort( self ):
+        aPort = self.L.InStreamPort()
+        if aPort != None :
+            myPort = StreamPort( aPort , self.L.Verbose )
+            return myPort
+        if self.L.Verbose :
+            print "Error while getting the Port : "
+        return None