]> SALOME platform Git repositories - tools/install.git/commitdiff
Salome HOME
Fix problem when 'woguimode' key is equal to 'false'.
authorakl <akl@opencascade.com>
Mon, 26 May 2008 05:44:12 +0000 (05:44 +0000)
committerakl <akl@opencascade.com>
Mon, 26 May 2008 05:44:12 +0000 (05:44 +0000)
bin/SALOME_InstallWizard
src/SALOME_InstallWizard.cxx
src/SALOME_InstallWizard.hxx
src/SALOME_XmlHandler.cxx

index 7941547938d60f5561c438cb90cd4f690c163c75..a91cf1cc9514904b9726ed72333bbb5c943434c0 100755 (executable)
Binary files a/bin/SALOME_InstallWizard and b/bin/SALOME_InstallWizard differ
index c5905e1f7c411113f238203915bfe590ae162326..7387affdde4805b718625f062789de8a14213176 100644 (file)
@@ -1912,7 +1912,9 @@ void SALOME_InstallWizard::setPrerequisites( QCheckListItem* item )
   // get all prerequisites
   QStringList dependOn = productsMap[ item ].getDependancies();
   // install SALOME without GUI case
-  if ( installGuiBtn->state() != QButton::On && woGuiModules.contains( item->text(0) ) != 0 ) {
+  if ( installGuiBtn->state() != QButton::On && 
+       woGuiModules.find( item->text(0) ) != woGuiModules.end() && 
+       woGuiModules[item->text(0)] == True ) {
     dependOn.remove( "GUI" );
   }
   // setting prerequisites
@@ -1926,6 +1928,7 @@ void SALOME_InstallWizard::setPrerequisites( QCheckListItem* item )
          itProd.key()->setOn( true );
          itProd.key()->setEnabled( false );
        }
+       break;
       }
     }
   }
@@ -1976,6 +1979,7 @@ void SALOME_InstallWizard::unsetPrerequisites( QCheckListItem* item )
              for ( int k = 0; k < (int)prereqsList.count(); k++ ) {
                if ( prereqsList[ k ] == itProd1.data().getName() ) {
                  nbDependents++;
+                 break;
                }
              }
            }
@@ -1985,6 +1989,7 @@ void SALOME_InstallWizard::unsetPrerequisites( QCheckListItem* item )
            itProd1.key()->setOn( false );
          }
        }
+       break;
       }
     }
   }
@@ -2088,11 +2093,11 @@ void SALOME_InstallWizard::launchScript()
     // ... binaries directory
     shellProcess->addArgument( binDir );
     // ... install SALOME with GUI or not?
