]> SALOME platform Git repositories - tools/install.git/commitdiff
Salome HOME
Implementation of the 0019993 improvement ("If error of installation in installWizard...
authorakl <akl@opencascade.com>
Wed, 8 Apr 2009 07:03:43 +0000 (07:03 +0000)
committerakl <akl@opencascade.com>
Wed, 8 Apr 2009 07:03:43 +0000 (07:03 +0000)
bin/SALOME_InstallWizard
doc/progresspage1.png
doc/progresspage2.png
doc/readme.html
src/SALOME_InstallWizard.cxx
src/SALOME_InstallWizard.hxx
src/globals.h

index 2ffb7810c9c90fdc5c9d6176b593190538fb6ab8..8f072acfcba1f5f35784293b1e9f89448bdd5f99 100755 (executable)
Binary files a/bin/SALOME_InstallWizard and b/bin/SALOME_InstallWizard differ
index 5eb95153678bc2125b1195965b6062ce886bcefc..c6344693e23981375cc9a163dadde2972fe1e4b4 100644 (file)
Binary files a/doc/progresspage1.png and b/doc/progresspage1.png differ
index 7350d07d2bd200b5ef706896c099ffe47c3bfcaf..b2e8d824de1ff290f1e1a9131d274987118ebc83 100644 (file)
Binary files a/doc/progresspage2.png and b/doc/progresspage2.png differ
index 77a7f1764dff15603b4a7b5d25d24026b6e3f27f..19076e494656cbd71caf4a0569a23e425562a9a1 100755 (executable)
@@ -419,7 +419,7 @@ previous pages. You can review again your choices and change them if
 necessary returning to the previous pages. <br>
 When you are sure that everything is OK, press <i>"Next"</i>
 button to
-follow to the <a href="#ProgressPage">progress page</a>.
+follow to the <a href="#ProgressPage1">progress page</a>.
 </p>
 <center><a name="ProgressPage1"></a><br>
 <img alt="Progress page (not started yet)" src="progresspage1.png" style="width: 593px; height: 468px;">
@@ -428,14 +428,16 @@ not started yet
 </p>
 </center>
 <div style="text-align: left;">To start the installation
-of the selected
-products click <i>"Start"</i>
+of the selected products click <i>"Start"</i>
 button. It launches the shell installation script and you will be able
 to see the output of the script in the topmost frame of the dialog box.
-If any
-errors occur during the installation progress, the corresponding
-messages
-will be printed to the log window in the bold red font.<br>
+If any errors occur during the installation progress, the corresponding
+messages will be printed to the log window in the bold red font and 
+installation process will be aborted with error message box. But user 
+has possibility to change this default behaviour by 
+<i>"Ignore installation errors"</i> checkbox. It is necessary to check 
+it before start and all occured errors will be passed, 
+and installation will be continued in any case.<br>
 </div>
 <div style="text-align: left;">It is possible to break the
 installation at any time by pressing <span style="font-style: italic;">"Stop"</span>
index d97d52f68a1a2bd9829484f5d7a60dfb759530a2..0b98441f53971180ac1e915603a1f07d032e5029 100644 (file)
@@ -1344,14 +1344,20 @@ void SALOME_InstallWizard::setupProgressPage()
   progressView = new ProgressView( widget );
   progressView->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Expanding ) );
   progressView->setMinimumSize( 100, 10 );
+  // possibility to ignore errors
+  ignoreErrCBox = new QCheckBox( tr( "Ignore errors" ), widget );
+  setAboutInfo( ignoreErrCBox, tr( "Check this option if you want to proceed installation \nprocess even there will be some errors" ) );
+  ignoreErrCBox->setChecked( false );
+  // product installation status bar
   statusLab = new QLabel( widget );
   statusLab->setFrameShape( QButtonGroup::LineEditPanel );
   setAboutInfo( progressView, tr( "Installation status on the selected products" ) );
   // layouting
   layout->addRowSpacing( 0, 6 );
-  layout->addWidget( resultLab,    1, 0 );
-  layout->addWidget( progressView, 2, 0 );
-  layout->addWidget( statusLab,    3, 0 );
+  layout->addWidget( resultLab,     1, 0 );
+  layout->addWidget( progressView,  2, 0 );
+  layout->addWidget( ignoreErrCBox, 3, 0 );
+  layout->addWidget( statusLab,     4, 0 );
   // layouting
   pageLayout->addWidget( splitter,  0, 0 );
   // adding page
@@ -1881,11 +1887,7 @@ void SALOME_InstallWizard::checkModifyLaResult()
                           QMessageBox::NoButton );
     // enable <Next> button
     setNextEnabled( true );
-    nextButton()->setText( tr( "&Start" ) );
-    setAboutInfo( nextButton(), tr( "Start installation process" ) );
-    // reconnect Next button - to use it as Start button
-    disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-    disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+    doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
     connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
     // enable <Back> button
     setBackEnabled( true );
