ASCII import dialog. Update preview when cell separator is modified

This commit is contained in:
Bjørn Erik Jensen 2017-11-27 11:35:00 +01:00
parent fb63647457
commit e53059e2c8
4 changed files with 36 additions and 25 deletions

View File

@ -89,6 +89,20 @@ RicPasteAsciiDataToSummaryPlotFeatureUi::CellSeparator mapCellSeparator(const QS
return RicPasteAsciiDataToSummaryPlotFeatureUi::CELL_TAB;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString mapCellSeparator(RicPasteAsciiDataToSummaryPlotFeatureUi::CellSeparator cellSep)
{
switch (cellSep)
{
case RicPasteAsciiDataToSummaryPlotFeatureUi::CELL_COMMA: return ",";
case RicPasteAsciiDataToSummaryPlotFeatureUi::CELL_SEMICOLON: return ";";
case RicPasteAsciiDataToSummaryPlotFeatureUi::CELL_TAB: return "\t";
}
return "";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -188,21 +202,7 @@ const AsciiDataParseOptions RicPasteAsciiDataToSummaryPlotFeatureUi::parseOption
parseOptions.timeSeriesColumnName = m_timeSeriesColumnName();
{
switch (m_cellSeparator())
{
case CELL_COMMA:
parseOptions.cellSeparator = ",";
break;
case CELL_SEMICOLON:
parseOptions.cellSeparator = ";";
break;
case CELL_TAB:
default:
parseOptions.cellSeparator = "\t";
break;
}
}
parseOptions.cellSeparator = mapCellSeparator(m_cellSeparator());
parseOptions.curveLineStyle = m_curveLineStyle();
parseOptions.curveSymbol = m_curveSymbol();
@ -318,6 +318,17 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::defineEditorAttribute(const caf::P
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicPasteAsciiDataToSummaryPlotFeatureUi::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if (changedField == &m_cellSeparator)
{
m_previewText = m_parser->previewText(PREVIEW_TEXT_LINE_COUNT, mapCellSeparator(m_cellSeparator()));
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -337,5 +348,5 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::initialize(RifCsvUserDataParser* p
m_timeSeriesColumnName = QString::fromStdString(parser->tableData().columnInfos()[0].summaryAddress.quantityName());
}
m_previewText = parser->previewText(PREVIEW_TEXT_LINE_COUNT);
m_previewText = parser->previewText(PREVIEW_TEXT_LINE_COUNT, cellSep);
}

View File

@ -126,6 +126,7 @@ protected:
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
private:
void initialize(RifCsvUserDataParser* parser);

View File

@ -97,7 +97,7 @@ bool RifCsvUserDataParser::parseColumnInfo(const QString& cellSeparator)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RifCsvUserDataParser::previewText(int lineCount)
QString RifCsvUserDataParser::previewText(int lineCount, const QString& cellSeparator)
{
QTextStream *stream = openDataStream();
@ -118,7 +118,7 @@ QString RifCsvUserDataParser::previewText(int lineCount)
iLine++;
}
closeDataStream();
return columnifyText(preview);
return columnifyText(preview, cellSeparator);
}
//--------------------------------------------------------------------------------------------------
@ -291,16 +291,15 @@ bool RifCsvUserDataParser::parseData(const AsciiDataParseOptions& parseOptions)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RifCsvUserDataParser::columnifyText(const QString& text)
QString RifCsvUserDataParser::columnifyText(const QString& text, const QString& cellSeparator)
{
QString pretty = text;
QString cellSep = tryDetermineCellSeparator();
if (!cellSep.isEmpty())
if (!cellSeparator.isEmpty())
{
if (cellSep == ";" || cellSep == ",")
if (cellSeparator == ";" || cellSeparator == ",")
{
pretty = pretty.replace(cellSep, QString("\t") + cellSep);
pretty = pretty.replace(cellSeparator, QString("\t") + cellSeparator);
}
}

View File

@ -48,7 +48,7 @@ public:
const ColumnInfo* columnInfo(size_t columnIndex) const;
bool parseColumnInfo(const QString& cellSeparator);
QString previewText(int lineCount);
QString previewText(int lineCount, const QString& cellSeparator);
QString tryDetermineCellSeparator();
@ -61,7 +61,7 @@ private:
const QString& cellSeparator,
std::vector<ColumnInfo>* columnInfoList);
bool parseData(const AsciiDataParseOptions& parseOptions);
QString columnifyText(const QString& text);
QString columnifyText(const QString& text, const QString& cellSeparator);
static QStringList splitLineAndTrim(const QString& line, const QString& separator);
static QDateTime tryParseDateTime(const std::string& colData, const QString& format);