/** * Determines if a given workspace is currently shown in the UI. * * @param ws Pointer to the workspace */ bool DataComparison::containsWorkspace(MatrixWorkspace_const_sptr ws) { QString testWsName = QString::fromStdString(ws->name()); int numRows = m_uiForm.twCurrentData->rowCount(); for(int row = 0; row < numRows; row++) { QString workspaceName = m_uiForm.twCurrentData->item(row, WORKSPACE_NAME)->text(); if(workspaceName == testWsName) return true; } return false; }
/** * Adds a MatrixWorkspace by name to the data table. * * @param ws Pointer to workspace to add. */ void DataComparison::addDataItem(Workspace_const_sptr ws) { // Check that the workspace is the correct type MatrixWorkspace_const_sptr matrixWs = boost::dynamic_pointer_cast<const MatrixWorkspace>(ws); if(!matrixWs) { g_log.error() << "Workspace " << ws->name() << "is of incorrect type!" << std::endl; return; } // Check that the workspace does not already exist in the comparison if(containsWorkspace(matrixWs)) { g_log.information() << "Workspace " << matrixWs->name() << " already shown in comparison." << std::endl; return; } QString wsName = QString::fromStdString(matrixWs->name()); // Append a new row to the data table int currentRows = m_uiForm.twCurrentData->rowCount(); m_uiForm.twCurrentData->insertRow(currentRows); // Insert the colour selector QComboBox *colourCombo = new QComboBox(); // Add colours colourCombo->addItem("Black", QVariant(Qt::black)); colourCombo->addItem("Red", QVariant(Qt::red)); colourCombo->addItem("Green", QVariant(Qt::green)); colourCombo->addItem("Blue", QVariant(Qt::blue)); colourCombo->addItem("Cyan", QVariant(Qt::cyan)); colourCombo->addItem("Magenta", QVariant(Qt::magenta)); colourCombo->addItem("Yellow", QVariant(Qt::yellow)); colourCombo->addItem("Light Gray", QVariant(Qt::lightGray)); colourCombo->addItem("Gray", QVariant(Qt::gray)); colourCombo->addItem("Dark Red", QVariant(Qt::darkRed)); colourCombo->addItem("Dark Green", QVariant(Qt::darkGreen)); colourCombo->addItem("Dark Blue", QVariant(Qt::darkBlue)); colourCombo->addItem("Dark Cyan", QVariant(Qt::darkCyan)); colourCombo->addItem("Dark Magenta", QVariant(Qt::darkMagenta)); colourCombo->addItem("Dark Yellow", QVariant(Qt::darkYellow)); colourCombo->addItem("Dark Gray", QVariant(Qt::darkGray)); // Set the initial colour colourCombo->setCurrentIndex(getInitialColourIndex()); // Update plots when colour changed connect(colourCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(plotWorkspaces())); // Add widget to table m_uiForm.twCurrentData->setCellWidget(currentRows, COLOUR, colourCombo); // Insert the workspace name QTableWidgetItem *wsNameItem = new QTableWidgetItem(tr(wsName)); wsNameItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); m_uiForm.twCurrentData->setItem(currentRows, WORKSPACE_NAME, wsNameItem); // Insert the spectra offset QSpinBox *offsetSpin = new QSpinBox(); offsetSpin->setMinimum(0); offsetSpin->setMaximum(INT_MAX); connect(offsetSpin, SIGNAL(valueChanged(int)), this, SLOT(spectrumIndexChanged())); m_uiForm.twCurrentData->setCellWidget(currentRows, SPEC_OFFSET, offsetSpin); // Insert the current displayed spectra QTableWidgetItem *currentSpecItem = new QTableWidgetItem(tr("n/a")); currentSpecItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); m_uiForm.twCurrentData->setItem(currentRows, CURRENT_SPEC, currentSpecItem); }