1 // Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 #include <HYDROData_Document.h>
28 HYDROData_Entity* copyObject( HYDROData_Entity* theObject );
29 Handle(HYDROData_Entity) createHandle( HYDROData_Entity* theObject );
30 HYDROData_Entity* createPointer( const Handle(HYDROData_Entity)& theObject );
34 DocError_OK = 0, ///< success
35 DocError_ResourcesProblem, ///< resources files are invalid or not found
36 DocError_CanNotOpen, ///< can not open file for reading or writing
37 DocError_InvalidVersion, ///< version of document is different than expected
38 DocError_InvalidFormat, ///< format of the document is bad
39 DocError_UnknownProblem ///< problem has unknown nature
42 class HYDROData_Document
45 #include <HYDROData_Document.h>
48 %ConvertToSubClassCode
49 if ( !Handle(HYDROData_Document)::DownCast( sipCpp ).IsNull() )
50 sipClass = sipClass_HYDROData_Document;
57 HYDROData_Entity* copyObject( HYDROData_Entity* theObject )
59 HYDROData_Entity* aRes = NULL;
60 if ( theObject == NULL )
63 switch( theObject->GetKind() )
67 aRes = new HYDROData_Image( *dynamic_cast<HYDROData_Image*>( theObject ) );
72 aRes = new HYDROData_Polyline3D( *dynamic_cast<HYDROData_Polyline3D*>( theObject ) );
77 aRes = new HYDROData_Bathymetry( *dynamic_cast<HYDROData_Bathymetry*>( theObject ) );
82 aRes = new HYDROData_AltitudeObject( *dynamic_cast<HYDROData_AltitudeObject*>( theObject ) );
85 case KIND_IMMERSIBLE_ZONE:
87 aRes = new HYDROData_ImmersibleZone( *dynamic_cast<HYDROData_ImmersibleZone*>( theObject ) );
92 aRes = new HYDROData_River( *dynamic_cast<HYDROData_River*>( theObject ) );
97 aRes = new HYDROData_Stream( *dynamic_cast<HYDROData_Stream*>( theObject ) );
100 case KIND_CONFLUENCE:
102 aRes = new HYDROData_Confluence( *dynamic_cast<HYDROData_Confluence*>( theObject ) );
107 aRes = new HYDROData_Channel( *dynamic_cast<HYDROData_Channel*>( theObject ) );
112 aRes = new HYDROData_Obstacle( *dynamic_cast<HYDROData_Obstacle*>( theObject ) );
117 aRes = new HYDROData_Digue( *dynamic_cast<HYDROData_Digue*>( theObject ) );
122 aRes = new HYDROData_Profile( *dynamic_cast<HYDROData_Profile*>( theObject ) );
127 aRes = new HYDROData_ProfileUZ( *dynamic_cast<HYDROData_ProfileUZ*>( theObject ) );
130 case KIND_POLYLINEXY:
132 aRes = new HYDROData_PolylineXY( *dynamic_cast<HYDROData_PolylineXY*>( theObject ) );
135 case KIND_CALCULATION:
137 aRes = new HYDROData_CalculationCase( *dynamic_cast<HYDROData_CalculationCase*>( theObject ) );
142 aRes = new HYDROData_Region( *dynamic_cast<HYDROData_Region*>( theObject ) );
147 aRes = new HYDROData_Zone( *dynamic_cast<HYDROData_Zone*>( theObject ) );
150 case KIND_SHAPES_GROUP:
152 aRes = new HYDROData_ShapesGroup( *dynamic_cast<HYDROData_ShapesGroup*>( theObject ) );
155 case KIND_SPLITTED_GROUP:
157 aRes = new HYDROData_SplittedShapesGroup( *dynamic_cast<HYDROData_SplittedShapesGroup*>( theObject ) );
160 case KIND_OBSTACLE_ALTITUDE:
162 aRes = new HYDROData_ObstacleAltitude( *dynamic_cast<HYDROData_ObstacleAltitude*>( theObject ) );
165 case KIND_STREAM_ALTITUDE:
167 aRes = new HYDROData_StreamAltitude( *dynamic_cast<HYDROData_StreamAltitude*>( theObject ) );
175 Handle(HYDROData_Entity) createHandle( HYDROData_Entity* theObject )
177 Handle(HYDROData_Entity) aRes = copyObject( theObject );
181 HYDROData_Entity* createPointer( const Handle(HYDROData_Entity)& theObject )
183 HYDROData_Entity* aRes = NULL;
185 if ( !theObject.IsNull() )
186 aRes = copyObject( theObject.operator->() );
195 //! Returns the existing document or creates new if it is not exist
196 static HYDROData_Document Document( const int theStudyID ) [Handle_HYDROData_Document (const int)] ;
199 Handle(HYDROData_Document) aDocument;
201 Py_BEGIN_ALLOW_THREADS
202 aDocument = HYDROData_Document::Document( a0 );
205 if ( !aDocument.IsNull() )
206 sipRes = aDocument.operator->();
210 //! Returns true if data model contains document for this study
211 static bool HasDocument( const int theStudyID );
213 //! Loads the OCAF document from the file.
214 //! \param theFileName full name of the file to load
215 //! \param theStudyID identifier of the SALOME study to associate with loaded file
216 //! \returns error status (OK in case of success)
217 static Data_DocError Load( const char* theFileName, const int theStudyID );
219 //! Saves the OCAF document to the file.
220 //! \param theFileName full name of the file to store
221 //! \returns error status (OK in case of success)
222 Data_DocError Save( const char* theFileName );
224 //! Removes document data
227 //! Starts a new operation (opens a tansaction)
228 void StartOperation();
230 //! Finishes the previously started operation (closes the transaction)
231 //void CommitOperation(
232 // const TCollection_ExtendedString& theName = TCollection_ExtendedString() );
234 //! Aborts the operation
235 void AbortOperation();
237 //! Returns true if operation has been started, but not yet finished or aborted
240 //! Returns true if document was modified (since creation/opening)
243 //! Returns True if there are available Undos
246 //! Returns a list of stored undo actions
247 //const TDF_DeltaList& GetUndos();
249 //! Clears a list of stored undo actions
252 //! Undoes last operation
255 //! Returns True if there are available Redos
258 //! Returns a list of stored undo actions
259 //const TDF_DeltaList& GetRedos();
261 //! Clears a list of stored undo actions
264 //! Redoes last operation
267 //! Creates and locates in the document a new object
268 //! \param theKind kind of the created object, can not be UNKNOWN
269 //! \returns the created object
270 HYDROData_Entity CreateObject( const ObjectKind theKind ) [Handle_HYDROData_Entity (const ObjectKind)] ;
273 Handle(HYDROData_Entity) anObject;
274 Py_BEGIN_ALLOW_THREADS
275 anObject = sipSelfWasArg ? sipCpp->HYDROData_Document::CreateObject( a0 ) :
276 sipCpp->CreateObject( a0 );
279 sipRes = createPointer( anObject );
283 HYDROData_Entity FindObjectByName( const QString& theName,
284 const ObjectKind theKind = KIND_UNKNOWN )
285 [Handle_HYDROData_Entity (const QString&, const ObjectKind)] ;
288 Handle(HYDROData_Entity) anObject;
289 Py_BEGIN_ALLOW_THREADS
290 anObject = sipSelfWasArg ? sipCpp->HYDROData_Document::FindObjectByName( *a0, a1 ) :
291 sipCpp->FindObjectByName( *a0, a1 );
294 sipRes = createPointer( anObject );
298 HYDROData_SequenceOfObjects FindObjectsByNames( const QStringList& theNames,
299 const ObjectKind theKind = KIND_UNKNOWN );
301 void SetLocalCS( double, double );
305 //! Creates new document: private because "Document" method must be used instead of direct creation.
306 HYDROData_Document();
308 //! Deletes all high-level data, managed this document
309 ~HYDROData_Document();