]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
merged from mergeto_V2_2_0_maintainance_18mar05
authorprascle <prascle>
Fri, 18 Mar 2005 12:25:21 +0000 (12:25 +0000)
committerprascle <prascle>
Fri, 18 Mar 2005 12:25:21 +0000 (12:25 +0000)
56 files changed:
bin/orbmodule.py
bin/runSalome.py
bin/salomeConsole.py
salome_adm/unix/config_files/check_pyqt.m4
salome_adm/unix/config_files/check_qt.m4
salome_adm/unix/config_files/check_qwt.m4
salome_adm/unix/config_files/check_sip.m4
salome_adm/unix/make_commence.in
src/Container/SALOME_Container.cxx
src/DataTypeCatalog/SALOME_DataTypeCatalog_Server.cxx
src/LifeCycleCORBA/TestLifeCycleCORBA.cxx
src/Loader/InquireServersQThread.cxx
src/Logger/SALOME_Trace.cxx
src/Logger/SALOME_Trace.py
src/MPILifeCycleCORBA/SALOME_MPILifeCycleCORBA.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_Server.cxx
src/NamingService/NamingService_WaitForServerReadiness.cxx
src/NamingService/SALOME_NamingService.cxx
src/NamingService/SALOME_NamingServicePy.py
src/Notification/NOTIFICATION.cxx
src/PatchQt/Makefile.in
src/PatchQt/qactionP.h
src/PatchQt/qfiledialogP.h
src/PatchQt/qsplitterP.cxx
src/PatchQt/qworkspaceP.h
src/Registry/SALOME_Registry_Server.cxx
src/RessourcesCatalog/SALOME_RessourcesCatalog_Server.cxx
src/SALOMEDS/SALOMEDS_Server.cxx
src/SALOMEGUI/Makefile.in
src/SALOMEGUI/PyInterp_PyQt.cxx
src/SALOMEGUI/PyInterp_PyQt.h
src/SALOMEGUI/PyInterp_base.cxx
src/SALOMEGUI/PyInterp_base.h
src/SALOMEGUI/QAD_Desktop.cxx
src/SALOMEGUI/QAD_FileDlg.h
src/SALOMEGUI/QAD_PyEditor.cxx
src/SALOMEGUI/QAD_PyEditor.h
src/SALOMEGUI/QAD_PyInterp.cxx
src/SALOMEGUI/QAD_PyInterp.h
src/SALOMEGUI/QAD_PyInterp_mono.cxx
src/SALOMEGUI/QAD_PyInterp_mono.h
src/SALOMEGUI/QAD_RightFrame.cxx
src/SALOMEGUI/QAD_Study.cxx
src/SALOMEGUI/QAD_StudyFrame.cxx
src/SALOMETraceCollector/TraceCollector_WaitForServerReadiness.cxx
src/SALOME_PYQT/Makefile.in
src/SALOME_PYQT/SALOME_PYQT_GUI.cxx
src/SALOME_PYQT/SALOME_PYQT_GUI.h
src/SALOME_PYQT/SalomePyQt.sip
src/SALOME_PYQT/SalomePyQt_v4.sip [new file with mode: 0644]
src/SALOME_SWIG_WITHOUTIHM/import_hook.py
src/SALOME_SWIG_WITHOUTIHM/kernel_shared_modules.py
src/SALOME_SWIG_WITHOUTIHM/salome_shared_modules.py
src/Session/Session_ServerLauncher.cxx
src/Session/Session_ServerThread.cxx
src/TestContainer/TestContainer.cxx

index 627a909871cf824177d886647c4b2763a878e37c..fdc254472e9a5fb5250001117863f42098337179 100755 (executable)
@@ -47,7 +47,7 @@ class client:
       try:
           self.rootContext = obj._narrow(CosNaming.NamingContext)
           return
-      except CORBA.COMM_FAILURE:
+      except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           self.rootContext = None
           print "Lancement du Naming Service",
           
@@ -62,7 +62,7 @@ class client:
               obj = self.orb.resolve_initial_references("NameService")
               self.rootContext = obj._narrow(CosNaming.NamingContext)
               break
-          except (CORBA.COMM_FAILURE,CORBA.OBJECT_NOT_EXIST):
+          except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
               self.rootContext = None
               sys.stdout.write('+')
               sys.stdout.flush()
@@ -77,15 +77,16 @@ class client:
 
    def showNScontext(self,context,dec=''):
       bl,bi=context.list(0)
-      ok,b=bi.next_one()
-      while(ok):
-         for s in b.binding_name :
-            print "%s%s.%s" %(dec,s.id,s.kind)
-            if s.kind == "dir":
-               obj=context.resolve([s])
-               scontext = obj._narrow(CosNaming.NamingContext)
-               self.showNScontext(scontext,dec=dec+'  ')
+      if bi is not None:
          ok,b=bi.next_one()
+         while(ok):
+            for s in b.binding_name :
+               print "%s%s.%s" %(dec,s.id,s.kind)
+               if s.kind == "dir":
+                  obj=context.resolve([s])
+                  scontext = obj._narrow(CosNaming.NamingContext)
+                  self.showNScontext(scontext,dec=dec+'  ')
+            ok,b=bi.next_one()
 
    # --------------------------------------------------------------------------
 
@@ -112,7 +113,7 @@ class client:
           obj = None
       except CosNaming.NamingContext.CannotProceed, ex:
           obj = None
-      except CORBA.COMM_FAILURE, ex:
+      except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           obj = None
       return obj
 
@@ -155,7 +156,7 @@ class client:
           obj = None
       except CosNaming.NamingContext.CannotProceed, ex:
           obj = None
-      except CORBA.COMM_FAILURE, ex:
+      except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           obj = None
       return obj
    
index ecb27c691a90ed0ed36c9fe7756667c3f9f9c2d9..055268c56ccc5f976f3a529c982d50a8059e4263 100755 (executable)
@@ -222,7 +222,7 @@ def kill_salome(args):
        
 # -----------------------------------------------------------------------------
 #
-# Définition des classes d'objets pour le lancement des Server CORBA
+# Definition des classes d'objets pour le lancement des Server CORBA
 #
 
 class Server:
@@ -508,7 +508,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement Registry Server,
-    # attente de la disponibilité du Registry dans le Naming Service
+    # attente de la disponibilite du Registry dans le Naming Service
     #
 
     if 'registry' not in args['embedded']:
@@ -518,7 +518,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement Catalog Server,
-    # attente de la disponibilité du Catalog Server dans le Naming Service
+    # attente de la disponibilite du Catalog Server dans le Naming Service
     #
     
 
@@ -531,7 +531,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement SalomeDS Server,
-    # attente de la disponibilité du SalomeDS dans le Naming Service
+    # attente de la disponibilite du SalomeDS dans le Naming Service
     #
 
     os.environ["CSF_PluginDefaults"] \
@@ -575,7 +575,7 @@ def startSalome(args, modules_list, modules_root_dir):
     #macomm2=['ddd']
     #pid = os.spawnvp(os.P_NOWAIT, macomm2[0], macomm2)
     #
-    # Attente de la disponibilité du Session Server dans le Naming Service
+    # Attente de la disponibilite du Session Server dans le Naming Service
     #
 
     import SALOME
@@ -593,7 +593,7 @@ def startSalome(args, modules_list, modules_root_dir):
     
     #
     # Lancement Container C++ local,
-    # attente de la disponibilité du Container C++ local dans le Naming Service
+    # attente de la disponibilite du Container C++ local dans le Naming Service
     #
 
     if 'cppContainer' in args['standalone']:
@@ -603,7 +603,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement Container Python local,
-    # attente de la disponibilité du Container Python local
+    # attente de la disponibilite du Container Python local
     # dans le Naming Service
     #
 
@@ -614,7 +614,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement Container Supervision local,
-    # attente de la disponibilité du Container Supervision local
+    # attente de la disponibilite du Container Supervision local
     # dans le Naming Service
     #
 
index 03c0a5e51be09f744ed96f4f59523d5595c623f8..5ce7cec640e869be3cb0c3df648a2baae2adbc12 100755 (executable)
@@ -66,7 +66,7 @@ class client(orbmodule.client):
       try:
           self.rootContext = obj._narrow(CosNaming.NamingContext)
           return
-      except CORBA.COMM_FAILURE:
+      except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           print "It's not a valid naming service"
           self.rootContext = None
           raise
index cb99775f81b4482d491e14cbe65d13fe126f0069..9374319a6562e210b5ae1c19eceb34f8888ab865 100644 (file)
@@ -56,17 +56,17 @@ fi
   
 AC_CHECK_FILE("$PYUIC",pyqt_ok=yes,pyqt_ok=no)
 
-if test "x$pyqt_ok" = xyes ; then
-  AC_CHECK_FILES("$PYQTLIB/qt.py",pyqt_ok=yes,pyqt_ok=no)
-fi
+dnl if test "x$pyqt_ok" = xyes ; then
+dnl   AC_CHECK_FILES("$PYQTLIB/qt.py",pyqt_ok=yes,pyqt_ok=no)
+dnl fi
 
-if test "x$pyqt_ok" = xno ; then
-  AC_CHECK_FILES("$PYQTLIB/qt/qt.py",pyqt_ok=yes,pyqt_ok=no)
-fi
+dnl if test "x$pyqt_ok" = xno ; then
+dnl  AC_CHECK_FILES("$PYQTLIB/qt/qt.py",pyqt_ok=yes,pyqt_ok=no)
+dnl fi
 
