]> SALOME platform Git repositories - tools/install.git/commitdiff
Salome HOME
Add description tag support
authorvsr <vsr@opencascade.com>
Fri, 19 Mar 2004 15:37:29 +0000 (15:37 +0000)
committervsr <vsr@opencascade.com>
Fri, 19 Mar 2004 15:37:29 +0000 (15:37 +0000)
Improve prerequisite dependanicies check mechanizm

src/SALOME_InstallWizard.cxx
src/SALOME_InstallWizard.hxx
src/SALOME_ProductsView.cxx
src/SALOME_XmlHandler.cxx

index a0f3de5f34c01722b89a3a45048aec9019db0f4f..c90dffe43c8de5751e7eeb521681fc881ede38d3 100644 (file)
@@ -1041,29 +1041,35 @@ void SALOME_InstallWizard::checkProductPage()
 }
 // ================================================================
 /*!
- *  SALOME_InstallWizard::setProductOn
+ *  SALOME_InstallWizard::setPrerequisites
  *  Sets the product and all products this one depends on to be checked ( recursively )
  */
 // ================================================================
-void SALOME_InstallWizard::setProductOn( QCheckListItem* item, int install )
+void SALOME_InstallWizard::setPrerequisites( QCheckListItem* item )
 {
   if ( !productsMap.contains( item ) )
     return;
-  if ( productsView->isNone( item ) ) {
-    if ( install == 1 )
-      productsView->setBinaries( item );
-    else if ( install == 0 )
-      productsView->setSources( item );
-    else if ( install == 2 )
-      productsView->setNative( item );
-  }
+  if ( productsView->isNone( item ) )
+    return;
   // get all prerequisites
   QStringList dependOn = productsMap[ item ].getDependancies();
   for ( int i = 0; i < (int)dependOn.count(); i++ ) {
     MapProducts::Iterator itProd;
     for ( itProd = productsMap.begin(); itProd != productsMap.end(); ++itProd ) {
-      if ( itProd.data().getName() == dependOn[ i ] )
-        setProductOn( itProd.key(), 1 );
+      if ( itProd.data().getName() == dependOn[ i ] ) {
+       if ( productsView->isNone( itProd.key() ) ) {
+         QString defMode = itProd.data().getDefault();
+         if ( defMode.isEmpty() )
+           defMode = tr( "install binaries" );
+         if ( defMode == tr( "install binaries" ) )
+           productsView->setBinaries( itProd.key() );
+         else if ( defMode == tr( "install sources" ) )
+           productsView->setSources( itProd.key() );
+         else if ( defMode == tr( "use native" ) )
+           productsView->setNative( itProd.key() );
+         setPrerequisites( itProd.key() );
+       }
+      }
     }
   }
 }
@@ -1636,6 +1642,9 @@ void SALOME_InstallWizard::onSelectionChanged()
   if ( !aItem->text(1).stripWhiteSpace().isEmpty() )
     text += tr( "Version" ) + ": " + aItem->text(1) + "<br>";
   text += "<br>";
+  if ( !dep.getDescription().isEmpty() ) {
+    text += "<i>" + dep.getDescription() + "</i><br><br>";
+  }
   text += tr( "User choice" ) + ": ";
   long totSize = 0, tempSize = 0;
   if ( productsView->isBinaries( aItem ) ) {
@@ -1675,12 +1684,7 @@ void SALOME_InstallWizard::onItemToggled( QCheckListItem* item )
       item = (QCheckListItem*)( item->parent() );
     if ( productsMap.contains( item ) ) {
       productsView->blockSignals( true );
-      if ( productsView->isNative( item ) )
-       setProductOn( item, 2 );
-      else if ( productsView->isBinaries( item ) )
-       setProductOn( item, 1 );
-      else if ( productsView->isSources( item ) )
-       setProductOn( item, 0 );
+      setPrerequisites( item );
       productsView->blockSignals( false );
     }
   }
index ca5d313804767898c5cde7356b62a163841723fd..6c43088d7711e2b77aa19d9571b22fe467f08ec2 100644 (file)
@@ -30,22 +30,33 @@ class Dependancies
   // default constructor, necessary for map
   Dependancies() {}
   // constructor
-  Dependancies( const QString& name, const QStringList& depend, const long Binsize,  const long Sourcessize, const long tempsize )
-    : smbName( name ), dependsOn( depend ), sizeSourcesTotal( Sourcessize ), sizeBinaryTotal( Binsize ), sizeTemp( tempsize ) {}
+  Dependancies( const QString&     name, 
+                const QStringList& depend, 
+                const long         Binsize,  
+                const long         Sourcessize, 
+                const long         tempsize, 
+                const QString&     def = QString::null,
+                const QString&     descr = QString::null )
+    : smbName( name ), 
+      dependsOn( depend ), 
+      sizeSourcesTotal( Sourcessize ), 
+      sizeBinaryTotal( Binsize ), 
+      sizeTemp( tempsize ),
+      defaultMode( def ),
+      description( descr ) {}
 
   // gets symbolic name
   QString     getName() const         { return smbName;   }
   // gets dependancies
   QStringList getDependancies() const { return dependsOn; }
   // gets disk space required