-    if ( woGuiModules.contains( prodProc ) != 0 ) {
-      if ( installGuiBtn->state() != QButton::On )
-       shellProcess->addArgument( "FALSE" );
-      else
-       shellProcess->addArgument( "TRUE" );
+    if ( installGuiBtn->state() != QButton::On ) {
+      if ( woGuiModules.find( prodProc ) != woGuiModules.end() )
+       woGuiModules[ prodProc ] == True ? 
+         shellProcess->addArgument( "FALSE" ) : 
+         shellProcess->addArgument( "TRUE" );
     }
     // ... single installation directory for SALOME modules, if this option was selected
     if ( oneModDirBtn->isChecked() ) {
@@ -2219,7 +2224,8 @@ void SALOME_InstallWizard::onInstallGuiBtn()
       }
       else {
        QString itemName = itProd.data().getName();
-       if ( woGuiModules.contains( itemName ) == 0 ) {
+       if ( woGuiModules.find( itemName ) == woGuiModules.end() || 
+            woGuiModules[ itemName ] == False ) {
          itProd.key()->setOn( false );
          itProd.key()->setEnabled( false );
        }
@@ -2467,13 +2473,13 @@ void SALOME_InstallWizard::pageChanged( const QString & mytitle)
       if ( tempFolder->text().isEmpty() )
        parser->setTempDir( tempFolder );
       parser->readXmlFile( xmlFileName );
-      // create a list of SALOME modules, that support installation without GUI mode
+      // create a map of SALOME modules names, that can support installation without GUI mode
       if ( woGuiModules.isEmpty() ) {
        MapProducts::Iterator mapIter;
        for ( mapIter = productsMap.begin(); mapIter != productsMap.end(); mapIter++ ) {
          Dependancies dep = mapIter.data();
-         if ( dep.supportWoGuiMode() )
-           woGuiModules.append( dep.getName() );
+         if ( dep.getType() == "component" && dep.supportWoGuiMode() != NotDefined )
+           woGuiModules[ dep.getName() ] = dep.supportWoGuiMode();
        }
       }
   
index 85eb75f90c820139c4782ffab3984c7656d0bf57..2c77abb013a000b3c52498aa94bbac1af6cba98a 100644 (file)
@@ -36,6 +36,8 @@ class QButtonGroup;
 
 // This enum describes the possible types of the SALOME installation
 enum InstallationType { Binaries, Sources, Compile };
+// This enum describes the possible states of a tristate parameter
+enum BoolTristate { False, True, NotDefined };
 
 /*! 
   Class Dependancies : Products info
@@ -57,7 +59,7 @@ class Dependancies
                 const QString&     descr = QString::null,
                 const QString&     tp = QString::null,
                 bool               pickup = false,
-               bool               woGui = false )
+               BoolTristate       woGui = NotDefined )
     : smbName( name ), 
       dependsOn( depend ), 
       sizeBinaryTotal( Binsize ), 
@@ -95,7 +97,7 @@ class Dependancies
   // returns true if this product needs to pick-up environment
   bool        pickUpEnvironment()     { return pickupEnv; }
   // returns true if this product supports installation without GUI mode
-  bool        supportWoGuiMode()      { return woGuiMode; }
+  BoolTristate supportWoGuiMode()     { return woGuiMode; }
 
  private:
   QString     smbName;           // symbolic name
@@ -108,7 +110,7 @@ class Dependancies
   QString     description;       // product's description
   QString     type;              // product's type (salome sources, binaries or prerequisite)
   bool        pickupEnv;        // "Pick-up environment" flag
-  bool        woGuiMode;         // support of installation without GUI flag
+  BoolTristate woGuiMode;        // support of installation without GUI flag
 };
 
 /*! 
@@ -147,6 +149,7 @@ class Button
 typedef QMap<QCheckListItem*, Dependancies> MapProducts;
 typedef QValueList<Button>                  ButtonList;
 typedef QMap<QString, QString>              MapXmlFiles;
+typedef QMap<QString, BoolTristate>         MapAttrStates;
 
 /*!
   Class SALOME_InstallWizard : Installation Wizard's main window
@@ -349,7 +352,7 @@ class SALOME_InstallWizard: public InstallWizard
   QStringList      toInstall;      // list of products being installed
   QStringList      notInstall;     // list of products being not installed
   QStringList      prodSequence;   // specified list of products being installed
-  QStringList      woGuiModules;   // list of SALOME modules, that support installation without GUI mode
+  MapAttrStates    woGuiModules;   // map of SALOME modules names, that can support installation without GUI mode
   InstallationType installType;    // type of the installation
   QString          curPlatform;    // current operating system
   QString          refPlatform;    // referenced operating system (selected by user). It is defined, 
index cddc6e80ecb546d6da5636e99da74cbb5989ed43..9d9ce1fbaaebf4f8a26f5909559f36d1a707b51a 100644 (file)
@@ -233,7 +233,7 @@ void StructureParser::getProductsInfo( const QDomNode &theNode )
       if ( instElem.attribute( "os" ) != myWizard->getPlatform() && instElem.attribute( "os" ) != "all" ) 
        continue;
       if ( isBoolAttributeSet( instElem.attribute( "disable" ) ) )
-       break; // current product is skip
+       break; // current product is skipped
       QDomElement prodElem = prodNode.toElement();
       
       QStringList diskspace = QStringList::split( ",", instElem.attribute( "installdiskspace" ) );
@@ -243,14 +243,18 @@ void StructureParser::getProductsInfo( const QDomNode &theNode )
       
       QString name = prodElem.attribute( "name" ).stripWhiteSpace();
       QString type = prodElem.attribute( "type" ).stripWhiteSpace().lower();
+      BoolTristate woGuiMode = NotDefined;
       bool pickUp = isBoolAttributeSet( instElem.attribute( "pickupenv" ) );
-      bool woGuiMode = isBoolAttributeSet( instElem.attribute( "woguimode" ) );
       QString script = instElem.attribute( "script" );
       QStringList typesList = QStringList::split( ",", type );
-      if ( typesList.find( "component" ) != typesList.end() )
+      if ( typesList.find( "component" ) != typesList.end() ) {
+       QString woGuiAttr = instElem.attribute( "woguimode" );
+       if ( !woGuiAttr.isNull() )
+         woGuiMode = BoolTristate( isBoolAttributeSet( woGuiAttr ) );
        element = myModules->addItem( name, 
                                      "unknown", 
                                      script );
+      }
       else
        element = myPrereqs->addItem( name,
                                      "unknown",