Salome HOME
Workaround for Debian 6.0 (issues #1868 and #1878)
[modules/shaper.git] / src / ModelAPI / ModelAPI_Session.h
index 933dfc58689bb237d1fee40fa04dcf19a3e88a9b..cc6987bd3653898a99c96d804776d1465d37fdff 100644 (file)
@@ -44,12 +44,16 @@ class MODELAPI_EXPORT ModelAPI_Session
   //! Closes all documents
   virtual void closeAll() = 0;
 
-  //! Starts a new operation (opens a tansaction)
+  //! Starts a new operation (opens a transaction)
   //! \param theId of operation for history (optional)
-  virtual void startOperation(const std::string& theId) = 0;
+  //! \param theAttachedToNested if it is true,
+  //!          it means that this transaction is attached to the nested
+  //!          where it is located and will be committed on the next commit with the nested
+  virtual void startOperation(
+    const std::string& theId = "", const bool theAttachedToNested = false) = 0;
   //! Finishes the previously started operation (closes the transaction)
   virtual void finishOperation() = 0;
-  //! Aborts the operation 
+  //! Aborts the operation
   virtual void abortOperation() = 0;
   //! Returns true if operation has been started, but not yet finished or aborted
   virtual bool isOperation() = 0;
@@ -70,15 +74,15 @@ class MODELAPI_EXPORT ModelAPI_Session
   virtual std::list<std::string> redoList() = 0;
 
   /// Registers the plugin that creates features.
-  /// It is obligatory for each plugin to call this function on loading to be found by 
+  /// It is obligatory for each plugin to call this function on loading to be found by
   /// the plugin manager on call of the feature)
   virtual void registerPlugin(ModelAPI_Plugin* thePlugin) = 0;
 
   /// Returns the root document of the application (that may contains sub-documents)
   virtual std::shared_ptr<ModelAPI_Document> moduleDocument() = 0;
 
-  /// Returns the document by ID, loads if not loaded yet. Returns null if no such document.
-  virtual std::shared_ptr<ModelAPI_Document> document(std::string theDocID) = 0;
+  /// Returns the document by ID. Returns null if no such document.
+  virtual std::shared_ptr<ModelAPI_Document> document(int theDocID) = 0;
 
   /// Return true if root document has been already created
   virtual bool hasModuleDocument() = 0;
@@ -93,9 +97,12 @@ class MODELAPI_EXPORT ModelAPI_Session
   /// Returns all the opened documents of the session (without postponed)
   virtual std::list<std::shared_ptr<ModelAPI_Document> > allOpenedDocuments() = 0;
 
+  /// Returns true if document is not loaded yet
+  virtual bool isLoadByDemand(const std::string theDocID) = 0;
+
   /// Copies the document to the new one with the given id
-  virtual std::shared_ptr<ModelAPI_Document> copy(std::shared_ptr<ModelAPI_Document> theSource,
-                                                    std::string theID) = 0;
+  virtual std::shared_ptr<ModelAPI_Document> copy(
+    std::shared_ptr<ModelAPI_Document> theSource, const int theDestID) =0;
 
   /// Returns the validators factory: the only one instance per application
   virtual ModelAPI_ValidatorsFactory* validators() = 0;
@@ -105,13 +112,15 @@ class MODELAPI_EXPORT ModelAPI_Session
   {
   }
 
+  /// Returns the global identifier of the current transaction (needed for the update algo)
+  virtual int transactionID() = 0;
+
+  /// Load plugin by its name
+  virtual void forceLoadPlugin(const std::string& thePluginName) = 0;
+
  protected:
-  /// Creates the feature object using plugins functionality
-  virtual std::shared_ptr<ModelAPI_Feature> createFeature(std::string theFeatureID) = 0;
   /// Sets the session interface implementation (once per application launch)
   static void setSession(std::shared_ptr<ModelAPI_Session> theManager);
-
-  friend class Model_Document;
 };
 
 typedef std::shared_ptr<ModelAPI_Session> SessionPtr;