X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Document.h;h=9070718b48974151d3b0a4ea2332f65438340f71;hb=7f5d3b6de3d879b6a11389c06a6f183b2fa5a1b2;hp=6f720526442bebb8f237a40ebd298136242663c7;hpb=475c7f8d39e081fb9defe50a05f18bca625993bf;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Document.h b/src/ModelAPI/ModelAPI_Document.h index 6f7205264..9070718b4 100644 --- a/src/ModelAPI/ModelAPI_Document.h +++ b/src/ModelAPI/ModelAPI_Document.h @@ -6,69 +6,101 @@ #define ModelAPI_Document_HeaderFile #include -#include +#include +#include +#include class ModelAPI_Feature; +/// Common groups identifiers +/// Group of parameters +static const std::string PARAMETERS_GROUP = "Parameters"; +/// Group of constructions +static const std::string CONSTRUCTIONS_GROUP = "Construction"; +/// Group of parts +static const std::string PARTS_GROUP = "Parts"; +/// All created fetaures of the document (a history) +static const std::string FEATURES_GROUP = "Features"; + /**\class Model_Document * \ingroup DataModel - * \brief Document for internal data structure of any object storage. Corresponds to the SALOME study. - * Document contains all data of te SALOME Study specific to this module - * that must be written into the HDF file. + * \brief Document for internal data structure of any object storage. + * Document contains all data that must be stored/retrived in the file. * Also it provides acces to this data: open/save, transactions management etc. - * to provide access to all stored data. */ - class ModelAPI_Document { public: - //! Loads the OCAF document from the file. //! \param theFileName full name of the file to load //! \param theStudyID identifier of the SALOME study to associate with loaded file //! \returns true if file was loaded successfully - MODELAPI_EXPORT virtual bool Load(const char* theFileName) = 0; + MODELAPI_EXPORT virtual bool load(const char* theFileName) = 0; //! Saves the OCAF document to the file. //! \param theFileName full name of the file to store //! \returns true if file was stored successfully - MODELAPI_EXPORT virtual bool Save(const char* theFileName) = 0; + MODELAPI_EXPORT virtual bool save(const char* theFileName) = 0; //! Removes document data - MODELAPI_EXPORT virtual void Close() = 0; + MODELAPI_EXPORT virtual void close() = 0; //! Starts a new operation (opens a tansaction) - MODELAPI_EXPORT virtual void StartOperation() = 0; + MODELAPI_EXPORT virtual void startOperation() = 0; //! Finishes the previously started operation (closes the transaction) - MODELAPI_EXPORT virtual void FinishOperation() = 0; + MODELAPI_EXPORT virtual void finishOperation() = 0; //! Aborts the operation - MODELAPI_EXPORT virtual void AbortOperation() = 0; + MODELAPI_EXPORT virtual void abortOperation() = 0; //! Returns true if operation has been started, but not yet finished or aborted - MODELAPI_EXPORT virtual bool IsOperation() = 0; + MODELAPI_EXPORT virtual bool isOperation() = 0; //! Returns true if document was modified (since creation/opening) - MODELAPI_EXPORT virtual bool IsModified() = 0; + MODELAPI_EXPORT virtual bool isModified() = 0; //! Returns True if there are available Undos - MODELAPI_EXPORT virtual bool CanUndo() = 0; + MODELAPI_EXPORT virtual bool canUndo() = 0; //! Undoes last operation - MODELAPI_EXPORT virtual void Undo() = 0; + MODELAPI_EXPORT virtual void undo() = 0; //! Returns True if there are available Redos - MODELAPI_EXPORT virtual bool CanRedo() = 0; + MODELAPI_EXPORT virtual bool canRedo() = 0; //! Redoes last operation - MODELAPI_EXPORT virtual void Redo() = 0; + MODELAPI_EXPORT virtual void redo() = 0; + + //! Adds to the document the new feature of the given feature id + //! \param creates feature and puts it in the document + MODELAPI_EXPORT virtual boost::shared_ptr addFeature(std::string theID) = 0; + + //! Removes the feature from the document + MODELAPI_EXPORT virtual void removeFeature(boost::shared_ptr theFeature) = 0; + + ///! Adds a new sub-document by the identifier, or returns existing one if it is already exist + MODELAPI_EXPORT virtual boost::shared_ptr + subDocument(std::string theDocID) = 0; - //! Adds to the document the new object of the given group id - //! \param theFeature a feature object that will be connected to the document in this method - //! \param theGroupID identifier of the groups of objects (must be greater than zero) - MODELAPI_EXPORT virtual void AddObject(std::shared_ptr theFeature, - const int theGroupID) = 0; + ///! Returns the id of hte document + MODELAPI_EXPORT virtual const std::string& id() const = 0; + + //! Returns the feature in the group by the index (started from zero) + //! \param theGroupID group that contains a feature + //! \param theIndex zero-based index of feature in the group + //! \param isOperation if it is true, returns feature (not Object) + MODELAPI_EXPORT virtual boost::shared_ptr + feature(const std::string& theGroupID, const int theIndex, const bool isOperation = false) = 0; + + //! Returns the number of features in the group + MODELAPI_EXPORT virtual int size(const std::string& theGroupID) = 0; + + /// To virtually destroy the fields of successors + virtual ~ModelAPI_Document() {} protected: /// Only for SWIG wrapping it is here MODELAPI_EXPORT ModelAPI_Document() - { - } - ; + {} }; + +//! Pointer on document object +typedef boost::shared_ptr DocumentPtr; + + #endif