// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- int QFilterParametersWriter::writeValue(const QString name, const DynamicTableData& v) { int err = 0; QString value = v.serializeData(','); int numRows = v.getNumRows(); int numCols = v.getNumCols(); QStringList rHeaders = v.getRowHeaders(); QStringList cHeaders = v.getColHeaders(); m_Prefs->beginWriteArray(name); m_Prefs->setArrayIndex(0); m_Prefs->setValue(name, value); m_Prefs->setArrayIndex(1); m_Prefs->setValue(name, rHeaders); m_Prefs->setArrayIndex(2); m_Prefs->setValue(name, numRows); m_Prefs->setArrayIndex(3); m_Prefs->setValue(name, numCols); m_Prefs->setArrayIndex(4); m_Prefs->setValue(name, cHeaders); m_Prefs->endArray(); return err; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- int H5FilterParametersWriter::writeValue(const QString name, const DynamicTableData& v) { int err = 0; QVector<double> flat = v.flattenData(); QString rHeaders = v.serializeRowHeaders('|'); QString cHeaders = v.serializeColumnHeaders('|'); QVector<hsize_t> dims(2); dims[0] = v.getNumRows(); dims[1] = v.getNumCols(); err = QH5Lite::writeStringAttribute(m_CurrentGroupId, name, "RowHeaders", rHeaders); if (err < 0) { return err; } err = QH5Lite::writeStringAttribute(m_CurrentGroupId, name, "ColHeaders", cHeaders); if (err < 0) { return err; } err = QH5Lite::writeVectorDataset(m_CurrentGroupId, name, dims, flat); return err; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void DynamicTableWidget::populateTable() { // Get what is in the filter DynamicTableData data = getFilter()->property(PROPERTY_NAME_AS_CHAR).value<DynamicTableData>(); if (m_FilterParameter != NULL) { // If the filter parameter generated an error, empty the data object and display the error. if (m_FilterParameter->getErrorCondition() < 0) { QString errorMessage = m_FilterParameter->getErrorMessage(); QString pluginName = getFilter()->getPluginInstance()->getPluginName(); QString filterName = getFilter()->getHumanLabel(); QString filterParameterName = m_FilterParameter->getPropertyName(); QString vendorName = getFilter()->getPluginInstance()->getVendor(); // Use HTML code in the error message, because this will be displayed in RichText format. errorMessage.prepend("The filter parameter '" + filterParameterName + "' in filter '" + filterName + "' has an error:<blockquote><b>"); errorMessage.append("</b></blockquote>'" + filterName + "' is a part of the " + pluginName + " plugin. "); errorMessage.append("Please contact " + vendorName + ", the developer of the " + pluginName + " plugin."); QMessageBox errorBox; errorBox.setIcon(QMessageBox::Critical); errorBox.setWindowTitle("'" + filterName + "' Error"); errorBox.setText(errorMessage); errorBox.setStandardButtons(QMessageBox::Ok); errorBox.setDefaultButton(QMessageBox::Ok); errorBox.setTextFormat(Qt::RichText); errorBox.exec(); } else if (data.isEmpty()) // If there was nothing in the filter, use the defaults { data.setTableData(m_FilterParameter->getDefaultTable()); data.setRowHeaders(m_FilterParameter->getRowHeaders()); data.setColHeaders(m_FilterParameter->getColumnHeaders()); // Populate table with default values for (int row = 0; row < data.getNumRows(); row++) { dynamicTable->insertRow(row); for (int col = 0; col < data.getNumCols(); col++) { if (dynamicTable->columnCount() == col) { dynamicTable->insertColumn(col); } QTableWidgetItem* item = new QTableWidgetItem(QString::number(data.getTableData()[row][col])); dynamicTable->setItem(row, col, item); } } } else { std::vector<std::vector<double> > tableData = data.getTableData(); // Populate table with filter values for (int row = 0; row < tableData.size(); row++) { dynamicTable->insertRow(row); for (int col = 0; col < tableData[row].size(); col++) { if (dynamicTable->columnCount() == col) { dynamicTable->insertColumn(col); } QTableWidgetItem* item = new QTableWidgetItem(QString::number(tableData[row][col])); dynamicTable->setItem(row, col, item); } } } // Populate row and column headers populateHeaders(data.getRowHeaders(), data.getColHeaders()); // Resize rows and columns to contents dynamicTable->resizeColumnsToContents(); dynamicTable->resizeRowsToContents(); // Update the state of the Add/Remove buttons updateDynamicButtons(); } }