1 // SUPERV GraphEditor : contains classes that permit edition of graphs
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
24 // File : DataFlowEditor_DataFlow.hxx
27 #ifndef _DATAFLOWEDITOR_DATAFLOW_HXX
28 #define _DATAFLOWEDITOR_DATAFLOW_HXX
30 #include "DataFlowEditor_OutNode.hxx"
32 namespace GraphExecutor {
38 namespace GraphEditor {
40 class DataFlow : public GraphEditor::OutNode {
44 SALOME_NamingService* _theNamingService ;
45 GraphExecutor::DataFlow * _DataFlowExecutor ;
48 bool _EditedAfterExecution ;
53 DataFlow( CORBA::ORB_ptr ORB, SALOME_NamingService * ptrNamingService ,
54 const char * DataFlowName ,
55 const char * DebugFileName ,
56 const SUPERV::KindOfNode aKindOfNode );
57 DataFlow( CORBA::ORB_ptr ORB, SALOME_NamingService * ptrNamingService ,
58 const SALOME_ModuleCatalog::Service& DataFlowService ,
59 const char * DataFlowComponentName ,
60 const char * DataFlowInterfaceName ,
61 const char * DataFlowName ,
62 const SUPERV::KindOfNode DataFlowkind = SUPERV::ComputingNode ,
63 const SUPERV::SDate DataFlowFirstCreation = SUPERV::SDate() ,
64 const SUPERV::SDate DataFlowLastModification = SUPERV::SDate() ,
65 const char * DataFlowEditorRelease = NULLSTRING ,
66 const char * DataFlowAuthor = NULLSTRING ,
67 const char * DataFlowComputer = NULLSTRING ,
68 const char * DataFlowComment = NULLSTRING ,
69 const char * DebugFileName = NULLSTRING ) ;
73 char * DataFlowInfo() ;
74 char * DataNodeInfo() ;
75 char * NodeInfo( const char * aNodeName ) ;
77 bool LoadDataFlow( const GraphBase::SGraph * aDataFlow ) ;
78 // bool LoadXml( const char * myFileName ) ;
79 bool LoadXml( const char * myFileName , GraphBase::ListOfSGraphs & aListOfDataFlows ) ;
80 bool LoadInfo( const GraphBase::SNode &aDataFlowInfo ) ;
82 bool SaveXml(const char * myFileName ) ;
83 bool SavePy(const char * myFileName ) ;
86 // void DateModification() ;
88 GraphBase::ListOfSGraphs * GetDataFlows() ;
89 GraphBase::SNode * GetInfo() const ;
90 GraphBase::ListOfSNodes * GetNodes() const ;
91 GraphBase::ListOfSLinks * GetLinks() const ;
92 GraphBase::ListOfSGraphs * GetGraphs() const ;
93 GraphBase::ListOfSLinks * GetDatas() const ;
94 const SALOME_ModuleCatalog::Service * GetService() ;
96 GraphEditor::InNode * AddService (
97 SALOME_ModuleCatalog::Service& aService ,
98 const char * NodeComponentName ,
99 const char * NodeInterfaceName ) {
100 return AddNode( aService , NodeComponentName ,
101 NodeInterfaceName ) ; } ;
102 GraphEditor::InNode * AddNode(
103 const SALOME_ModuleCatalog::Service& NodeService ,
104 const char * NodeComponentName ,
105 const char * NodeInterfaceName ,
106 const char * NodeName = NULLSTRING ,
107 const SUPERV::KindOfNode NodeKindOfNode = SUPERV::ComputingNode ,
108 GraphBase::ListOfFuncName aFuncName = GraphBase::ListOfFuncName() ,
109 GraphBase::ListOfPythonFunctions aPythonFunction = GraphBase::ListOfPythonFunctions() ,
110 const SUPERV::SDate NodeFirstCreation = SUPERV::SDate() ,
111 const SUPERV::SDate NodeLastModification = SUPERV::SDate() ,
112 const char * NodeEditorRelease = NULLSTRING ,
113 const char * NodeAuthor = NULLSTRING ,
114 const char * NodeComputer = NULLSTRING ,
115 const char * NodeComment = NULLSTRING ,
116 const int NodeX = 0 ,
117 const int NodeY = 0 ) ;
118 GraphEditor::InNode * GetNode( const char* NodeName ) ;
119 bool RemoveNode( const char * NodeName ) ;
120 bool ReNameNode( const char * OldNodeName ,
121 const char * NewNodeName ) ;
123 const SALOME_ModuleCatalog::Service * NodeService( const char * NodeName ) ;
125 void Coordinates( const int X , const int Y ) ;
126 const int XCoordinate() ;
127 const int YCoordinate() ;
128 void Coordinates( const char * NodeName , const int X , const int Y ) ;
129 const int XCoordinate( const char * NodeName ) ;
130 const int YCoordinate( const char * NodeName ) ;
132 const GraphBase::InPort * GetInPort( const char * name ) ;
133 const GraphBase::OutPort * GetOutPort( const char * name ) ;
134 GraphBase::InPort * GetChangeInPort( const char * name ) ;
135 GraphBase::OutPort * GetChangeOutPort( const char * name ) ;
137 bool HasInput(const char * ToServiceParameterName ) ;
139 // bool AddLinkValue( const char * FromNodeName ,
140 // const char * FromServiceParameterName ,
141 // const char * ToNodeName ,
142 // const char * ToServiceParameterName ,
143 // const CORBA::Any aValue ) {
144 // return AddLinkValue( FromNodeName, FromServiceParameterName , ToNodeName ,
145 // ToServiceParameterName , aValue ) ; } ;
146 bool AddLink( const char * FromNodeName ,
147 const char * FromServiceParameterName ,
148 const char * ToNodeName ,
149 const char * ToServiceParameterName ) ;
151 bool RemoveLink( const char * FromNodeName ,
152 const char * FromServiceParameterName ,
153 const char * ToNodeName ,
154 const char * ToServiceParameterName ) ;
156 bool GetLink(const char * ToNodeName ,
157 const char * ToServiceParameterName ,
158 char ** FromNodeName ,
159 char ** FromServiceParameterName ) ;
160 GraphBase::SLink * GetLink( GraphBase::ComputingNode * aNode ,
161 const char* ToServiceParameterName ) ;
163 bool AddLinkCoord( const char * FromNodeName ,
164 const char * FromServiceParameterName ,
165 const char * ToNodeName ,
166 const char * ToServiceParameterName ,
170 bool AddLinkCoord( const char * FromNodeName ,
171 const char * FromServiceParameterName ,
172 const char * ToNodeName ,
173 const char * ToServiceParameterName ,
177 bool ChangeLinkCoord( const char * FromNodeName ,
178 const char * FromServiceParameterName ,
179 const char * ToNodeName ,
180 const char * ToServiceParameterName ,
184 bool RemoveLinkCoord( const char * FromNodeName ,
185 const char * FromServiceParameterName ,
186 const char * ToNodeName ,
187 const char * ToServiceParameterName ,
189 int GetLinkCoordSize( const char * FromNodeName ,
190 const char * FromServiceParameterName ,
191 const char * ToNodeName ,
192 const char * ToServiceParameterName ) ;
193 bool GetLinkCoord( const char * FromNodeName ,
194 const char * FromServiceParameterName ,
195 const char * ToNodeName ,
196 const char * ToServiceParameterName ,
197 int * X , int * Y ) ;
198 bool GetLinkCoord( const char * FromNodeName ,
199 const char * FromServiceParameterName ,
200 const char * ToNodeName ,
201 const char * ToServiceParameterName ,
202 const int index , long &X , long &Y ) ;
204 bool AddInputData( const char * ToNodeName ,
205 const char * ToParameterName ,
206 const CORBA::Any aValue = CORBA::Any() ) ;
208 const CORBA::Any * GetInData( const char * ToNodeName ,
209 const char * ToParameterName ) ;
210 const CORBA::Any * GetOutData( const char * FromNodeName ,
211 const char * FromParameterName ) ;
214 bool IsExecutable() ;
216 void Executing() ; // asv : removed a bool parameter, use Editing() to set _Executing = false
221 void EditedAfterExecution(bool EditedAfterExecution ) ;
222 bool EditedAfterExecution() ;
227 SUPERV::ListOfStrings * LevelNodes(long aLevel ) ;
229 long SubGraphsNumber() ;
230 long SubStreamGraphsNumber() ;
232 void Executor(GraphExecutor::DataFlow * DataFlowExecutor ) ;
233 GraphExecutor::DataFlow * GraphEditor::DataFlow::Executor() const ;
239 #include "DataFlowEditor_DataFlow.lxx"
241 ostream & operator << (ostream &,const GraphEditor::DataFlow & G);
242 ostream & operator << (ostream &,const SUPERV::SDate &);