Skip to content

Commit 230bbfb

Browse files
committed
use plain delimiter if one delimiter only was selected (partially fix #4091)
1 parent 7e02f21 commit 230bbfb

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

src/providers/delimitedtext/qgsdelimitedtextsourceselect.cpp

+27-16
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ void QgsDelimitedTextSourceSelect::on_buttonBox_accepted()
166166
settings.setValue( key + "/delimiterType", "plain" );
167167
else
168168
settings.setValue( key + "/delimiterType", "regexp" );
169-
settings.setValue( key + "/delimiterChars", selectedChars() );
169+
settings.setValue( key + "/delimiterChars", selectedChars().join( "" ) );
170170

171171
accept();
172172
}
@@ -181,37 +181,50 @@ void QgsDelimitedTextSourceSelect::on_buttonBox_rejected()
181181
reject();
182182
}
183183

184-
QString QgsDelimitedTextSourceSelect::selectedChars()
184+
QStringList QgsDelimitedTextSourceSelect::selectedChars()
185185
{
186-
QString chars = "";
186+
QStringList chars;
187187
if ( cbxDelimSpace->isChecked() )
188-
chars += " ";
188+
chars << " ";
189189
if ( cbxDelimTab->isChecked() )
190-
chars += "\\t";
190+
chars << "\\t";
191191
if ( cbxDelimSemicolon->isChecked() )
192-
chars += ";";
192+
chars << ";";
193193
if ( cbxDelimComma->isChecked() )
194-
chars += ",";
194+
chars << ",";
195195
if ( cbxDelimColon->isChecked() )
196-
chars += ":";
196+
chars << ":";
197197
return chars;
198198
}
199199

200200
QStringList QgsDelimitedTextSourceSelect::splitLine( QString line )
201201
{
202-
QString delimiter = txtDelimiter->text();
202+
QString delimiter;
203+
if ( delimiterSelection->isChecked() )
204+
{
205+
if ( selectedChars().size() > 1 )
206+
{
207+
delimiter = "[" + selectedChars().join( "" ) + "]";
208+
}
209+
else
210+
{
211+
delimiter = selectedChars().join( "" );
212+
}
213+
txtDelimiter->setText( delimiter );
214+
}
215+
else
216+
{
217+
delimiter = txtDelimiter->text();
218+
}
203219

204220
if ( delimiterPlain->isChecked() )
205221
{
206222
return QgsDelimitedTextProvider::splitLine( line, "plain", delimiter );
207223
}
208224

209-
if ( delimiterSelection->isChecked() )
225+
if ( delimiterSelection->isChecked() && selectedChars().size() <= 1 )
210226
{
211-
delimiter = "[";
212-
delimiter += selectedChars();
213-
delimiter += "]";
214-
txtDelimiter->setText( delimiter );
227+
return QgsDelimitedTextProvider::splitLine( line, "plain", delimiter );
215228
}
216229

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

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

294-
QString delimiter = txtDelimiter->text();
295-
296307
QStringList fieldList = splitLine( line );
297308

298309
QgsDebugMsg( QString( "Split line into %1 parts" ).arg( fieldList.size() ) );

src/providers/delimitedtext/qgsdelimitedtextsourceselect.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class QgsDelimitedTextSourceSelect : public QDialog, private Ui::QgsDelimitedTex
3838
bool haveValidFileAndDelimiters();
3939
void updateFieldLists();
4040
void getOpenFileName();
41-
QString selectedChars();
41+
QStringList selectedChars();
4242

4343
private slots:
4444
void on_buttonBox_accepted();

0 commit comments

Comments
 (0)