[SCM] massXpert mass spectrometry suite: debian packaging branch, upstream, updated. 41a70205093791df401b34b6867e830c5a46d1f9

Filippo Rusconi rusconi at mnhn.fr
Wed Apr 15 15:42:55 UTC 2009


The following commit has been merged in the upstream branch:
commit ea089372c40d305b06af8f160e1d65b818160f01
Author: Filippo Rusconi <rusconi at mnhn.fr>
Date:   Wed Apr 15 15:21:32 2009 +0200

    Fixed bug due to not taking into account the locale
    while making textual mass lists starting from oligomer items in treeviews.

diff --git a/gui/cleaveOligomerTreeView.cpp b/gui/cleaveOligomerTreeView.cpp
index c5f58b2..d6f8eec 100644
--- a/gui/cleaveOligomerTreeView.cpp
+++ b/gui/cleaveOligomerTreeView.cpp
@@ -436,55 +436,58 @@ namespace massXpert
       static_cast<CleaveOligomerTreeViewModel *>(model());
     Q_ASSERT(treeModel);
   
+    int columnIndex = 0;
+    
+    if(monoOrAvg == MXT_MASS_MONO)
+      columnIndex = CLEAVE_OLIGO_MONO_COLUMN;
+    else if (monoOrAvg == MXT_MASS_AVG)
+      columnIndex = CLEAVE_OLIGO_AVG_COLUMN;
+    else
+      qFatal("Fatal error at %s@%d. Program aborted.",
+	     __FILE__, __LINE__);
+    
     int rowCount = treeModel->rowCount();
     if (!rowCount)
       return;
   
-    // Iterate in each partial cleavage node of the main tree, and for
-    // each such node, iterate in the different oligomers of that
-    // specific partial cleavage node.
-
     for (int iter = 0; iter < rowCount; ++iter)
       {
-	QModelIndex oligomerIndex = 
-	  treeModel->index(iter, CLEAVE_OLIGO_PARTIAL_COLUMN, QModelIndex());
-	Q_ASSERT(oligomerIndex.isValid());
+	QModelIndex oligomerIndex =
+	  treeModel->index(iter, columnIndex, QModelIndex());
 
-	if(monoOrAvg == MXT_MASS_MONO)
-	  {
-	    oligomerIndex =
-	      treeModel->index(iter, CLEAVE_OLIGO_MONO_COLUMN, 
-				QModelIndex());
-	    Q_ASSERT(oligomerIndex.isValid());
-	  
-	    double value = treeModel->data(oligomerIndex, 
-					    Qt::DisplayRole).toDouble();
-	      
-	    massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
-	    massList += "\n";
-	  }
-	else if (monoOrAvg == MXT_MASS_AVG)
-	  {
-	    QModelIndex oligomerIndex =
-	      treeModel->index(iter, CLEAVE_OLIGO_AVG_COLUMN, 
-				QModelIndex());
-	    Q_ASSERT(oligomerIndex.isValid());
-	      
-	    double value = treeModel->data(oligomerIndex, 
-					    Qt::DisplayRole).toDouble();
-	      
-	    massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
-	    massList += "\n";
-	  }
-	else
-	  Q_ASSERT(0);
+	if (!oligomerIndex.isValid())
+	  qFatal("Fatal error at %s@%d. Program aborted.",
+		 __FILE__, __LINE__);
+
+	
+	// We have to make sure we translate correctly from
+	// locale-based textual representation of double numbers
+	// to real double numbers.
+	
+	bool ok = false;
+	
+	QString valueString = 
+	  treeModel->data(oligomerIndex, Qt::DisplayRole).toString();
+	
+	double value = 
+	  locale.toDouble(valueString, &ok);
+	
+	if (!value && !ok)
+	  qFatal("Fatal error at %s@%d. Program aborted.",
+		 __FILE__, __LINE__);
+	
+	// double value = treeModel->data(oligomerIndex, 
+	// 			    Qt::DisplayRole).toDouble();
+	
+	massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
+	massList += "\n";
       }
-  
+    
     if (massList.isEmpty())
       return;
-  
+    
     QClipboard *clipboard = QApplication::clipboard();
-  
+    
     clipboard->setText(massList, QClipboard::Clipboard);
   }
 
diff --git a/gui/fragmentOligomerTreeView.cpp b/gui/fragmentOligomerTreeView.cpp
index c239305..ebf2a65 100644
--- a/gui/fragmentOligomerTreeView.cpp
+++ b/gui/fragmentOligomerTreeView.cpp
@@ -402,57 +402,50 @@ namespace massXpert
       static_cast<FragmentOligomerTreeViewModel *>(model());
     Q_ASSERT(treeModel);
   
+    int columnIndex = 0;
+    
+    if(monoOrAvg == MXT_MASS_MONO)
+      columnIndex = FRAG_OLIGO_MONO_COLUMN;
+    else if (monoOrAvg == MXT_MASS_AVG)
+      columnIndex = FRAG_OLIGO_AVG_COLUMN;
+    else
+      qFatal("Fatal error at %s@%d. Program aborted.",
+	     __FILE__, __LINE__);
+    
     int rowCount = treeModel->rowCount();
     if (!rowCount)
       return;
   
