Ejemplo n.º 1
0
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
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;
}
Ejemplo n.º 3
0
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
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();
  }
}