Salome HOME
This commit was generated by cvs2git to track changes on a CVS vendor
[modules/kernel.git] / src / Loader / InquireServersQThread.cxx
index 1102aa39a957287a199858ebd4579fee37e531ca..7e8cf6e4235d6e82645b1dffd547a59b53f7e122 100644 (file)
@@ -1,14 +1,13 @@
-//=============================================================================
-// File      : InquireServersQThread.cxx
-// Created   : Mon Oct 21 17:26:42 2002
-// Author    : Vasily RUSYAEV
-// Project   : SALOME
-// Copyright : EDF 2001
-// $Header$
-//=============================================================================
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : InquireServersQThread.cxx
+//  Author : Vasily RUSYAEV
+//  Module : SALOME
+//  $Header$
 
 using namespace std;
-
 #include "InquireServersQThread.h"
 
 #include <qlabel.h>
@@ -53,6 +52,7 @@ static QString addSlash( const QString& path );
 InquireServersGUI::InquireServersGUI()
      : QVBox(0, "SFA splash", Qt::WDestructiveClose | Qt::WStyle_Customize | Qt::WStyle_NoBorder )
 {
+  myGUI = false;
   myThread = new InquireServersQThread(this);
 
   // 1. Polish the appearance
@@ -140,6 +140,7 @@ void InquireServersGUI::ClickOnCancel()
 {
   //it's necessary to stop asking servers
   myThread->stop();
+  myGUI = false;
   //Also we should send QCloseEvent in order to close this widget (and remove from screen) 
   //QThread::postEvent ( this, new QCloseEvent() );
   qApp->exit(1);
@@ -200,7 +201,7 @@ InquireServersQThread::InquireServersQThread( InquireServersGUI* r )
   char* cenv;
 
   IsChecking = true;
-  myServersCount = 8;
+  myServersCount = 5;
   //how many times we should repeat attempts to get response from all needed for launching SALOME servers
   myRepeat = 30; // default value, user can change it by setting CSF_RepeatServerRequest env.variable
   cenv = getenv( "CSF_RepeatServerRequest" );
@@ -214,23 +215,32 @@ InquireServersQThread::InquireServersQThread( InquireServersGUI* r )
   QString str = "Loading: ";
   myMessages[0] = "Checking naming service...";
   myMessages[1] = str + "SALOME_Registry_Server" + "...";
-  myMessages[2] = str + "SALOMEDS_Server" + "...";
+  myMessages[2] = str + "SALOME_Container SuperVisionContainer" + "...";
   myMessages[3] = str + "SALOME_ModuleCatalog_Server" + "...";
-  myMessages[4] = str + "SALOME_Session_Server" + "...";
-  myMessages[5] = "";
-  myMessages[6] = "";
-  myMessages[7] = "";
+  myMessages[4] = str + "SALOME_ContainerPy.py FactoryServerPy" + "...";
+  myMessages[5] = str + "SALOME_Container FactoryServer" + "...";
+  myMessages[6] = str + "SALOMEDS_Server" + "...";
+  myMessages[7] = str + "SALOME_Session_Server" + "...";
 
   r->getArgs( _argc, &_argv);
 
   // NRI : Temporary solution for SuperVisionContainer
-  for ( int i=1; i<=_argc; i++) {
-    if (strcmp(_argv[i],"CPP")==0)
+  for ( int i=1; i<=(_argc-1); i++) {
+    if (strcmp(_argv[i],"CPP")==0) {
       myMessages[5] = str + "SALOME_Container FactoryServer" + "...";
-    if (strcmp(_argv[i],"PYTHON")==0)
+      myServersCount++;
+    }
+    if (strcmp(_argv[i],"PYTHON")==0) {
       myMessages[6] = str + "SALOME_ContainerPy.py FactoryServerPy" + "...";
-    if (strcmp(_argv[i],"SUPERV")==0)
+      myServersCount++;
+    }
+    if (strcmp(_argv[i],"SUPERV")==0) {
       myMessages[7] = str + "SALOME_Container SuperVisionContainer" + "...";
+      myServersCount++;
+    }
+    if (strcmp(_argv[i],"GUI")==0) {
+      r->withGUI(true);
+    }
   }
 }
 
@@ -238,9 +248,18 @@ void InquireServersQThread::run()
 {
 while (IsChecking)
   {
-    for (int i=1; i<=myServersCount; i++)
+    for (int i=1; i<=8; i++)
       {
-       if ( myMessages[i-1].isEmpty() ) continue;
+       if ( myMessages[i-1].isEmpty() ) {
+         if (i==8) {
+           IsChecking = false;
+           //myExitStatus should be 0 because all servers exist and work
+           myExitStatus = 0;
+           //we should send QCloseEvent in order to close this widget (and remove from screen) 
+           QThread::postEvent ( receiver , new QCloseEvent() );
+         } else
+           continue;
+       }
        QString *message = new QString(myMessages[i-1]);
        QThread::postEvent( receiver, new InquireEvent( ( QEvent::Type )InquireEvent::ProgressEventLabel, message ) );
        QThread::usleep(200000);
@@ -249,7 +268,7 @@ while (IsChecking)
        if (result)
          {
            QThread::postEvent( receiver, new InquireEvent( ( QEvent::Type )InquireEvent::ProgressEvent, new int( i ) ) );
-           if (i==myServersCount)
+           if (i==8)
              {
                IsChecking = false;
                //myExitStatus should be 0 because all servers exist and work
@@ -308,17 +327,19 @@ bool InquireServersQThread::AskServer(int iteration, QString ** errMessage)
     case 2:
       //checking - existence of SALOME_Registry_Server
     case 3:
-      //checking - existence of SALOMEDS_Server
+      //checking - existence of SALOME_Container SuperVisionContainer
     case 4:
       //checking - existence of SALOME_ModuleCatalog_Server
     case 5:
-      //checking - existence of SALOME_Session_Server
+      //checking - existence of SALOME_ContainerPy.py FactoryServerPy
     case 6:
       //checking - existence of SALOME_Container FactoryServer
     case 7:
-      //checking - existence of SALOME_ContainerPy.py FactoryServerPy
+      //checking - existence of SALOMEDS_Server
     case 8:
-      //checking - existence of SALOME_Container SuperVisionContainer
+      //checking - existence of SALOME_Session_Server
+      
+
       IsPassed = pingServer(iteration, errDescription);
       if (!IsPassed)
        *errMessage = new QString(errDescription);
@@ -356,16 +377,20 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
                  }
              }
              break;
-           case 3:
-             {
-               CORBA::Object_var obj = NS.Resolve("/myStudyManager");
-               SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow(obj) ;
-               if (!CORBA::is_nil(studyManager))
+           case 3:     
+              {
+               string hostname = GetHostname();
+               string containerName = "/Containers/";
+               containerName += hostname;
+               containerName += "/SuperVisionContainer";
+               
+               CORBA::Object_var obj = NS.Resolve(containerName.c_str());
+               Engines::Container_var SVcontainer = Engines::Container::_narrow(obj) ;
+               if (!CORBA::is_nil(SVcontainer))
                  {
-                   MESSAGE("/myStudyManager is found");
-                   studyManager->ping();
+                   SVcontainer->ping();
                    result = true;
-                   MESSAGE("StudyManager was activated");
+                   MESSAGE("SuperVisionContainer container was activated");
                    return result;
                  }
              }
@@ -384,7 +409,7 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
                  }
              }
              break;
-           case 5:
+           case 8:
              {
                CORBA::Object_var obj = NS.Resolve("Kernel/Session");
                SALOME::Session_var session = SALOME::Session::_narrow(obj) ;
@@ -416,7 +441,7 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
                  }
              }
              break;
-           case 7:
+           case 5:
              {
                string hostname = GetHostname();
                string containerName = "/Containers/";
@@ -434,20 +459,16 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
                  }
              }
              break;
-           case 8:
-             {
-               string hostname = GetHostname();
-               string containerName = "/Containers/";
-               containerName += hostname;
-               containerName += "/SuperVisionContainer";
-               
-               CORBA::Object_var obj = NS.Resolve(containerName.c_str());
-               Engines::Container_var SVcontainer = Engines::Container::_narrow(obj) ;
-               if (!CORBA::is_nil(SVcontainer))
+           case 7:
+              {
+               CORBA::Object_var obj = NS.Resolve("/myStudyManager");
+               SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow(obj) ;
+               if (!CORBA::is_nil(studyManager))
                  {
-                   SVcontainer->ping();
+                   MESSAGE("/myStudyManager is found");
+                   studyManager->ping();
                    result = true;
-                   MESSAGE("SuperVisionContainer container was activated");
+                   MESSAGE("StudyManager was activated");
                    return result;
                  }
              }
@@ -489,22 +510,22 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
        case 2:
          serverName = "SALOME_Registry_Server is not loaded. ";
          break;
-       case 3:
+       case 7:
          serverName = "SALOMEDS_Server is not loaded. ";
          break;
        case 4:
          serverName = "SALOME_ModuleCatalog_Server is not loaded. ";
          break;
-       case 5:
+       case 8:
          serverName = "SALOME_Session_Server is not loaded. ";
          break;
        case 6:
          serverName = "SALOME_Container FactoryServer is not loaded. ";
          break;
-       case 7:
+       case 5:
          serverName = "SALOME_ContainerPy.py FactoryServerPy is not loaded. ";
          break;
-       case 8:
+       case 3:
          serverName = "SALOME_Container SuperVisionContainer is not loaded. ";
          break;
        }
@@ -520,23 +541,6 @@ QString findFile( QString filename )
   QString dir;
   char* cenv;
   
-  // Try ${SALOME_ROOT_DIR}/share/salome/resources directory
-  cenv = getenv( "KERNEL_ROOT_DIR" );
-  if ( cenv ) {
-    dir.sprintf( "%s", cenv );
-    if ( !dir.isEmpty() ) {
-      dir = addSlash(dir) ;
-      dir = dir + "share" ;
-      dir = addSlash(dir) ;
-      dir = dir + "salome" ;
-      dir = addSlash(dir) ;
-      dir = dir + "resources" ;
-      dir = addSlash(dir) ;
-      QFileInfo fileInfo( dir + filename );
-      if ( fileInfo.isFile() && fileInfo.exists() )
-       return fileInfo.filePath();
-    }
-  }
   // Try CSF_ResourcesDefaults env.var directory ( or directory list )
   cenv = getenv( "CSF_ResourcesDefaults" );
   if ( cenv ) {