@@ -28,6 +28,7 @@ namespace CsvTools
28
28
/// </summary>
29
29
public partial class FormEditSettings : ResizeForm
30
30
{
31
+ private readonly CancellationTokenSource m_CancellationTokenSource = new CancellationTokenSource ( ) ;
31
32
private readonly ViewSettings m_ViewSettings ;
32
33
33
34
/// <summary>
@@ -83,7 +84,25 @@ private async void ButtonGuessDelimiter_ClickAsync(object sender, EventArgs e)
83
84
Cursor . Current = Cursors . WaitCursor ;
84
85
try
85
86
{
86
- m_ViewSettings . FileFormat . FieldDelimiter = await CsvHelper . GuessDelimiterAsync ( m_ViewSettings , CancellationToken . None ) ;
87
+ m_ViewSettings . FileFormat . FieldDelimiter = await CsvHelper . GuessDelimiterAsync ( m_ViewSettings , m_CancellationTokenSource . Token ) ;
88
+ }
89
+ finally
90
+ {
91
+ Cursor . Current = oldCursor ;
92
+ }
93
+ }
94
+
95
+ private async void ButtonGuessTextQualifier_Click ( object sender , EventArgs e )
96
+ {
97
+ var oldCursor = Cursor . Current == Cursors . WaitCursor ? Cursors . WaitCursor : Cursors . Default ;
98
+ Cursor . Current = Cursors . WaitCursor ;
99
+ try
100
+ {
101
+ var qualifier = await CsvHelper . GuessQualifierAsync ( m_ViewSettings , m_CancellationTokenSource . Token ) ;
102
+ if ( qualifier != null )
103
+ m_ViewSettings . FileFormat . FieldQualifier = qualifier ;
104
+ else
105
+ _MessageBox . Show ( this , "No Column Qualifier found" , "Qualifier" , MessageBoxButtons . OK , MessageBoxIcon . Information ) ;
87
106
}
88
107
finally
89
108
{
@@ -97,7 +116,7 @@ private async void ButtonSkipLine_ClickAsync(object sender, EventArgs e)
97
116
Cursor . Current = Cursors . WaitCursor ;
98
117
try
99
118
{
100
- m_ViewSettings . SkipRows = await CsvHelper . GuessStartRowAsync ( m_ViewSettings , CancellationToken . None ) ;
119
+ m_ViewSettings . SkipRows = await CsvHelper . GuessStartRowAsync ( m_ViewSettings , m_CancellationTokenSource . Token ) ;
101
120
}
102
121
finally
103
122
{
@@ -108,7 +127,14 @@ private async void ButtonSkipLine_ClickAsync(object sender, EventArgs e)
108
127
private void CboCodePage_SelectedIndexChanged ( object sender , EventArgs e )
109
128
{
110
129
if ( cboCodePage . SelectedItem != null )
111
- m_ViewSettings . CodePageId = ( ( DisplayItem < int > ) cboCodePage . SelectedItem ) . ID ;
130
+ m_ViewSettings . CodePageId = ( ( DisplayItem < int > ) cboCodePage . SelectedItem ) . ID ;
131
+ }
132
+
133
+ private void CboRecordDelimiter_SelectedIndexChanged ( object sender , EventArgs e )
134
+
135
+ {
136
+ if ( cboRecordDelimiter . SelectedItem != null )
137
+ m_ViewSettings . FileFormat . NewLine = ( RecordDelimiterType ) cboRecordDelimiter . SelectedValue ;
112
138
}
113
139
114
140
private async Task ChangeFileNameAsync ( string newFileName )
@@ -146,7 +172,7 @@ private async Task ChangeFileNameAsync(string newFileName)
146
172
m_ViewSettings . ColumnCollection . Clear ( ) ;
147
173
try
148
174
{
149
- using ( var processDisplay = m_ViewSettings . GetProcessDisplay ( this , true , CancellationToken . None ) )
175
+ using ( var processDisplay = m_ViewSettings . GetProcessDisplay ( this , true , m_CancellationTokenSource . Token ) )
150
176
{
151
177
await m_ViewSettings . FillGuessColumnFormatReaderAsync (
152
178
false ,
@@ -169,12 +195,18 @@ await m_ViewSettings.FillGuessColumnFormatReaderAsync(
169
195
}
170
196
}
171
197
198
+ private void CheckBoxColumnsProcess_CheckedChanged ( object sender , EventArgs e )
199
+ {
200
+ if ( m_ViewSettings . TryToSolveMoreColumns || m_ViewSettings . AllowRowCombining )
201
+ m_ViewSettings . WarnEmptyTailingColumns = true ;
202
+ }
203
+
172
204
private void CsvFile_PropertyChanged ( object sender , PropertyChangedEventArgs e )
173
205
{
174
206
if ( e . PropertyName == nameof ( ViewSettings . CodePageId ) )
175
207
{
176
208
foreach ( var ite in cboCodePage . Items )
177
- if ( ( ( DisplayItem < int > ) ite ) . ID == m_ViewSettings . CodePageId )
209
+ if ( ( ( DisplayItem < int > ) ite ) . ID == m_ViewSettings . CodePageId )
178
210
{
179
211
cboCodePage . SelectedItem = ite ;
180
212
break ;
@@ -201,10 +233,10 @@ private void EditSettings_Load(object sender, EventArgs e)
201
233
var descConv = new EnumDescriptionConverter ( typeof ( RecordDelimiterType ) ) ;
202
234
foreach ( RecordDelimiterType item in Enum . GetValues ( typeof ( RecordDelimiterType ) ) )
203
235
{
204
- di . Add ( new DisplayItem < int > ( ( int ) item , descConv . ConvertToString ( item ) ) ) ;
236
+ di . Add ( new DisplayItem < int > ( ( int ) item , descConv . ConvertToString ( item ) ) ) ;
205
237
}
206
238
207
- var selValue = ( int ) m_ViewSettings . FileFormat . NewLine ;
239
+ var selValue = ( int ) m_ViewSettings . FileFormat . NewLine ;
208
240
cboRecordDelimiter . DataSource = di ;
209
241
cboRecordDelimiter . DisplayMember = nameof ( DisplayItem < int > . Display ) ;
210
242
cboRecordDelimiter . ValueMember = nameof ( DisplayItem < int > . ID ) ;
@@ -215,7 +247,25 @@ private void EditSettings_Load(object sender, EventArgs e)
215
247
CsvFile_PropertyChanged ( null , new PropertyChangedEventArgs ( nameof ( ViewSettings . CodePageId ) ) ) ;
216
248
}
217
249
218
- private void FormEditSettings_FormClosing ( object sender , FormClosingEventArgs e ) => ValidateChildren ( ) ;
250
+ private void FormEditSettings_FormClosing ( object sender , FormClosingEventArgs e )
251
+ {
252
+ m_CancellationTokenSource . Cancel ( ) ;
253
+ ValidateChildren ( ) ;
254
+ }
255
+
256
+ private async void GuessNewline_Click ( object sender , EventArgs e )
257
+ {
258
+ var oldCursor = Cursor . Current == Cursors . WaitCursor ? Cursors . WaitCursor : Cursors . Default ;
259
+ Cursor . Current = Cursors . WaitCursor ;
260
+ try
261
+ {
262
+ m_ViewSettings . FileFormat . NewLine = await CsvHelper . GuessNewlineAsync ( m_ViewSettings , m_CancellationTokenSource . Token ) ;
263
+ }
264
+ finally
265
+ {
266
+ Cursor . Current = oldCursor ;
267
+ }
268
+ }
219
269
220
270
private void PositiveNumberValidating ( object sender , CancelEventArgs e )
221
271
{
@@ -266,32 +316,5 @@ private void TextBoxFile_Validating(object sender, CancelEventArgs e)
266
316
errorProvider . SetError ( textBoxFile , string . Empty ) ;
267
317
}
268
318
}
269
-
270
- private async void GuessNewline_Click ( object sender , EventArgs e )
271
- {
272
- var oldCursor = Cursor . Current == Cursors . WaitCursor ? Cursors . WaitCursor : Cursors . Default ;
273
- Cursor . Current = Cursors . WaitCursor ;
274
- try
275
- {
276
- m_ViewSettings . FileFormat . NewLine = await CsvHelper . GuessNewlineAsync ( m_ViewSettings , CancellationToken . None ) ;
277
- }
278
- finally
279
- {
280
- Cursor . Current = oldCursor ;
281
- }
282
- }
283
-
284
- private void CboRecordDelimiter_SelectedIndexChanged ( object sender , EventArgs e )
285
-
286
- {
287
- if ( cboRecordDelimiter . SelectedItem != null )
288
- m_ViewSettings . FileFormat . NewLine = ( RecordDelimiterType ) cboRecordDelimiter . SelectedValue ;
289
- }
290
-
291
- private void CheckBoxColumnsProcess_CheckedChanged ( object sender , EventArgs e )
292
- {
293
- if ( m_ViewSettings . TryToSolveMoreColumns || m_ViewSettings . AllowRowCombining )
294
- m_ViewSettings . WarnEmptyTailingColumns = true ;
295
- }
296
319
}
297
320
}
0 commit comments