src/eric7/UI/FindFileWidget.py

Mon, 24 Feb 2025 15:43:49 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 24 Feb 2025 15:43:49 +0100
branch
eric7
changeset 11148
15e30f0c76a8
parent 11097
96f3c24c5b3d
permissions
-rw-r--r--

Adjusted the code to the modified issue codes.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11052
diff changeset
3 # Copyright (c) 2002 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to search for text in files.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
10 import json
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import os
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import re
8932
a21e80dde10e Don't process events after each file to prevent a slow search.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 8917
diff changeset
13 import time
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
15 from PyQt6.QtCore import QPoint, Qt, QUrl, pyqtSignal, pyqtSlot
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
16 from PyQt6.QtGui import QCursor, QDesktopServices, QImageReader
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
17 from PyQt6.QtWidgets import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18 QApplication,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19 QComboBox,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
20 QDialog,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
21 QDialogButtonBox,
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
22 QListWidgetItem,
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
23 QMenu,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
24 QTreeWidgetItem,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
25 QVBoxLayout,
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
26 QWidget,
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
27 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10692
diff changeset
29 from eric7 import EricUtilities, Preferences, Utilities
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
30 from eric7.EricGui import EricPixmapCache
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
31 from eric7.EricWidgets import EricMessageBox
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
32 from eric7.EricWidgets.EricApplication import ericApp
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
33 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
34 from eric7.SystemUtilities import FileSystemUtilities
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
36 from .Ui_FindFileWidget import Ui_FindFileWidget
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
38
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
39 class FindFileWidget(QWidget, Ui_FindFileWidget):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
41 Class implementing a widget to search for text in files and replace it
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
42 with some other text.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
44 The occurrences found are displayed in a tree showing the file name,
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
45 the line number and the text found. The file will be opened upon a double
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
46 click onto the respective entry of the list. If the widget is in replace
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
47 mode the line below shows the text after replacement. Replacements can
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
48 be authorized by ticking them on. Pressing the replace button performs
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
49 all ticked replacement operations.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
51 @signal sourceFile(str, int, str, int, int) emitted to open a source file
10677
6ee2e475490c Editor Outline, File Browser, Project Browser
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
52 at a specific line
501
5c615a85241a Finished porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 500
diff changeset
53 @signal designerFile(str) emitted to open a Qt-Designer file
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
54 @signal linguistFile(str) emitted to open a Qt-Linguist (*.ts) file
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
55 @signal trpreview([str]) emitted to preview Qt-Linguist (*.qm) files
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
56 @signal pixmapFile(str) emitted to open a pixmap file
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
57 @signal svgFile(str) emitted to open a SVG file
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
58 @signal umlFile(str) emitted to open an eric UML file
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
60
476
121633976eca Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 458
diff changeset
61 sourceFile = pyqtSignal(str, int, str, int, int)
500
c3abc7895a01 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 489
diff changeset
62 designerFile = pyqtSignal(str)
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
63 linguistFile = pyqtSignal(str)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
64 trpreview = pyqtSignal(list)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
65 pixmapFile = pyqtSignal(str)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
66 svgFile = pyqtSignal(str)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
67 umlFile = pyqtSignal(str)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
69 lineRole = Qt.ItemDataRole.UserRole + 1
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
70 startRole = Qt.ItemDataRole.UserRole + 2
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
71 endRole = Qt.ItemDataRole.UserRole + 3
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
72 replaceRole = Qt.ItemDataRole.UserRole + 4
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
73 md5Role = Qt.ItemDataRole.UserRole + 5
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
75 def __init__(self, project, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
78
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @param project reference to the project object
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
80 @type Project
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
81 @param parent parent widget of this dialog (defaults to None)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
82 @type QWidget (optional)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8149
diff changeset
84 super().__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
87 self.__project = project
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
88
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
89 self.layout().setContentsMargins(0, 3, 0, 0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
91 self.caseToolButton.setIcon(EricPixmapCache.getIcon("caseSensitive"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
92 self.wordToolButton.setIcon(EricPixmapCache.getIcon("wholeWord"))
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
93 self.escapeToolButton.setIcon(EricPixmapCache.getIcon("esc-code"))
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
94 self.regexpToolButton.setIcon(EricPixmapCache.getIcon("regexp"))
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
95 self.filtersConfigButton.setIcon(EricPixmapCache.getIcon("edit"))
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
96 self.excludeFiltersConfigButton.setIcon(EricPixmapCache.getIcon("edit"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8347
diff changeset
98 self.dirPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
99 self.dirPicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop)
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
100 self.dirPicker.setSizeAdjustPolicy(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
101 QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
104 self.stopButton.setEnabled(False)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
105 self.stopButton.clicked.connect(self.__stopSearch)
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
106 self.stopButton.setIcon(EricPixmapCache.getIcon("stopLoading"))
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
107 self.stopButton.setAutoDefault(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
108
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.findButton.setEnabled(False)
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
110 self.findButton.clicked.connect(self.__doSearch)
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
111 self.findButton.setIcon(EricPixmapCache.getIcon("find"))
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
112 self.findButton.setAutoDefault(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113
8809
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
114 self.clearButton.setEnabled(False)
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
115 self.clearButton.clicked.connect(self.__clearResults)
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
116 self.clearButton.setIcon(EricPixmapCache.getIcon("clear"))
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
117 self.clearButton.setAutoDefault(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
119 self.replaceButton.setIcon(EricPixmapCache.getIcon("editReplace"))
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
120 self.replaceButton.setAutoDefault(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
121
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
122 self.modeToggleButton.clicked.connect(self.__toggleReplaceMode)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 self.findProgressLabel.setMaximumWidth(550)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10692
diff changeset
126 self.searchHistory = EricUtilities.toList(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 Preferences.getSettings().value("FindFileWidget/SearchHistory")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128 )
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
129 self.findtextCombo.lineEdit().setClearButtonEnabled(True)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
130 self.findtextCombo.lineEdit().returnPressed.connect(self.__doSearch)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
131 self.findtextCombo.setCompleter(None)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
132 self.findtextCombo.addItems(self.searchHistory)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
133 self.findtextCombo.setEditText("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10692
diff changeset
135 self.replaceHistory = EricUtilities.toList(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
136 Preferences.getSettings().value("FindFileWidget/ReplaceHistory")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
137 )
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
138 self.replacetextCombo.lineEdit().setClearButtonEnabled(True)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
139 self.replacetextCombo.lineEdit().returnPressed.connect(self.__doSearch)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
140 self.replacetextCombo.setCompleter(None)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
141 self.replacetextCombo.addItems(self.replaceHistory)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
142 self.replacetextCombo.setEditText("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10692
diff changeset
144 self.dirHistory = EricUtilities.toList(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145 Preferences.getSettings().value("FindFileWidget/DirectoryHistory")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146 )
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
147 self.dirPicker.addItems(self.dirHistory)
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
148 self.dirPicker.setText("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150 self.excludeHiddenCheckBox.setChecked(
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10692
diff changeset
151 EricUtilities.toBool(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
152 Preferences.getSettings().value("FindFileWidget/ExcludeHidden", True)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
153 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
154 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
155
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
156 self.__populateFilterSelectors()
9559
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
157 self.populateFileCategories()
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
158
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
159 self.excludeFilterCheckBox.setChecked(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
160 EricUtilities.toBool(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
161 Preferences.getSettings().value("FindFileWidget/ExcludeFilter", False)
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
162 )
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
163 )
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
164 self.excludeFilterComboBox.setCurrentText(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
165 Preferences.getSettings().value("FindFileWidget/ExcludeFilterName", "")
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
166 )
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
167
8917
18901f50f971 FindFileWidget: adde code to ensure the file type tab is the current one upon startup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
168 # ensure the file type tab is the current one
18901f50f971 FindFileWidget: adde code to ensure the file type tab is the current one upon startup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
169 self.fileOptionsWidget.setCurrentWidget(self.fileTypeTab)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
171 self.__project.projectOpened.connect(self.__projectOpened)
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
172 self.__project.projectClosed.connect(self.__projectClosed)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
174 self.__standardListFont = self.findList.font()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.findList.headerItem().setText(self.findList.columnCount(), "")
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
176 self.findList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 self.__section0Size = self.findList.header().sectionSize(0)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 self.findList.setExpandsOnDoubleClick(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.__cancelSearch = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.__lastFileItem = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 self.__populating = False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
183
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
184 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
458
1695e7a2db54 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 432
diff changeset
185 self.customContextMenuRequested.connect(self.__contextMenuRequested)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
186
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
187 self.__replaceMode = True
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
188 self.__toggleReplaceMode()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
190 def __populateFilterSelectors(self):
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
191 """
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
192 Private method to (re-)populate the file filters selector.
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
193 """
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
194 currentFilter = self.filterComboBox.currentText()
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
195 self.filterComboBox.clear()
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
196
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
197 currentExcludeFilter = self.excludeFilterComboBox.currentText()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
198 self.excludeFilterComboBox.clear()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
199
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
200 # add standard entries
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
201 self.filterComboBox.addItem("")
10494
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
202 self.filterComboBox.addItem(self.tr("All Files"), ["*"])
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
203
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
204 self.excludeFilterComboBox.addItem("")
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
205
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
206 # add configured entries
10494
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
207 # FileFilters is a dictionary with the filter name as key and
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
208 # a list of file name patterns as value
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
209 self.__filters = json.loads(
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
210 Preferences.getSettings().value("FindFileWidget/FileFilters", "{}")
11148
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11097
diff changeset
211 # noqa: M-613
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
212 )
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
213 for fileFilter in sorted(self.__filters):
10494
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
214 self.filterComboBox.addItem(
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
215 self.tr("{0} ({1})").format(
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
216 fileFilter, " ".join(self.__filters[fileFilter])
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
217 ),
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
218 self.__filters[fileFilter],
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
219 )
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
220 # ExcludeFileFilters is a dictionary with the filter name as key and
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
221 # a list of file name patterns as value
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
222 self.__excludeFilters = json.loads(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
223 Preferences.getSettings().value("FindFileWidget/ExcludeFileFilters", "{}")
11148
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11097
diff changeset
224 # noqa: M-613
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
225 )
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
226 for fileFilter in sorted(self.__excludeFilters):
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
227 self.excludeFilterComboBox.addItem(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
228 self.tr("{0} ({1})").format(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
229 fileFilter, " ".join(self.__excludeFilters[fileFilter])
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
230 ),
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
231 self.__excludeFilters[fileFilter],
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
232 )
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
233
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
234 # reselect the current entry
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
235 index = self.filterComboBox.findText(currentFilter)
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
236 if index == -1:
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
237 index = 0
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
238 self.filterComboBox.setCurrentIndex(index)
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
239
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
240 index = self.excludeFilterComboBox.findText(currentExcludeFilter)
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
241 if index == -1:
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
242 index = 0
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
243 self.excludeFilterComboBox.setCurrentIndex(index)
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
244
9559
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
245 def populateFileCategories(self):
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
246 """
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
247 Public method to populate the search file categories list.
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
248 """
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
249 # step 1: remember checked entries categories
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
250 checkedCategories = []
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
251 for row in range(self.fileTypeList.count()):
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
252 itm = self.fileTypeList.item(row)
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
253 if itm.checkState() == Qt.CheckState.Checked:
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
254 checkedCategories.append(itm.data(Qt.ItemDataRole.UserRole))
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
255
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
256 # step 2: clear the list
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
257 self.fileTypeList.clear()
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
258
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
259 # step 3: populate the file type list
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
260 for fileCategory in [
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
261 c
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
262 for c in self.__project.getFileCategories()
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
263 if c not in ("TRANSLATIONS", "OTHERS")
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
264 ]:
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
265 itm = QListWidgetItem(
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
266 self.__project.getFileCategoryType(fileCategory), self.fileTypeList
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
267 )
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
268 itm.setData(Qt.ItemDataRole.UserRole, fileCategory)
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
269 itm.setFlags(itm.flags() | Qt.ItemFlag.ItemIsUserCheckable)
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
270 if bool(checkedCategories):
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
271 itm.setCheckState(
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
272 Qt.CheckState.Checked
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
273 if fileCategory in checkedCategories
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
274 else Qt.CheckState.Unchecked
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
275 )
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
276 else:
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
277 # first time population
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
278 itm.setCheckState(
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
279 Qt.CheckState.Checked
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
280 if fileCategory == "SOURCES"
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
281 else Qt.CheckState.Unchecked
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
282 )
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
283
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
284 def __createItem(self, file, line, text, start, end, replTxt="", md5=""):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 Private method to create an entry in the file list.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
287
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
288 @param file filename of file
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
289 @type str
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
290 @param line line number
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
291 @type int
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
292 @param text text found
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
293 @type str
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
294 @param start start position of match
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
295 @type int
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
296 @param end end position of match
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
297 @type int
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
298 @param replTxt text with replacements applied (defaults to "")
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
299 @type str (optional)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
300 @param md5 MD5 hash of the file (defaults to "")
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
301 @type str (optional)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 if self.__lastFileItem is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 # It's a new file
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 self.__lastFileItem = QTreeWidgetItem(self.findList, [file])
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 self.__lastFileItem.setFirstColumnSpanned(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 self.__lastFileItem.setExpanded(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 if self.__replaceMode:
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
309 self.__lastFileItem.setFlags(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
310 self.__lastFileItem.flags()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311 | Qt.ItemFlag.ItemIsUserCheckable
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
312 | Qt.ItemFlag.ItemIsAutoTristate
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
313 )
682
91114a975eda Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 654
diff changeset
314 self.__lastFileItem.setData(0, self.md5Role, md5)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
315
1640
1699d46026cd Fixed a compatibility issue with Qt 4.8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
316 itm = QTreeWidgetItem(self.__lastFileItem)
9575
635b6c5a36e1 Corrected the alignment of the line numbers of the "Find In File" widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9574
diff changeset
317 itm.setTextAlignment(
635b6c5a36e1 Corrected the alignment of the line numbers of the "Find In File" widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9574
diff changeset
318 0,
635b6c5a36e1 Corrected the alignment of the line numbers of the "Find In File" widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9574
diff changeset
319 Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter,
635b6c5a36e1 Corrected the alignment of the line numbers of the "Find In File" widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9574
diff changeset
320 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
321 itm.setData(0, Qt.ItemDataRole.DisplayRole, line)
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
322 itm.setData(1, Qt.ItemDataRole.DisplayRole, text)
7
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
323 itm.setData(0, self.lineRole, line)
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
324 itm.setData(0, self.startRole, start)
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
325 itm.setData(0, self.endRole, end)
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
326 itm.setData(0, self.replaceRole, replTxt)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 if self.__replaceMode:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
328 itm.setFlags(itm.flags() | Qt.ItemFlag.ItemIsUserCheckable)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
329 itm.setCheckState(0, Qt.CheckState.Checked)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 self.replaceButton.setEnabled(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
331
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
332 def activate(self, replaceMode=False, txt="", searchDir="", openFiles=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 """
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
334 Public method to activate the widget with a given mode, a text
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
335 to search for and some search parameters.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
336
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
337 @param replaceMode flag indicating replacement mode (defaults to False)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
338 @type bool (optional)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
339 @param txt text to be searched for (defaults to "")
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
340 @type str (optional)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
341 @param searchDir directory to search in (defaults to "")
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
342 @type str (optional)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
343 @param openFiles flag indicating to operate on open files only
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
344 (defaults to False)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
345 @type bool (optional)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 """
9559
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
347 self.populateFileCategories()
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
348
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
349 if self.__project.isOpen():
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 self.projectButton.setEnabled(True)
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
351 self.projectButton.setChecked(True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 self.projectButton.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 self.dirButton.setChecked(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 self.findtextCombo.setEditText(txt)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 self.findtextCombo.lineEdit().selectAll()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 self.findtextCombo.setFocus()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
359
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
360 if self.__replaceMode != replaceMode:
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
361 self.__toggleReplaceMode()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
363 if searchDir:
9037
907540e4f741 Created new branch <external_find>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
364 self.__setSearchDirectory(searchDir)
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
365 if openFiles:
9037
907540e4f741 Created new branch <external_find>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
366 self.__setOpenFiles()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
368 @pyqtSlot()
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
369 def __toggleReplaceMode(self):
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
370 """
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
371 Private slot to toggle the dialog mode.
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
372 """
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
373 self.__replaceMode = not self.__replaceMode
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
374
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
375 # change some interface elements and properties
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
376 self.findList.clear()
8809
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
377 self.clearButton.setEnabled(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
378
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 if self.__replaceMode:
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
380 self.replaceButton.show()
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
381 self.replaceLabel.show()
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
382 self.replacetextCombo.show()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
383
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
384 self.replaceButton.setEnabled(False)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 self.replacetextCombo.setEditText("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
387 font = Preferences.getEditorOtherFonts("MonospacedFont")
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
388 self.findList.setFont(font)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
389
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
390 self.modeToggleButton.setIcon(EricPixmapCache.getIcon("1uparrow"))
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
391 else:
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
392 self.replaceLabel.hide()
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
393 self.replacetextCombo.hide()
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
394 self.replaceButton.hide()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
395
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
396 self.findList.setFont(self.__standardListFont)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
398 self.modeToggleButton.setIcon(EricPixmapCache.getIcon("1downarrow"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
399
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
400 @pyqtSlot()
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
401 def __projectOpened(self):
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
402 """
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
403 Private slot to react to the opening of a project.
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
404 """
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
405 self.projectButton.setEnabled(True)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
406 self.projectButton.setChecked(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
408 @pyqtSlot()
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
409 def __projectClosed(self):
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
410 """
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
411 Private slot to react to the closing of a project.
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
412 """
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
413 self.projectButton.setEnabled(False)
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
414 if self.projectButton.isChecked():
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
415 self.dirButton.setChecked(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
416
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
417 @pyqtSlot(bool)
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
418 def on_escapeToolButton_toggled(self, checked):
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
419 """
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
420 Private slot handling a change of the escape selector.
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
421
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
422 @param checked state of the escape selector
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
423 @type bool
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
424 """
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
425 if checked:
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
426 # only one of regexp or escape can be selected
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
427 self.regexpToolButton.setChecked(False)
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
428
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
429 @pyqtSlot(bool)
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
430 def on_regexpToolButton_toggled(self, checked):
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
431 """
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
432 Private slot handling a change of the regexp selector.
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
433
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
434 @param checked state of the regexp selector
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
435 @type bool
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
436 """
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
437 if checked:
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
438 # only one of regexp or escape can be selected
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
439 self.escapeToolButton.setChecked(False)
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
440
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
441 @pyqtSlot()
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
442 def on_filtersConfigButton_clicked(self):
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
443 """
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
444 Private slot to edit the list of defined file filter entries.
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
445 """
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
446 from .FindFileFiltersEditDialog import FindFileFiltersEditDialog
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
447
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10933
diff changeset
448 dlg = FindFileFiltersEditDialog(self.__filters, parent=self)
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
449 if dlg.exec() == QDialog.DialogCode.Accepted:
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
450 filters = dlg.getFilters()
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
451 Preferences.getSettings().setValue(
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
452 "FindFileWidget/FileFilters", json.dumps(filters)
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
453 )
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
454 self.__populateFilterSelectors()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
455
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
456 @pyqtSlot()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
457 def on_excludeFiltersConfigButton_clicked(self):
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
458 """
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
459 Private slot to edit the list of defined exclude file filter entries.
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
460 """
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
461 from .FindFileFiltersEditDialog import FindFileFiltersEditDialog
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
462
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
463 dlg = FindFileFiltersEditDialog(self.__excludeFilters, parent=self)
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
464 if dlg.exec() == QDialog.DialogCode.Accepted:
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
465 filters = dlg.getFilters()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
466 Preferences.getSettings().setValue(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
467 "FindFileWidget/ExcludeFileFilters", json.dumps(filters)
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
468 )
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
469 self.__populateFilterSelectors()
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
470
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
471 @pyqtSlot(str)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 def on_findtextCombo_editTextChanged(self, text):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 """
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
474 Private slot to handle the editTextChanged signal of the find
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
475 text combo.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
476
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 @param text (ignored)
10433
328f3ec4b77a Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10430
diff changeset
478 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 self.__enableFindButton()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
481
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
482 @pyqtSlot(str)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 def on_replacetextCombo_editTextChanged(self, text):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 """
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
485 Private slot to handle the editTextChanged signal of the replace
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
486 text combo.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
487
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 @param text (ignored)
10433
328f3ec4b77a Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10430
diff changeset
489 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 self.__enableFindButton()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
492
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
493 @pyqtSlot(str)
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
494 def on_dirPicker_editTextChanged(self, text):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 """
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
496 Private slot to handle the textChanged signal of the directory
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
497 picker.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
498
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 @param text (ignored)
10433
328f3ec4b77a Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10430
diff changeset
500 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 self.__enableFindButton()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
503
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 @pyqtSlot()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 def on_projectButton_clicked(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 """
7109
6191abce8002 FindFileDialog: fixed a situation where the Find button is not enabled when it should.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
507 Private slot to handle the selection of the 'Project' radio button.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 self.__enableFindButton()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
510
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 @pyqtSlot()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 def on_dirButton_clicked(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 """
7109
6191abce8002 FindFileDialog: fixed a situation where the Find button is not enabled when it should.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
514 Private slot to handle the selection of the 'Directory' radio button.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 self.__enableFindButton()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
517
7109
6191abce8002 FindFileDialog: fixed a situation where the Find button is not enabled when it should.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
518 @pyqtSlot()
6191abce8002 FindFileDialog: fixed a situation where the Find button is not enabled when it should.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
519 def on_openFilesButton_clicked(self):
7139
9bb36ec2d1b5 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7109
diff changeset
520 """
9bb36ec2d1b5 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7109
diff changeset
521 Private slot to handle the selection of the 'Open Files' radio button.
9bb36ec2d1b5 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7109
diff changeset
522 """
9bb36ec2d1b5 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7109
diff changeset
523 self.__enableFindButton()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
524
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 @pyqtSlot()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 def on_filterCheckBox_clicked(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 Private slot to handle the selection of the file filter check box.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 self.__enableFindButton()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
531
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
532 @pyqtSlot(int)
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
533 def on_filterComboBox_currentIndexChanged(self, index):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 """
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
535 Private slot to handle the selection of a file filter.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
536
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
537 @param index index of the selected entry
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
538 @type int
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 self.__enableFindButton()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
541
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
542 @pyqtSlot()
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
543 def on_excludeFilterCheckBox_clicked(self):
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
544 """
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
545 Private slot to handle the selection of the exclude file filter check box.
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
546 """
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
547 self.__enableFindButton()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
548
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
549 @pyqtSlot(int)
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
550 def on_excludeFilterComboBox_currentIndexChanged(self, index):
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
551 """
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
552 Private slot to handle the selection of an exclude file filter.
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
553
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
554 @param index index of the selected entry
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
555 @type int
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
556 """
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
557 self.__enableFindButton()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
558
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
559 @pyqtSlot()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 def __enableFindButton(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 Private slot called to enable the find button.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 """
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
564 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
565 self.findtextCombo.currentText() == ""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
566 or (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
567 self.dirButton.isChecked()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
568 and (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
569 self.dirPicker.currentText() == ""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
570 or not os.path.exists(os.path.abspath(self.dirPicker.currentText()))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
571 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
572 )
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
573 or (
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
574 self.filterCheckBox.isChecked()
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
575 and self.filterComboBox.currentText() == ""
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
576 )
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
577 or (self.projectButton.isChecked() and not self.__project.isOpen())
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
578 or (
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
579 self.excludeFilterCheckBox.isChecked()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
580 and self.excludeFilterComboBox.currentText() == ""
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
581 )
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
582 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 self.findButton.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 self.findButton.setEnabled(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
586
855
d8c4113a9274 Fixed an issue of the find/replace in file dialog where a replace would change the eol as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 846
diff changeset
587 def __stripEol(self, txt):
d8c4113a9274 Fixed an issue of the find/replace in file dialog where a replace would change the eol as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 846
diff changeset
588 """
d8c4113a9274 Fixed an issue of the find/replace in file dialog where a replace would change the eol as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 846
diff changeset
589 Private method to strip the eol part.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
590
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
591 @param txt line of text that should be treated
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
592 @type str
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
593 @return text with eol stripped
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
594 @rtype str
855
d8c4113a9274 Fixed an issue of the find/replace in file dialog where a replace would change the eol as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 846
diff changeset
595 """
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
596 return txt.rstrip("\n\r")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
597
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
598 def __buildReFileFilter(self, fileFilter):
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
599 """
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
600 Private method to convert a file filter expression into a valid re search
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
601 pattern.
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
602
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
603 @param fileFilter file filter expression
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
604 @type str
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
605 @return re search pattern with dot, question mark and star converted
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
606 @rtype str
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
607 """
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
608 return "^{0}$".format(
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
609 fileFilter.strip().replace(".", r"\.").replace("*", ".*").replace("?", ".")
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
610 )
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
611
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
612 @pyqtSlot()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 def __stopSearch(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 Private slot to handle the stop button being pressed.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 self.__cancelSearch = True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
618
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
619 @pyqtSlot()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 def __doSearch(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 Private slot to handle the find button being pressed.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 """
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
624 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
625 self.__replaceMode
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
626 and not ericApp().getObject("ViewManager").checkAllDirty()
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
627 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
629
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 self.__cancelSearch = False
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
631 filterRe = None
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
632 excludeFilterRe = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
633
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 if self.filterCheckBox.isChecked():
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
635 fileFilter = self.filterComboBox.currentData()
10494
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
636 fileFilterPattern = "|".join(
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
637 self.__buildReFileFilter(filter) for filter in fileFilter
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
638 )
8db0328580d7 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10492
diff changeset
639 filterRe = re.compile(fileFilterPattern)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
640
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
641 if self.excludeFilterCheckBox.isChecked():
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
642 excludeFileFilter = self.excludeFilterComboBox.currentData()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
643 excludeFileFilterPattern = "|".join(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
644 self.__buildReFileFilter(filter) for filter in excludeFileFilter
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
645 )
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
646 excludeFilterRe = re.compile(excludeFileFilterPattern)
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
647
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 if self.projectButton.isChecked():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 if self.filterCheckBox.isChecked():
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
650 files = [
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
651 self.__project.getRelativePath(file)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
652 for file in self.__getFileList(
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
653 self.__project.getProjectPath(),
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
654 filterRe,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
655 excludeHiddenDirs=self.excludeHiddenCheckBox.isChecked(),
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
656 )
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
657 ]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 files = []
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
660 for row in range(self.fileTypeList.count()):
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
661 itm = self.fileTypeList.item(row)
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
662 if itm.checkState() == Qt.CheckState.Checked:
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
663 files += self.__project.getProjectData(
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
664 dataKey=itm.data(Qt.ItemDataRole.UserRole)
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
665 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 elif self.dirButton.isChecked():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 if not self.filterCheckBox.isChecked():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
668 filters = []
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
669 if self.__project.isOpen() and os.path.abspath(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
670 self.dirPicker.currentText()
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
671 ).startswith(self.__project.getProjectPath()):
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
672 for row in range(self.fileTypeList.count()):
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
673 itm = self.fileTypeList.item(row)
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
674 if itm.checkState() == Qt.CheckState.Checked:
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
675 filters.extend(
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
676 [
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
677 self.__buildReFileFilter(assoc)
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
678 for assoc in self.__project.getFiletypeAssociations(
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
679 itm.data(Qt.ItemDataRole.UserRole)
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
680 )
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
681 ]
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
682 )
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
683 else:
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
684 for row in range(self.fileTypeList.count()):
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
685 itm = self.fileTypeList.item(row)
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
686 if itm.checkState() == Qt.CheckState.Checked:
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
687 fileType = itm.data(Qt.ItemDataRole.UserRole)
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
688 if fileType == "SOURCES":
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
689 filters.extend(
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
690 [
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
691 self.__buildReFileFilter(assoc)
10373
093dcebe5ecb Corrected some uses of dict.keys(), dict.values() and dict.items().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10050
diff changeset
692 for assoc in Preferences.getEditorLexerAssocs()
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
693 if assoc
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
694 not in self.__project.getFileCategoryExtension(
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
695 fileType, reverse=True
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
696 )
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
697 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
698 )
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
699 else:
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
700 filters.extend(
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
701 [
10492
53eac4c7d10b Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10486
diff changeset
702 self.__buildReFileFilter(ext)
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
703 for ext in self.__project.getFileCategoryExtension(
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
704 # __IGNORE_WARNING__
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
705 fileType
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
706 )
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
707 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
708 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709 filterString = "|".join(filters)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 filterRe = re.compile(filterString)
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
711 files = self.__getFileList(
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
712 os.path.abspath(self.dirPicker.currentText()),
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
713 filterRe,
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
714 excludeHiddenDirs=self.excludeHiddenCheckBox.isChecked(),
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
715 excludeHiddenFiles=self.excludeHiddenCheckBox.isChecked(),
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
716 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 elif self.openFilesButton.isChecked():
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8347
diff changeset
718 vm = ericApp().getObject("ViewManager")
2214
4ce1ebcc3806 Added actions to open the find in files and replace in files dialogs in a mode that searches open files only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
719 vm.checkAllDirty()
4ce1ebcc3806 Added actions to open the find in files and replace in files dialogs in a mode that searches open files only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
720 files = vm.getOpenFilenames()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
721
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
722 if excludeFilterRe:
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
723 files = [f for f in files if not excludeFilterRe.match(os.path.basename(f))]
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
724
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725 self.findList.clear()
10933
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
726 self.findProgressLabel.setPath("")
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
727 self.findProgress.setValue(0)
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
728 self.findProgress.setMaximum(len(files))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
729 QApplication.processEvents()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
730
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
731 # retrieve the values
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
732 esc = self.escapeToolButton.isChecked()
8846
4196ec4c37a5 Some optimizations to the find location and find in file panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8809
diff changeset
733 reg = self.regexpToolButton.isChecked()
4196ec4c37a5 Some optimizations to the find location and find in file panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8809
diff changeset
734 wo = self.wordToolButton.isChecked()
4196ec4c37a5 Some optimizations to the find location and find in file panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8809
diff changeset
735 cs = self.caseToolButton.isChecked()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 ct = self.findtextCombo.currentText()
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
737 txt = Utilities.unslash(ct) if esc else ct
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
738 txt = txt if reg else re.escape(txt)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 if wo:
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 293
diff changeset
740 txt = "\\b{0}\\b".format(txt)
7192
a22eee00b052 Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7139
diff changeset
741 flags = re.UNICODE
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
742 if not cs:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 flags |= re.IGNORECASE
6
52e8c820d0dd Removed some superfluous unicode() calls.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
744 try:
52e8c820d0dd Removed some superfluous unicode() calls.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
745 search = re.compile(txt, flags)
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
746 except re.error as why:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8347
diff changeset
747 EricMessageBox.critical(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3012
diff changeset
748 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
749 self.tr("Invalid search expression"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
750 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
751 """<p>The search expression is not valid.</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
752 """<p>Error: {0}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
753 ).format(str(why)),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
754 )
6
52e8c820d0dd Removed some superfluous unicode() calls.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
755 self.stopButton.setEnabled(False)
52e8c820d0dd Removed some superfluous unicode() calls.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
756 self.findButton.setEnabled(True)
52e8c820d0dd Removed some superfluous unicode() calls.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
757 return
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758 # reset the findtextCombo
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 if ct in self.searchHistory:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 self.searchHistory.remove(ct)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 self.searchHistory.insert(0, ct)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
762 self.findtextCombo.clear()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763 self.findtextCombo.addItems(self.searchHistory)
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
764 Preferences.getSettings().setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
765 "FindFileWidget/SearchHistory", self.searchHistory[:30]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
766 )
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
767 Preferences.getSettings().setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
768 "FindFileWidget/ExcludeHidden", self.excludeHiddenCheckBox.isChecked()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
769 )
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
770 Preferences.getSettings().setValue(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
771 "FindFileWidget/ExcludeFilter", self.excludeFilterCheckBox.isChecked()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
772 )
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
773 Preferences.getSettings().setValue(
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
774 "FindFileWidget/ExcludeFilterName", self.excludeFilterComboBox.currentText()
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
775 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
776
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
777 if self.__replaceMode:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
778 replTxt = self.replacetextCombo.currentText()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
779 if replTxt in self.replaceHistory:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
780 self.replaceHistory.remove(replTxt)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 self.replaceHistory.insert(0, replTxt)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782 self.replacetextCombo.clear()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 self.replacetextCombo.addItems(self.replaceHistory)
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8636
diff changeset
784 Preferences.getSettings().setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
785 "FindFileWidget/ReplaceHistory", self.replaceHistory[:30]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
786 )
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
787 if esc:
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
788 replTxt = Utilities.unslash(replTxt)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
789
268
f6f53503b8d6 Changed the Find in Files dialog to remember the history of the search string, replace string and the search directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 248
diff changeset
790 if self.dirButton.isChecked():
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
791 searchDir = self.dirPicker.currentText()
293
9ecc02b50325 Fixed a variable naming issue in FindFileDialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 268
diff changeset
792 if searchDir in self.dirHistory:
9ecc02b50325 Fixed a variable naming issue in FindFileDialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 268
diff changeset
793 self.dirHistory.remove(searchDir)
9ecc02b50325 Fixed a variable naming issue in FindFileDialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 268
diff changeset
794 self.dirHistory.insert(0, searchDir)
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
795 self.dirPicker.clear()
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
796 self.dirPicker.addItems(self.dirHistory)
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
797 self.dirPicker.setText(self.dirHistory[0])
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
798 Preferences.getSettings().setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
799 "FindFileWidget/DirectoryHistory", self.dirHistory[:30]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
800 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
801
489
844a0a278269 Fixed an issue in the find in files dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 476
diff changeset
802 # set the button states
844a0a278269 Fixed an issue in the find in files dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 476
diff changeset
803 self.stopButton.setEnabled(True)
844a0a278269 Fixed an issue in the find in files dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 476
diff changeset
804 self.findButton.setEnabled(False)
8809
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
805 self.clearButton.setEnabled(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
806
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
807 # now go through all the files
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
808 self.__populating = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
809 self.findList.setUpdatesEnabled(False)
3343
f7a6d271bb40 Modified the find in files dialog to show some statistics when done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3192
diff changeset
810 occurrences = 0
f7a6d271bb40 Modified the find in files dialog to show some statistics when done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3192
diff changeset
811 fileOccurrences = 0
8220
006ee31b4835 Applied some more code simplifications suggested by the new Simplify checker (Y113: use enumerate()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
812 for progress, file in enumerate(files, start=1):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
813 self.__lastFileItem = None
3343
f7a6d271bb40 Modified the find in files dialog to show some statistics when done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3192
diff changeset
814 found = False
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
815 if self.__cancelSearch:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
816 break
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
817
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8235
diff changeset
818 fn = (
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
819 os.path.join(self.__project.getProjectPath(), file)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
820 if self.projectButton.isChecked()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
821 else file
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8235
diff changeset
822 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
823 # read the file and split it into textlines
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
824 try:
5603
4f2dd0850803 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5558
diff changeset
825 text, encoding, hashStr = Utilities.readEncodedFileWithHash(fn)
855
d8c4113a9274 Fixed an issue of the find/replace in file dialog where a replace would change the eol as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 846
diff changeset
826 lines = text.splitlines(True)
10050
3750abc45d5e Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
827 except (OSError, UnicodeError):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
828 self.findProgress.setValue(progress)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
829 continue
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
830
8932
a21e80dde10e Don't process events after each file to prevent a slow search.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 8917
diff changeset
831 now = time.monotonic()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
832 # now perform the search and display the lines found
8220
006ee31b4835 Applied some more code simplifications suggested by the new Simplify checker (Y113: use enumerate()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
833 for count, line in enumerate(lines, start=1):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
834 if self.__cancelSearch:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
835 break
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
836
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
837 contains = search.search(line)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
838 if contains:
3343
f7a6d271bb40 Modified the find in files dialog to show some statistics when done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3192
diff changeset
839 occurrences += 1
f7a6d271bb40 Modified the find in files dialog to show some statistics when done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3192
diff changeset
840 found = True
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
841 start = contains.start()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
842 end = contains.end()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
843 if self.__replaceMode:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
844 rline = search.sub(replTxt, line)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
845 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
846 rline = ""
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
847 line = Utilities.slash(line) if esc else self.__stripEol(line)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
848 if len(line) > 1024:
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 293
diff changeset
849 line = "{0} ...".format(line[:1024])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
850 if self.__replaceMode:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
851 if len(rline) > 1024:
432
497e188ee86e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 293
diff changeset
852 rline = "{0} ...".format(line[:1024])
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
853 line = "- {0}\n+ {1}".format(
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
854 line,
10621
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10595
diff changeset
855 (
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10595
diff changeset
856 "\n ".join(
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10595
diff changeset
857 Utilities.slash(rl) for rl in rline.splitlines(True)
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10595
diff changeset
858 )
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10595
diff changeset
859 if esc
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10595
diff changeset
860 else self.__stripEol(rline)
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10595
diff changeset
861 ),
10435
c712d09cc839 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10433
diff changeset
862 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
863 self.__createItem(file, count, line, start, end, rline, hashStr)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
864
8932
a21e80dde10e Don't process events after each file to prevent a slow search.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 8917
diff changeset
865 if time.monotonic() - now > 0.01:
a21e80dde10e Don't process events after each file to prevent a slow search.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 8917
diff changeset
866 QApplication.processEvents()
a21e80dde10e Don't process events after each file to prevent a slow search.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 8917
diff changeset
867 now = time.monotonic()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
868
3343
f7a6d271bb40 Modified the find in files dialog to show some statistics when done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3192
diff changeset
869 if found:
f7a6d271bb40 Modified the find in files dialog to show some statistics when done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3192
diff changeset
870 fileOccurrences += 1
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
871 self.findProgress.setValue(progress)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
872
42
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
873 if not files:
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
874 self.findProgress.setMaximum(1)
23b45a742e17 Fixed a bunch of issues including a workaround for a bug in the Python email package (s. EmailDialog.py).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
875 self.findProgress.setValue(1)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
876
3343
f7a6d271bb40 Modified the find in files dialog to show some statistics when done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3192
diff changeset
877 resultFormat = self.tr("{0} / {1}", "occurrences / files")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
878 self.findProgressLabel.setPath(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
879 resultFormat.format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
880 self.tr("%n occurrence(s)", "", occurrences),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
881 self.tr("%n file(s)", "", fileOccurrences),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
882 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
883 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
884
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
885 self.findList.setUpdatesEnabled(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
886 self.findList.sortItems(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
887 self.findList.sortColumn(), self.findList.header().sortIndicatorOrder()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
888 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
889 self.findList.resizeColumnToContents(1)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
890 if self.__replaceMode:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
891 self.findList.header().resizeSection(0, self.__section0Size + 30)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
892 self.findList.header().setStretchLastSection(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
893 self.__populating = False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
894
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
895 self.stopButton.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
896 self.findButton.setEnabled(True)
8809
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
897 self.clearButton.setEnabled(self.findList.topLevelItemCount() != 0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
898
8809
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
899 @pyqtSlot()
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
900 def __clearResults(self):
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
901 """
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
902 Private slot to clear the current search results.
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
903 """
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
904 self.findList.clear()
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
905 self.replaceButton.setEnabled(False)
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
906 self.clearButton.setEnabled(False)
8846
4196ec4c37a5 Some optimizations to the find location and find in file panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8809
diff changeset
907 self.findProgressLabel.setPath("")
4196ec4c37a5 Some optimizations to the find location and find in file panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8809
diff changeset
908 self.findProgress.setValue(0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
909
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
910 @pyqtSlot(QTreeWidgetItem, int)
10692
9becf9ca115c Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10677
diff changeset
911 def on_findList_itemDoubleClicked(self, itm, _column):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
912 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 894
diff changeset
913 Private slot to handle the double click on a file item.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
914
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
915 It emits a signal depending on the file extension.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
916
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
917 @param itm the double clicked tree item
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
918 @type QTreeWidgetItem
10692
9becf9ca115c Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10677
diff changeset
919 @param _column column that was double clicked (unused)
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
920 @type int
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
921 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
922 if itm.parent():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
923 file = itm.parent().text(0)
7
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
924 line = itm.data(0, self.lineRole)
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
925 start = itm.data(0, self.startRole)
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
926 end = itm.data(0, self.endRole)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
927 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
928 file = itm.text(0)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
929 line = 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
930 start = 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
931 end = 0
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
932
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
933 fileName = (
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
934 os.path.join(self.__project.getProjectPath(), file)
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
935 if self.__project.isOpen()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
936 else file
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
937 )
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
938 fileExt = os.path.splitext(fileName)[1]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
939
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
940 if fileExt == ".ui":
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
941 self.designerFile.emit(fileName)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
942 elif fileExt == ".ts":
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
943 self.linguistFile.emit(fileName)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
944 elif fileExt == ".qm":
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
945 self.trpreview.emit([fileName])
10595
59579e8aff98 Removed support for the deprecated eric-ide specific XML file formats.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10494
diff changeset
946 elif fileExt in (".egj",):
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
947 self.umlFile.emit(fileName)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
948 elif fileExt == ".svg":
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
949 self.svgFile.emit(fileName)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
950 elif fileExt[1:] in QImageReader.supportedImageFormats():
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
951 self.pixmapFile.emit(fileName)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
952 else:
8636
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
953 if Utilities.MimeTypes.isTextFile(fileName):
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
954 self.sourceFile.emit(fileName, line, "", start, end)
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
955 else:
c0a3a6e40815 Extended the supported file type specific signals in the two 'Find' related widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8632
diff changeset
956 QDesktopServices.openUrl(QUrl(fileName))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
957
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
958 def __getFileList(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
959 self, path, filterRe, excludeHiddenDirs=False, excludeHiddenFiles=False
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
960 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
961 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
962 Private method to get a list of files to search.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
963
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
964 @param path the root directory to search in
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
965 @type str
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
966 @param filterRe regular expression defining the filter
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
967 criteria
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
968 @type regexp object
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
969 @param excludeHiddenDirs flag indicating to exclude hidden directories
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
970 @type bool
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
971 @param excludeHiddenFiles flag indicating to exclude hidden files
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
972 @type bool
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
973 @return list of files to be processed
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
974 @rtype list of str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
975 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
976 path = os.path.abspath(path)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
977 files = []
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
978 for dirname, dirs, filenames in os.walk(path):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
979 files.extend(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
980 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
981 os.path.join(dirname, f)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
982 for f in filenames
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
983 if (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
984 not (excludeHiddenFiles and f.startswith("."))
11052
316be9cd43bc Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
985 and (filterRe and filterRe.match(f))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
986 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
987 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
988 )
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
989 if excludeHiddenDirs:
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
990 for d in dirs[:]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
991 if d.startswith("."):
7992
0d1e35a10a0b Find File Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7945
diff changeset
992 dirs.remove(d)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
993 return files
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
994
9037
907540e4f741 Created new branch <external_find>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
995 def __setSearchDirectory(self, searchDir):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
996 """
9037
907540e4f741 Created new branch <external_find>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
997 Private slot to set the name of the directory to search in.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
998
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
999 @param searchDir name of the directory to search in
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1000 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1001 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1002 self.dirButton.setChecked(True)
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
1003 self.dirPicker.setEditText(FileSystemUtilities.toNativeSeparators(searchDir))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1004
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1005 @pyqtSlot()
9037
907540e4f741 Created new branch <external_find>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
1006 def __setOpenFiles(self):
2214
4ce1ebcc3806 Added actions to open the find in files and replace in files dialogs in a mode that searches open files only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
1007 """
9037
907540e4f741 Created new branch <external_find>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
1008 Private slot to set the mode to search in open files.
2214
4ce1ebcc3806 Added actions to open the find in files and replace in files dialogs in a mode that searches open files only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
1009 """
4ce1ebcc3806 Added actions to open the find in files and replace in files dialogs in a mode that searches open files only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
1010 self.openFilesButton.setChecked(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1011
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1012 @pyqtSlot()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1013 def on_replaceButton_clicked(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1014 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1015 Private slot to perform the requested replace actions.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1016 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1017 self.findProgress.setMaximum(self.findList.topLevelItemCount())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1018 self.findProgress.setValue(0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1019
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1020 for index in range(self.findList.topLevelItemCount()):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1021 itm = self.findList.topLevelItem(index)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1022 if itm.checkState(0) in [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1023 Qt.CheckState.PartiallyChecked,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1024 Qt.CheckState.Checked,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1025 ]:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1026 file = itm.text(0)
682
91114a975eda Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 654
diff changeset
1027 origHash = itm.data(0, self.md5Role)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1028
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1029 if self.projectButton.isChecked():
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9516
diff changeset
1030 fn = os.path.join(self.__project.getProjectPath(), file)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1031 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1032 fn = file
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1033
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1034 # read the file and split it into textlines
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1035 try:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1036 text, encoding, hashStr = Utilities.readEncodedFileWithHash(fn)
855
d8c4113a9274 Fixed an issue of the find/replace in file dialog where a replace would change the eol as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 846
diff changeset
1037 lines = text.splitlines(True)
10050
3750abc45d5e Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1038 except (OSError, UnicodeError) as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8347
diff changeset
1039 EricMessageBox.critical(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3012
diff changeset
1040 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
1041 self.tr("Replace in Files"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
1042 self.tr(
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
1043 """<p>Could not read the file <b>{0}</b>."""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1044 """ Skipping it.</p><p>Reason: {1}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1045 ).format(fn, str(err)),
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1046 )
8220
006ee31b4835 Applied some more code simplifications suggested by the new Simplify checker (Y113: use enumerate()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1047 self.findProgress.setValue(index)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1048 continue
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1049
682
91114a975eda Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 654
diff changeset
1050 # Check the original and the current hash. Skip the file,
91114a975eda Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 654
diff changeset
1051 # if hashes are different.
5603
4f2dd0850803 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5558
diff changeset
1052 if origHash != hashStr:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8347
diff changeset
1053 EricMessageBox.critical(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3012
diff changeset
1054 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
1055 self.tr("Replace in Files"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
1056 self.tr(
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
1057 """<p>The current and the original hash of the"""
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
1058 """ file <b>{0}</b> are different. Skipping it."""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1059 """</p><p>Hash 1: {1}</p><p>Hash 2: {2}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1060 ).format(fn, origHash, hashStr),
682
91114a975eda Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 654
diff changeset
1061 )
8220
006ee31b4835 Applied some more code simplifications suggested by the new Simplify checker (Y113: use enumerate()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1062 self.findProgress.setValue(index)
682
91114a975eda Added a check to the find and replace dialog to make sure, that no external changes were done between the find run and the replace run.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 654
diff changeset
1063 continue
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1064
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1065 # replace the lines authorized by the user
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1066 for cindex in range(itm.childCount()):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1067 citm = itm.child(cindex)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7992
diff changeset
1068 if citm.checkState(0) == Qt.CheckState.Checked:
7
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1069 line = citm.data(0, self.lineRole)
c679fb30c8f3 Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
1070 rline = citm.data(0, self.replaceRole)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1071 lines[line - 1] = rline
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1072
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1073 # write the file
855
d8c4113a9274 Fixed an issue of the find/replace in file dialog where a replace would change the eol as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 846
diff changeset
1074 txt = "".join(lines)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1075 try:
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
1076 Utilities.writeEncodedFile(fn, txt, encoding)
10050
3750abc45d5e Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1077 except (OSError, UnicodeError, Utilities.CodingError) as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8347
diff changeset
1078 EricMessageBox.critical(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3012
diff changeset
1079 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
1080 self.tr("Replace in Files"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
1081 self.tr(
846
869c200be26e Fixed an omission in the find and replace dialog and formatted it according PEP 8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
1082 """<p>Could not save the file <b>{0}</b>."""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1083 """ Skipping it.</p><p>Reason: {1}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1084 ).format(fn, str(err)),
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1085 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1086
8265
0090cfa83159 Converted enum names to use all uppercase letters (except for E5PathPickerModes to keep plug-ins using this compatible with previous eric releases).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8260
diff changeset
1087 self.findProgress.setValue(index + 1)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1088
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1089 self.findProgressLabel.setPath("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1090
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1091 self.findList.clear()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1092 self.replaceButton.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1093 self.findButton.setEnabled(True)
8809
29471a3867ac Added a 'Clear' button to the 'search in files' and 'search location' panes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
1094 self.clearButton.setEnabled(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1095
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1096 @pyqtSlot(QPoint)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1097 def __contextMenuRequested(self, pos):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1098 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1099 Private slot to handle the context menu request.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1100
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1101 @param pos position the context menu shall be shown
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1102 @type QPoint
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1103 """
10486
157f119cd10d Corrected a code style issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10484
diff changeset
1104 if self.findList.topLevelItemCount() and (
157f119cd10d Corrected a code style issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10484
diff changeset
1105 self.findList.selectedItems() or self.__replaceMode
10484
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1106 ):
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1107 menu = QMenu(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1108
10484
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1109 if self.findList.selectedItems():
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1110 menu.addAction(self.tr("Open"), self.__openFile)
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1111 menu.addAction(
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1112 self.tr("Copy Path to Clipboard"), self.__copyToClipboard
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1113 )
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1114 if self.__replaceMode:
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1115 menu.addSeparator()
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1116 menu.addAction(self.tr("Select All"), self.__selectAll)
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1117 menu.addAction(self.tr("Deselect All"), self.__deselectAll)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1118
10484
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1119 menu.exec(QCursor.pos())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1120
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1121 @pyqtSlot()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1122 def __openFile(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1123 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1124 Private slot to open the currently selected entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1125 """
10484
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1126 selectedItems = self.findList.selectedItems()
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1127 if selectedItems:
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1128 self.on_findList_itemDoubleClicked(selectedItems[0], 0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1129
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1130 @pyqtSlot()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1131 def __copyToClipboard(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1132 """
8614
4a3a68e51b92 Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1133 Private slot to copy the path of an entry to the clipboard.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1134 """
10484
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1135 selectedItems = self.findList.selectedItems()
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1136 if selectedItems:
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1137 itm = selectedItems[0]
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1138 fn = itm.parent().text(0) if itm.parent() else itm.text(0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1139
10484
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1140 cb = QApplication.clipboard()
ad7a6d699a0d Find File Widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10469
diff changeset
1141 cb.setText(fn)
9037
907540e4f741 Created new branch <external_find>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
1142
9574
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1143 @pyqtSlot()
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1144 def __deselectAll(self):
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1145 """
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1146 Private slot to deselect all entries.
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1147 """
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1148 self.__selectAll(check=False)
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1149
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1150 @pyqtSlot()
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1151 def __selectAll(self, check=True):
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1152 """
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1153 Private slot to select all entries.
9586
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9575
diff changeset
1154
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9575
diff changeset
1155 @param check flag indicating the desired check state (defaults to True)
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9575
diff changeset
1156 @type bool (optional)
9574
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1157 """
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1158 if self.__replaceMode:
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1159 for index in range(self.findList.topLevelItemCount()):
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1160 itm = self.findList.topLevelItem(index)
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1161 itm.setCheckState(
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1162 0,
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1163 Qt.CheckState.Checked if check else Qt.CheckState.Unchecked,
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1164 )
aeed6b4313ad Find In Files
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
1165
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1166
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1167 class FindFileDialog(QDialog):
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1168 """
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1169 Class implementing a dialog to search for text in files and replace it
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1170 with some other text.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1171
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1172 The occurrences found are displayed in a tree showing the file name,
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1173 the line number and the text found. The file will be opened upon a double
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1174 click onto the respective entry of the list. If the widget is in replace
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1175 mode the line below shows the text after replacement. Replacements can
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1176 be authorized by ticking them on. Pressing the replace button performs
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1177 all ticked replacement operations.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1178
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1179 @signal sourceFile(str, int, str, int, int) emitted to open a source file
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1180 at a specificline
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1181 @signal designerFile(str) emitted to open a Qt-Designer file
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1182 @signal linguistFile(str) emitted to open a Qt-Linguist (*.ts) file
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1183 @signal trpreview([str]) emitted to preview Qt-Linguist (*.qm) files
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1184 @signal pixmapFile(str) emitted to open a pixmap file
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1185 @signal svgFile(str) emitted to open a SVG file
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1186 @signal umlFile(str) emitted to open an eric UML file
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1187 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1188
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1189 sourceFile = pyqtSignal(str, int, str, int, int)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1190 designerFile = pyqtSignal(str)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1191 linguistFile = pyqtSignal(str)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1192 trpreview = pyqtSignal(list)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1193 pixmapFile = pyqtSignal(str)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1194 svgFile = pyqtSignal(str)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1195 umlFile = pyqtSignal(str)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1196
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1197 def __init__(self, project, parent=None):
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1198 """
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1199 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1200
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1201 @param project reference to the project object
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1202 @type Project
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1203 @param parent parent widget of this dialog (defaults to None)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1204 @type QWidget (optional)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1205 """
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1206 super().__init__(parent)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1207 self.setWindowFlags(Qt.WindowType.Window)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1208
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1209 self.__layout = QVBoxLayout()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1210
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1211 self.__findWidget = FindFileWidget(project, self)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1212 self.__layout.addWidget(self.__findWidget)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1213
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1214 self.__buttonBox = QDialogButtonBox(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1215 QDialogButtonBox.StandardButton.Close, Qt.Orientation.Horizontal, self
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1216 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1217 self.__buttonBox.button(QDialogButtonBox.StandardButton.Close).setAutoDefault(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1218 False
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1219 )
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1220 self.__layout.addWidget(self.__buttonBox)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1221
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1222 self.setLayout(self.__layout)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1223 self.resize(600, 800)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1224
9039
3c8aa997bad8 Added capability to configure use of an external "Find Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9038
diff changeset
1225 # connect the widgets
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1226 self.__findWidget.sourceFile.connect(self.sourceFile)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1227 self.__findWidget.designerFile.connect(self.designerFile)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1228 self.__findWidget.linguistFile.connect(self.linguistFile)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1229 self.__findWidget.trpreview.connect(self.trpreview)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1230 self.__findWidget.pixmapFile.connect(self.pixmapFile)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1231 self.__findWidget.svgFile.connect(self.svgFile)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1232 self.__findWidget.umlFile.connect(self.umlFile)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1233
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1234 self.__buttonBox.accepted.connect(self.accept)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1235 self.__buttonBox.rejected.connect(self.reject)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1236
9559
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
1237 def populateFileCategories(self):
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
1238 """
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
1239 Public method to populate the search file categories list.
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
1240 """
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
1241 self.__findWidget.populateFileCategories()
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
1242
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1243 def activate(self, replaceMode=False, txt="", searchDir="", openFiles=False):
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1244 """
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1245 Public method to activate the dialog with a given mode, a text
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1246 to search for and some search parameters.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1247
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1248 @param replaceMode flag indicating replacement mode (defaults to False)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1249 @type bool (optional)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1250 @param txt text to be searched for (defaults to "")
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1251 @type str (optional)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1252 @param searchDir directory to search in (defaults to "")
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1253 @type str (optional)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1254 @param openFiles flag indicating to operate on open files only
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1255 (defaults to False)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1256 @type bool (optional)
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1257 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1258 self.__findWidget.activate(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1259 replaceMode=replaceMode, txt=txt, searchDir=searchDir, openFiles=openFiles
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1260 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1261
9038
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1262 self.raise_()
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1263 self.activateWindow()
90bcfdd63d47 Added capability to configure use of an external "Find/Replace In Files" dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9037
diff changeset
1264 self.show()

eric ide

mercurial