124
125
FindInFilesDialog::~FindInFilesDialog()
128
m_data.SetFlags( GetSearchFlags() );
129
m_data.SetFindString( m_findString->GetValue() );
130
m_data.SetEncoding ( m_choiceEncoding->GetStringSelection() );
131
m_data.SetSearchScope(m_dirPicker->GetCurrentSelection());
132
wxString value = m_fileTypes->GetValue();
133
value.Trim().Trim(false);
135
wxArrayString masks = m_fileTypes->GetStrings();
136
if ( masks.Index(value) == wxNOT_FOUND ) {
137
masks.Insert(value, 0);
140
m_data.SetSelectedMask( value );
141
m_data.SetFileMask( masks );
143
m_data.SetSearchPaths( m_dirPicker->GetValues() );
126
145
clConfig::Get().WriteItem( &m_data );
127
146
WindowAttrManager::Save(this, "FindInFilesDialog", NULL);
140
159
EventNotifier::Get()->ProcessEvent(getFileMaskEvent);
142
161
// Get the output
143
wxArrayString fileTypes = m_data.GetFileMask();
144
m_pluginFileMask = getFileMaskEvent.GetStrings();
145
if( !fileTypes.IsEmpty() ) {
147
m_fileTypes->Clear();
148
m_fileTypes->Append(m_pluginFileMask);
149
m_fileTypes->Append(fileTypes);
151
int where = wxNOT_FOUND;
152
if ( !m_pluginFileMask.IsEmpty() ) {
162
wxArrayString fileTypes = m_data.GetFileMask();
163
wxArrayString pluginsMask = getFileMaskEvent.GetStrings();
165
// sort and merge arrays
168
wxArrayString mergedArr;
169
std::merge(fileTypes.begin(), fileTypes.end(), pluginsMask.begin(), pluginsMask.end(), std::back_inserter( mergedArr ) );
170
wxArrayString::iterator iter = std::unique(mergedArr.begin(), mergedArr.end());
172
// remove the non unique parts
173
mergedArr.resize( std::distance(mergedArr.begin(), iter) );
175
// Create a single mask array
176
m_fileTypes->Clear();
177
if( !mergedArr.IsEmpty() ) {
178
m_fileTypes->Append(mergedArr);
180
int where = m_fileTypes->FindString(m_data.GetSelectedMask());
181
if(where == wxNOT_FOUND) {
156
where = m_fileTypes->FindString(m_data.GetSelectedMask());
157
if(where == wxNOT_FOUND) {
161
184
m_fileTypes->SetSelection( where );
265
void FindInFilesDialog::OnClick(wxCommandEvent &event)
267
wxObject *btnClicked = event.GetEventObject();
268
size_t flags = m_data.GetFlags();
270
wxString findWhat = m_findString->GetValue();
271
findWhat = findWhat.Trim().Trim(false);
273
m_data.SetFindString( m_findString->GetValue() );
274
m_data.SetEncoding ( m_choiceEncoding->GetStringSelection() );
276
wxString value = m_fileTypes->GetValue();
277
value.Trim().Trim(false);
279
wxArrayString fileMask = m_fileTypes->GetStrings();
280
wxArrayString fileMaskFiltered;
282
// Remove the plugins mask before we save it
283
for(size_t i=0; i<fileMask.GetCount(); ++i) {
284
if ( m_pluginFileMask.Index(fileMask.Item(i)) == wxNOT_FOUND ) {
285
// not part of the plugin mask => keep it
286
fileMaskFiltered.Add( fileMask.Item(i) );
289
fileMaskFiltered.swap( fileMask );
290
m_data.SetSearchScope(m_dirPicker->GetCurrentSelection());
292
m_data.SetFileMask( fileMask );
293
if(value.IsEmpty() == false)
294
m_data.SetSelectedMask(value);
296
if (btnClicked == m_stop) {
297
SearchThreadST::Get()->StopSearch();
299
} else if (btnClicked == m_find) {
300
if ( findWhat.IsEmpty() ) {
305
} else if (btnClicked == m_replaceAll) {
306
if ( findWhat.IsEmpty() ) {
311
} else if (btnClicked == m_cancel) {
314
} else if (btnClicked == m_matchCase) {
315
if (m_matchCase->IsChecked()) {
316
flags |= wxFRD_MATCHCASE;
318
flags &= ~(wxFRD_MATCHCASE);
320
} else if (btnClicked == m_matchWholeWord) {
321
if (m_matchWholeWord->IsChecked()) {
322
flags |= wxFRD_MATCHWHOLEWORD;
324
flags &= ~(wxFRD_MATCHWHOLEWORD);
326
} else if (btnClicked == m_regualrExpression) {
327
if (m_regualrExpression->IsChecked()) {
328
flags |= wxFRD_REGULAREXPRESSION;
330
flags &= ~(wxFRD_REGULAREXPRESSION);
332
} else if (btnClicked == m_printScope) {
333
if (m_printScope->IsChecked()) {
334
flags |= wxFRD_DISPLAYSCOPE;
336
flags &= ~(wxFRD_DISPLAYSCOPE);
338
} else if (btnClicked == m_checkBoxSeparateTab) {
339
if (m_checkBoxSeparateTab->IsChecked()) {
340
flags |= wxFRD_SEPARATETAB_DISPLAY;
342
flags &= ~(wxFRD_SEPARATETAB_DISPLAY);
344
} else if (btnClicked == m_checkBoxSaveFilesBeforeSearching) {
345
if (m_checkBoxSaveFilesBeforeSearching->IsChecked()) {
346
flags |= wxFRD_SAVE_BEFORE_SEARCH;
348
flags &= ~(wxFRD_SAVE_BEFORE_SEARCH);
350
} else if (btnClicked == m_checkBoxSkipMatchesFoundInComments) {
351
if(m_checkBoxSkipMatchesFoundInComments->IsChecked()) {
352
flags |= wxFRD_SKIP_COMMENTS;
354
flags &= ~wxFRD_SKIP_COMMENTS;
357
} else if (btnClicked == m_checkBoxSkipMatchesFoundInStrings) {
358
if(m_checkBoxSkipMatchesFoundInStrings->IsChecked()) {
359
flags |= wxFRD_SKIP_STRINGS;
361
flags &= ~wxFRD_SKIP_STRINGS;
363
} else if (btnClicked == m_checkBoxHighlighStringComments) {
364
if(m_checkBoxHighlighStringComments->IsChecked()) {
365
flags |= wxFRD_COLOUR_COMMENTS;
367
flags &= ~wxFRD_COLOUR_COMMENTS;
371
// Set the updated flags
372
m_data.SetFlags(flags);
375
284
void FindInFilesDialog::OnClose(wxCloseEvent &e)
457
366
event.Enable(m_checkBoxSkipMatchesFoundInComments->IsChecked() == false);
369
void FindInFilesDialog::OnFind(wxCommandEvent& event)
371
wxUnusedVar( event );
375
void FindInFilesDialog::OnReplace(wxCommandEvent& event)
377
wxUnusedVar( event );
381
void FindInFilesDialog::OnStop(wxCommandEvent& event)
383
SearchThreadST::Get()->StopSearch();
386
void FindInFilesDialog::OnButtonClose(wxCommandEvent& event)
391
size_t FindInFilesDialog::GetSearchFlags()
394
if ( m_matchCase->IsChecked() ) flags |= wxFRD_MATCHCASE;
395
if ( m_matchWholeWord->IsChecked()) flags |= wxFRD_MATCHWHOLEWORD;
396
if ( m_regualrExpression->IsChecked()) flags |= wxFRD_REGULAREXPRESSION;
397
if ( m_printScope->IsChecked()) flags |= wxFRD_DISPLAYSCOPE;
398
if ( m_checkBoxSeparateTab->IsChecked() ) flags |= wxFRD_SEPARATETAB_DISPLAY;
399
if ( m_checkBoxSaveFilesBeforeSearching->IsChecked() ) flags |= wxFRD_SAVE_BEFORE_SEARCH;
400
if ( m_checkBoxSkipMatchesFoundInComments->IsChecked() ) flags |= wxFRD_SKIP_COMMENTS;
401
if ( m_checkBoxSkipMatchesFoundInStrings->IsChecked() ) flags |= wxFRD_SKIP_STRINGS;
402
if ( m_checkBoxHighlighStringComments->IsChecked() ) flags |= wxFRD_COLOUR_COMMENTS;