@@ -2271,6 +2273,12 @@ void SALOME_InstallWizard::launchScript()
     }
     return;
   }
+
+  // else try to find aborted product
+  prodProc = progressView->findStatus( Aborted );
+  if ( !prodProc.isNull() )
+    return; // installation has been aborted
+
   ___MESSAGE___( "All products have been installed successfully" );
   // all products are installed successfully
   MapProducts::Iterator mapIter;
@@ -2321,10 +2329,7 @@ void SALOME_InstallWizard::completeInstallation()
   statusLab->setText( tr( "Installation completed" ) );
   // <Next> button
   setNextEnabled( true );
-  nextButton()->setText( tr( "&Next >" ) );
-  setAboutInfo( nextButton(), tr( "Move to the next step of the installation procedure" ) );
-  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+  doPostActions( tr( "&Next >" ), tr( "Move to the next step of the installation procedure" ) );
   connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
   // <Back> button
   setBackEnabled( true );
@@ -2339,7 +2344,7 @@ void SALOME_InstallWizard::completeInstallation()
   if ( hasErrors ) {
     if ( QMessageBox::warning( this,
                               tr( "Warning" ),
-                              tr( "There were some errors and/or warnings during the installation.\n"
+                              tr( "There were some errors during the installation.\n"
                                   "Do you want to save the installation log?" ),
                               tr( "&Save" ),
                               tr( "&Cancel" ),
@@ -2564,10 +2569,7 @@ void SALOME_InstallWizard::clean(bool rmDir)
 // ================================================================
 void SALOME_InstallWizard::pageChanged( const QString & mytitle)
 {
-  nextButton()->setText( tr( "&Next >" ) );
-  setAboutInfo( nextButton(), tr( "Move to the next step of the installation procedure" ) );
-  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+  doPostActions( tr( "&Next >" ), tr( "Move to the next step of the installation procedure" ) );
   connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
   cancelButton()->disconnect();
   connect( cancelButton(), SIGNAL( clicked()), this, SLOT( reject() ) );
@@ -2676,11 +2678,7 @@ void SALOME_InstallWizard::pageChanged( const QString & mytitle)
       passedParams->clear();
       passedParams->setEnabled( false );
       QFont f = parametersLab->font(); f.setBold( false ); parametersLab->setFont( f );
-      nextButton()->setText( tr( "&Start" ) );
-      setAboutInfo( nextButton(), tr( "Start installation process" ) );
-      // reconnect Next button - to use it as Start button
-      disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-      disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+      doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
       connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
       setNextEnabled( true );
       // reconnect Cancel button to terminate process
@@ -2820,6 +2818,8 @@ void SALOME_InstallWizard::onStart()
   installInfo->setFinished( false );
   passedParams->clear();
   passedParams->setEnabled( false );
+  // disable 'Ignore errors' checkbox during installation process
+  ignoreErrCBox->setEnabled( false );
   QFont f = parametersLab->font(); f.setBold( false ); parametersLab->setFont( f );
 
   // update status label
@@ -2874,11 +2874,7 @@ void SALOME_InstallWizard::onStart()
        statusLab->setText( tr( "Installation has been aborted" ) );
        // enable <Next> button
        setNextEnabled( true );
-       nextButton()->setText( tr( "&Start" ) );
-       setAboutInfo( nextButton(), tr( "Start installation process" ) );
-       // reconnect Next button - to use it as Start button
-       disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-       disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+       doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
        connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
        // enable <Back> button
        setBackEnabled( true );
@@ -2960,13 +2956,9 @@ void SALOME_InstallWizard::onStart()
        // installation aborted
        abort();
        statusLab->setText( tr( "Installation has been aborted by user" ) );
-       // enable <Next> button
+       // update <Next> button
        setNextEnabled( true );
-       nextButton()->setText( tr( "&Start" ) );
-       setAboutInfo( nextButton(), tr( "Start installation process" ) );
-       // reconnect Next button - to use it as Start button
-       disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-       disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+       doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
        connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
        // enable <Back> button
        setBackEnabled( true );
@@ -3018,16 +3010,9 @@ void SALOME_InstallWizard::productInstalled()
     installInfo->setFinished( true );
     // enable <Next> button
     setNextEnabled( true );
-    nextButton()->setText( tr( "&Start" ) );
-    setAboutInfo( nextButton(), tr( "Start installation process" ) );
-    // reconnect Next button - to use it as Start button
-    disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-    disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+    doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
     connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
-    //nextButton()->setText( tr( "&Next >" ) );
-    //setAboutInfo( nextButton(), tr( "Move to the next step of the installation procedure" ) );
-    //disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-    //disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+    //doPostActions( tr( "&Next >" ), tr( "Move to the next step of the installation procedure" ) );
     //connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
     // enable <Back> button
     setBackEnabled( true );
@@ -3188,6 +3173,10 @@ void SALOME_InstallWizard::readFromStderr( )
     installInfo->scrollToBottom();
     hasErrors = true;
   }
+
+  // stop or proceed installation process
+  manageInstProc();
+  
   // VSR: 10/11/05 - disable answer mode ==>
   // passedParams->setEnabled( true );
   // passedParams->setFocus();
@@ -3195,6 +3184,41 @@ void SALOME_InstallWizard::readFromStderr( )
   // VSR: 10/11/05 - disable answer mode <==
 }
 // ================================================================
+/*!
+ *  SALOME_InstallWizard::manageInstProc
+ *  QProcess slot: -->stop installation if there is an error in stderr
+ */
+// ================================================================
+void SALOME_InstallWizard::manageInstProc()
+{
+  if ( !hasErrors || ignoreErrCBox->isChecked() )
+    return; //proceed installation process
+  
+  // abort the current installation
+  statusLab->setText( tr( "Aborting installation..." ) );
+  abort();
+  statusLab->setText( tr( "Installation has been aborted because some errors" ) );
+  if ( QMessageBox::critical( this,
+                             tr( "Error" ),
+                             tr( "Installation process has been stopped, because an error occured \n"
+                                 "during an installation of the current product!\n"
+                                 "Please see the installation progress view for more details about the error.\n\n"
+                                 "Do you want to save the installation log?" ),
+                             tr( "&Save" ),
+                             tr( "&Cancel" ),
+                             QString::null,
+                             0,
+                             1 ) == 0 )
+    saveLog();
+  // enable <Next> button
+  setNextEnabled( true );
+  doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
+  connect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+  // enable <Back> button
+  setBackEnabled( true );
+  installInfo->setFinished( true );
+}
+// ================================================================
 /*!
  *  SALOME_InstallWizard::setDependancies
  *  Sets dependancies for the product item
@@ -3205,6 +3229,24 @@ void SALOME_InstallWizard::setDependancies( QCheckListItem* item, Dependancies d
   productsMap[item] = dep;
 }
 // ================================================================
+/*!
+ *  SALOME_InstallWizard::doPostActions
+ *  Executes some actions after finish of installation process (successful or not)
+ */
+// ================================================================
+void SALOME_InstallWizard::doPostActions( const QString& btnText,
+                                         const QString& btnAboutInfo )
+{
+  // update <Next> button
+  nextButton()->setText( btnText );
+  setAboutInfo( nextButton(), btnAboutInfo );
+  // reconnect Next button - to use it as Start button
+  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
+  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+  // enable 'Ignore errors' checkbox
+  ignoreErrCBox->setEnabled( true );
+}
+// ================================================================
 /*!
  *  SALOME_InstallWizard::addFinishButton
  *  Add button for the <Finish> page.
index 9ada2d7f42e1e66486016da425f107a637edc670..c8e3f7470ff4b7b63c2f6f9c706b8c4c42638e13 100644 (file)
@@ -193,6 +193,10 @@ class SALOME_InstallWizard: public InstallWizard
   // set dependancies
   void setDependancies( QCheckListItem* item, Dependancies dep);
 
+  // executes some actions after finish of installation process (successful or not)
+  void doPostActions( const QString& btnText,
+                     const QString& btnAboutInfo );
+
   // add button for the <Finish> page
   void addFinishButton( const QString& label, 
                        const QString& tooltip, 
@@ -348,6 +352,8 @@ class SALOME_InstallWizard: public InstallWizard
   void readFromStdout();
   // -->something was written to stderr
   void readFromStderr();
+  // -->stop installation process if there is an error in stderr
+  void manageInstProc();
 
  private:
   QString          myIWName;       // Installation Wizard's name
@@ -438,6 +444,7 @@ class SALOME_InstallWizard: public InstallWizard
   QLineEdit*       passedParams;   // user can pass data to running script
   QTextEdit*       installProgress;// contains information about progress of installing selected products
   ProgressView*    progressView;   // displays information about progress of installing selected products
+  QCheckBox*       ignoreErrCBox;  // checkbox to ignore installation errors
   QLabel*          statusLab;      // displays currently performed action
   // --> finish page
   QWidget*         readmePage;     // page itself
index 7d91670dcc9de9789d3c754f00ffd636ee69981f..57143b7f1425ef6e6987ef36dde1f76a278fcf7d 100644 (file)
@@ -17,7 +17,7 @@
 
 #define __IW_VERSION_MAJOR__ 1
 #define __IW_VERSION_MINOR__ 1
-#define __IW_VERSION_PATCH__ 6
+#define __IW_VERSION_PATCH__ 7
 
 #define __IW_VERSION__ (__IW_VERSION_MAJOR__*10000 + \
                         __IW_VERSION_MINOR__*100   + \