Skip to content

Commit

Permalink
use plain delimiter if one delimiter only was selected (partially fix #…
Browse files Browse the repository at this point in the history
  • Loading branch information
brushtyler committed Oct 29, 2012
1 parent 7e02f21 commit 230bbfb
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 17 deletions.
43 changes: 27 additions & 16 deletions src/providers/delimitedtext/qgsdelimitedtextsourceselect.cpp
Expand Up @@ -166,7 +166,7 @@ void QgsDelimitedTextSourceSelect::on_buttonBox_accepted()
settings.setValue( key + "/delimiterType", "plain" );
else
settings.setValue( key + "/delimiterType", "regexp" );
settings.setValue( key + "/delimiterChars", selectedChars() );
settings.setValue( key + "/delimiterChars", selectedChars().join( "" ) );

accept();
}
Expand All @@ -181,37 +181,50 @@ void QgsDelimitedTextSourceSelect::on_buttonBox_rejected()
reject();
}

QString QgsDelimitedTextSourceSelect::selectedChars()
QStringList QgsDelimitedTextSourceSelect::selectedChars()
{
QString chars = "";
QStringList chars;
if ( cbxDelimSpace->isChecked() )
chars += " ";
chars << " ";
if ( cbxDelimTab->isChecked() )
chars += "\\t";
chars << "\\t";
if ( cbxDelimSemicolon->isChecked() )
chars += ";";
chars << ";";
if ( cbxDelimComma->isChecked() )
chars += ",";
chars << ",";
if ( cbxDelimColon->isChecked() )
chars += ":";
chars << ":";
return chars;
}

QStringList QgsDelimitedTextSourceSelect::splitLine( QString line )
{
QString delimiter = txtDelimiter->text();
QString delimiter;
if ( delimiterSelection->isChecked() )
{
if ( selectedChars().size() > 1 )
{
delimiter = "[" + selectedChars().join( "" ) + "]";
}
else
{
delimiter = selectedChars().join( "" );
}
txtDelimiter->setText( delimiter );
}
else
{
delimiter = txtDelimiter->text();
}

if ( delimiterPlain->isChecked() )
{
return QgsDelimitedTextProvider::splitLine( line, "plain", delimiter );
}

if ( delimiterSelection->isChecked() )
if ( delimiterSelection->isChecked() && selectedChars().size() <= 1 )
{
delimiter = "[";
delimiter += selectedChars();
delimiter += "]";
txtDelimiter->setText( delimiter );
return QgsDelimitedTextProvider::splitLine( line, "plain", delimiter );
}

return QgsDelimitedTextProvider::splitLine( line, "regexp", delimiter );
Expand Down Expand Up @@ -291,8 +304,6 @@ void QgsDelimitedTextSourceSelect::updateFieldLists()

QgsDebugMsg( QString( "Attempting to split the input line: %1 using delimiter %2" ).arg( line ).arg( txtDelimiter->text() ) );

QString delimiter = txtDelimiter->text();

QStringList fieldList = splitLine( line );

QgsDebugMsg( QString( "Split line into %1 parts" ).arg( fieldList.size() ) );
Expand Down
2 changes: 1 addition & 1 deletion src/providers/delimitedtext/qgsdelimitedtextsourceselect.h
Expand Up @@ -38,7 +38,7 @@ class QgsDelimitedTextSourceSelect : public QDialog, private Ui::QgsDelimitedTex
bool haveValidFileAndDelimiters();
void updateFieldLists();
void getOpenFileName();
QString selectedChars();
QStringList selectedChars();

private slots:
void on_buttonBox_accepted();
Expand Down

0 comments on commit 230bbfb

Please sign in to comment.