Salome HOME
Issue #83: rename and transfer some methods related to document
[modules/shaper.git] / src / Model / Model_Document.h
index 240082532a2460065439f76d3436a7079d3d1250..598c3b633f674c283e69f89c7b1edaff4f75341b 100644 (file)
@@ -40,8 +40,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<std::string>& theResults);
 
   //! Removes document data
   MODEL_EXPORT virtual void close();
@@ -85,6 +86,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<ModelAPI_Document> subDocument(std::string theDocID);
 
+  //! Internal sub-document by ID
+  MODEL_EXPORT virtual boost::shared_ptr<Model_Document> subDoc(std::string theDocID);
+
   ///! Returns the id of hte document
   MODEL_EXPORT virtual const std::string& id() const
   {
@@ -115,7 +119,11 @@ class Model_Document : public ModelAPI_Document
 
   //! Returns a feature by result (owner of result)
   MODEL_EXPORT virtual boost::shared_ptr<ModelAPI_Feature>
-  feature(const boost::shared_ptr<ModelAPI_Result>& theResult);
+    feature(const boost::shared_ptr<ModelAPI_Result>& theResult);
+
+  ///! Returns true if parametric updater need to execute feature on recomputartion
+  ///! On abort, undo or redo it is not necessary: results in document are updated automatically
+  bool executeFeatures() {return myExecuteFeatures;}
 
  protected:
 
@@ -148,8 +156,14 @@ class Model_Document : public ModelAPI_Document
                                         boost::shared_ptr<ModelAPI_Result> theResult,
                                         const int theResultIndex = 0);
 
+  //! returns the label of result by index; creates this label if it was not created before
+  TDF_Label resultLabel(const boost::shared_ptr<ModelAPI_Data>& theFeatureData, const int theResultIndex);
+
+  //! Updates the results list of the feature basing on the current data tree
+  void updateResults(FeaturePtr theFeature);
+
   friend class Model_Application;
-  friend class Model_PluginManager;
+  friend class Model_Session;
   friend class DFBrowser;
 
  private:
@@ -167,6 +181,8 @@ class Model_Document : public ModelAPI_Document
   std::set<std::string> mySubs;
   /// transaction indexes (related to myTransactionsAfterSave) which were empty in this doc
   std::map<int, bool> myIsEmptyTr;
+  /// If it is true, features are not executed on update (on abort, undo, redo)
+  bool myExecuteFeatures;
 };
 
 #endif