99 "FindFileDialog/DirectoryHistory")) |
99 "FindFileDialog/DirectoryHistory")) |
100 self.findtextCombo.addItems(self.searchHistory) |
100 self.findtextCombo.addItems(self.searchHistory) |
101 self.replacetextCombo.addItems(self.replaceHistory) |
101 self.replacetextCombo.addItems(self.replaceHistory) |
102 self.dirPicker.addItems(self.dirHistory) |
102 self.dirPicker.addItems(self.dirHistory) |
103 |
103 |
|
104 self.excludeHiddenCheckBox.setChecked(Preferences.toBool( |
|
105 Preferences.Prefs.settings.value( |
|
106 "FindFileDialog/ExcludeHidden", True) |
|
107 )) |
|
108 |
104 self.project = project |
109 self.project = project |
105 |
110 |
106 self.findList.headerItem().setText(self.findList.columnCount(), "") |
111 self.findList.headerItem().setText(self.findList.columnCount(), "") |
107 self.findList.header().setSortIndicator(0, Qt.AscendingOrder) |
112 self.findList.header().setSortIndicator(0, Qt.AscendingOrder) |
108 self.__section0Size = self.findList.header().sectionSize(0) |
113 self.__section0Size = self.findList.header().sectionSize(0) |
321 ] |
326 ] |
322 filterRe = re.compile("|".join(fileFilterList)) |
327 filterRe = re.compile("|".join(fileFilterList)) |
323 |
328 |
324 if self.projectButton.isChecked(): |
329 if self.projectButton.isChecked(): |
325 if self.filterCheckBox.isChecked(): |
330 if self.filterCheckBox.isChecked(): |
326 files = [self.project.getRelativePath(file) |
331 files = [ |
327 for file in |
332 self.project.getRelativePath(file) |
328 self.__getFileList( |
333 for file in |
329 self.project.getProjectPath(), filterRe)] |
334 self.__getFileList( |
|
335 self.project.getProjectPath(), |
|
336 filterRe, |
|
337 excludeHiddenDirs=self.excludeHiddenCheckBox |
|
338 .isChecked(), |
|
339 ) |
|
340 ] |
330 else: |
341 else: |
331 files = [] |
342 files = [] |
332 if self.sourcesCheckBox.isChecked(): |
343 if self.sourcesCheckBox.isChecked(): |
333 files += self.project.pdata["SOURCES"] |
344 files += self.project.pdata["SOURCES"] |
334 if self.formsCheckBox.isChecked(): |
345 if self.formsCheckBox.isChecked(): |
340 if self.resourcesCheckBox.isChecked(): |
351 if self.resourcesCheckBox.isChecked(): |
341 files += self.project.pdata["RESOURCES"] |
352 files += self.project.pdata["RESOURCES"] |
342 elif self.dirButton.isChecked(): |
353 elif self.dirButton.isChecked(): |
343 if not self.filterCheckBox.isChecked(): |
354 if not self.filterCheckBox.isChecked(): |
344 filters = [] |
355 filters = [] |
345 if self.sourcesCheckBox.isChecked(): |
356 if ( |
346 filters.extend( |
357 self.project.isOpen() and |
347 ["^{0}$".format( |
358 os.path.abspath(self.dirPicker.currentText()).startswith( |
348 assoc.replace(".", r"\.").replace("*", ".*")) |
359 self.project.getProjectPath()) |
349 for assoc in list( |
360 ): |
350 Preferences.getEditorLexerAssocs().keys()) |
361 if self.sourcesCheckBox.isChecked(): |
351 if assoc not in self.formsExt + self.interfacesExt + |
362 filters.extend([ |
352 self.protocolsExt]) |
363 "^{0}$".format( |
353 if self.formsCheckBox.isChecked(): |
364 assoc.replace(".", r"\.").replace("*", ".*") |
354 filters.append(self.filterForms) |
365 ) for assoc in |
355 if self.interfacesCheckBox.isChecked(): |
366 self.project.getFiletypeAssociations("SOURCES") |
356 filters.append(self.filterInterfaces) |
367 ]) |
357 if self.protocolsCheckBox.isChecked(): |
368 if self.formsCheckBox.isChecked(): |
358 filters.append(self.filterProtocols) |
369 filters.extend([ |
359 if self.resourcesCheckBox.isChecked(): |
370 "^{0}$".format( |
360 filters.append(self.filterResources) |
371 assoc.replace(".", r"\.").replace("*", ".*") |
|
372 ) for assoc in |
|
373 self.project.getFiletypeAssociations("FORMS") |
|
374 ]) |
|
375 if self.interfacesCheckBox.isChecked(): |
|
376 filters.extend([ |
|
377 "^{0}$".format( |
|
378 assoc.replace(".", r"\.").replace("*", ".*") |
|
379 ) for assoc in |
|
380 self.project.getFiletypeAssociations("INTERFACES") |
|
381 ]) |
|
382 if self.protocolsCheckBox.isChecked(): |
|
383 filters.extend([ |
|
384 "^{0}$".format( |
|
385 assoc.replace(".", r"\.").replace("*", ".*") |
|
386 ) for assoc in |
|
387 self.project.getFiletypeAssociations("PROTOCOLS") |
|
388 ]) |
|
389 if self.resourcesCheckBox.isChecked(): |
|
390 filters.extend([ |
|
391 "^{0}$".format( |
|
392 assoc.replace(".", r"\.").replace("*", ".*") |
|
393 ) for assoc in |
|
394 self.project.getFiletypeAssociations("RESOURCES") |
|
395 ]) |
|
396 else: |
|
397 if self.sourcesCheckBox.isChecked(): |
|
398 filters.extend([ |
|
399 "^{0}$".format( |
|
400 assoc.replace(".", r"\.").replace("*", ".*")) |
|
401 for assoc in list( |
|
402 Preferences.getEditorLexerAssocs().keys()) |
|
403 if assoc not in |
|
404 self.formsExt + self.interfacesExt + |
|
405 self.protocolsExt + self.resourcesExt |
|
406 ]) |
|
407 if self.formsCheckBox.isChecked(): |
|
408 filters.append(self.filterForms) |
|
409 if self.interfacesCheckBox.isChecked(): |
|
410 filters.append(self.filterInterfaces) |
|
411 if self.protocolsCheckBox.isChecked(): |
|
412 filters.append(self.filterProtocols) |
|
413 if self.resourcesCheckBox.isChecked(): |
|
414 filters.append(self.filterResources) |
361 filterString = "|".join(filters) |
415 filterString = "|".join(filters) |
362 filterRe = re.compile(filterString) |
416 filterRe = re.compile(filterString) |
363 files = self.__getFileList( |
417 files = self.__getFileList( |
364 os.path.abspath(self.dirPicker.currentText()), |
418 os.path.abspath(self.dirPicker.currentText()), |
365 filterRe) |
419 filterRe, |
|
420 excludeHiddenDirs=self.excludeHiddenCheckBox.isChecked(), |
|
421 excludeHiddenFiles=self.excludeHiddenCheckBox.isChecked(), |
|
422 ) |
366 elif self.openFilesButton.isChecked(): |
423 elif self.openFilesButton.isChecked(): |
367 vm = e5App().getObject("ViewManager") |
424 vm = e5App().getObject("ViewManager") |
368 vm.checkAllDirty() |
425 vm.checkAllDirty() |
369 files = vm.getOpenFilenames() |
426 files = vm.getOpenFilenames() |
370 |
427 |
406 self.findtextCombo.clear() |
463 self.findtextCombo.clear() |
407 self.findtextCombo.addItems(self.searchHistory) |
464 self.findtextCombo.addItems(self.searchHistory) |
408 Preferences.Prefs.settings.setValue( |
465 Preferences.Prefs.settings.setValue( |
409 "FindFileDialog/SearchHistory", |
466 "FindFileDialog/SearchHistory", |
410 self.searchHistory[:30]) |
467 self.searchHistory[:30]) |
|
468 Preferences.Prefs.settings.setValue( |
|
469 "FindFileDialog/ExcludeHidden", |
|
470 self.excludeHiddenCheckBox.isChecked()) |
411 |
471 |
412 if self.__replaceMode: |
472 if self.__replaceMode: |
413 replTxt = self.replacetextCombo.currentText() |
473 replTxt = self.replacetextCombo.currentText() |
414 if replTxt in self.replaceHistory: |
474 if replTxt in self.replaceHistory: |
415 self.replaceHistory.remove(replTxt) |
475 self.replaceHistory.remove(replTxt) |
559 if fn.endswith('.ui'): |
619 if fn.endswith('.ui'): |
560 self.designerFile.emit(fn) |
620 self.designerFile.emit(fn) |
561 else: |
621 else: |
562 self.sourceFile.emit(fn, line, "", start, end) |
622 self.sourceFile.emit(fn, line, "", start, end) |
563 |
623 |
564 def __getFileList(self, path, filterRe): |
624 def __getFileList(self, path, filterRe, excludeHiddenDirs=False, |
|
625 excludeHiddenFiles=False): |
565 """ |
626 """ |
566 Private method to get a list of files to search. |
627 Private method to get a list of files to search. |
567 |
628 |
568 @param path the root directory to search in (string) |
629 @param path the root directory to search in |
|
630 @type str |
569 @param filterRe regular expression defining the filter |
631 @param filterRe regular expression defining the filter |
570 criteria (regexp object) |
632 criteria |
571 @return list of files to be processed (list of strings) |
633 @type regexp object |
|
634 @param excludeHiddenDirs flag indicating to exclude hidden directories |
|
635 @type bool |
|
636 @param excludeHiddenFiles flag indicating to exclude hidden files |
|
637 @type bool |
|
638 @return list of files to be processed |
|
639 @rtype list of str |
572 """ |
640 """ |
573 path = os.path.abspath(path) |
641 path = os.path.abspath(path) |
574 files = [] |
642 files = [] |
575 for dirname, _, names in os.walk(path): |
643 for dirname, dirs, filenames in os.walk(path): |
576 files.extend([os.path.join(dirname, f) |
644 files.extend([ |
577 for f in names |
645 os.path.join(dirname, f) for f in filenames |
578 if re.match(filterRe, f)] |
646 if (not (excludeHiddenFiles and f.startswith(".")) and |
579 ) |
647 re.match(filterRe, f)) |
|
648 ]) |
|
649 if excludeHiddenDirs: |
|
650 for d in dirs[:]: |
|
651 if d .startswith("."): |
|
652 dirs.remove(d) |
580 return files |
653 return files |
581 |
654 |
582 def setSearchDirectory(self, searchDir): |
655 def setSearchDirectory(self, searchDir): |
583 """ |
656 """ |
584 Public slot to set the name of the directory to search in. |
657 Public slot to set the name of the directory to search in. |