]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Workaround for Debian 6.0 (issues #1868 and #1878)
authorazv <azv@opencascade.com>
Thu, 24 Nov 2016 05:28:48 +0000 (08:28 +0300)
committerazv <azv@opencascade.com>
Thu, 24 Nov 2016 05:32:18 +0000 (08:32 +0300)
Correction.

src/Model/Model_Session.cpp
src/Model/Model_Session.h
src/ModelAPI/ModelAPI_Session.h
src/PythonAPI/model/sketcher/__init__.py

index 790664f053816e88baefb94ce0ebd6a3160890f8..a68d98b0c847d6b6f8d45641e9db58d8093be330 100644 (file)
@@ -472,3 +472,22 @@ int Model_Session::transactionID()
 {
   return ROOT_DOC->transactionID();
 }
+
+void Model_Session::forceLoadPlugin(const std::string& thePluginName)
+{
+  // load all information about plugins, features and attributes
+  LoadPluginsInfo();
+
+  // store name of current plugin for further restoring,
+  // because forceLoadPlugin may be called while loading another plugin
+  std::string aCurrentPluginName = myCurrentPluginName;
+
+  myCurrentPluginName = thePluginName;
+  if (myPluginObjs.find(myCurrentPluginName) == myPluginObjs.end()) {
+    // load plugin library if not yet done
+    Config_ModuleReader::loadPlugin(myCurrentPluginName);
+  }
+
+  // restore current plugin
+  myCurrentPluginName = aCurrentPluginName;
+}
index 2afa84a26b292305e6aa4c143f7bd792028cf110..d9f9f2c2d0b63d450257463beeaf9d9be0f4deb2 100644 (file)
@@ -128,6 +128,9 @@ 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();
 
+  /// Load plugin by its name
+  MODEL_EXPORT virtual void forceLoadPlugin(const std::string& thePluginName);
+
  protected:
   /// Loads (if not done yet) the information about the features and plugins
   void LoadPluginsInfo();
index 40984fb03469e9981ef4db83520a3a21f43b5cb3..cc6987bd3653898a99c96d804776d1465d37fdff 100644 (file)
@@ -115,6 +115,9 @@ 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:
   /// Sets the session interface implementation (once per application launch)
   static void setSession(std::shared_ptr<ModelAPI_Session> theManager);
index 2edb1d2264b1ad6910a33a6042a4c38c4d17ae61..9231f5d32d2bdf16520e76494d2f734a8723da2d 100644 (file)
@@ -7,13 +7,9 @@
   It is kept, because SketchPlugin should be loaded before SketchAPI is first used.
   Otherwise, the runtime error will be generated while some static inline methods are broken.
 """ 
-from ModelAPI import *
+from ModelAPI import ModelAPI_Session
 aSession = ModelAPI_Session.get()
-aDocument = aSession.moduleDocument()
-aSession.startOperation()
-aDocument.addFeature("Sketch")
-aSession.finishOperation()
-aSession.abortOperation()
+aSession.forceLoadPlugin("SketchPlugin")
 # DEBIAN 6.0 WORKAROUND FINISH
 
 from SketchAPI import addSketch