~ubuntu-branches/debian/stretch/codelite/stretch

« back to all changes in this revision

Viewing changes to LiteEditor/findinfilesdlg.cpp

  • Committer: Package Import Robot
  • Author(s): James Cowgill
  • Date: 2014-09-01 00:23:18 UTC
  • mfrom: (1.1.14)
  • Revision ID: package-import@ubuntu.com-20140901002318-wx98wxrjb2e0ifi8
Tags: 6.1.1+dfsg-1
* New upstream release.

* debian/control
  - Build depend on libhunspell-dev.
  - Re-enable SFTP support using libssh-gcrypt.
  - Recommend valgrind (for new MemChecker plugin).
* debian/copyright
  - Remove bundled version of hunspell.
* debian/patches
  - Refresh patches.
  - Patch 10_move-helper-binaries.patch rewritten due to upstream changes.
  - Add 19_remove-bundled-clang-format.patch to fix clang-format paths.
  - Add 20_Compilation-fix-for-non-precompiled-header-builds.patch from
    upstream to fix build.
* debian/*.1
  - Remove manpages in debian/ - moved to upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
#include "findresultstab.h"
35
35
#include "replaceinfilespanel.h"
36
36
#include "windowattrmanager.h"
 
37
#include <algorithm>
37
38
 
38
39
FindInFilesDialog::FindInFilesDialog(wxWindow* parent, const wxString &dataName)
39
40
    : FindInFilesDialogBase(parent, wxID_ANY)
123
124
 
124
125
FindInFilesDialog::~FindInFilesDialog()
125
126
{
 
127
    // Update the data
 
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);
 
134
    
 
135
    wxArrayString masks = m_fileTypes->GetStrings();
 
136
    if ( masks.Index(value) == wxNOT_FOUND ) {
 
137
        masks.Insert(value, 0);
 
138
    }
 
139
    
 
140
    m_data.SetSelectedMask( value );
 
141
    m_data.SetFileMask( masks );
 
142
    
 
143
    m_data.SetSearchPaths( m_dirPicker->GetValues() );
 
144
    
126
145
    clConfig::Get().WriteItem( &m_data );
127
146
    WindowAttrManager::Save(this, "FindInFilesDialog", NULL);
128
147
}
140
159
    EventNotifier::Get()->ProcessEvent(getFileMaskEvent);
141
160
 
142
161
    // Get the output
143
 
    wxArrayString fileTypes = m_data.GetFileMask();
144
 
    m_pluginFileMask = getFileMaskEvent.GetStrings();
145
 
    if( !fileTypes.IsEmpty() ) {
146
 
        
147
 
        m_fileTypes->Clear();
148
 
        m_fileTypes->Append(m_pluginFileMask);
149
 
        m_fileTypes->Append(fileTypes);
150
 
        
151
 
        int where = wxNOT_FOUND;
152
 
        if ( !m_pluginFileMask.IsEmpty() ) {
 
162
    wxArrayString fileTypes   = m_data.GetFileMask();
 
163
    wxArrayString pluginsMask = getFileMaskEvent.GetStrings();
 
164
    
 
165
    // sort and merge arrays
 
166
    fileTypes.Sort();
 
167
    pluginsMask.Sort();
 
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());
 
171
    
 
172
    // remove the non unique parts
 
173
    mergedArr.resize( std::distance(mergedArr.begin(), iter) );
 
174
    
 
175
    // Create a single mask array
 
176
    m_fileTypes->Clear();
 
177
    if( !mergedArr.IsEmpty() ) {
 
178
        m_fileTypes->Append(mergedArr);
 
179
        
 
180
        int where = m_fileTypes->FindString(m_data.GetSelectedMask());
 
181
        if(where == wxNOT_FOUND) {
153
182
            where = 0;
154
 
            
155
 
        } else {
156
 
            where = m_fileTypes->FindString(m_data.GetSelectedMask());
157
 
            if(where == wxNOT_FOUND) {
158
 
                where = 0;
159
 
            }
160
183
        }
161
184
        m_fileTypes->SetSelection( where );
162
185
    }
166
189
{
167
190
    SearchData data = DoGetSearchData();
168
191
    data.SetOwner(clMainFrame::Get()->GetOutputPane()->GetReplaceResultsTab());
169
 
 
170
192
    DoSaveOpenFiles();
171
193
    SearchThreadST::Get()->PerformSearch(data);
172
 
 
173
 
    DoSaveSearchPaths();
174
194
    Close();
175
195
}
176
196
 
182
202
    // check to see if we require to save the files
183
203
    DoSaveOpenFiles();
184
204
    SearchThreadST::Get()->PerformSearch(data);
185
 
 
186
 
    DoSaveSearchPaths();
187
205
    Close();
188
206
}
189
207
 
194
212
    if (m_findString->GetValue().IsEmpty() == false) {
195
213
        findStr = m_findString->GetValue();
196
214
    }
197
 
 
 
215
    
198
216
    data.SetFindString       (findStr);
199
 
 
 
217
    
 
218
    m_data.SetFlags( GetSearchFlags() );
200
219
    size_t flags = m_data.GetFlags();
201
220
 
202
221
    // If the 'Skip comments' is ON, remove the
262
281
    return data;
263
282
}
264
283
 
265
 
void FindInFilesDialog::OnClick(wxCommandEvent &event)
266
 
{
267
 
    wxObject *btnClicked = event.GetEventObject();
268
 
    size_t flags = m_data.GetFlags();
269
 
 
270
 
    wxString findWhat = m_findString->GetValue();
271
 
    findWhat = findWhat.Trim().Trim(false);
272
 
 
273
 
    m_data.SetFindString( m_findString->GetValue() );
274
 
    m_data.SetEncoding  ( m_choiceEncoding->GetStringSelection() );
275
 
 
276
 
    wxString value = m_fileTypes->GetValue();
277
 
    value.Trim().Trim(false);
278
 
 
279
 
    wxArrayString fileMask = m_fileTypes->GetStrings();
280
 
    wxArrayString fileMaskFiltered;
281
 
    
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) );
287
 
        }
288
 
    }
289
 
    fileMaskFiltered.swap( fileMask );
290
 
    m_data.SetSearchScope(m_dirPicker->GetCurrentSelection());
291
 
 
292
 
    m_data.SetFileMask( fileMask );
293
 
    if(value.IsEmpty() == false)
294
 
        m_data.SetSelectedMask(value);
295
 
 
296
 
    if (btnClicked == m_stop) {
297
 
        SearchThreadST::Get()->StopSearch();
298
 
 
299
 
    } else if (btnClicked == m_find) {
300
 
        if ( findWhat.IsEmpty() ) {
301
 
            return;
302
 
        }
303
 
        DoSearch();
304
 
 
305
 
    } else if (btnClicked == m_replaceAll) {
306
 
        if ( findWhat.IsEmpty() ) {
307
 
            return;
308
 
        }
309
 
        DoSearchReplace();
310
 
 
311
 
    } else if (btnClicked == m_cancel) {
312
 
        Close();
313
 
 
314
 
    } else if (btnClicked == m_matchCase) {
315
 
        if (m_matchCase->IsChecked()) {
316
 
            flags |= wxFRD_MATCHCASE;
317
 
        } else {
318
 
            flags &= ~(wxFRD_MATCHCASE);
319
 
        }
320
 
    } else if (btnClicked == m_matchWholeWord) {
321
 
        if (m_matchWholeWord->IsChecked()) {
322
 
            flags |= wxFRD_MATCHWHOLEWORD;
323
 
        } else {
324
 
            flags &= ~(wxFRD_MATCHWHOLEWORD);
325
 
        }
326
 
    } else if (btnClicked == m_regualrExpression) {
327
 
        if (m_regualrExpression->IsChecked()) {
328
 
            flags |= wxFRD_REGULAREXPRESSION;
329
 
        } else {
330
 
            flags &= ~(wxFRD_REGULAREXPRESSION);
331
 
        }
332
 
    } else if (btnClicked == m_printScope) {
333
 
        if (m_printScope->IsChecked()) {
334
 
            flags |= wxFRD_DISPLAYSCOPE;
335
 
        } else {
336
 
            flags &= ~(wxFRD_DISPLAYSCOPE);
337
 
        }
338
 
    } else if (btnClicked == m_checkBoxSeparateTab) {
339
 
        if (m_checkBoxSeparateTab->IsChecked()) {
340
 
            flags |= wxFRD_SEPARATETAB_DISPLAY;
341
 
        } else {
342
 
            flags &= ~(wxFRD_SEPARATETAB_DISPLAY);
343
 
        }
344
 
    } else if (btnClicked == m_checkBoxSaveFilesBeforeSearching) {
345
 
        if (m_checkBoxSaveFilesBeforeSearching->IsChecked()) {
346
 
            flags |= wxFRD_SAVE_BEFORE_SEARCH;
347
 
        } else {
348
 
            flags &= ~(wxFRD_SAVE_BEFORE_SEARCH);
349
 
        }
350
 
    } else if (btnClicked == m_checkBoxSkipMatchesFoundInComments) {
351
 
        if(m_checkBoxSkipMatchesFoundInComments->IsChecked()) {
352
 
            flags |= wxFRD_SKIP_COMMENTS;
353
 
        } else {
354
 
            flags &= ~wxFRD_SKIP_COMMENTS;
355
 
        }
356
 
 
357
 
    } else if (btnClicked == m_checkBoxSkipMatchesFoundInStrings) {
358
 
        if(m_checkBoxSkipMatchesFoundInStrings->IsChecked()) {
359
 
            flags |= wxFRD_SKIP_STRINGS;
360
 
        } else {
361
 
            flags &= ~wxFRD_SKIP_STRINGS;
362
 
        }
363
 
    } else if (btnClicked == m_checkBoxHighlighStringComments) {
364
 
        if(m_checkBoxHighlighStringComments->IsChecked()) {
365
 
            flags |= wxFRD_COLOUR_COMMENTS;
366
 
        } else {
367
 
            flags &= ~wxFRD_COLOUR_COMMENTS;
368
 
        }
369
 
    }
370
 
 
371
 
    // Set the updated flags
372
 
    m_data.SetFlags(flags);
373
 
}
374
 
 
375
284
void FindInFilesDialog::OnClose(wxCloseEvent &e)
376
285
{
377
286
    Destroy();
456
365
{
457
366
    event.Enable(m_checkBoxSkipMatchesFoundInComments->IsChecked() == false);
458
367
}
 
368
 
 
369
void FindInFilesDialog::OnFind(wxCommandEvent& event)
 
370
{
 
371
    wxUnusedVar( event );
 
372
    DoSearch();
 
373
}
 
374
 
 
375
void FindInFilesDialog::OnReplace(wxCommandEvent& event)
 
376
{
 
377
    wxUnusedVar( event );
 
378
    DoSearchReplace();
 
379
}
 
380
 
 
381
void FindInFilesDialog::OnStop(wxCommandEvent& event)
 
382
{
 
383
    SearchThreadST::Get()->StopSearch();
 
384
}
 
385
 
 
386
void FindInFilesDialog::OnButtonClose(wxCommandEvent& event)
 
387
{
 
388
    Destroy();
 
389
}
 
390
 
 
391
size_t FindInFilesDialog::GetSearchFlags()
 
392
{
 
393
    size_t flags = 0;
 
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;
 
403
    return flags;
 
404
}