Salome HOME
Implement features:
authorvsr <vsr@opencascade.com>
Tue, 26 Dec 2006 12:39:53 +0000 (12:39 +0000)
committervsr <vsr@opencascade.com>
Tue, 26 Dec 2006 12:39:53 +0000 (12:39 +0000)
- install and build SALOME module sources
- install all products from sources

src/SALOME_InstallWizard.cxx

index 97b7bfac0e423ac43613164c94b8dbd4159e8e2a..b56820642e04e1a9df3fd3b0580f6e2aa3ea3263 100644 (file)
@@ -221,6 +221,18 @@ static QString DefineDependeces(MapProducts& theProductsMap)
   return aProducts.join(" ");
 }
 
+// ================================================================
+/*!
+ *  setAboutInfo [ static ]
+ *  Sets 'what's this' and 'tooltip' information for the widget
+ */
+// ================================================================
+static void setAboutInfo( QWidget* widget, const QString& tip )
+{
+  QWhatsThis::add( widget, tip );
+  QToolTip::add  ( widget, tip );
+}
+
 #define QUOTE(arg) QString("'") + QString(arg) + QString("'")
 
 /* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -514,16 +526,11 @@ SALOME_InstallWizard::SALOME_InstallWizard(const QString& aXmlFileName,
   setupReadmePage();
 
   // common buttons
-  QWhatsThis::add( backButton(),   tr( "Returns to the previous step of the installation procedure" ) );
-  QToolTip::add  ( backButton(),   tr( "Returns to the previous step of the installation procedure" ) );
-  QWhatsThis::add( nextButton(),   tr( "Moves to the next step of the installation procedure" ) );
-  QToolTip::add  ( nextButton(),   tr( "Moves to the next step of the installation procedure" ) );
-  QWhatsThis::add( finishButton(), tr( "Finishes installation and quits program" ) );
-  QToolTip::add  ( finishButton(), tr( "Finishes installation and quits program" ) );
-  QWhatsThis::add( cancelButton(), tr( "Cancels installation and quits program" ) );
-  QToolTip::add  ( cancelButton(), tr( "Cancels installation and quits program" ) );
-  QWhatsThis::add( helpButton(),   tr( "Displays help information window" ) );
-  QToolTip::add  ( helpButton(),   tr( "Displays help information window" ) );
+  setAboutInfo( backButton(),   tr( "Return to the previous step\nof the installation procedure" ) );
+  setAboutInfo( nextButton(),   tr( "Move to the next step\nof the installation procedure" ) );
+  setAboutInfo( finishButton(), tr( "Finish the installation and quit the program" ) );
+  setAboutInfo( cancelButton(), tr( "Cancel the installation and quit the program" ) );
+  setAboutInfo( helpButton(),   tr( "Show the help information" ) );
 
   // common signals connections
   connect( this, SIGNAL( selected( const QString& ) ),
@@ -668,57 +675,38 @@ void SALOME_InstallWizard::setupIntroPage()
 // ================================================================
 void SALOME_InstallWizard::setupProductsPage()
 {
+  //
   // create page
+  //
   productsPage = new QWidget( this, "ProductsPage" );
   QGridLayout* pageLayout = new QGridLayout( productsPage );
   pageLayout->setMargin( 0 ); pageLayout->setSpacing( 6 );
-  // target directory
-  QLabel* targetLab = new QLabel( tr( "Type the target directory:" ), productsPage );
+  //
+  // create common widgets
+  //
+  // ... target directory
+  QLabel* targetLab = new QLabel( tr( "Installation directory:" ), productsPage );
   targetFolder = new QLineEdit( productsPage );
-  QWhatsThis::add( targetFolder, tr( "Enter target root directory where products will be installed" ) );
-  QToolTip::add  ( targetFolder, tr( "Enter target root directory where products will be installed" ) );
+  setAboutInfo( targetFolder, tr( "Enter the target directory where the products\nshould be installed to" ) );
   targetBtn = new QPushButton( tr( "Browse..." ), productsPage );
-  QWhatsThis::add( targetBtn, tr( "Click this to browse target directory" ) );
-  QToolTip::add  ( targetBtn, tr( "Click this to browse target directory" ) );
-  // create advanced mode widgets container
-  moreBox = new QWidget( productsPage );
-  QGridLayout* moreBoxLayout = new QGridLayout( moreBox );
-  moreBoxLayout->setMargin( 0 ); moreBoxLayout->setSpacing( 6 );
-  // temp directory
-  QLabel* tempLab = new QLabel( tr( "Type the directory for the temporary files:" ), moreBox );
-  tempFolder = new QLineEdit( moreBox );
-  //  tempFolder->setText( "/tmp" ); // default is /tmp directory
-  QWhatsThis::add( tempFolder, tr( "Enter directory where to put temporary files" ) );
-  QToolTip::add  ( tempFolder, tr( "Enter directory where to put temporary files" ) );
-  tempBtn = new QPushButton( tr( "Browse..." ), moreBox );
-  tempBtn->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
-  QWhatsThis::add( tempBtn, tr( "Click this to browse temporary directory" ) );
-  QToolTip::add  ( tempBtn, tr( "Click this to browse temporary directory" ) );
-  // create products list
-  productsView = new ProductsView( moreBox );
-  productsView->setMinimumSize( 250, 180 );
-  QWhatsThis::add( productsView, tr( "This view lists the products you wish to be installed" ) );
-  QToolTip::add  ( productsView, tr( "This view lists the products you wish to be installed" ) );
-  // products info box
-  productsInfo = new QTextBrowser( moreBox );
-  productsInfo->setMinimumSize( 270, 135 );
-  QWhatsThis::add( productsInfo, tr( "Shows info about the product: required disk space and prerequisites" ) );
-  QToolTip::add  ( productsInfo, tr( "Shows info about the product: required disk space and prerequisites" ) );
-  // disk space labels
-  QLabel* reqLab1 = new QLabel( tr( "Total disk space required:" ), moreBox );
-  QWhatsThis::add( reqLab1, tr( "Shows total disk space required for installing selected products" ) );
-  QToolTip::add  ( reqLab1, tr( "Shows total disk space required for installing selected products" ) );
-  requiredSize = new QLabel( moreBox );
+  setAboutInfo( targetBtn, tr( "Click this button to browse\nthe installation directory" ) );
+  // ... temporary directory
+  QLabel* tempLab = new QLabel( tr( "Temporary directory:" ), productsPage );
+  tempFolder = new QLineEdit( productsPage );
+  setAboutInfo( tempFolder, tr( "The directory which should be used\nfor temporary files" ) );
+  tempBtn = new QPushButton( tr( "Browse..." ), productsPage );
+  setAboutInfo( tempBtn, tr( "Click this button to browse\nthe temporary directory" ) );
+  // ... disk space labels
+  QLabel* reqLab1 = new QLabel( tr( "Disk space required:" ), productsPage );
+  setAboutInfo( reqLab1, tr( "Total disk space required for the installation\nof the selected products" ) );
+  requiredSize = new QLabel( productsPage );
   requiredSize->setMinimumWidth( 100 );
-  QWhatsThis::add( requiredSize, tr( "Shows total disk space required for installing selected products" ) );
-  QToolTip::add  ( requiredSize, tr( "Shows total disk space required for installing selected products" ) );
-  QLabel* reqLab2 = new QLabel( tr( "Space for temporary files:" ), moreBox );
-  QWhatsThis::add( reqLab2, tr( "Shows additional disk space which is required for temporary files" ) );
-  QToolTip::add  ( reqLab2, tr( "Shows additional disk space which is required for temporary files" ) );
-  requiredTemp = new QLabel( moreBox );
+  setAboutInfo( requiredSize, tr( "Total disk space required for the installation\nof the selected products" ) );
+  QLabel* reqLab2 = new QLabel( tr( "Space for temporary files:" ), productsPage );
+  setAboutInfo( reqLab2, tr( "Disk space required for the temporary files" ) );
+  requiredTemp = new QLabel( productsPage );
   requiredTemp->setMinimumWidth( 100 );
-  QWhatsThis::add( requiredTemp, tr( "Shows additional disk space which is required for temporary files" ) );
-  QToolTip::add  ( requiredTemp, tr( "Shows additional disk space which is required for temporary files" ) );
+  setAboutInfo( requiredTemp, tr( "Disk space required for the temporary files" ) );
   QFont fnt = reqLab1->font();
   fnt.setBold( true );
   reqLab1->setFont( fnt );
@@ -730,27 +718,39 @@ void SALOME_InstallWizard::setupProductsPage()
   sizeLayout->addWidget( requiredSize, 0, 1 );
   sizeLayout->addWidget( reqLab2,      1, 0 );
   sizeLayout->addWidget( requiredTemp, 1, 1 );
-  // prerequisites checkbox
-  prerequisites = new QCheckBox( tr( "Auto set prerequisites products" ), moreBox );
+  //
+  // create <More...> mode widgets container
+  //
+  moreBox = new QWidget( productsPage );
+  QGridLayout* moreBoxLayout = new QGridLayout( moreBox );
+  moreBoxLayout->setMargin( 0 ); moreBoxLayout->setSpacing( 6 );
+  //
+  // create <More...> mode widgets
+  //
+  // ... products list
+  productsView = new ProductsView( moreBox );
+  productsView->setMinimumSize( 250, 180 );
+  setAboutInfo( productsView, tr( "The products available for the installation" ) );
+  // ... products info box
+  productsInfo = new QTextBrowser( moreBox );
+  productsInfo->setMinimumSize( 270, 135 );
+  setAboutInfo( productsInfo, tr( "Short information about the product being selected" ) );
+  // ... prerequisites checkbox
+  prerequisites = new QCheckBox( tr( "Automatic dependencies" ), moreBox );
   prerequisites->setChecked( true );
-  QWhatsThis::add( prerequisites, tr( "Check this if you want prerequisites products to be set on automatically" ) );
-  QToolTip::add  ( prerequisites, tr( "Check this if you want prerequisites products to be set on automatically" ) );
-  // <Unselect All> button
+  setAboutInfo( prerequisites, tr( "Check this box if you want the prerequisite products\nto be selected automatically" ) );
+  // ... <Unselect All> button
   unselectBtn = new QPushButton( tr( "&Unselect All" ), moreBox );
-  QWhatsThis::add( unselectBtn, tr( "Unselects all products" ) );
-  QToolTip::add  ( unselectBtn, tr( "Unselects all products" ) );
-  // <SALOME sources> / <SALOME binaries> tri-state checkboxes
+  setAboutInfo( unselectBtn, tr( "Click this button to deselect all the products" ) );
+  // ... <SALOME sources> and <SALOME binaries> tri-state checkboxes
   selectBinBtn = new QMyCheckBox( tr( "SALOME binaries" ), moreBox );
   selectBinBtn->setTristate( true );
-  QWhatsThis::add( selectBinBtn, tr( "Selects/unselects SALOME binaries" ) );
-  QToolTip::add  ( selectBinBtn, tr( "Selects/unselects SALOME binaries" ) );
+  setAboutInfo( selectBinBtn, tr( "Click this button to select/deselect SALOME binaries" ) );
   selectSrcBtn = new QMyCheckBox( tr( "SALOME sources" ), moreBox );
   selectSrcBtn->setTristate( true );
-  QWhatsThis::add( selectSrcBtn, tr( "Selects/unselects SALOME sources" ) );
-  QToolTip::add  ( selectSrcBtn, tr( "Selects/unselects SALOME sources" ) );
+  setAboutInfo( selectSrcBtn, tr( "Click this button to select/deselect SALOME sources" ) );
   buildSrcBtn = new QMyCheckBox( tr( "Build SALOME sources" ), moreBox );
-  QWhatsThis::add( buildSrcBtn, tr( "Check this box if you want to build selected SALOME sources after the installation" ) );
-  QToolTip::add  ( buildSrcBtn, tr( "Check this box if you want to build selected SALOME sources after the installation" ) );
+  setAboutInfo( buildSrcBtn, tr( "Check this box if you want to build selected\nSALOME modules from sources" ) );
   QGridLayout* btnLayout = new QGridLayout; btnLayout->setMargin( 0 ); btnLayout->setSpacing( 6 );
   btnLayout->addMultiCellWidget( unselectBtn,  0, 0, 0, 1 );
   btnLayout->addMultiCellWidget( selectBinBtn, 1, 1, 0, 1 );
@@ -758,37 +758,53 @@ void SALOME_InstallWizard::setupProductsPage()
   btnLayout->addWidget(          buildSrcBtn,  3,    1 );
   btnLayout->setColSpacing( 0, 20 );
   btnLayout->setColStretch( 1, 10 );
-  // layouting advancet mode widgets
-  moreBoxLayout->addMultiCellWidget( tempLab,      0, 0, 0, 2 );
-  moreBoxLayout->addMultiCellWidget( tempFolder,   1, 1, 0, 1 );
-  moreBoxLayout->addWidget         ( tempBtn,      1,    2    );
-  moreBoxLayout->addMultiCellWidget( productsView, 2, 5, 0, 0 );
-  moreBoxLayout->addMultiCellWidget( productsInfo, 2, 2, 1, 2 );
-  moreBoxLayout->addMultiCellWidget( prerequisites,3, 3, 1, 2 );
-  moreBoxLayout->addMultiCellLayout( btnLayout,    4, 4, 1, 2 );
-  moreBoxLayout->addMultiCellLayout( sizeLayout,   5, 5, 1, 2 );
-  // <Less...> box
+  //
+  // layout <More...> mode widgets
+  //
+  moreBoxLayout->addMultiCellWidget( productsView, 0, 3, 0, 0 );
+  moreBoxLayout->addWidget( productsInfo, 0, 1 );
+  moreBoxLayout->addWidget( prerequisites,1, 1 );
+  moreBoxLayout->addLayout( btnLayout,    2, 1 );
+  //
+  // create <Less...> mode widgets container
+  //
   lessBox = new QWidget( productsPage );
   QGridLayout* lessBoxLayout = new QGridLayout( lessBox );
   lessBoxLayout->setMargin( 0 ); lessBoxLayout->setSpacing( 6 );
-  // <Install all products from sources> check box
+  //
+  // create <Less...> mode widgets
+  //
+  // ... <Install all products from sources> check box
   allFromSrcBtn = new QMyCheckBox( tr( "Install all products from sources" ), lessBox );
+  setAboutInfo( allFromSrcBtn, tr( "Check this box if you want to build\nall the products from sources.\n\nWarning: this is long-time operation!" ) );
   lessBoxLayout->addWidget( allFromSrcBtn, 0, 0 );
   lessBoxLayout->setRowStretch( 1, 10 );
-  //lessBoxLayout->addItem( new QSpacerItem( 10,10, QSizePolicy::Minimum, QSizePolicy ), 1, 1 );
-  // <More...> button
+  //
+  // create <More...>/<Less...> button
+  // 
   moreBtn = new QPushButton( tr( "More..." ), productsPage );
-  // layouting
+  setAboutInfo( moreBtn, tr( "Switch to the advanced mode" ) );
+  //
+  // layout all widgets
+  //
+  QFrame* line = new QFrame( productsPage, "line" );
+  line->setFrameStyle( QFrame::HLine | QFrame::Sunken );
   pageLayout->addMultiCellWidget( targetLab,    0, 0, 0, 1 );
   pageLayout->addWidget         ( targetFolder, 1,    0    );
   pageLayout->addWidget         ( targetBtn,    1,    1    );
-  pageLayout->addMultiCellWidget( moreBox,      2, 2, 0, 1 );
-  pageLayout->addMultiCellWidget( lessBox,      3, 3, 0, 1 );
-  pageLayout->addWidget         ( moreBtn,      4,    1    );
-  pageLayout->setRowStretch( 2, 5 );
-  pageLayout->setRowStretch( 3, 5 );
-  //pageLayout->addRowSpacing( 6, 10 );
+  pageLayout->addMultiCellWidget( tempLab,      2, 2, 0, 1 );
+  pageLayout->addWidget         ( tempFolder,   3,    0    );
+  pageLayout->addWidget         ( tempBtn,      3,    1    );
+  pageLayout->addMultiCellWidget( moreBox,      4, 4, 0, 1 );
+  pageLayout->addMultiCellWidget( lessBox,      5, 5, 0, 1 );
+  pageLayout->addMultiCellWidget( line,         6, 6, 0, 1 );
+  pageLayout->addLayout         ( sizeLayout,   7,    0    );
+  pageLayout->addWidget         ( moreBtn,      7,    1    );
+  pageLayout->setRowStretch( 4, 5 );
+  pageLayout->setRowStretch( 5, 5 );
+  //
   // xml reader
+  //
   QFile xmlfile(xmlFileName);
   if ( xmlfile.exists() ) {
     QXmlInputSource source( &xmlfile );
@@ -801,7 +817,9 @@ void SALOME_InstallWizard::setupProductsPage()
     reader.setContentHandler( handler );
     reader.parse( source );
   }
+  //
   // take into account command line parameters
+  //
   if ( !targetDirPath.isEmpty() )
     targetFolder->setText( targetDirPath );
   if ( !tmpDirPath.isEmpty() )
@@ -858,8 +876,7 @@ void SALOME_InstallWizard::setupCheckPage()
   choices->setReadOnly( true );
   choices->setTextFormat( RichText );
   choices->setUndoRedoEnabled ( false );
-  QWhatsThis::add( choices, tr( "Displays information about installation settings you made" ) );
-  QToolTip::add  ( choices, tr( "Displays information about installation settings you made" ) );
+  setAboutInfo( choices, tr( "Information about the installation choice you have made" ) );
   QPalette pal = choices->palette();
   pal.setColor( QColorGroup::Base, QApplication::palette().active().background() );
   choices->setPalette( pal );
@@ -896,13 +913,11 @@ void SALOME_InstallWizard::setupProgressPage()
   installInfo->setUndoRedoEnabled ( false );
   installInfo->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Expanding ) );
   installInfo->setMinimumSize( 100, 10 );
-  QWhatsThis::add( installInfo, tr( "Displays installation process" ) );
-  QToolTip::add  ( installInfo, tr( "Displays installation process" ) );
+  setAboutInfo( installInfo, tr( "Installation process output" ) );
   // parameters for the script
   parametersLab = new QLabel( tr( "Enter your answer here:" ), widget );
   passedParams = new QLineEdit ( widget );
-  QWhatsThis::add( passedParams, tr( "Use this field to enter answer for the running script when it is necessary") );
-  QToolTip::add  ( passedParams, tr( "Use this field to enter answer for the running script when it is necessary") );
+  setAboutInfo( passedParams, tr( "Use this field to enter the answer\nfor the running script when it is necessary") );
   // VSR: 10/11/05 - disable answer mode ==>
   parametersLab->hide();
   passedParams->hide();
@@ -921,8 +936,7 @@ void SALOME_InstallWizard::setupProgressPage()
   progressView = new ProgressView( widget );
   progressView->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Expanding ) );
   progressView->setMinimumSize( 100, 10 );
-  QWhatsThis::add( progressView, tr( "Displays installation status" ) );
-  QToolTip::add  ( progressView, tr( "Displays installation status" ) );
+  setAboutInfo( progressView, tr( "Installation status on the selected products" ) );
   // layouting
   layout->addRowSpacing( 0, 6 );
   layout->addWidget( resultLab,    1, 0 );
@@ -952,8 +966,7 @@ void SALOME_InstallWizard::setupReadmePage()
   readme->setTextFormat( PlainText );
   readme->setFont( QFont( "Fixed", 12 ) );
   readme->setUndoRedoEnabled ( false );
-  QWhatsThis::add( readme, tr( "Displays README information" ) );
-  QToolTip::add  ( readme, tr( "Displays README information" ) );
+  setAboutInfo( readme, tr( "README information" ) );
   QPalette pal = readme->palette();
   pal.setColor( QColorGroup::Base, QApplication::palette().active().background() );
   readme->setPalette( pal );
@@ -970,8 +983,7 @@ void SALOME_InstallWizard::setupReadmePage()
     for ( it = buttons.begin(); it != buttons.end(); ++it ) {
       QButton* b = new QPushButton( tr( (*it).label() ), readmePage );
       if ( !(*it).tootip().isEmpty() ) {
-       QWhatsThis::add( b, tr( (*it).tootip() ) );
-       QToolTip::add  ( b, tr( (*it).tootip() ) );
+       setAboutInfo( b, tr( (*it).tootip() ) );
       }
       hLayout->addWidget( b );
       (*it).setButton( b );
@@ -1460,22 +1472,12 @@ bool SALOME_InstallWizard::checkSize( long* totSize, long* tempSize )
 // ================================================================
 void SALOME_InstallWizard::checkProductPage()
 {
-  long tots = 0, temps = 0;
-
-  // check if any product is selected;
-  bool isAnyProductSelected = checkSize( &tots, &temps );
-  // check if target directory is valid
-  bool isTargetDirValid = !targetFolder->text().stripWhiteSpace().isEmpty();
-  // check if temp directory is valid
-  bool isTempDirValid = !moreMode || !tempFolder->text().stripWhiteSpace().isEmpty();
+  // update <SALOME sources>, <SALOME binaries> check boxes state
 
-  // update required size information
-  requiredSize->setText( QString::number( tots )  + " Kb");
-  requiredTemp->setText( QString::number( temps ) + " Kb");
+  selectSrcBtn->blockSignals( true );
+  selectBinBtn->blockSignals( true );
 
-  // update <SALOME sources>, <SALOME binaries> check boxes state
   int totSrc = 0, selSrc = 0;
-  int totBin = 0, selBin = 0;
   MapProducts::Iterator itProd;
   for ( itProd = productsMap.begin(); itProd != productsMap.end(); ++itProd ) {
     bool srcctx = itProd.data().hasContext( "salome sources" );
@@ -1485,26 +1487,45 @@ void SALOME_InstallWizard::checkProductPage()
       if ( productsView->isSources( itProd.key() ) )
        selSrc++;
     }
+  }
+  selectSrcBtn->setState( selSrc == 0 ? QButton::Off : ( selSrc == totSrc ? QButton::On : QButton::NoChange  ) );
+
+  buildSrcBtn->setEnabled( selSrc > 0 );
+  selectBinBtn->setEnabled( !buildSrcBtn->isEnabled() || !buildSrcBtn->isChecked() ); 
+  for ( itProd = productsMap.begin(); itProd != productsMap.end(); ++itProd ) {
+    if ( itProd.data().hasContext( "salome sources" ) && !itProd.data().hasContext( "salome binaries" ) ) {
+      productsView->setItemEnabled( productsView->findBinItem( itProd.data().getName() ) , 
+                                   !productsView->isSources( itProd.key() ) || !buildSrcBtn->isChecked() );
+    }
+  }
+
+  int totBin = 0, selBin = 0;
+  for ( itProd = productsMap.begin(); itProd != productsMap.end(); ++itProd ) {
+    bool srcctx = itProd.data().hasContext( "salome sources" );
+    bool binctx = itProd.data().hasContext( "salome binaries" );
     if ( binctx && !srcctx ) {
       totBin++;
       if ( productsView->isBinaries( itProd.key() ) )
        selBin++;
     }
   }
-  selectSrcBtn->blockSignals( true );
-  selectBinBtn->blockSignals( true );
-  selectSrcBtn->setState( selSrc == 0 ? QButton::Off : ( selSrc == totSrc ? QButton::On : QButton::NoChange  ) );
   selectBinBtn->setState( selBin == 0 ? QButton::Off : ( selBin == totBin ? QButton::On : QButton::NoChange  ) );
+
   selectSrcBtn->blockSignals( false );
   selectBinBtn->blockSignals( false );
 
-  buildSrcBtn->setEnabled( selSrc > 0 );
-  for ( itProd = productsMap.begin(); itProd != productsMap.end(); ++itProd ) {
-    if ( itProd.data().hasContext( "salome sources" ) && !itProd.data().hasContext( "salome binaries" ) ) {
-      productsView->setItemEnabled( productsView->findBinItem( itProd.data().getName() ) , 
-                                   !buildSrcBtn->isChecked() || !productsView->isSources( itProd.key() ) );
-    }
-  }
+  long tots = 0, temps = 0;
+
+  // check if any product is selected;
+  bool isAnyProductSelected = checkSize( &tots, &temps );
+  // check if target directory is valid
+  bool isTargetDirValid = !targetFolder->text().stripWhiteSpace().isEmpty();
+  // check if temp directory is valid
+  bool isTempDirValid = !moreMode || !tempFolder->text().stripWhiteSpace().isEmpty();
+
+  // update required size information
+  requiredSize->setText( QString::number( tots )  + " Kb");
+  requiredTemp->setText( QString::number( temps ) + " Kb");
 
   // enable/disable "Next" button
   setNextEnabled( productsPage, isAnyProductSelected && isTargetDirValid && isTempDirValid );
@@ -1661,8 +1682,7 @@ void SALOME_InstallWizard::launchScript()
   // <Next> button
   setNextEnabled( true );
   nextButton()->setText( tr( "&Next >" ) );
-  QWhatsThis::add( nextButton(), tr( "Moves to the next step of the installation procedure" ) );
-  QToolTip::add  ( nextButton(), tr( "Moves to the next step of the installation procedure" ) );
+  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() ) );
   connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
@@ -1689,11 +1709,13 @@ void SALOME_InstallWizard::onMoreBtn()
     moreBox->hide();
     lessBox->show();
     moreBtn->setText( tr( "More..." ) );
+    setAboutInfo( moreBtn, tr( "Switch to the advanced mode" ) );
   }
   else {
     moreBox->show();
     lessBox->hide();
     moreBtn->setText( tr( "Less..." ) );
+    setAboutInfo( moreBtn, tr( "Switch to the basic mode" ) );
   }
   qApp->processEvents();
   moreMode = !moreMode;
@@ -1861,8 +1883,7 @@ void SALOME_InstallWizard::clean(bool rmDir)
 void SALOME_InstallWizard::pageChanged( const QString & mytitle)
 {
   nextButton()->setText( tr( "&Next >" ) );
-  QWhatsThis::add( nextButton(), tr( "Moves to the next step of the installation procedure" ) );
-  QToolTip::add  ( nextButton(), tr( "Moves to the next step of the installation procedure" ) );
+  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() ) );
   connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
@@ -1892,8 +1913,7 @@ void SALOME_InstallWizard::pageChanged( const QString & mytitle)
       passedParams->setEnabled( false );
       QFont f = parametersLab->font(); f.setBold( false ); parametersLab->setFont( f );
       nextButton()->setText( tr( "&Start" ) );
-      QWhatsThis::add( nextButton(), tr( "Starts installation process" ) );
-      QToolTip::add  ( nextButton(), tr( "Starts installation process" ) );
+      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() ) );
@@ -2018,8 +2038,7 @@ void SALOME_InstallWizard::onStart()
     // disable <Next> button
     //setNextEnabled( false );
     nextButton()->setText( tr( "&Stop" ) );
-    QWhatsThis::add( nextButton(), tr( "Aborts installation process" ) );
-    QToolTip::add  ( nextButton(), tr( "Aborts installation process" ) );
+    setAboutInfo( nextButton(), tr( "Abort installation process" ) );
     // disable <Back> button
     setBackEnabled( false );
     // enable script parameters line edit
@@ -2083,15 +2102,13 @@ void SALOME_InstallWizard::productInstalled( )
     // enable <Next> button
     setNextEnabled( true );
     nextButton()->setText( tr( "&Start" ) );
-    QWhatsThis::add( nextButton(), tr( "Starts installation process" ) );
-    QToolTip::add  ( nextButton(), tr( "Starts installation process" ) );
+    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() ) );
     connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
     //nextButton()->setText( tr( "&Next >" ) );
-    //QWhatsThis::add( nextButton(), tr( "Moves to the next step of the installation procedure" ) );
-    //QToolTip::add  ( nextButton(), tr( "Moves to the next step of the installation procedure" ) );
+    //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() ) );
     //connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
@@ -2540,7 +2557,7 @@ void SALOME_InstallWizard::resetToDefaultState()
 // ================================================================
 /*!
  *  SALOME_InstallWizard::onBuildAll
- *  Reset to default state
+ *  Build all products from the sources check box slot
  */
 // ================================================================
 void SALOME_InstallWizard::onBuildAll()
@@ -2553,6 +2570,7 @@ void SALOME_InstallWizard::onBuildAll()
       productsView->setSources( mapIter.key() );
     buildSrcBtn->setChecked( true );
     productsView->blockSignals( false );
+    checkProductPage();
     static bool firstTimeClicked = true;
     if ( firstTimeClicked ) {
       QMessageBox::warning( this,
@@ -2568,7 +2586,7 @@ void SALOME_InstallWizard::onBuildAll()
   }
   else {
     resetToDefaultState();
+    checkProductPage();
   }
   moreBtn->setEnabled( !allFromSrcBtn->isChecked() );
-  checkProductPage();
 }