Salome HOME
Fix a bug of config file for RedHat 9 - correct binaries distribution path
[tools/install.git] / src / SALOME_XmlHandler.cxx
index d4ec37de4e20a9c2fd47fe30c6b6ebb7693682cc..1372b7e77efeecaebd6ca9daeaddb94b14aa77e8 100644 (file)
@@ -1,10 +1,11 @@
 //  File      : SALOME_XmlHandler.cxx
 //  Created   : Thu Dec 18 12:01:00 2002
 //  Author    : Vadim SANDLER
-//  Project   : PAL/SALOME
-//  Module    : InstallWizard
-//  Copyright : 2004 CEA
-//  $Header$ 
+//  Project   : SALOME
+//  Module    : Installation Wizard
+//  Copyright : 2004-2005 CEA
+
+#include "globals.h"
 
 #include "SALOME_XmlHandler.hxx"
 #include "SALOME_ProductsView.hxx"
 
 #include <qlineedit.h>
 
+bool isBoolAttributeSet( const QString& attr ) {
+  return ( attr == "true" || attr == "yes" || attr == "ok" || ( !attr.stripWhiteSpace().isEmpty() && attr.toInt() != 0 ) );
+}
+
 // ================================================================
 /*!
  *  StructureParser::StructureParser
@@ -67,10 +72,8 @@ bool StructureParser::startElement( const QString&        /*namespaceURI*/,
                                     const QString&        qName,
                                     const QXmlAttributes& attributes)
 {
-#ifdef DEBUG
-  cout << qName << endl;
-  cout << attributes.length() << endl;
-#endif
+  ___MESSAGE___( qName );
+  ___MESSAGE___( attributes.length() );
   QCheckListItem* element;
   if (( qName == "config" ) && ( attributes.length() > 0 ) ) {
     QString myVersion, myCaption, myCopyright, myLicense, myOS;
@@ -101,47 +104,31 @@ bool StructureParser::startElement( const QString&        /*namespaceURI*/,
     }
   } 
   else if (( qName == "product" ) && ( attributes.length() > 0 ) && myTree && myWizard ) {
-    if (attributes.value( "disable" ) == "true" )
+    if ( isBoolAttributeSet( attributes.value( "disable" ) ) )
       return true;
     
     QString install = attributes.value( "install" );
     QStringList supported = QStringList::split( ",", attributes.value( "supported" ) );
     QString script = attributes.value( "script" );
+    QStringList deps = QStringList();
+    if ( attributes.value( "dependancies" ) != "" )
+      deps = QStringList::split( ",", attributes.value( "dependancies" ), false );
     element = myTree->addItem( attributes.value( "name" ), attributes.value( "version" ), install, supported, script );
-    if ( attributes.value( "dependancies" ) == "" ) {
-      QStringList diskspace = QStringList::split( ",",attributes.value( "installdiskspace" ) );
-      if (diskspace.count() == 2)
-       myWizard->setDependancies( element, 
-                                  Dependancies( attributes.value( "name" ), QStringList(), 
-                                                diskspace[0].toInt(), 
-                                                diskspace[1].toInt(), 
-                                                attributes.value( "temporarydiskspace" ).toInt() ) );
-      else
-       myWizard->setDependancies( element, 
-                                  Dependancies( attributes.value( "name" ), QStringList(), 
-                                                diskspace[0].toInt(), 
-                                                diskspace[0].toInt(), 
-                                                attributes.value( "temporarydiskspace" ).toInt() ) );
-
-    } 
-    else {
-      QStringList diskspace = QStringList::split(",",attributes.value( "installdiskspace" ) );
-      if (diskspace.count() == 2)
-       myWizard->setDependancies( element, 
-                                  Dependancies( attributes.value( "name" ), 
-                                                QStringList::split( ",", attributes.value( "dependancies" ) ), 
-                                                diskspace[0].toInt(), 
-                                                diskspace[1].toInt(), 
-                                                attributes.value( "temporarydiskspace" ).toInt() ) );
-      else
-       myWizard->setDependancies( element, 
-                                  Dependancies( attributes.value( "name" ), 
-                                                QStringList::split( ",", attributes.value( "dependancies" ) ), 
-                                                diskspace[0].toInt(), 
-                                                diskspace[0].toInt(),
-                                                attributes.value( "temporarydiskspace" ).toInt() ) );
-    }
-  } 
+    QStringList diskspace = QStringList::split(",",attributes.value( "installdiskspace" ) );
+    QString descr = QString::null;
+    if ( attributes.value( "description" ) != "" )
+      descr = attributes.value( "description" ).stripWhiteSpace();
+    bool pickUp = isBoolAttributeSet( attributes.value( "pickupenv" ) );
+    myWizard->setDependancies( element, 
+                              Dependancies( attributes.value( "name" ), 
+                                            deps,
+                                            ( diskspace.count() > 0 ? diskspace[ 0 ].toInt() : 0 ), 
+                                            ( diskspace.count() > 1 ? diskspace[1].toInt() : ( diskspace.count() > 0 ? diskspace[0].toInt() : 0 ) ), 
+                                            attributes.value( "temporarydiskspace" ).toInt(),
+                                            install,
+                                            descr,
+                                            pickUp ) );
+  }
   else if (( qName == "path" ) && ( attributes.length() > 0 ) && myWizard ) {
     if ( myTargetDir )
       myTargetDir->setText( attributes.value( "targetdir" ) );