]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Improvement NPAL14675
authorabd <abd@opencascade.com>
Mon, 29 Jan 2007 13:42:06 +0000 (13:42 +0000)
committerabd <abd@opencascade.com>
Mon, 29 Jan 2007 13:42:06 +0000 (13:42 +0000)
Processing of status of activation for Python modules

Improved method activateModule(...)
Added member bool lastActivationStatus and private interface for it.

src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h

index 9e8cc8ca6197a0b4f6c605fee8f93430b4689802..0a83e03d450b7ea52c4bbe67c558637f86587180 100644 (file)
@@ -168,7 +168,8 @@ SALOME_PYQT_Module* SALOME_PYQT_Module::getInitModule()
 SALOME_PYQT_Module::SALOME_PYQT_Module()
   : SalomeApp_Module( __DEFAULT_NAME__ ),
     myModule( 0 ), 
-    myXmlHandler ( 0 )
+    myXmlHandler ( 0 ),
+    myLastActivateStatus( false )
 {
 }
 
@@ -275,6 +276,9 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy )
   // Posting the request
   PyInterp_Dispatcher::Get()->Exec( new ActivateReq( theStudy, this ) );
 
+  if ( !lastActivationStatus() )
+    return false;
+
   // activate menus, toolbars, etc
   setMenuShown( true );
   setToolShown( true );
@@ -366,6 +370,15 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy )
   return SalomeApp_Module::deactivateModule( theStudy );
 }
 
+/*!
+ * Returns the status of last trying of module activation.
+ * Before fisrt activation - status is false
+*/
+bool SALOME_PYQT_Module::lastActivationStatus() const
+{
+  return myLastActivateStatus;
+}
+
 /*!
   Preferences changing (application) - called when preference is changed
 */
@@ -816,10 +829,18 @@ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy )
 
   // call Python module's activate() method (for the new modules)
   if(PyObject_HasAttrString(myModule , "activate")){
-    PyObjWrapper res1( PyObject_CallMethod( myModule, "activate", "" ) );
-    if( !res1 ) {
-      PyErr_Print();
-    }
+    PyObject* res1 = PyObject_CallMethod( myModule, "activate", "" );
+    if( !res1 || !PyBool_Check( res1 ) )
+      {
+       PyErr_Print();
+       //= true: for support of old modules
+       myLastActivateStatus = true;
+      }
+    else
+      {
+       //detect return status
+       myLastActivateStatus = PyObject_IsTrue( res1 );
+      }
   }
 }
 
index b8b9aeb90e2b74848b3fe7641dcff01d3b8cea43..65def75f6289f823e55621a67a1bf4259b9b107a 100644 (file)
@@ -74,6 +74,9 @@ private:
   QMap<int, int>                   myWindowsMap;
   /* compatible view managers list */
   QStringList                      myViewMgrList;
+
+  /* status of last trying of module activation*/
+  bool                             myLastActivateStatus;
   
   /******************************
    * Construction/destruction
@@ -200,6 +203,10 @@ private:
   void            init        ( CAM_Application* );
   /* internal activation */ 
   void            activate    ( SUIT_Study* );
+
+  /* getting status of last module activation */
+  bool            lastActivationStatus() const;
+
   /* internal deactivation */ 
   void            deactivate  ( SUIT_Study* );
   /* customization */