]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
PPGP issue #6: Can not get object name when Python module is inactive
authorsan <san@opencascade.com>
Mon, 14 Nov 2011 16:09:45 +0000 (16:09 +0000)
committersan <san@opencascade.com>
Mon, 14 Nov 2011 16:09:45 +0000 (16:09 +0000)
It is necessary to remember the current SALOME_PYQT_ModuleLigth instance temporarily in order to make it accessible from non-interactive functionality like save(), dumpStudy() when the module isnatnce might not be active.

src/SALOME_PYQT/SALOME_PYQT_GUILight/SALOME_PYQT_ModuleLight.cxx

index 965036feb02042ffff294fc275b86768cd700839..512e2bfec6abf20f2a4bb2013c516092193a3188 100644 (file)
@@ -2454,8 +2454,17 @@ void SALOME_PYQT_ModuleLight::saveEvent(QStringList& theListOfFiles)
     return;
 
   if ( PyObject_HasAttrString(myModule, (char*)"saveFiles") ) {
+    // temporary set myInitModule because saveEvent() method
+    // might be called by the framework when this module is inactive,
+    // but still it should be possible to access this module's data
+    // from Python
+    myInitModule = this;
+
     PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"saveFiles",
                                            (char*)"s", (*it).toLatin1().constData()));
+
+    myInitModule = 0;
+
     if( !res ) {
       PyErr_Print();
     }
@@ -2524,8 +2533,17 @@ void SALOME_PYQT_ModuleLight::dumpEvent(QStringList& theListOfFiles)
     return;
 
   if ( PyObject_HasAttrString(myModule, (char*)"dumpStudy") ) {
+    // temporary set myInitModule because dumpEvent() method
+    // might be called by the framework when this module is inactive,
+    // but still it should be possible to access this module's data
+    // from Python
+    myInitModule = this;
+
     PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"dumpStudy",
                                            (char*)"s", (*it).toLatin1().constData()));
+
+    myInitModule = 0;
+
     if( !res ) {
       PyErr_Print();
     }