X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_Document.h;h=443d00c1036626f95e0fb2cf1437ac6b8ff84bab;hb=32d1a4d19ab1a5d7c172e9660130fcf8ecb1e520;hp=21f535939912f97eed84ff8d4fde925df3ee18e1;hpb=ba737434252ae41c4bee1b792a0f0bb098ffae87;p=modules%2Fshaper.git diff --git a/src/Model/Model_Document.h b/src/Model/Model_Document.h index 21f535939..443d00c10 100644 --- a/src/Model/Model_Document.h +++ b/src/Model/Model_Document.h @@ -31,6 +31,10 @@ static Standard_Boolean IsEqual(const TDF_Label& theLab1, const TDF_Label& theLa class Model_Document : public ModelAPI_Document { public: + //! Returns the kind of the document: "PartSet", "Part", or something else. + //! This kind is used for feature buttons enable/disable depending on active document + //! (it uses workbench "document" identifier in XML configuration file for this) + MODEL_EXPORT virtual const std::string& kind() const {return myKind;} //! Loads the OCAF document from the file. //! \param theFileName full name of the file to load @@ -40,8 +44,9 @@ class Model_Document : public ModelAPI_Document //! Saves the OCAF document to the file. //! \param theFileName full name of the file to store + //! \param theResults the result full file names that were stored by "save" //! \returns true if file was stored successfully - MODEL_EXPORT virtual bool save(const char* theFileName); + MODEL_EXPORT virtual bool save(const char* theFileName, std::list& theResults); //! Removes document data MODEL_EXPORT virtual void close(); @@ -85,6 +90,9 @@ class Model_Document : public ModelAPI_Document //! Adds a new sub-document by the identifier, or returns existing one if it is already exist MODEL_EXPORT virtual boost::shared_ptr subDocument(std::string theDocID); + //! Internal sub-document by ID + MODEL_EXPORT virtual boost::shared_ptr subDoc(std::string theDocID); + ///! Returns the id of hte document MODEL_EXPORT virtual const std::string& id() const { @@ -134,15 +142,16 @@ class Model_Document : public ModelAPI_Document void synchronizeFeatures(const bool theMarkUpdated = false); //! Creates new document with binary file format - Model_Document(const std::string theID); + Model_Document(const std::string theID, const std::string theKind); Handle_TDocStd_Document document() { return myDoc; } - //! performas compactification of all nested operations into one - void compactNested(); + //! performs compactification of all nested operations into one + //! \returns true if resulting transaction is not empty and can be undoed + bool compactNested(); //! Initializes the data fields of the feature void initData(ObjectPtr theObj, TDF_Label theLab, const int theTag); @@ -153,18 +162,27 @@ class Model_Document : public ModelAPI_Document const int theResultIndex = 0); //! returns the label of result by index; creates this label if it was not created before - TDF_Label Model_Document::resultLabel( - const boost::shared_ptr& theFeatureData, const int theResultIndex); + TDF_Label resultLabel(const boost::shared_ptr& theFeatureData, const int theResultIndex); //! Updates the results list of the feature basing on the current data tree void updateResults(FeaturePtr theFeature); + //! Stores information that there is a reference to this object + void objectIsReferenced(const ObjectPtr& theObject); + //! Removes information that there is a reference to this object + void objectIsNotReferenced(const ObjectPtr& theObject); + + //! Returns all sub documents + const std::set& subDocuments() const {return mySubs;} + friend class Model_Application; - friend class Model_PluginManager; + friend class Model_Session; + friend class Model_AttributeReference; friend class DFBrowser; private: std::string myID; ///< identifier of the document in the application + std::string myKind; ///< kind 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; @@ -173,6 +191,8 @@ class Model_Document : public ModelAPI_Document /// All features managed by this document (not only in history of OB) /// For optimization mapped by labels NCollection_DataMap myObjs; + /// Results that are referenced and must be concealed for object browser + std::set myConcealedResults; ///< set of identifiers of sub-documents of this document std::set mySubs;