-if test "x$pyqt_ok" = xyes ; then
-  AC_CHECK_FILE("$PYQTLIB/libqtcmodule.so",pyqt_ok=yes,pyqt_ok=no)
-fi
+dnl if test "x$pyqt_ok" = xyes ; then
+dnl   AC_CHECK_FILE("$PYQTLIB/libqtcmodule.so",pyqt_ok=yes,pyqt_ok=no)
+dnl fi
 
 if test "x$pyqt_ok" = xyes ; then
   AC_CHECK_FILES("$PYQT_SIPS/qtmod.sip",pyqt_ok=yes,pyqt_ok=no)
@@ -78,7 +78,7 @@ fi
 if test "x$pyqt_ok" = xyes ; then
   PYQT_ROOT=$PYQTDIR
   PYQT_INCLUDES="-I$PYQT_SIPS"
-  PYQT_LIBS="-L$PYQTLIB -lqtcmodule"
+  PYQT_LIBS="-L$PYQTLIB "
   AC_SUBST(PYQT_ROOT)
   AC_SUBST(PYQT_INCLUDES)
   AC_SUBST(PYQT_LIBS)
index b27de2779cb4cb176f9f0472407ec1e4f14fcc3a..b1557decd72952de075d84afab0a80667366e7eb 100644 (file)
@@ -75,6 +75,25 @@ then
   fi
 fi
 
+version=`moc -v > mocversion 2>&1;cut -c40-44 mocversion;rm -rf mocversion`
+case "$version" in
+  3.3.3)
+   QT_VERS=v3_3_3
+   AC_MSG_RESULT(QT3.3.3 install detected)
+   qt_ok=yes;;
+  3.0.5)
+   AC_MSG_RESULT(QT3.0.5 install detected)
+   QT_VERS=v3_0_5
+   qt_ok=yes;;
+  *)
+   AC_MSG_RESULT(qt version $version not supported)
+   qt_ok=no
+   QT_VERS=no ;;
+esac
+
+AC_SUBST(QT_VERS)
+AC_MSG_RESULT(qt version $QT_VERS )
+
 AC_SUBST(QTDIR)
 QT_ROOT=$QTDIR
 
@@ -90,14 +109,31 @@ then
 
   AC_MSG_CHECKING(include of qt headers)
 
-  if  test "x$qt_ok" = "xno"
+  if  test "x$qt_ok" = "xyes"
   then
-    AC_MSG_RESULT(qt headers not found, or too old qt version, in $QTDIR/include)
-    AC_MSG_RESULT(QTDIR environment variable may be wrong)
-  else
     AC_MSG_RESULT(yes)
     QT_INCLUDES="-I${QT_ROOT}/include -DQT_THREAD_SUPPORT"
     QT_MT_INCLUDES="-I${QT_ROOT}/include -DQT_THREAD_SUPPORT"
+  else
+    CPPFLAGS_old=$CPPFLAGS
+    CPPFLAGS="$CPPFLAGS -I$QTDIR/include/qt3"
+
+    AC_LANG_CPLUSPLUS
+    AC_CHECK_HEADER(qapp.h,qt_ok=yes ,qt_ok=no)
+
+    CPPFLAGS=$CPPFLAGS_old
+
+    AC_MSG_CHECKING(include of qt headers)
+
+    if  test "x$qt_ok" = "xno"
+    then
+      AC_MSG_RESULT(qt headers not found, or too old qt version, in $QTDIR/include)
+      AC_MSG_RESULT(QTDIR environment variable may be wrong)
+    else
+      AC_MSG_RESULT(yes)
+      QT_INCLUDES="-I${QT_ROOT}/include/qt3 -DQT_THREAD_SUPPORT"
+      QT_MT_INCLUDES="-I${QT_ROOT}/include/qt3 -DQT_THREAD_SUPPORT"
+    fi
   fi
 fi
 
@@ -108,7 +144,7 @@ then
   LIBS="$LIBS -L$QTDIR/lib -lqt-mt $OGL_LIBS"
 
   CXXFLAGS_old=$CXXFLAGS
