Salome HOME
Extra paths in embedded interpreter
authorvsr <vsr@opencascade.com>
Tue, 12 Apr 2022 12:52:59 +0000 (15:52 +0300)
committervsr <vsr@opencascade.com>
Tue, 12 Apr 2022 12:52:59 +0000 (15:52 +0300)
src/SalomeApp/SalomeApp_Application.cxx
src/SalomeApp/SalomeApp_PyInterp.cxx
src/SalomeApp/SalomeApp_PyInterp.h

index aac94f91baf7a698674c720ff06f0702da69098f..0cf0f4c81ef558432a70332cbe501666f6f42cac 100644 (file)
@@ -2134,7 +2134,7 @@ bool SalomeApp_Application::checkExistingDoc()
 
 PyConsole_Interp* SalomeApp_Application::createPyInterp()
 {
-  return new SalomeApp_PyInterp;
+  return new SalomeApp_PyInterp( resourceMgr() );
 }
 
 #endif // DISABLE_PYCONSOLE
index 58e55b9b47df7250fe8ad2860fb42846cb3b1beb..ede9f290bc9667d1919bc088e0bc9a3750c9518a 100644 (file)
 //  Author : Nicolas REJNERI
 
 #include "SalomeApp_PyInterp.h"
+#include "SUIT_ResourceMgr.h"
 
 /*!
   \brief Constructor
 */
-SalomeApp_PyInterp::SalomeApp_PyInterp()
-  : myFirstRun( true ), myFirstInitStudy( false )
+SalomeApp_PyInterp::SalomeApp_PyInterp( SUIT_ResourceMgr* resMgr )
+  : myFirstRun( true ), myFirstInitStudy( false ), myResourceMgr( resMgr )
 {
 }
 
@@ -63,6 +64,13 @@ int SalomeApp_PyInterp::beforeRun()
 {
   if ( myFirstRun ) {
     myFirstRun = false;
+    QStringList parameters = myResourceMgr->parameters( "pythonpath" );
+    foreach ( QString parameter, parameters ) {
+      QStringList paths = myResourceMgr->stringValue( "pythonpath", parameter ).split( ";;" );
+      int index = 0;
+      foreach( QString path, paths )
+        simpleRun( QString( "import sys; sys.path.insert(%1, '%2')" ).arg( index++ ).arg( path ).toUtf8().constData(), false );
+    }
     int ret = simpleRun( "from Help import *", false );
     if ( ret )
       return ret;
index bb2e2da591bcc53934e3c304799ec593095faa97..8d4d328ab0982c6ee9da2f9959fa843eafb1e941 100644 (file)
@@ -27,6 +27,8 @@
 
 #include <PyConsole_Interp.h>
 
+class SUIT_ResourceMgr;
+
 class SalomeApp_PyInterp : public PyConsole_Interp
 {
   friend class SalomeApp_Application;
@@ -38,13 +40,14 @@ public:
   virtual void closeContext();
 
 protected:
-  SalomeApp_PyInterp();
+  SalomeApp_PyInterp(SUIT_ResourceMgr*);
   virtual bool initContext();
   virtual int  beforeRun();
 
 private:
   bool myFirstRun;
   bool myFirstInitStudy;
+  SUIT_ResourceMgr* myResourceMgr;
 };
 
 #endif // SALOMEAPP_PYINTERP_H