X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_Document.h;h=41f7d51f6a54bbdd828176d9d49d3a0e3b3902dd;hb=4ee6972a725f02500c2c543abeef2909180e09c1;hp=218ea615bf88cdc004b6c5f8ece6bae4b2acdcc9;hpb=eab7248fd3b9120041364993091a51af7fc65577;p=modules%2Fshaper.git diff --git a/src/Model/Model_Document.h b/src/Model/Model_Document.h index 218ea615b..41f7d51f6 100644 --- a/src/Model/Model_Document.h +++ b/src/Model/Model_Document.h @@ -63,6 +63,9 @@ public: //! \param creates feature and puts it in the document MODEL_EXPORT virtual boost::shared_ptr addFeature(std::string theID); + //! Removes the feature from the document + MODEL_EXPORT virtual void removeFeature(boost::shared_ptr theFeature); + //! Returns the existing feature by the label //! \param theLabel base label of the feature MODEL_EXPORT virtual boost::shared_ptr feature(TDF_Label& theLabel); @@ -74,8 +77,11 @@ public: MODEL_EXPORT virtual const std::string& id() const {return myID;} //! 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) MODEL_EXPORT virtual boost::shared_ptr - feature(const std::string& theGroupID, const int theIndex); + feature(const std::string& theGroupID, const int theIndex, const bool isOperation = false); //! Returns the number of features in the group MODEL_EXPORT virtual int size(const std::string& theGroupID); @@ -97,20 +103,26 @@ protected: const boost::shared_ptr theFeature); //! Synchronizes myFeatures list with the updated document - void synchronizeFeatures(); + void synchronizeFeatures(const bool theMarkUpdated = false); //! Creates new document with binary file format Model_Document(const std::string theID); + Handle_TDocStd_Document document() {return myDoc;} + + //! performas compactification of all nested operations into one + void compactNested(); + friend class Model_Application; + friend class Model_PluginManager; private: std::string myID; ///< identifier of the document in the application Handle_TDocStd_Document myDoc; ///< OCAF document /// number of transactions after the last "save" call, used for "IsModified" method int myTransactionsAfterSave; - /// number of myTransactionsAfterSave for the nested transaction start - int myNestedStart; + /// number of nested transactions performed (or -1 if not nested) + int myNestedNum; /// All features managed by this document (not only in history of OB) std::vector > myFeatures;