Salome HOME
Gestion des messages d'erreur en mode information
authornicolas <nicolas>
Tue, 22 Oct 2013 14:58:33 +0000 (14:58 +0000)
committernicolas <nicolas>
Tue, 22 Oct 2013 14:58:33 +0000 (14:58 +0000)
src/HOMARDGUI/HOMARDGUI.cxx
src/HOMARDGUI/MonEditFile.cxx
src/HOMARDGUI/MonEditFile.h
src/HOMARDGUI/MonIterInfo.cxx
src/HOMARDGUI/MonMeshInfo.cxx
src/HOMARD_I/HOMARD_Gen_i.cxx

index c2951a1ea35116aba65b59ecf7f892126f4b2f61..b4050976326103e1ccca886c5ec8ef837c15c347 100644 (file)
@@ -491,7 +491,7 @@ bool HOMARDGUI::OnGUIEvent (int theCommandID)
       _PTR(SObject) obj = chercheMonObjet();
       if ( (obj) and ( HOMARD_UTILS::isFileType(obj,QString("log")) or HOMARD_UTILS::isFileType(obj,QString("Summary")) or HOMARD_UTILS::isFileType(obj,QString("xml")) ) )
       {
-          MonEditFile *aDlg = new MonEditFile( 0, true, HOMARD::HOMARD_Gen::_duplicate(homardGen), _ObjectName ) ;
+          MonEditFile *aDlg = new MonEditFile( 0, true, HOMARD::HOMARD_Gen::_duplicate(homardGen), _ObjectName, 0 ) ;
           if ( aDlg->_codret == 0 ) { aDlg->show(); }
       }
       break;
index 4986104f0cb8053aa28d91fa3c65c2ad2865eb54..8a8a8aadaead4145e2999a58370f37c0c0facd08 100644 (file)
@@ -44,10 +44,11 @@ using namespace std;
  */
 MonEditFile::MonEditFile( QWidget* parent,  bool modal,
                           HOMARD::HOMARD_Gen_var myHomardGen,
-                          QString aFileName):
+                          QString aFileName, int option):
 //    QWidget(0),
     Ui_EditFile(),
     _aFileName (aFileName),
+    _option (option),
     _codret (0)
 {
   MESSAGE("Debut de MonEditFile " << aFileName.toStdString().c_str());
@@ -94,10 +95,14 @@ void MonEditFile::EditText()
   }
   else
   {
-    // GERALD -- QMESSAGE BOX
-    MESSAGE( "EditText " << _aFileName.toStdString().c_str() << " est impossible a ouvrir ");
-    QMessageBox::warning( 0, QObject::tr("HOM_WARNING"),
-                             QObject::tr("HOM_SELECT_FILE_3") );
+    // Option = 0 : emission d'un message d'erreur
+    if ( _option == 0 )
+    {
+      MESSAGE( "EditText " << _aFileName.toStdString().c_str() << " est impossible a ouvrir ");
+      QMessageBox::warning( 0, QObject::tr("HOM_WARNING"),
+                              QObject::tr("HOM_SELECT_FILE_3") );
+    }
+    // Sinon : rien
     _codret = 1 ;
   }
 }
index 5533a6b7e57b3eb7c6b16c7cdc50bed0210ad170..ebb2b5df931566348f35d92439d0290b994b5d5e 100644 (file)
@@ -42,7 +42,7 @@ class MonEditFile : public QWidget, public Ui_EditFile
 public:
     MonEditFile( QWidget* parent,  bool modal,
                  HOMARD::HOMARD_Gen_var myHomardGen,
-                 QString FileName );
+                 QString FileName, int option );
     ~MonEditFile();
     int _codret ;
 
@@ -50,6 +50,7 @@ protected :
 
     HOMARD::HOMARD_Gen_var myHomardGen;
     QString _aFileName ;
+    int _option ;
 
     virtual void InitConnect();
     virtual void EditText();
index 1d62d7fbc1aab890def207093cfe3e1d2cb18584..c3dbe3bad188739af3127422303a63b3aca32fa1 100644 (file)
@@ -113,7 +113,7 @@ bool MonIterInfo::PushOnApply()
 
   // Le bilan de l'analyse a afficher
   QString aFileName = aIter->GetFileInfo() ;