-    // Iterate in each fragmentation pattern node of the main tree, and for
-    // each such node, iterate in the different oligomers of that
-    // specific fragmentation pattern node.
-
-    //     OLIGOMER_PATTERN_COLUMN,
-    //     OLIGOMER_NAME_COLUMN,
-    //     OLIGOMER_COORDINATES_COLUMN,
-    //     OLIGOMER_MONO_COLUMN,
-    //     OLIGOMER_AVG_COLUMN,
-    //     OLIGOMER_MODIF_COLUMN,
-    //     OLIGOMER_TOTAL_COLUMNS
-
-
     for (int iter = 0; iter < rowCount; ++iter)
       {
-	QModelIndex oligomerIndex = 
-	  treeModel->index(iter, FRAG_OLIGO_PATTERN_COLUMN, QModelIndex());
-	Q_ASSERT(oligomerIndex.isValid());
-      
-	if(monoOrAvg == MXT_MASS_MONO)
-	  {
-	    QModelIndex oligomerIndex =
-	      treeModel->index(iter, FRAG_OLIGO_MONO_COLUMN, 
-				QModelIndex());
-	    Q_ASSERT(oligomerIndex.isValid());
-	  
-	    double value = treeModel->data(oligomerIndex, 
-					    Qt::DisplayRole).toDouble();
-	      
-	    massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
-	    massList += "\n";
-	  }
-	else if (monoOrAvg == MXT_MASS_AVG)
-	  {
-	    QModelIndex oligomerIndex =
-	      treeModel->index(iter, FRAG_OLIGO_AVG_COLUMN, 
-				QModelIndex());
-	    Q_ASSERT(oligomerIndex.isValid());
-	      
-	    double value = treeModel->data(oligomerIndex, 
-					    Qt::DisplayRole).toDouble();
-	      
-	    massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
-	    massList += "\n";
-	  }
-	else
-	  Q_ASSERT(0);
+	QModelIndex oligomerIndex =
+	  treeModel->index(iter, columnIndex, QModelIndex());
+
+	if (!oligomerIndex.isValid())
+	  qFatal("Fatal error at %s@%d. Program aborted.",
+		 __FILE__, __LINE__);
+	
+	// We have to make sure we translate correctly from
+	// locale-based textual representation of double numbers
+	// to real double numbers.
+	
+	bool ok = false;
+	
+	QString valueString = 
+	  treeModel->data(oligomerIndex, Qt::DisplayRole).toString();
+	
+	double value = 
+	  locale.toDouble(valueString, &ok);
+	
+	if (!value && !ok)
+	  qFatal("Fatal error at %s@%d. Program aborted.",
+		 __FILE__, __LINE__);
+	
+	// double value = treeModel->data(oligomerIndex, 
+	// 			    Qt::DisplayRole).toDouble();
+	
+	massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
+	massList += "\n";
       }
   
     if (massList.isEmpty())
diff --git a/gui/massSearchOligomerTreeView.cpp b/gui/massSearchOligomerTreeView.cpp
index 83a6834..e113130 100644
--- a/gui/massSearchOligomerTreeView.cpp
+++ b/gui/massSearchOligomerTreeView.cpp
@@ -428,38 +428,50 @@ namespace massXpert
       static_cast<MassSearchOligomerTreeViewModel *>(model());
     Q_ASSERT(treeModel);
   
-    int oligomerRowCount = treeModel->rowCount();
+    int columnIndex = 0;
+    
+    if(monoOrAvg == MXT_MASS_MONO)
+      columnIndex = MASS_SEARCH_OLIGO_MONO_COLUMN;
+    else if (monoOrAvg == MXT_MASS_AVG)
+      columnIndex = MASS_SEARCH_OLIGO_AVG_COLUMN;
+    else
+      qFatal("Fatal error at %s@%d. Program aborted.",
+	     __FILE__, __LINE__);
+    
+    int rowCount = treeModel->rowCount();
+    if (!rowCount)
+      return;
   
-    for (int iter = 0 ; iter < oligomerRowCount; ++iter)
+    for (int iter = 0 ; iter < rowCount; ++iter)
       {
-	if(monoOrAvg == MXT_MASS_MONO)
-	  {
-	    QModelIndex oligomerIndex =
-	      treeModel->index(iter, MASS_SEARCH_OLIGO_MONO_COLUMN,
-				QModelIndex());
-	    Q_ASSERT(oligomerIndex.isValid());
-	      
-	    double value = treeModel->data(oligomerIndex, 
-					    Qt::DisplayRole).toDouble();
-	  
-	    massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
-	    massList += "\n";
-	  }
-	else if (monoOrAvg == MXT_MASS_AVG)
-	  {
-	    QModelIndex oligomerIndex =
-	      treeModel->index(iter, MASS_SEARCH_OLIGO_AVG_COLUMN,
-				QModelIndex());
-	    Q_ASSERT(oligomerIndex.isValid());
-	      
-	    double value = treeModel->data(oligomerIndex, 
-					    Qt::DisplayRole).toDouble();
-	  
-	    massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
-	    massList += "\n";
-	  }
-	else
-	  Q_ASSERT(0);
+	QModelIndex oligomerIndex =
+	  treeModel->index(iter, columnIndex, QModelIndex());
+	
+	if (!oligomerIndex.isValid())
+	  qFatal("Fatal error at %s@%d. Program aborted.",
+		 __FILE__, __LINE__);
+	
+	// We have to make sure we translate correctly from
+	// locale-based textual representation of double numbers
+	// to real double numbers.
+	
+	bool ok = false;
+	
+	QString valueString = 
+	  treeModel->data(oligomerIndex, Qt::DisplayRole).toString();
+	
+	double value = 
+	  locale.toDouble(valueString, &ok);
+	
+	if (!value && !ok)
+	  qFatal("Fatal error at %s@%d. Program aborted.",
+		 __FILE__, __LINE__);
+	
+	// double value = treeModel->data(oligomerIndex, 
+	// 			    Qt::DisplayRole).toDouble();
+	
+	massList += locale.toString(value, 'f', MXP_OLIGOMER_DEC_PLACES);
+	massList += "\n";
       }
   
     if (massList.isEmpty())

-- 
massXpert mass spectrometry suite: debian packaging



More information about the debian-science-commits mailing list