]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #2612 : Re-calculate model after modification of parameters
authormpv <mpv@opencascade.com>
Tue, 4 Sep 2018 07:48:51 +0000 (10:48 +0300)
committermpv <mpv@opencascade.com>
Tue, 4 Sep 2018 07:48:51 +0000 (10:48 +0300)
Preparation for GUI access

src/Model/Model_Session.cpp
src/Model/Model_Session.h
src/ModelAPI/ModelAPI_Session.h

index c0dde0f287ea7bea7ff7f529b0ed201c658cd845..d150d44f902093c1cb3e74e29b887effadd79b48 100644 (file)
@@ -424,6 +424,7 @@ Model_Session::Model_Session()
   myPluginsInfoLoaded = false;
   myCheckTransactions = true;
   myOperationAttachedToNext = false;
+  myIsAutoUpdateBlocked = false;
   ModelAPI_Session::setSession(std::shared_ptr<ModelAPI_Session>(this));
   // register the configuration reading listener
   Events_Loop* aLoop = Events_Loop::loop();
@@ -577,3 +578,19 @@ int Model_Session::transactionID()
 {
   return ROOT_DOC->transactionID();
 }
+
+void Model_Session::blockAutoUpdate(const bool theBlock)
+{
+  if (myIsAutoUpdateBlocked != theBlock) {
+    static Events_Loop* aLoop = Events_Loop::loop();
+    if (theBlock) {
+      static const Events_ID kAutoOff = aLoop->eventByName(EVENT_AUTOMATIC_RECOMPUTATION_DISABLE);
+      std::shared_ptr<Events_Message> aMsg(new Events_Message(kAutoOff));
+      aLoop->send(aMsg);
+    } else {
+      static const Events_ID kAutoOn = aLoop->eventByName(EVENT_AUTOMATIC_RECOMPUTATION_ENABLE);
+      std::shared_ptr<Events_Message> aMsg(new Events_Message(kAutoOn));
+      aLoop->send(aMsg);
+    }
+  }
+}
index 7342ae2d35845dab086fdf2cad9af3d0fa477f91..11655c8a3a73f4b79ddbdac8179fd4fa10e4ad94 100644 (file)
@@ -50,6 +50,7 @@ class Model_Session : public ModelAPI_Session, public Events_Listener
   /// if true, generates error if document is updated outside of transaction
   bool myCheckTransactions;
   bool myOperationAttachedToNext; ///< the current operation must be committed twice, with nested
+  bool myIsAutoUpdateBlocked; ///< the current state of the auto-update flag in the application
  public:
 
   //! Loads the OCAF document from the file.
@@ -144,6 +145,15 @@ class Model_Session : public ModelAPI_Session, public Events_Listener
   /// Returns the global identifier of the current transaction (needed for the update algo)
   MODEL_EXPORT virtual int transactionID();
 
+
+  /// Returns true if auto-update in the application is blocked
+  MODEL_EXPORT virtual bool isAutoUpdateBlocked() const {
+    return myIsAutoUpdateBlocked;
+  }
+
+  /// Set state of the auto-update of features result in the application
+  MODEL_EXPORT virtual void blockAutoUpdate(const bool theBlock);
+
  protected:
   /// Loads (if not done yet) the information about the features and plugins
   void LoadPluginsInfo();
index 7b2d7dd1b3887ba6af2b01a53b91721309aed9e5..91f3b8bbcfce077499a20f76bf456a476cb9a188 100644 (file)
@@ -129,6 +129,12 @@ class MODELAPI_EXPORT ModelAPI_Session
   /// Returns the global identifier of the current transaction (needed for the update algo)
   virtual int transactionID() = 0;
 
+  /// Returns true if auto-update in the application is blocked
+  virtual bool isAutoUpdateBlocked() const = 0;
+
+  /// Set state of the auto-update of features result in the application
+  virtual void blockAutoUpdate(const bool theBlock) = 0;
+
  protected:
   /// Sets the session interface implementation (once per application launch)
   static void setSession(std::shared_ptr<ModelAPI_Session> theManager);