-  MonEditFile *aDlg = new MonEditFile( 0, true, HOMARD::HOMARD_Gen::_duplicate(myHomardGen), aFileName ) ;
+  MonEditFile *aDlg = new MonEditFile( 0, true, HOMARD::HOMARD_Gen::_duplicate(myHomardGen), aFileName, 0 ) ;
   if ( aDlg->_codret == 0 ) { aDlg->show(); }
 
 
index 5916fb796aa57fb4ec57cda2cb1ca089a56a54d8..90225544a7574df286e640c34ebaaed4f4d16862 100644 (file)
@@ -161,7 +161,7 @@ bool MonMeshInfo::PushOnApply()
   string iter0 = aCase->GetIter0Name();
   HOMARD::HOMARD_Iteration_var aIter =  myHomardGen->GetIteration(iter0.c_str());
   aFileName = aIter->GetFileInfo() ;
-  MonEditFile *aDlg = new MonEditFile( 0, true, HOMARD::HOMARD_Gen::_duplicate(myHomardGen), aFileName ) ;
+  MonEditFile *aDlg = new MonEditFile( 0, true, HOMARD::HOMARD_Gen::_duplicate(myHomardGen), aFileName, 1 ) ;
   if ( aDlg->_codret == 0 ) { aDlg->show(); }
 
 HOMARD_UTILS::updateObjBrowser();
index 3fd2d1bf1c1ddbfd3429b85df9ec0e6f77e0c75a..55645cf05050d195ec0babc884b32e154862b09d 100755 (executable)
@@ -2379,6 +2379,7 @@ CORBA::Long HOMARD_Gen_i::Compute(const char* NomIteration, CORBA::Long etatMena
     codretexec = myDriver->ExecuteHomard(Option1);
 //
     MESSAGE ( "Erreur en executant HOMARD : " << codretexec );
+    // En mode adaptation, on ajuste l'etat de l'iteration
     if ( modeHOMARD == 1 )
     {
       if (codretexec == 0) { SetEtatIter(NomIteration,2); }
@@ -2415,24 +2416,44 @@ CORBA::Long HOMARD_Gen_i::Compute(const char* NomIteration, CORBA::Long etatMena
         if ( Option2 % 2 == 0 ) { PublishResultInSmesh(MeshFile, 1); }
       }
     }
-  // H.3 Message d'erreur en cas de probleme
-    else
+  // H.3 Message d'erreur
+    if (codretexec != 0)
     {
-      SALOME::ExceptionStruct es;
-      es.type = SALOME::BAD_PARAM;
-      std::string text = "Error during the adaptation.\n" ;
-      try
+      std::string text ;
+      // Message d'erreur en cas de probleme en adaptation
+      if ( modeHOMARD == 1 )
       {
-        ifstream fichier(LogFile.c_str(), ios::in);
-        string ligne;
-        while(getline(fichier, ligne) and (ligne != "===== HOMARD ===== STOP ====="));
-        while (getline(fichier, ligne)) { text += ligne+ "\n";};
+        text = "Error during the adaptation.\n" ;
+        bool stopvu = false ;
+        std::ifstream fichier( LogFile.c_str() );
+        if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
+        {
+          std::string ligne; // variable contenant chaque ligne lue
+          while ( std::getline( fichier, ligne ) )
+          {
+//             INFOS(ligne);
+            if ( stopvu )
+            { text += ligne+ "\n"; }
+            else
+            {
+              int position = ligne.find( "===== HOMARD ===== STOP =====" ) ;
+              if ( position > 0 ) { stopvu = true ; }
+            }
+          }
+        }
       }
-      catch (...) {
-        text += "no log file ....";
+      else
+      {
+        text = "Voir le fichier Liste.log.\n" ;
       }
+      INFOS ( text ) ;
+      SALOME::ExceptionStruct es;
+      es.type = SALOME::BAD_PARAM;
       es.text = CORBA::string_dup(text.c_str());
       throw SALOME::SALOME_Exception(es);
+//
+      // En mode information, on force le succes pour pouvoir consulter le fichier log
+      if ( modeHOMARD != 1 ) { codretexec = 0 ; }
     }
   }