1 // File: ModelAPI_Document.cxx
2 // Created: 28 Feb 2014
3 // Author: Mikhail PONIKAROV
5 #ifndef ModelAPI_Document_HeaderFile
6 #define ModelAPI_Document_HeaderFile
13 class ModelAPI_Feature;
14 class ModelAPI_Iterator;
16 /// Common groups identifiers
17 /// Group of parameters
18 static const std::string PARAMETERS_GROUP = "Parameters";
19 /// Group of constructions
20 static const std::string CONSTRUCTIONS_GROUP = "Construction";
22 static const std::string PARTS_GROUP = "Parts";
24 /**\class Model_Document
26 * \brief Document for internal data structure of any object storage.
27 * Document contains all data that must be stored/retrived in the file.
28 * Also it provides acces to this data: open/save, transactions management etc.
30 class ModelAPI_Document
33 //! Loads the OCAF document from the file.
34 //! \param theFileName full name of the file to load
35 //! \param theStudyID identifier of the SALOME study to associate with loaded file
36 //! \returns true if file was loaded successfully
37 MODELAPI_EXPORT virtual bool load(const char* theFileName) = 0;
39 //! Saves the OCAF document to the file.
40 //! \param theFileName full name of the file to store
41 //! \returns true if file was stored successfully
42 MODELAPI_EXPORT virtual bool save(const char* theFileName) = 0;
44 //! Removes document data
45 MODELAPI_EXPORT virtual void close() = 0;
47 //! Starts a new operation (opens a tansaction)
48 MODELAPI_EXPORT virtual void startOperation() = 0;
49 //! Finishes the previously started operation (closes the transaction)
50 MODELAPI_EXPORT virtual void finishOperation() = 0;
51 //! Aborts the operation
52 MODELAPI_EXPORT virtual void abortOperation() = 0;
53 //! Returns true if operation has been started, but not yet finished or aborted
54 MODELAPI_EXPORT virtual bool isOperation() = 0;
55 //! Returns true if document was modified (since creation/opening)
56 MODELAPI_EXPORT virtual bool isModified() = 0;
58 //! Returns True if there are available Undos
59 MODELAPI_EXPORT virtual bool canUndo() = 0;
60 //! Undoes last operation
61 MODELAPI_EXPORT virtual void undo() = 0;
62 //! Returns True if there are available Redos
63 MODELAPI_EXPORT virtual bool canRedo() = 0;
64 //! Redoes last operation
65 MODELAPI_EXPORT virtual void redo() = 0;
67 //! Adds to the document the new feature of the given feature id
68 //! \param creates feature and puts it in the document
69 MODELAPI_EXPORT virtual std::shared_ptr<ModelAPI_Feature> addFeature(std::string theID) = 0;
71 ///! Adds a new sub-document by the identifier, or returns existing one if it is already exist
72 MODELAPI_EXPORT virtual std::shared_ptr<ModelAPI_Document> subDocument(std::string theDocID) = 0;
74 ///! Creates an iterator of the features by the specific groups
75 MODELAPI_EXPORT virtual std::shared_ptr<ModelAPI_Iterator> featuresIterator(
76 const std::string theGroup) = 0;
78 ///! Returns the id of hte document
79 MODELAPI_EXPORT virtual const std::string& id() const = 0;
81 //! Returns the feature in the group by the index (started from zero)
82 MODELAPI_EXPORT virtual std::shared_ptr<ModelAPI_Feature>
83 feature(const std::string& theGroupID, const int theIndex) = 0;
85 //! Returns the index of feature in the group (zero based)
86 MODELAPI_EXPORT virtual int featureIndex(std::shared_ptr<ModelAPI_Feature> theFeature) = 0;
88 ///! Returns the vector of groups already added to the document
89 MODELAPI_EXPORT virtual const std::vector<std::string>& getGroups() const = 0;
91 /// To virtually destroy the fields of successors
92 virtual ~ModelAPI_Document() {}
95 /// Only for SWIG wrapping it is here
96 MODELAPI_EXPORT ModelAPI_Document()