diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/DataComparison.h b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/DataComparison.h
index 4f139d634949..22529f53a735 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/DataComparison.h
+++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/DataComparison.h
@@ -45,6 +45,15 @@ namespace CustomInterfaces
void clearDiff();
private:
+ /// Enumeration for column index
+ enum Column
+ {
+ COLOUR,
+ WORKSPACE_NAME,
+ SPEC_OFFSET,
+ CURRENT_SPEC
+ };
+
/// Initialize the layout
virtual void initLayout();
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/DataComparison.ui b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/DataComparison.ui
index 847ba07a6021..b85a52b3ca89 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/DataComparison.ui
+++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/DataComparison.ui
@@ -78,9 +78,6 @@
0
-
- 3
-
-
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp
index fd834c0657e4..0dd99ac7fc7b 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp
+++ b/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp
@@ -53,9 +53,13 @@ void DataComparison::initLayout()
connect(m_uiForm.pbDiffSelected, SIGNAL(clicked()), this, SLOT(diffSelected()));
connect(m_uiForm.pbClearDiff, SIGNAL(clicked()), this, SLOT(clearDiff()));
+ // Replot spectra when the spectrum index is changed
+ connect(m_uiForm.sbSpectrum, SIGNAL(currentIndexChanged(int)), this, SLOT(plotWorkspaces()));
+
// Add headers to data table
QStringList headerLabels;
- headerLabels << "Workspace" << "Offset" << "Colour";
+ headerLabels << "Colour" << "Workspace" << "Offset" << "Spec.";
+ m_uiForm.twCurrentData->setColumnCount(headerLabels.size());
m_uiForm.twCurrentData->setHorizontalHeaderLabels(headerLabels);
// Select entire rows when a cell is selected
@@ -80,12 +84,22 @@ void DataComparison::addData()
// Insert the workspace name
QTableWidgetItem *wsNameItem = new QTableWidgetItem(tr(dataName));
wsNameItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- m_uiForm.twCurrentData->setItem(currentRows, 0, wsNameItem);
+ m_uiForm.twCurrentData->setItem(currentRows, WORKSPACE_NAME, wsNameItem);
+
+ // Insert the colour
+ QTableWidgetItem *colourItem = new QTableWidgetItem(tr(""));
+ colourItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+ m_uiForm.twCurrentData->setItem(currentRows, COLOUR, colourItem);
// Insert the spectra offset
QTableWidgetItem *offsetItem = new QTableWidgetItem(tr("0"));
offsetItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
- m_uiForm.twCurrentData->setItem(currentRows, 1, offsetItem);
+ m_uiForm.twCurrentData->setItem(currentRows, SPEC_OFFSET, offsetItem);
+
+ // Insert the current displayed spectra
+ QTableWidgetItem *currentSpecItem = new QTableWidgetItem(tr(""));
+ currentSpecItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+ m_uiForm.twCurrentData->setItem(currentRows, CURRENT_SPEC, currentSpecItem);
// Fit columns
m_uiForm.twCurrentData->resizeColumnsToContents();
@@ -100,12 +114,15 @@ void DataComparison::addData()
*/
void DataComparison::removeSelectedData()
{
- QList items = m_uiForm.twCurrentData->selectedItems();
- for(auto it = items.begin(); it != items.end(); ++it)
+ QList selectedItems = m_uiForm.twCurrentData->selectedItems();
+
+ while(!selectedItems.isEmpty())
{
+ // Get the row number of the item
+ int row = selectedItems[0]->row();
+
// Get workspace name
- int row = m_uiForm.twCurrentData->row(*it);
- QString workspaceName = m_uiForm.twCurrentData->item(row, 0)->text();
+ QString workspaceName = m_uiForm.twCurrentData->item(row, WORKSPACE_NAME)->text();
// Remove from data tabel
m_uiForm.twCurrentData->removeRow(row);
@@ -114,9 +131,11 @@ void DataComparison::removeSelectedData()
if(m_curves.contains(workspaceName))
m_curves[workspaceName]->attach(NULL);
- // Replot the workspaces
- plotWorkspaces();
+ selectedItems = m_uiForm.twCurrentData->selectedItems();
}
+
+ // Replot the workspaces
+ plotWorkspaces();
}
@@ -129,7 +148,7 @@ void DataComparison::removeAllData()
for(int row = 0; row < numRows; row++)
{
// Get workspace name
- QString workspaceName = m_uiForm.twCurrentData->item(0, 0)->text();
+ QString workspaceName = m_uiForm.twCurrentData->item(0, WORKSPACE_NAME)->text();
// Remove from data tabel
m_uiForm.twCurrentData->removeRow(0);
@@ -155,7 +174,7 @@ void DataComparison::plotWorkspaces()
int specIndex = 0; //TODO
// Get workspace
- QString workspaceName = m_uiForm.twCurrentData->item(row, 0)->text();
+ QString workspaceName = m_uiForm.twCurrentData->item(row, WORKSPACE_NAME)->text();
MatrixWorkspace_const_sptr workspace =
AnalysisDataService::Instance().retrieveWS(workspaceName.toStdString());