-  CXXFLAGS="$CXXFLAGS -I$QTDIR/include"
+  CXXFLAGS="$CXXFLAGS $QT_MT_INCLUDES"
 
   AC_CACHE_VAL(salome_cv_lib_qt,[
     AC_TRY_LINK(
@@ -143,6 +179,7 @@ AC_SUBST(QT_ROOT)
 AC_SUBST(QT_INCLUDES)
 AC_SUBST(QT_LIBS)
 AC_SUBST(QT_MT_LIBS)
+AC_SUBST(QT_VERS)
 
 AC_LANG_RESTORE
 
index 4e541d70d80dd9b65e2231cd70e638c283457b59..21b15fa3a5dac7c0fe2d3b7f35ea61316db817ac 100644 (file)
@@ -22,18 +22,24 @@ AC_ARG_WITH(qwt_inc,
     ])
 
 if test -z $QWTHOME; then
+  AC_MSG_RESULT(QWTHOME not defined)
   exits_ok=no  
   AC_CHECK_FILE("/usr/local/lib/libqwt.so",exits_ok=yes,exits_ok=no)
   if test "x$exits_ok" = "xyes"; then
      QWTHOME="/usr/local/lib"    
+     AC_MSG_RESULT(libqwt.so detected in /usr/local/lib)
      if test -z $QWT_INCLUDES; then
         QWT_INCLUDES="/usr/local/include/qwt"
      fi
   else
-     QWTHOME="/usr/lib"   
-     if test -z $QWT_INCLUDES; then
-        QWT_INCLUDES="/usr/include/qwt"
-     fi
+     AC_CHECK_FILE("/usr/lib/libqwt.so",exits_ok=yes,exits_ok=no)
+     if test "x$exits_ok" = "xyes"; then
+       QWTHOME="/usr/lib"   
+       AC_MSG_RESULT(libqwt.so detected in /usr/lib)
+         if test -z $QWT_INCLUDES; then
+           QWT_INCLUDES="/usr/include/qwt"
+         fi
+       fi
   fi   
 else
   if test -z $QWT_INCLUDES; then
@@ -50,7 +56,8 @@ else
    AC_LANG_CPLUSPLUS
    CPPFLAGS_old=$CPPFLAGS
    CPPFLAGS="$CPPFLAGS -I$QWT_INCLUDES"
-   CPPFLAGS="$CPPFLAGS -I$QTDIR/include"
+   CPPFLAGS="$CPPFLAGS $QT_INCLUDES"
+#   CPPFLAGS="$CPPFLAGS -I$QTDIR/include"
 
    AC_CHECK_HEADER(qwt.h,qwt_ok=yes,qwt_ok=no) 
 
@@ -70,7 +77,8 @@ then
   LIBS="$LIBS -L$QTDIR/lib -lqt-mt -L$QWTHOME/lib -lqwt"
 
   CXXFLAGS_old=$CXXFLAGS
-  CXXFLAGS="$CXXFLAGS -I$QTDIR/include -I$QWT_INCLUDES"
+  CXXFLAGS="$CXXFLAGS $QT_INCLUDES -I$QWT_INCLUDES"
+#  CXXFLAGS="$CXXFLAGS -I$QTDIR/include -I$QWT_INCLUDES"
 
   AC_CACHE_VAL(salome_cv_lib_qwt,[
     AC_TRY_LINK(
index 84c2beaf73829cdb40eff8f552fb44e7bd698962..84d35f62938cc22ea254438f3a3343c260747447 100644 (file)
@@ -38,6 +38,8 @@ else
            SIP_VERS=new ;;
          3.10*)
            SIP_VERS=new2 ;;
+        4.1*)
+          SIP_VERS=v4_1 ;;
          *)
            AC_MSG_RESULT(sip version $version not supported)
            SIP_VERS=no ;;
@@ -83,6 +85,17 @@ else
         AC_CHECK_FILE($PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages/libsip.so,sip_ok=$sip_ok,sip_ok=no)
        SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -lsip"
     fi
+
+    if test "x$SIP_VERS" = "xv4_1"
+        then
+        dnl 4.1 install : includes and libs are in python install 
+        AC_MSG_RESULT(4.1 install detected)
+       sip_ok=yes
+        AC_CHECK_FILE($PYTHON_PREFIX/include/python$PYTHON_VERSION/sip.h,sip_ok=$sip_ok,sip_ok=no)
+       SIP_INCLUDES="${PYTHON_INCLUDES}"
+        AC_CHECK_FILE($PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages/sip.so,sip_ok=$sip_ok,sip_ok=no)
+       SIP_LIBS="${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages/sip.so"
+    fi
 fi
 
 AC_SUBST(SIP)
index 0ab96fb52be1acad2204e1a4d5af30eaa2cce443..faf3e9a0ef6a6ac1699b563b6e93d7011970d859 100644 (file)
@@ -81,6 +81,7 @@ QT_MT_LIBS = @QT_MT_LIBS@
 MOC = @MOC@
 UIC = @UIC@
 
+QT_VERS = @QT_VERS@
 
 #QWT
 
index dfd501e9ff11bc86d1c7747f82808b5c728d1a76..be08e2197749ff6d00b93969235935be0ef3b774 100644 (file)
@@ -112,8 +112,8 @@ int main(int argc, char* argv[])
          theObj = orb->resolve_initial_references("NameService");
        if (!CORBA::is_nil(theObj))
          inc = CosNaming::NamingContext::_narrow(theObj);
-      }catch(CORBA::COMM_FAILURE&){
-       MESSAGE( "Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+      }catch(CORBA::SystemException&){
+       MESSAGE( "Container: CORBA::SystemException: Unable to contact the Naming Service" );
       }
       if(!CORBA::is_nil(inc)){
        MESSAGE( "Container: Naming Service was found" );
index d7982916387bc649f68447b8d3df53512fb0f717..ff21513617622e80f47ae1bbb7a17727db34498d 100644 (file)
@@ -83,9 +83,9 @@ int main(int argc,char **argv)
                theObj = orb->resolve_initial_references("NameService");
              if (!CORBA::is_nil(theObj))
                inc = CosNaming::NamingContext::_narrow(theObj);}
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
-             MESSAGE( "Data Type Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+             MESSAGE( "Data Type Catalog: CORBA::SystemException: Unable to contact the Naming Service" );
            }
          if(!CORBA::is_nil(inc))
            {
index 49e3b28b07e46be03eedeefb80b7573e1ff38ddc..312cbd21147c333f3edeb1c188e1b696ab1a1804 100644 (file)
@@ -111,7 +111,7 @@ int main (int argc, char * argv[])
       cout << m4->instanceName() << endl;
 
     }
-  catch(CORBA::COMM_FAILURE& ex)
+  catch(CORBA::SystemException& ex)
     {
       INFOS("Caught system exception COMM_FAILURE -- unable to contact the object.");
     }
index a293e4766d0c6dd504eae9a4f697f13432d4d13c..a26a1dea24228959671c8101b0137ded2bccae45 100644 (file)
@@ -312,9 +312,9 @@ bool InquireServersQThread::AskServer(int iteration, QString ** errMessage)
                IsPassed = true;
              break;
            }
-         catch(CORBA::COMM_FAILURE&)
+         catch(CORBA::SystemException&)
            {
-             MESSAGE("CORBA::COMM_FAILURE: unable to contact the naming service");
+             MESSAGE("CORBA::SystemException: unable to contact the naming service");
            }
          catch(...)
            {
@@ -399,7 +399,7 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
              break;
            case 4:
              {
-               CORBA::Object_var obj = NS.Resolve("Kernel/ModulCatalog");
+               CORBA::Object_var obj = NS.Resolve("/Kernel/ModulCatalog");
                SALOME_ModuleCatalog::ModuleCatalog_var catalog = SALOME_ModuleCatalog::ModuleCatalog::_narrow(obj) ;
                if (!CORBA::is_nil(catalog))
                  {
@@ -413,7 +413,7 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
              break;
            case 5:
              {
-               CORBA::Object_var obj = NS.Resolve("Kernel/Session");
+               CORBA::Object_var obj = NS.Resolve("/Kernel/Session");
                SALOME::Session_var session = SALOME::Session::_narrow(obj) ;
                if (!CORBA::is_nil(session))
                  {
index 1a33333eb5fe8745887482c3b3695dff4aa6c9b8..705f066bdb1eae055bf46ab0953b06670e552cb4 100644 (file)
@@ -62,7 +62,7 @@ int SALOME_Trace::Initialize(CORBA::ORB_ptr theOrb) {
       if (!CORBA::is_nil(theObj))
        inc = CosNaming::NamingContext::_narrow(theObj);
       if (!CORBA::is_nil(inc)) break;
-    } catch( CORBA::COMM_FAILURE& ) {
+    } catch( CORBA::SystemException& ) {
     } catch (...) {
     }
   }
index fd507c7c744e69ecad69862f1571d2a5862af930..2b88171d694d3047da0dd0a23f4cbc8904bd8add 100644 (file)
@@ -41,7 +41,7 @@ class SALOME_Trace :
 
               except CosNaming.NamingContext.NotFound, e :
                     if steps == 1: print "Caught exception: Naming Service can't found Logger"
-              except CORBA.COMM_FAILURE, e:
+              except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
                     if steps == 1: print "Caught CORBA::SystemException CommFailure"
               except CORBA.SystemException, e:
                     if steps == 1: print "Caught CORBA::SystemException."
index 9d342ca3238c001bd083d7e64111a56e0980ab2a..5dfe13fcbcb67f558a4a6885ccc9617d198d670a 100644 (file)
@@ -337,7 +337,7 @@ Engines::Component_var SALOME_MPILifeCycleCORBA::FindOrLoad_MPIComponent
          {
            string instanceName = compo->instanceName(); 
          }
-       catch (CORBA::COMM_FAILURE&)
+       catch (CORBA::SystemException&)
          {
            INFOS("Caught CORBA::SystemException CommFailure. Engine "
                  << path << "does not respond" );
index ad8cdd43dee065c66351dfab412b57f61f41c811..f2176aa1288a8a7f8791529f3717d3722147227e 100644 (file)
@@ -85,9 +85,9 @@ int main(int argc,char **argv)
              if(!CORBA::is_nil(orb)) 
                theObj = orb->resolve_initial_references("NameService"); 
            }
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
-             INFOS( "Module Catalog Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+             INFOS( "Module Catalog Server: CORBA::SystemException: Unable to contact the Naming Service" );
            }
          if (!CORBA::is_nil(theObj))
            {
index 7cb1a6bce9dafd1f889274d554bb8fcd2c985548..fcdf75f135f3c1246a39f144eb395dfb3b7953a1 100644 (file)
@@ -66,7 +66,8 @@ void NamingService_WaitForServerReadiness(SALOME_NamingService* NS,
        {
          if (serverName.length() == 0)
            {
-             string curdir = NS->Current_Directory(); // to wait for naming service
+             //string curdir = NS->Current_Directory(); // to wait for naming service
+             string dummyadr = NS->getIORaddr(); // to wait for naming service
              found = 1;
              break; // naming service found
            }
index e939d53418a1be1bff596f676c1f5d4aea076a68..4beb6d4e3606c5d5463cdfee7f501900dc6ee2c3 100644 (file)
@@ -151,9 +151,9 @@ void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
        {
          INFOS("!!!Register() : CosNaming::NamingContext::CannotProceed");
        }
-      catch(CORBA::COMM_FAILURE&)
+      catch(CORBA::SystemException&)
        {
-         INFOS("!!!Register() : CORBA::COMM_FAILURE : unable to contact"
+         INFOS("!!!Register() : CORBA::SystemException : unable to contact"
               << " the naming service"); 
          throw ServiceUnreachable();
        }
@@ -218,9 +218,9 @@ void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
            {
              INFOS("!!!Register() : CosNaming::NamingContext::InvalidName");
            }
-         catch(CORBA::COMM_FAILURE&)
+         catch(CORBA::SystemException&)
            {
-             INFOS("!!!Register() :CORBA::COMM_FAILURE : unable to contact"
+             INFOS("!!!Register() :CORBA::SystemException : unable to contact"
                   << " the naming service"); 
              throw ServiceUnreachable();
            }
@@ -270,9 +270,9 @@ void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
       INFOS("!!!Register() : CosNaming::NamingContext::AlreadyBound, object will be rebind"); 
       _current_context->rebind(_context_name, ObjRef);
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("!!!Register() :CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Register() :CORBA::SystemException : unable to contact"
            << " the naming service");
       throw ServiceUnreachable();
     }
@@ -352,9 +352,9 @@ CORBA::Object_ptr SALOME_NamingService::Resolve(const char* Path)
     {
       INFOS("!!!Resolve() : CosNaming::NamingContext::InvalidName"); 
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("!!!Resolve() :CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Resolve() :CORBA::SystemException : unable to contact"
            << "the naming service");
       throw ServiceUnreachable();
     }
@@ -390,9 +390,9 @@ int SALOME_NamingService::Find(const char* name)
     {
       _Find(name,occurence_number);
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("!!!Find() : CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Find() : CORBA::SystemException : unable to contact"
           << " the naming service"); 
       throw ServiceUnreachable();
     }
@@ -495,10 +495,10 @@ bool SALOME_NamingService::Create_Directory(const char* Path)
       _return_code = false;
       INFOS("!!!Create_Directory():CosNaming::NamingContext::InvalidName");
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
       _return_code = false;
-      INFOS("!!!Register() :CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Register() :CORBA::SystemException : unable to contact"
           << " the naming service"); 
       throw ServiceUnreachable();
     }
@@ -588,10 +588,10 @@ bool SALOME_NamingService::Change_Directory(const char* Path)
          _return_code = false;
          INFOS( "!!!Change_Directory() : CosNaming::NamingContext::InvalidName" )
        }
-      catch(CORBA::COMM_FAILURE&)
+      catch(CORBA::SystemException&)
        {
          _return_code = false;
-         INFOS( "!!!Change_Directory() :CORBA::COMM_FAILURE : unable to contact"
+         INFOS( "!!!Change_Directory() :CORBA::SystemException : unable to contact"
               << "the naming service")
          throw ServiceUnreachable();
        }
@@ -633,9 +633,9 @@ char* SALOME_NamingService::Current_Directory()
     {
       _current_directory(result_path,i,_ref_context,_continue );
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("!!!Current_Directory(): CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Current_Directory(): CORBA::SystemException : unable to contact"
           << " the naming service" )
       throw ServiceUnreachable();
     }
@@ -817,9 +817,9 @@ void SALOME_NamingService::Destroy_Name(const char* Path)
        {
          INFOS( "!!!Destroy_Name(): CosNaming::NamingContext::CannotProceed" )
        }
-      catch(CORBA::COMM_FAILURE&)
+      catch(CORBA::SystemException&)
        {
-         INFOS( "!!!Destroy_Name() : CORBA::COMM_FAILURE : unable to contact"
+         INFOS( "!!!Destroy_Name() : CORBA::SystemException : unable to contact"
               << " the naming service")
          throw ServiceUnreachable();
        }
@@ -861,9 +861,9 @@ void SALOME_NamingService::Destroy_Name(const char* Path)
     {
       INFOS( "!!!Destroy_Name() : CosNaming::NamingContext::InvalidName")
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS( "!!!Destroy_Name() :CORBA::COMM_FAILURE : unable to contact" 
+      INFOS( "!!!Destroy_Name() :CORBA::SystemException : unable to contact" 
           << " the naming service") 
       throw ServiceUnreachable();
     }
@@ -940,9 +940,9 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
        {
          INFOS("!!!Destroy_Directory(): CosNaming::NamingContext::CannotProceed" )
        }
-      catch(CORBA::COMM_FAILURE&)
+      catch(CORBA::SystemException&)
        {
-         INFOS( "!!!Destroy_Directory() : CORBA::COMM_FAILURE : unable to contact"
+         INFOS( "!!!Destroy_Directory() : CORBA::SystemException : unable to contact"
               << " the naming service" )
          throw ServiceUnreachable();
        }
@@ -984,9 +984,9 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
     {
       INFOS( "!!!Destroy_Directory(): CosNaming::NamingContext::CannotProceed" )
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS( "!!!Destroy_Directory() : CORBA::COMM_FAILURE : unable to contact"
+      INFOS( "!!!Destroy_Directory() : CORBA::SystemException : unable to contact"
           << " the naming service" )
       throw ServiceUnreachable();
     }
@@ -1003,9 +1003,9 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
       INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::NoEmpty "
           << Path << " is not empty" )
     } 
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS( "!!!Destroy_Directory() :CORBA::COMM_FAILURE : "
+      INFOS( "!!!Destroy_Directory() :CORBA::SystemException : "
           << "unable to contact the naming service") 
       throw ServiceUnreachable();
     }
@@ -1039,9 +1039,9 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
     {
       INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::InvalidName")
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS( "!!!Destroy_Directory() :CORBA::COMM_FAILURE : unable to contact" 
+      INFOS( "!!!Destroy_Directory() :CORBA::SystemException : unable to contact" 
           << " the naming service") 
       throw ServiceUnreachable();
     }
@@ -1070,9 +1070,9 @@ void SALOME_NamingService::_initialize_root_context()
       ASSERT(!CORBA::is_nil(_root_context)); 
     }
 
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("CORBA::COMM_FAILURE: unable to contact the naming service");
+      INFOS("CORBA::SystemException: unable to contact the naming service");
       throw ServiceUnreachable();
     }
   catch(...)
index 2bc3c553ca4cfa4c7969215bbf70fab90c6c338f..ab7f2050d1a6e8ab35a2cf71fba50aca1ceffd84 100644 (file)
@@ -64,7 +64,7 @@ class SALOME_NamingServicePy_i:
              MESSAGE(" Name service not found")
            else:
              ok = 1
-         except CORBA.COMM_FAILURE, ex:
+         except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
            MESSAGE(" Name service not found")
          time.sleep(0.25)
          steps = steps - 1
@@ -100,8 +100,8 @@ class SALOME_NamingServicePy_i:
                 MESSAGE ( "Register : CosNaming.NamingContext.InvalidName" )
             except CosNaming.NamingContext.CannotProceed, ex:
                 MESSAGE ( "Register : CosNaming.NamingContext.CannotProceed" )
-            except CORBA.COMM_FAILURE, ex:
-                MESSAGE ( "Register : CORBA.COMM_FAILURE" )
+            except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
+                MESSAGE ( "Register : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
 
             if _not_exist:
                 # at least one context of the complete path is not created, we had
@@ -132,8 +132,8 @@ class SALOME_NamingServicePy_i:
         except CosNaming.NamingContext.AlreadyBound, ex:
             MESSAGE ( "Register : CosNaming.NamingContext.AlreadyBound, object will be rebind" )
             self._current_context.rebind(_context_name,ObjRef)
-        except CORBA.COMM_FAILURE, ex:
-            MESSAGE ( "Register : CORBA.COMM_FAILURE" )
+        except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
+            MESSAGE ( "Register : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
 
             
     #-------------------------------------------------------------------------
@@ -161,8 +161,8 @@ class SALOME_NamingServicePy_i:
         except CosNaming.NamingContext.CannotProceed, ex:
             MESSAGE ( "Resolve : CosNaming.NamingContext.CannotProceed" )
             self._obj = None
-        except CORBA.COMM_FAILURE, ex:
-            MESSAGE ( "Resolve : CORBA.COMM_FAILURE" )
+        except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
+            MESSAGE ( "Resolve : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
             self._obj = None
         return self._obj
 
@@ -191,8 +191,8 @@ class SALOME_NamingServicePy_i:
                 MESSAGE ( "Create_Directory : CosNaming.NamingContext.InvalidName" )
             except CosNaming.NamingContext.CannotProceed, ex:
                 MESSAGE ( "Create_Directory : CosNaming.NamingContext.CannotProceed" )
-            except CORBA.COMM_FAILURE, ex:
-                MESSAGE ( "Create_Directory : CORBA.COMM_FAILURE" )
+            except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
+                MESSAGE ( "Create_Directory : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
 
  
 
index bbbb922948c7a896c31baae5967586d998c3cf56..e55d0abc78a796ba0ada0f60ba349cb5e2a8aaf5 100644 (file)
@@ -50,7 +50,7 @@ CosNA_EventChannel_ptr NOTIFICATION_channel() {
     } catch(CORBA::ORB::InvalidName& ex) {
         MESSAGE("NOTIFICATION Error : service required is invalid [does not exist]");
         return(channel);
-    } catch (CORBA::COMM_FAILURE& ex) {
+    } catch (CORBA::SystemException& ex) {
         MESSAGE("NOTIFICATION Error : caught system exception COMM_FAILURE");
         return(channel);
     } catch (...) {
@@ -70,7 +70,7 @@ CosNA_EventChannel_ptr NOTIFICATION_channel() {
         };
     } catch(CORBA::ORB::InvalidName& ex) {
         MESSAGE("NOTIFICATION Error : invalid name");
-    } catch (CORBA::COMM_FAILURE& ex) {
+    } catch (CORBA::SystemException& ex) {
         MESSAGE("NOTIFICATION Error : caught system exception COMM_FAILURE while resolving event channel name");
     } catch (...) {
         MESSAGE("NOTIFICATION Error : caught exception while resolving event channel name");
index d916a9a7acb7e6ceb608f175f409cf92e761afd8..7909f104a0d1d7631eb14f02d92cd46179ec8bf5 100644 (file)
@@ -38,13 +38,18 @@ EXPORT_HEADERS = \
        qfiledialogP.h
 
 # Libraries targets
+ifeq ($(QT_VERS),v3_3_3)
+       LIB_SRC = qsplitterP.cxx qsplitterP_moc.cxx
+else
+       LIB_SRC = qsplitterP.cxx qsplitterP_moc.cxx qworkspaceP.cxx qworkspaceP_moc.cxx qactionP.cxx qactionP_moc.cxx qfiledialogP.cxx qfiledialogP_moc.cxx
+endif
 
 LIB = libqsplitterP.la 
-LIB_SRC = qsplitterP.cxx qsplitterP_moc.cxx qworkspaceP.cxx qworkspaceP_moc.cxx qactionP.cxx qactionP_moc.cxx qfiledialogP.cxx qfiledialogP_moc.cxx
+
 qsplitterP_moc.cxx: $(inc_builddir)/qsplitterP.h
        $(MOC) $(inc_builddir)/qsplitterP.h -o qsplitterP_moc.cxx
 
-qworkspaceP_moc.cxx: $(inc_builddir)/qworkspaceP.h
+qworkspaceP_moc.cxx: $(inc_builddir)/qworkspaceP.h 
        $(MOC) $(inc_builddir)/qworkspaceP.h -o qworkspaceP_moc.cxx
 
 qactionP_moc.cxx: $(inc_builddir)/qactionP.h
@@ -53,7 +58,7 @@ qactionP_moc.cxx: $(inc_builddir)/qactionP.h
 qfiledialogP_moc.cxx: $(inc_builddir)/qfiledialogP.h
        $(MOC) $(inc_builddir)/qfiledialogP.h -o qfiledialogP_moc.cxx
 
-CPPFLAGS+=$(QT_INCLUDES) -I${QTDIR}/src/kernel -I$(QTDIR)/mkspecs/linux-g++
+CPPFLAGS+=$(QT_INCLUDES) -I${QTDIR}/src/kernel -I$(QTDIR)/mkspecs/linux-g++ -I/usr/share/qt3/mkspecs/linux-g++
 CXXFLAGS+=
 LDFLAGS+=$(QT_MT_LIBS) 
 
index 1fcf05053e73ddee4f6b18884d96bc9f06e7076b..160324087b70d35a40db2ceb45c4cf2ca2a97d2b 100644 (file)
 
 #ifndef QT_NO_ACTION
 
+#if QT_VERSION > 0x030005
+#include <qaction.h>
+#define QActionP QAction
+#define QActionPGroup QActionGroup
+#else
+
 class QActionPPrivate;
 class QActionPGroupPrivate;
 class QStatusBar;
@@ -184,4 +190,6 @@ public:
 
 #endif
 
+#endif // QT_VERSION
+
 #endif
index f7355a193deaf63e1f849a60a509d25d3a21c2fc..ab615b7533b0c6be1adb00a149244351c70bd562 100644 (file)
@@ -68,6 +68,11 @@ class QFileDialogQFileListView;
 #include "qlineedit.h"
 #endif // QT_H
 
+#if QT_VERSION > 0x030005
+#include <qfiledialog.h>
+#define QFileDialogP QFileDialog
+#else
+
 #ifndef QT_NO_FILEDIALOG
 
 class Q_EXPORT QFileIconProviderP : public QObject
@@ -525,4 +530,6 @@ private:
 
 #endif
 
+#endif // QT_VERSION
+
 #endif // QFILEDIALOG_H
index 3983746b2f07ef6eb8593ead7c1ef24d528e296d..15d5ed2aa2b0ef41a846b4e1591419cb34d09417 100644 (file)
@@ -48,6 +48,7 @@
 #include <qpainter.h>
 #include <qdrawutil.h>
 #include <qbitmap.h>
+#include <qlayout.h>
 #include <private/qlayoutengine_p.h>
 #if QT_VERSION < 300
   #include <qlist.h>
index fb15237357d196e2c39d84f7b08fc70a9fcb446c..2197da251308a1b610ab34a35c6aee6f79eef7d4 100644 (file)
 #include <qlabel.h>
 #endif // QT_H
 
+#if QT_VERSION > 0x030005
+#include <qworkspace.h>
+#define QWorkspaceP QWorkspace
+#else
+
 class QWorkspacePChild;
 class QShowEvent;
 class QWorkspacePPrivate;
@@ -350,5 +355,5 @@ private:
 
     QTitleBarPPrivate *d;
 };
-
+#endif // QT_VERSION
 #endif // QWORKSPACEP_H
index d47523a9328a64e2618b2479a02513bf5119e641..0756e2b706109bf11f40a985453ba3b6259a4519 100644 (file)
@@ -118,9 +118,9 @@ int main( int argc , char **argv )
          if (!CORBA::is_nil(theObj))
            inc = CosNaming::NamingContext::_narrow(theObj);
        }
-      catch( CORBA::COMM_FAILURE& )
+      catch( CORBA::SystemException& )
        {
-         MESSAGE( "Registry Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+         MESSAGE( "Registry Server: CORBA::SystemException: Unable to contact the Naming Service" );
        }
       if(!CORBA::is_nil(inc))
        {
index b52c63b672bda7cd8765f13a2afa2de3c40ac288..9625d3a0ad592137721a476d5c2cb9f38353a37d 100644 (file)
@@ -85,9 +85,9 @@ int main(int argc,char **argv)
              if (!CORBA::is_nil(theObj))
                inc = CosNaming::NamingContext::_narrow(theObj);
            }
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
-             INFOS( "Ressources Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+             INFOS( "Ressources Catalog: CORBA::SystemException: Unable to contact the Naming Service" );
            }
          if(!CORBA::is_nil(inc)) 
            {
index 70919bba0ca431d2d28d824fbb3e715d9968f758..ff40576da88a66b796235192c501a8c1bac35063 100644 (file)
@@ -53,9 +53,13 @@ int main(int argc, char** argv)
   try 
     {
       // Initialise the ORB.
+#if OMNIORB_VERSION >= 4
+      const char* options[][2] = { { "giopMaxMsgSize", "104857600" }, { 0, 0 } };
+      CORBA::ORB_var orb = CORBA::ORB_init( argc , argv , "omniORB4", options) ;
+#else
       CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");
       omniORB::MaxMessageSize(100 * 1024 * 1024);
-      // Obtain a reference to the root POA.
+#endif      // Obtain a reference to the root POA.
       //
       long TIMESleep = 500000000;
       int NumberOfTries = 40;
index d3acbc362e7ce15c251fab2e8f125528c97e74ca..bd8f7efdd3ced587c63d85a9247f393236560ae9 100644 (file)
@@ -221,7 +221,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \
                 SALOME_ContainerManager.idl \
                 SALOME_Exception.idl
 
-CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES)
+CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) -DSIP_VERS_@SIP_VERS@
 LDFLAGS+=$(QT_MT_LIBS) -lSalomeNS -lqsplitterP -lSalomeLifeCycleCORBA -lOpUtil -lSalomeObject -lEvent -lSalomePrs
 
 LIBS+= $(PYTHON_LIBS)
index 440c302f3f0d50f629993d4879877a93e5aa4d91..29077ca0e87b8e128bcb5011a267f8df2f67f194 100644 (file)
@@ -9,7 +9,7 @@
 //  Module : SALOME
 //  $Header$
 
-#include "PyInterp_PyQt.h"
+#include "PyInterp_PyQt.h" // this include must be first (see PyInterp_base.h)!
 #include "utilities.h"
 
 using namespace std;
@@ -30,14 +30,25 @@ PyInterp_PyQt::~PyInterp_PyQt()
 
 void PyInterp_PyQt::initState()
 {
+ /*
+  * The GIL is assumed to not be held on the call
+  * The GIL is acquired in initState and will be held on initState exit
+  * It is the caller responsability to release the lock on exit if needed
+  */
   SCRUTE(PyInterp_base::_gtstate);
   _tstate=PyInterp_base::_gtstate;
+  PyEval_AcquireLock();
   PyThreadState_Swap(_tstate);
   SCRUTE(_tstate);
 }
 
 void PyInterp_PyQt::initContext()
 {
+  /*
+   * The GIL is assumed to be held
+   * It is the caller responsability to acquire the GIL before calling initContext
+   * It will still be held on initContext exit
+   */
   _g = PyDict_New();          // create interpreter dictionnary context
   PyObject *bimod = PyImport_ImportModule("__builtin__");
   PyDict_SetItemString(_g, "__builtins__", bimod);
index 74d743e279fa58068d17f9bcc50d0a7493ab228f..4f2f58f9c80db55ed6f968f83e19d89388e24530 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef _PYINTERP_PYQT_H_
 #define _PYINTERP_PYQT_H_
 
-#include "PyInterp_base.h"
+#include "PyInterp_base.h" // this include must be first (see PyInterp_base.h)!
 
 class PyInterp_PyQt : public PyInterp_base
 {
index 1538720481366c6ed4fca9881492bcaa5e90ead9..1c4879d1d46d7e1b037c61bf22521350c4bd7b9b 100644 (file)
 #include <string>
 #include <vector>
 
-#include <Python.h>
+#include "PyInterp_base.h" // this include must be first (see PyInterp_base.h)!
 #include <cStringIO.h>
 
 #include <qmutex.h>
 
-#include "PyInterp_base.h"
 #include "utilities.h"
 
 
@@ -42,13 +41,14 @@ PyLockWrapper::PyLockWrapper(PyThreadState* theThreadState):
   mySaveThreadState(PyInterp_base::_gtstate)
 {
   PyEval_AcquireLock();
-  mySaveThreadState = PyThreadState_Swap(myThreadState);
+  mySaveThreadState = PyThreadState_Swap(myThreadState); // store previous current in save,
+                                                         // set local in current
 }
 
 
 PyLockWrapper::~PyLockWrapper(){
-  PyThreadState_Swap(mySaveThreadState);
-  PyEval_ReleaseLock();
+  PyThreadState_Swap(mySaveThreadState); // restore previous current (no need to get local,
+  PyEval_ReleaseLock();                  // local thread state* already in _tstate
 }
 
 
@@ -129,24 +129,7 @@ void PyInterp_base::initialize()
   _history.clear();       // start a new list of user's commands 
   _ith = _history.begin();
 
-  if(!_gtstate){
-    PyReleaseLock aReleaseLock;
-    Py_Initialize(); // Initialize the interpreter
-    PyEval_InitThreads(); // Initialize and acquire the global interpreter lock
-    PySys_SetArgv(_argc,_argv); // initialize sys.argv
-    _gtstate = PyThreadState_Get();
-    
-    /*
-     * salome_shared_modules should be imported only once
-     */
-    salome_shared_modules_module = PyImport_ImportModule("salome_shared_modules");
-    if(!salome_shared_modules_module)
-      {
-       INFOS("PyInterp_base::initialize() - salome_shared_modules_module == NULL");
-       PyErr_Print();
-       PyErr_Clear();
-      }
-  }
+  if(!_gtstate) init_python();
   // Here the global lock is released
   if(MYPYDEBUG) MESSAGE("PyInterp_base::initialize() - this = "<<this<<"; _gtstate = "<<_gtstate);
 
@@ -166,8 +149,8 @@ void PyInterp_base::initialize()
   }   
   
   // Create cStringIO to capture stdout and stderr
-  //PycString_IMPORT;
-  PycStringIO = (PycStringIO_CAPI *)xxxPyCObject_Import("cStringIO", "cStringIO_CAPI");
+  PycString_IMPORT;
+  //PycStringIO = (PycStringIO_CAPI *)xxxPyCObject_Import("cStringIO", "cStringIO_CAPI");
   _vout = PycStringIO->NewOutput(128);
   _verr = PycStringIO->NewOutput(128);
   
@@ -175,6 +158,31 @@ void PyInterp_base::initialize()
   initRun();
 }
 
+void PyInterp_base::init_python()
+{
+  /*
+   * Initialize the main state (_gtstate) if not already done
+   * The lock is released on init_python output
+   * It is the caller responsability to acquire it if needed
+   */
+  if(!_gtstate){
+    PyReleaseLock aReleaseLock;
+    Py_Initialize(); // Initialize the interpreter
+    PyEval_InitThreads(); // Initialize and acquire the global interpreter lock
+    PySys_SetArgv(_argc,_argv); // initialize sys.argv
+    _gtstate = PyThreadState_Get();
+    /*
+     * salome_shared_modules should be imported only once
+     */
+    salome_shared_modules_module = PyImport_ImportModule("salome_shared_modules");
+    if(!salome_shared_modules_module)
+      {
+       INFOS("PyInterp_base::initialize() - salome_shared_modules_module == NULL");
+       PyErr_Print();
+       PyErr_Clear();
+      }
+  }
+}
 
 string PyInterp_base::getbanner()
 {
@@ -193,7 +201,7 @@ int PyInterp_base::initRun()
   PyObjWrapper verr(PyObject_CallMethod(_verr,"reset",""));
   PyObjWrapper vout(PyObject_CallMethod(_vout,"reset",""));
 
-  PyObject *m = PyImport_GetModuleDict();
+  //PyObject *m = PyImport_GetModuleDict();
   
   PySys_SetObject("stdout",PySys_GetObject("__stdout__"));
   PySys_SetObject("stderr",PySys_GetObject("__stderr__"));
index 157d5c3f7ae70be4330df10f1e8940c13b81c8a2..739b5d4f0b09cf3f8aba9d26b3f065c82e4a633a 100644 (file)
 #include <string>
 #include <iostream>
 
-#include <Python.h>
+// include order important!
+// pthread then python then qt
+#include <pthread.h>  // must be before Python.h !
+#include <Python.h>   // must be before qt includes ...
 
 class QSemaphore;
 class QMutex;
@@ -71,6 +74,7 @@ class PyInterp_base{
   ~PyInterp_base();
   
   virtual void initialize();
+  static void init_python();
 
   int run(const char *command); 
 
@@ -88,6 +92,7 @@ class PyInterp_base{
   PyObject * _vout;
   PyObject * _verr;
   PyObject * _g;
+  PyObject * _codeop;
   std::list<std::string> _history;
   std::list<std::string>::iterator _ith;
   bool _atFirst;
index 5fa319a2803321ef960b8d416aa81a6b1e6d52ab..cbc5a92e784a96c088fbd9e59fc6efcb05c4cce9 100644 (file)
 #define  DEFAULT_BROWSER "mozilla"
 
 
+#include "QAD_PyEditor.h" // this include must be first (see PyInterp_base.h)!
 #include "QAD.h"
 #include "QAD_Help.h"
 #include "QAD_Tools.h"
 #include "QAD_Desktop.h"
 #include "QAD_LeftFrame.h"
 #include "QAD_RightFrame.h"
-#include "QAD_PyEditor.h"
 #include "QAD_Operation.h"
 #include "QAD_XmlHandler.h"
 #include "QAD_MessageBox.h"
@@ -3348,8 +3348,12 @@ SALOMEGUI* QAD_Desktop::getComponentGUI( const QString& component )
        dir = QAD_Tools::addSlash(dir) ;
 #ifdef WNT
        dir = dir + "libSalomePyQtcmodule.dll" ;
+#else
+#ifdef SIP_VERS_v4_1
+       dir = dir + "SalomePyQt.so" ;
 #else
        dir = dir + "libSalomePyQtcmodule.so" ;
+#endif
 #endif
        MESSAGE ( " GUI library = " << dir );
        fileInfo.setFile(dir) ;
index a234de43da0f1610d1ac394210c4a5cb5cb60d6a..71b19cfe25099bd8547d1391c452a1f15a796e03 100644 (file)
 #include <qcombobox.h>
 #include <qpushbutton.h>
 
-// VSR (18/01/2005): use patched QFileDialog only for the official 3.0.5 version of Qt
-#if QT_VERSION == 0x030005
 #include <qfiledialogP.h>
-#else
-#include <qfiledialog.h>
-#define QFileDialogP QFileDialog
-#endif
 
 #include "QAD.h"
 #include "QAD_FileValidator.h"
index bfd4ec997fb5a1df366b9195e1ca724b22a68afb..10c70d5fbb38df60d5ecba2ce550d98d2c8d45ca 100644 (file)
@@ -26,8 +26,7 @@
 //  Module : SALOME
 //  $Header$
 
-#include "QAD_PyEditor.h"
-#include "QAD_PyInterp.h"
+#include "QAD_PyEditor.h" // this include must be first (see PyInterp_base.h)!
 #include "QAD_Application.h"
 #include "QAD_Desktop.h"
 #include "QAD_Config.h"
index 941a340df0d1028836e8be324358044ac69f7b11..8a23d64746a9b27eb338ebad71de1c76d4a1417b 100644 (file)
@@ -29,6 +29,7 @@
 #ifndef QAD_PyEditor_H
 #define QAD_PyEditor_H
 
+#include "QAD_PyInterp.h" // this include must be first (see PyInterp_base.h)!
 #include <qtextedit.h>
 #include <qevent.h>
 
index d7da14e4299b4752a68a5d47fa5e576c1f370768..a2ea8ac56e0e547345bc80da2879c70dff61e967 100644 (file)
@@ -72,6 +72,11 @@ QAD_PyInterp::~QAD_PyInterp()
 
 void QAD_PyInterp::initState()
 {
+  /*
+   * The GIL is acquired and will be held on initState output
+   * It is the caller responsability to release the lock if needed
+   */
+  PyEval_AcquireLock();
   _tstate = Py_NewInterpreter(); // create an interpreter and save current state
   PySys_SetArgv(PyInterp_base::_argc,PyInterp_base::_argv); // initialize sys.argv
   if(MYDEBUG) MESSAGE("QAD_PyInterp::initState - this = "<<this<<"; _tstate = "<<_tstate);
@@ -92,6 +97,11 @@ void QAD_PyInterp::initState()
 
 void QAD_PyInterp::initContext()
 {
+  /*
+   * The GIL is assumed to be held
+   * It is the caller responsability caller to acquire the GIL
+   * It will still be held on initContext output
+   */
   PyObject *m = PyImport_AddModule("__main__");  // interpreter main module (module context)
   if(!m){
     if(MYDEBUG) MESSAGE("problem...");
index 56b173b08e52af6021975840946cef3cfb4a0dbf..3f38567c018f32cd5046dd04375441943fe36440 100644 (file)
@@ -29,7 +29,7 @@
 #ifndef _QAD_PYINTERP_H_
 #define _QAD_PYINTERP_H_
 
-#include "PyInterp_base.h"
+#include "PyInterp_base.h" // this include must be first (see PyInterp_base.h)!
 
 class QAD_PyInterp : public PyInterp_base
 {
index 611b0e49bd26ac34794eee5de9013ddcdf007f6a..25f62413f559d18cb2730c430e3819f78c65de8b 100644 (file)
@@ -12,7 +12,7 @@
 
 
 
-#include "QAD_PyInterp_mono.h"
+#include "QAD_PyInterp_mono.h" // this include must be first (see PyInterp_base.h)!
 #include "utilities.h"
 
 using namespace std;
index b822c1004c5b2a730b9a24a5ccadadf5e75a8d56..ee24547137c868f931367be1b1234f931c06ec15 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef _QAD_PYINTERP_MONO_H_
 #define _QAD_PYINTERP_MONO_H_
 
-#include "PyInterp_base.h"
+#include "PyInterp_base.h" // this include must be first (see PyInterp_base.h)!
 
 class QAD_PyInterp_mono: public PyInterp_base
 {
index 8559ce5fb0595badc69534bd0ff6adfad569977c..96e3d69b6ec08a5bb5513591941dda317d6922bf 100644 (file)
 //  Module : SALOME
 //  $Header$
 
+#include "QAD_PyEditor.h"  // this include must be first (see PyInterp_base.h)!
 #include "QAD_RightFrame.h"
 #include "QAD_Application.h"
 #include "QAD_Desktop.h"
 #include "QAD_StudyFrame.h"
 #include "QAD_Tools.h"
-#include "QAD_PyEditor.h"
 #include "QAD_PyInterp.h"
 
 #include <qvaluelist.h>
index b52002cb2125943363a1904c71d376301ab4a899..370df0689b5a95d66650ed058c0fec67e896b1c0 100644 (file)
@@ -31,6 +31,7 @@
   \brief Study for QAD-based application.
 */
 
+#include "QAD_PyInterp.h" // this include must be first (see PyInterp_base.h)!
 #include "QAD.h"
 #include "QAD_Tools.h"
 #include "QAD_Desktop.h"
@@ -40,9 +41,7 @@
 #include "QAD_MessageBox.h"
 #include "QAD_Application.h"
 #include "QAD_ObjectBrowser.h"
-#include "QAD_PyInterp.h"
 #include "QAD_Config.h"
-#include "QAD_PyInterp.h"
  
 #include "utilities.h"
 
@@ -135,6 +134,7 @@ QAD_Study::QAD_Study(QAD_Application* theApp,
   Selection( QAD_Application::getDesktop()->getComponentUserName( "KERNEL" ) );
   
   /* create python interpreter */
+  QAD_PyInterp::init_python(); // initialize Python out of qthread
   myInitStudyThread = new TInitStudyThread(myInterp,myMutex);
   myInitStudyThread->start();
 
index cfba6977e036c9299c380fb63ece7e9ef3146159..fa1642d6da4a79f48297cf7ee0b0d11480a9b777 100644 (file)
@@ -31,6 +31,7 @@
   \brief Frame window which contains QAD_LeftFrame and QAD_RightFrame.
 */
 
+#include "QAD_PyInterp.h"  // this include must be first (see PyInterp_base.h)!
 #include "QAD_StudyFrame.h"
 #include "QAD_StudyFrame.h"
 #include "QAD_RightFrame.h"
@@ -40,7 +41,6 @@
 #include "QAD_Desktop.h"
 #include "QAD_Study.h"
 #include "QAD_ObjectBrowser.h"
-#include "QAD_PyInterp.h"
 
 #include <qvaluelist.h>
 
index 9e91b71d9db7148a44a10ae60b7ab48574173de5..5512ea9267e2ac59f1705d90aa4a42a830e72238 100644 (file)
@@ -79,10 +79,10 @@ CORBA::Object_ptr TraceCollector_WaitForServerReadiness(CORBA::ORB_ptr orb,
              if (!CORBA::is_nil(theObj))
                inc = CosNaming::NamingContext::_narrow(theObj);
            }  
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
              cout << "TraceCollector_WaitForServerReadiness: "
-                  << "CORBA::COMM_FAILURE: "
+                  << "CORBA::SystemException: "
                   << "Unable to contact the Naming Service" << endl;
            }
           catch(...)
index a72114d917e12718b6412d09952bad9ff588f50c..a581f99b16690a9646aeb8d20892362361d0a44f 100644 (file)
@@ -20,44 +20,78 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 
 # SIP C++ Python
 # SIP defined in make_commence.in
-SIP_FLAGS    = -t WS_X11 -t Qt_3_0_5 -s ".cc" -c $(CURDIR) -I $(PYQT_SIPS)
+#SIP_FLAGS    = -t WS_X11 -t Qt_3_0_5 -s ".cc" -c $(CURDIR) -I $(PYQT_SIPS)
 
 
 # SIP input file(s)
 
-SIP_FILES = SalomePyQt.sip
+#SIP_FILES = SalomePyQt.sip
 
 # SIP-generated C++ source files (corresponding line should be added for each wrapped class 
 # contained by SalomePyQt module)
+#SIP_SRC=$(CURDIR)/SalomePyQtcmodule.cc \
+#      $(CURDIR)/sipSalomePyQtSalomePyQt.cc \
+#      $(CURDIR)/sipSalomePyQtSALOME_Selection.cc
 
-SIP_SRC=$(CURDIR)/SalomePyQtcmodule.cc \
+ifeq ($(SIP_VERS),v4_1)
+SIP_FLAGS    = -t WS_X11 -t Qt_3_3_0 -s ".cc" -c $(CURDIR) -I $(PYQT_SIPS)
+SIP_SRC=$(CURDIR)/sipSalomePyQtcmodule.cc \
        $(CURDIR)/sipSalomePyQtSalomePyQt.cc \
        $(CURDIR)/sipSalomePyQtSALOME_Selection.cc
+MOC_SRC = sipSalomePyQtcmodule_moc.cxx
+MOC_H = sipSalomePyQtcmodule.h
+SIP_FILES = SalomePyQt_v4.sip
+#LDFLAGS+= -lSalomeGUI 
+#LDFLAGS+= -lSalomeGUI -module
+LDFLAGS+= -shared -lSalomeGUI
 
+# Libraries targets
+LIB = SalomePyQt.so
+else
 ifeq ($(SIP_VERS),new2)
+SIP_FLAGS    = -t WS_X11 -t Qt_3_0_5 -s ".cc" -c $(CURDIR) -I $(PYQT_SIPS)
+SIP_SRC=$(CURDIR)/SalomePyQtcmodule.cc \
+       $(CURDIR)/sipSalomePyQtSalomePyQt.cc \
+       $(CURDIR)/sipSalomePyQtSALOME_Selection.cc
 MOC_SRC = SalomePyQtcmodule_moc.cxx
 MOC_H = SalomePyQtcmodule.h
+SIP_FILES = SalomePyQt.sip
+LDFLAGS+= -lSalomeGUI -lqtcmodule
+
+# Libraries targets
+LIB = libSalomePyQtcmodule.la
+
+EXPORT_SHAREDPYSCRIPTS = SalomePyQt.py
 else
+SIP_FLAGS    = -t WS_X11 -t Qt_3_0_5 -s ".cc" -c $(CURDIR) -I $(PYQT_SIPS)
+SIP_SRC=$(CURDIR)/SalomePyQtcmodule.cc \
+       $(CURDIR)/sipSalomePyQtSalomePyQt.cc \
+       $(CURDIR)/sipSalomePyQtSALOME_Selection.cc
 MOC_SRC = sipSalomePyQtProxySalomePyQt_moc.cxx
 MOC_H = sipSalomePyQtProxySalomePyQt.h
-endif
+SIP_FILES = SalomePyQt.sip
+LDFLAGS+= -lSalomeGUI -lqtcmodule
 
 # Libraries targets
-
 LIB = libSalomePyQtcmodule.la
 
+EXPORT_SHAREDPYSCRIPTS = SalomePyQt.py
+endif
+endif
+
 LIB_SRC += SalomePyQt.cxx SALOME_PYQT_GUI.cxx $(SIP_SRC) $(MOC_SRC) 
 LIB_MOC = SALOME_PYQT_GUI.h
 
 #LIB_MOC += sipSalomePyQtProxySalomePyQt.h
 
-EXPORT_SHAREDPYSCRIPTS = SalomePyQt.py
+#EXPORT_SHAREDPYSCRIPTS = SalomePyQt.py
 
 LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_ContainerManager.idl
 
 CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(SIP_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES)
 LIBS+= $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS)
-LDFLAGS+= -lSalomeGUI -lqtcmodule
+#LDFLAGS+= -lSalomeGUI -lqtcmodule
+#LDFLAGS+= -lSalomeGUI 
 
 
 # Custom build step: generate C++ wrapping according to $(SIP_FILES)
index 1ec297726eb7ffb32c1970d6136e4bd50f4d68ea..da744268e93d27ea459a214abbc4a88c66e64c39 100644 (file)
 #include "SALOMEGUI_QtCatchCorbaException.hxx"
 #include "utilities.h"
 
+
+#if QT_VERSION > 0x030005
+#include <sipAPISalomePyQt.h>
+#else
 #include <sipSalomePyQtDeclSalomePyQt.h>
+#endif
+
 #include <sipqtQWorkspace.h>
 #include <sipqtQPopupMenu.h>
 
@@ -41,14 +47,14 @@ void SALOME_PYQT_GUI::setWorkSpace()
   PyLockWrapper aLock = interp->GetLockWrapper();
 
   //   Try to import qt module. If it's not possible don't go on
-  PyObjWrapper qtmodule(PyImport_ImportModule("qt"));
+  PyObjWrapper qtmodule(PyImport_ImportModule("SalomePyQt"));
   if(!qtmodule){
     PyErr_Print();
     return ;
   }  
 
-  PyObjWrapper pyws(sipMapCppToSelf( QAD_Application::getDesktop()->getMainFrame(),
-                                    sipClass_QWorkspace));
+  QWorkspaceP *sipRes=QAD_Application::getDesktop()->getMainFrame();
+  PyObjWrapper pyws(sipMapCppToSelf( sipRes, sipClass_QWorkspace));
   PyObjWrapper res(PyObject_CallMethod(_module,"setWorkSpace","O",pyws.get()));
   SCRUTE(pyws->ob_refcnt);
   if(!res){
index eb1ca4861285573fbaf1fa973a952cd19b678556..a8bc62a8044adcafa76f63f5bc55e675ec86fc8b 100644 (file)
@@ -1,5 +1,5 @@
 //=============================================================================
-// File      : SALOME_PYQT_GUI.hxx
+// File      : SALOME_PYQT_GUI.h
 // Created   : mer jun  4 17:17:20 UTC 2003
 // Author    : Paul RASCLE, EDF 
 // Project   : SALOME
@@ -10,8 +10,8 @@
 #ifndef _SALOME_PYQT_GUI_HXX_
 #define _SALOME_PYQT_GUI_HXX_
 
+#include "PyInterp_PyQt.h" // this include must be first (see PyInterp_base.h)!
 #include "QAD_Desktop.h"
-#include "PyInterp_PyQt.h"
 #include "SALOMEGUI.h"
 
 class SALOME_PYQT_GUI: public SALOMEGUI
index df84b3fc1b58ace332cfd4f0ae8b633c944082ee..ebfac3e001f5b7a5e516328dd909419f490b7408 100644 (file)
@@ -2,12 +2,15 @@
 
 %Import qtmod.sip
 
+
 class SALOME_Selection : QObject
 {
+
 %HeaderCode
 #include <SALOME_Selection.h>
 %End
 
+
 public:
   SALOME_Selection(const QString &);
   void Clear();
@@ -29,6 +32,7 @@ enum MenuName {
 
 class SalomePyQt
 {
+
 %HeaderCode
 #include <SalomePyQt.hxx>
 %End
diff --git a/src/SALOME_PYQT/SalomePyQt_v4.sip b/src/SALOME_PYQT/SalomePyQt_v4.sip
new file mode 100644 (file)
index 0000000..69bbcfd
--- /dev/null
@@ -0,0 +1,62 @@
+%Module SalomePyQt
+
+%Import qtmod.sip
+
+class SALOME_Selection : QObject
+{
+%TypeHeaderCode
+#include <SALOME_Selection.h>
+%End
+
+public:
+  SALOME_Selection(const QString &);
+  void Clear();
+  void ClearIObjects();
+
+signals:
+  void currentSelectionChanged();
+};
+
+enum MenuName {
+  File        = 1,
+  View        = 2,
+  Edit        = 3,
+  Preferences = 4,
+  Tools       = 5,
+  Window      = 6,
+  Help        = 7  
+};
+
+class SalomePyQt
+{
+%TypeHeaderCode
+#include <SalomePyQt.hxx>
+%End
+
+public:
+  static QWidget*    getDesktop();
+  static QWorkspace* getMainFrame();
+  static QMenuBar*   getMainMenuBar();
+  static QPopupMenu* getPopupMenu( const MenuName );
+  static SALOME_Selection* getSelection();
+  static int getStudyId();
+  static void putInfo( const QString& );
+  static void putInfo( const QString&, int );
+
+  static const QString& getActiveComponent();
+
+  static void updateObjBrowser( int, bool );
+
+
+  static bool removeSettings(QString);
+  static QString getSetting(QString);
+  static void addStringSetting(QString, QString, bool);
+  static void addIntSetting(QString, int, bool);
+  static void addDoubleSetting(QString, double, bool);
+
+  static QString getFileName(QWidget*, const QString&, const QStringList&, const QString&, bool);
+  static QStringList getOpenFileNames(QWidget*, const QString&, const QStringList&, const QString&);
+  static QString getExistingDirectory(QWidget*, const QString&, const QString&);
+  static void helpContext(const QString&, const QString&);
+  static bool dumpView(const QString&);
+};
index 1e6613cd3814723ffd50005c8ac526319d2db644..79725c6273838ad0d6595a47a1d360e5fb9028b9 100755 (executable)
@@ -59,9 +59,10 @@ def is_shared(name):
 
 def get_shared_imported(name):
     return shared_imported.get(name)
+
 def set_shared_imported(name,module):
     shared_imported[name]=module
-    #print "Module %s shared registered" % name
+    #print "Module %s shared registered" % name,module
 
 def get_shared_imported_with_copy(name):
     module_dict= shared_imported.get(name)
@@ -73,6 +74,7 @@ def set_shared_imported_with_copy(name,module):
     #print "Module %s shared registered" % name
 
 def import_hook(name, globals=None, locals=None, fromlist=None):
+    #print "import_hook",name,fromlist
     module=get_shared_imported(name)
     if module:
        sys.modules[name]=module
@@ -99,6 +101,8 @@ def init_shared_modules(shared_module):
     global shared_imported, patterns
     shared_imported=shared_module.shared_imported
     patterns=       shared_module.patterns
+    for k,v in shared_imported.items():
+       if v is not None:sys.modules[k]=v
     shared_imported["salome_shared_modules"]=shared_module
     import salome_shared_modules
     for m in salome_shared_modules.list_modules:
index 291e27c266621a5648390630cc8126c9fc2453a4..bcdd46381444e32e80f01aa3ee8b5186713785a6 100755 (executable)
@@ -1,9 +1,10 @@
 """
 
 """
-import glob,os,sys
-
 import import_hook
+
+import glob,os,sys,string,imp
+
 from import_hook import register_name
 from import_hook import register_pattern
 
@@ -11,12 +12,68 @@ register_name("qt")
 register_pattern(lambda(x):x.endswith("_idl"))
 
 register_name("omniORB")
-register_name("CosNaming")
+import omniORB
+
+# Modify omniORB to use right sys.modules dictionnary 
+# with multi-interpreter feature
+# openModule and newModule are functions of omniORB/__init__.py module
+# modified to register modules to share
+# Function to return a Python module for the required IDL module name
+def openModule(mname, fname=None):
+    # Salome modification start
+    import sys
+    # Salome modification end
+
+    if mname == "CORBA":
+        mod = sys.modules["omniORB.CORBA"]
+    elif sys.modules.has_key(mname):
+        mod = sys.modules[mname]
+    else:
+        mod = newModule(mname)
+
+    # Salome modification start
+    import_hook.set_shared_imported(mname,mod)
+    # Salome modification end
+
+
+    if not hasattr(mod, "__doc__") or mod.__doc__ is None:
+        mod.__doc__ = "omniORB IDL module " + mname + "\n\n" + \
+                      "Generated from:\n\n"
+
+    if fname is not None:
+        mod.__doc__ = mod.__doc__ + "  " + fname + "\n"
 
-register_name("Engines")
-register_name("SALOME")
-register_name("SALOMEDS")
-register_name("SALOME_ModuleCatalog")
+    return mod
+
+# Function to create a new module, and any parent modules which do not
+# already exist
+def newModule(mname):
+    # Salome modification start
+    import sys
+    # Salome modification end
+
+    mlist   = string.split(mname, ".")
+    current = ""
+    mod     = None
+
+    for name in mlist:
+        current = current + name
+
+        if sys.modules.has_key(current):
+            mod = sys.modules[current]
+        else:
+            newmod = imp.new_module(current)
+            if mod: setattr(mod, name, newmod)
+            sys.modules[current] = mod = newmod
+
+        current = current + "."
+
+    return mod
+# Replace openModule and newModule by modified ones
+# to take into account the sys.modules that matches
+# the right one (multi-interpreter feature)
+omniORB.openModule=openModule
+omniORB.newModule=newModule
 
 # BE CAREFUL
 # Engines, SALOME, SALOMEDS must be imported in that order because :
@@ -27,36 +84,7 @@ register_name("SALOME_ModuleCatalog")
 import Engines
 import SALOME
 import SALOMEDS
-
 import SALOME_ModuleCatalog
-from SALOME_utilities import MESSAGE
-#
-# We search all Python CORBA (omniorb) modules.
-# A Python CORBA module has 2 associated Python packages 
-# These packages are named : <module_name> and <module_name>__POA
-#
-# Get the SALOMEPATH if set or else use KERNEL_ROOT_DIR that should be set.
-salome_path=os.environ.get("SALOMEPATH",os.getenv("KERNEL_ROOT_DIR"))
-
-# Register all CORBA modules in the path and python modules in shared_modules
-path=salome_path.split(":")
-#
-for rep in path:
-   rep_salome=os.path.join(rep,"lib","python"+sys.version[:3],"site-packages","salome")
-   # Find all the *__POA packages in the path
-   for elem in glob.glob(os.path.join(rep_salome,"*__POA")):
-      if os.path.isdir(elem):
-         # Found a directory (Python package) named *__POA 
-         module__POA=os.path.basename(elem)
-         module=module__POA[:-5]
-         MESSAGE( "Register CORBA module: " + module + ". Directory: " + os.path.abspath(elem)[:-5] )
-         register_name(module)
-
-   # Now we import modules found in shared_modules directory
-   for elem in glob.glob(os.path.join(rep_salome,"shared_modules","*.py")):
-       module=os.path.basename(elem)[:-3]
-       MESSAGE( "Register Python module: " + module + ". Location: " + os.path.abspath(elem) )
-       register_name(module)
 
 def init_shared_modules():
    """
@@ -73,3 +101,4 @@ def init_shared_modules():
    sys.modules["_omnipy.poa_func"]=_omnipy.poa_func
    sys.modules["_omnipy.poamanager_func"]=_omnipy.poamanager_func
    sys.modules["_omnipy.orb_func"]=_omnipy.orb_func
+
index ebc0d1292c178360d92913c73abfc45c49ea8ed8..56c8841767092ae79ba5487e0a8bc6df3a58c21e 100755 (executable)
@@ -22,7 +22,6 @@
 #  File   : salome_shared_modules.py
 #  Module : SALOME
 
-from SALOME_utilities import *
 
 """
 This module with help of import_hook and *_shared_modules
@@ -51,9 +50,10 @@ Usage:
   that could be found in the path SALOMEPATH
 
 """
+import import_hook
+
 import glob,os,sys
 
-import import_hook
 # shared_imported, patterns, register_name, register_pattern
 # will be shared by all Python sub interpretors
 from import_hook import shared_imported
@@ -72,9 +72,12 @@ list_modules=[]
 path=salome_path.split(":")
 for rep in path:
     # Import all *_shared_modules in rep
-    for f in glob.glob(os.path.join(rep,"lib","python"+sys.version[:3],"site-packages","salome","shared_modules","*_shared_modules.py")):
+    for f in glob.glob(os.path.join(rep,"lib","python"+sys.version[:3],"site-packages",
+                                        "salome","shared_modules","*_shared_modules.py")):
         try:
-           m=__import__(os.path.splitext(os.path.basename(f))[0])
+           name=os.path.splitext(os.path.basename(f))[0]
+           register_name(name)
+           m=__import__(name)
            list_modules.append(m)
         except:
            pass
@@ -85,5 +88,5 @@ for rep in path:
 #
 for name,module in sys.modules.items():
     if import_hook.is_shared(name) and shared_imported.get(name) is None:
-       #print "Module shared added to shared_imported: ",name
+       #print "Module shared added to shared_imported: ",name,module
        shared_imported[name]=module
index 769f04d1b215ee1cb3968fd180ea0b9756b60be1..c1b32b7bdf4048ab6caf88c03ebdcae669bf7aa9 100644 (file)
@@ -82,9 +82,9 @@ Session_ServerLauncher::~Session_ServerLauncher()
 
 void Session_ServerLauncher::run()
 {
-  //MESSAGE("Session_ServerLauncher::run");
+  MESSAGE("Session_ServerLauncher::run");
   _GUIMutex->lock(); // lock released by calling thread when ready: wait(mutex)
-  //MESSAGE("Server Launcher thread free to go...");
+  MESSAGE("Server Launcher thread free to go...");
    _GUIMutex->unlock();
 
   CheckArgs();
index bb135235c0cff5c3a72ba02be5179192c7957ede..d3bf23b36c0972a8162742eb41829139ab6daedc 100644 (file)
@@ -80,7 +80,7 @@ Session_ServerThread::Session_ServerThread(int argc,
                                           PortableServer::POA_ptr poa,
                                           QMutex *GUIMutex)
 {
-  //MESSAGE("Session_ServerThread Constructor " << argv[0]);
+  MESSAGE("Session_ServerThread Constructor " << argv[0]);
   _argc = argc;
   _argv = argv;
   _orb = CORBA::ORB::_duplicate(orb);
@@ -99,7 +99,7 @@ Session_ServerThread::Session_ServerThread(int argc,
 
 Session_ServerThread::~Session_ServerThread()
 {
-  //MESSAGE("~Session_ServerThread "<< _argv[0]);
+  MESSAGE("~Session_ServerThread "<< _argv[0]);
 }
 
 //=============================================================================
index e8492fb6e94c77cfa2f00e17346f97a63bc5dcee..b668b740b8f39dc939a726b279f07de7dfe219ee 100644 (file)
@@ -120,9 +120,9 @@ int main (int argc, char * argv[])
              if (!CORBA::is_nil(theObj))
                inc = CosNaming::NamingContext::_narrow(theObj);
            }
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
-             INFOS( "Test Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+             INFOS( "Test Container: CORBA::SystemException: Unable to contact the Naming Service" )
                }
          if(!CORBA::is_nil(inc))
            {