-  long        getSize(bool sources = false) const         { 
-    if (sources) 
-      return sizeSourcesTotal;
-    else
-      return sizeBinaryTotal;
-  }
+  long        getSize(bool sources = false) const { return ( sources ? sizeSourcesTotal : sizeBinaryTotal ); }
   // gets temporary disk space required
-  long        getTempSize() const     { return sizeTemp;  }
+  long        getTempSize() const     { return sizeTemp;   }
+  // gets product's description
+  QString     getDescription() const  { return description; }
+  // gets default mode
+  QString     getDefault() const      { return defaultMode; }
 
  private:
   QString     smbName;          // symbolic name
@@ -53,6 +64,8 @@ class Dependancies
   long        sizeSourcesTotal; // disk space required
   long        sizeBinaryTotal;  // disk space required
   long        sizeTemp;         // disk space for temporary files required
+  QString     defaultMode;      // default installation mode
+  QString     description;      // product's description
 };
 
 class QLineEdit;
@@ -145,7 +158,7 @@ class SALOME_InstallWizard: public InstallWizard
   // checks products page validity (directories and products selection)
   void checkProductPage();
   // sets the product and all products this one depends on to be checked ( recursively )
-  void setProductOn( QCheckListItem* item, int install = 1 );
+  void setPrerequisites( QCheckListItem* item );
   // runs installation script
   void launchScript(); 
   // searches product listview item with given symbolic name 
index 5d38dff1ba5851114a0f9ba3617b4ad8dc9d557d..51e64bbb9382308a8c0c42124feaaffa1e892796 100644 (file)
@@ -211,10 +211,10 @@ void ProductsView::setBinaries( QCheckListItem* item ) {
       }
       subItem = (QCheckListItem*)( subItem->nextSibling() );
     }
-    if ( srcItem )
-      srcItem->setOn( true );
-    if ( nativeItem )
+    if ( nativeItem )           // prefer native item
       nativeItem->setOn( true );
+    else if ( srcItem )
+      srcItem->setOn( true );
   }
   else {
     item->setOn( true );
@@ -231,16 +231,21 @@ void ProductsView::setSources( QCheckListItem* item )  {
   if ( item->childCount() > 0 ) {
     QCheckListItem* subItem = (QCheckListItem*)( item->firstChild() );
     QCheckListItem* binItem = 0;
+    QCheckListItem* nativeItem = 0;
     while( subItem ) {
       if ( subItem->text() == tr( "install binaries" ) )
        binItem = binItem;
+      if ( subItem->text() == tr( "use native" ) )
+       nativeItem = subItem;
       if ( subItem->text() == tr( "install sources" ) ) {
        subItem->setOn( true );
        return;
       }
       subItem = (QCheckListItem*)( subItem->nextSibling() );
     }
-    if ( binItem )
+    if ( nativeItem )           // prefer native item
+      nativeItem->setOn( true );
+    else if ( binItem )
       binItem->setOn( true );
   }
   else {
@@ -258,17 +263,22 @@ void ProductsView::setNative( QCheckListItem* item )  {
   if ( item->childCount() > 0 ) {
     QCheckListItem* subItem = (QCheckListItem*)( item->firstChild() );
     QCheckListItem* binItem = 0;
+    QCheckListItem* srcItem = 0;
     while( subItem ) {
       if ( subItem->text() == tr( "install binaries" ) )
        binItem = binItem;
+      if ( subItem->text() == tr( "install sources" ) )
+       srcItem = subItem;
       if ( subItem->text() == tr( "use native" ) ) {
        subItem->setOn( true );
        return;
       }
       subItem = (QCheckListItem*)( subItem->nextSibling() );
     }
-    if ( binItem )
+    if ( binItem )            // prefer binaries
       binItem->setOn( true );
+    else if ( srcItem )
+      srcItem->setOn( true );
   }
   else {
     item->setOn( true );
index d4ec37de4e20a9c2fd47fe30c6b6ebb7693682cc..9ea21ed587a86b8bf25a2035426881bb8aa79325 100644 (file)
@@ -107,41 +107,23 @@ bool StructureParser::startElement( const QString&        /*namespaceURI*/,
     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();
+    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 ) );
+  }
   else if (( qName == "path" ) && ( attributes.length() > 0 ) && myWizard ) {
     if ( myTargetDir )
       myTargetDir->setText( attributes.value( "targetdir" ) );