eric7/UI/FindLocationWidget.py

Fri, 24 Sep 2021 20:09:58 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 24 Sep 2021 20:09:58 +0200
branch
eric7
changeset 8632
f25cd4b94eb0
parent 8358
eric7/UI/FindFileNameDialog.py@144a6b854f70
child 8636
c0a3a6e40815
permissions
-rw-r--r--

Changed the Find File dialog to an integrated widget (right side)

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
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
3 # Copyright (c) 2004 - 2021 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 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
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import sys
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
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
13 from PyQt6.QtCore import pyqtSignal, pyqtSlot
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
14 from PyQt6.QtWidgets import (
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
15 QWidget, QHeaderView, QApplication, QTreeWidgetItem
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
16 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
8358
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
18 from EricWidgets.EricPathPicker import EricPathPickerModes
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
20 from .Ui_FindLocationWidget import Ui_FindLocationWidget
3186
a05eff845522 Changed all the file or directory selection buttons to QToolButton and gave them an icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
21
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
22 import UI.PixmapCache
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from Utilities import direntries
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 import Utilities
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3186
diff changeset
26
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
27 class FindLocationWidget(QWidget, Ui_FindLocationWidget):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
29 Class implementing a widget to search for files.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 The occurrences found are displayed in a QTreeWidget showing the
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 filename and the pathname. The file will be opened upon a double click
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
33 onto the respective entry of the list or by pressing the open button.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
501
5c615a85241a Finished porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 500
diff changeset
35 @signal sourceFile(str) emitted to open a file in the editor
5c615a85241a Finished porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 500
diff changeset
36 @signal designerFile(str) emitted to open a Qt-Designer file
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
476
121633976eca Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 428
diff changeset
38 sourceFile = pyqtSignal(str)
500
c3abc7895a01 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 476
diff changeset
39 designerFile = pyqtSignal(str)
476
121633976eca Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 428
diff changeset
40
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
41 def __init__(self, project, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @param project reference to the project object
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
46 @type Project
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
47 @param parent parent widget of this dialog
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
48 @type QWidget
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
50 super().__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.setupUi(self)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
53 self.layout().setContentsMargins(0, 3, 0, 0)
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
54
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: 8327
diff changeset
55 self.searchDirPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.fileList.headerItem().setText(self.fileList.columnCount(), "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.stopButton.setEnabled(False)
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
60 self.stopButton.clicked.connect(self.__stopSearch)
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
61 self.stopButton.setIcon(UI.PixmapCache.getIcon("stopLoading"))
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
62
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
63 self.findButton.setEnabled(False)
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
64 self.findButton.clicked.connect(self.__searchFile)
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
65 self.findButton.setIcon(UI.PixmapCache.getIcon("find"))
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
66
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
67 self.openButton.setIcon(UI.PixmapCache.getIcon("open"))
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
68 self.openButton.clicked.connect(self.__openFile)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.project = project
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.extsepLabel.setText(os.extsep)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
73 self.__shouldStop = False
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
75 self.fileNameEdit.returnPressed.connect(self.__searchFile)
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
76 self.fileExtEdit.returnPressed.connect(self.__searchFile)
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
77
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
78 @pyqtSlot()
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
79 def __stopSearch(self):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
81 Private slot to handle the stop button being pressed.
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
82 """
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
83 self.__shouldStop = True
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
85 @pyqtSlot()
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
86 def __openFile(self, itm=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
88 Private slot to open a file.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
90 It emits the signal sourceFile or designerFile depending on the
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
91 file extension.
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
92
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
93 @param itm item to be opened
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
94 @type QTreeWidgetItem
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
96 if itm is None:
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
97 itm = self.fileList.currentItem()
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
98 if itm is not None:
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
99 fileName = itm.text(0)
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
100 filePath = itm.text(1)
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
101
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
102 # TODO: add more extensions and use mimetype
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
103 # - *.ts, *.qm->*.ts
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
104 # Utilities.MimeTypes.isTextFile(filename)
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
105 if fileName.endswith('.ui'):
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
106 self.designerFile.emit(os.path.join(filePath, fileName))
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
107 else:
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
108 self.sourceFile.emit(os.path.join(filePath, fileName))
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
109
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
110 @pyqtSlot()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 def __searchFile(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 Private slot to handle the search.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 fileName = self.fileNameEdit.text()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 if not fileName:
998
eb7a1af5d9fc Fixed a strange behavior of the find file dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
117 self.fileList.clear()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 return
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
119
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 fileExt = self.fileExtEdit.text()
998
eb7a1af5d9fc Fixed a strange behavior of the find file dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
121 if not fileExt and Utilities.isWindowsPlatform():
eb7a1af5d9fc Fixed a strange behavior of the find file dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
122 self.fileList.clear()
eb7a1af5d9fc Fixed a strange behavior of the find file dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
123 return
eb7a1af5d9fc Fixed a strange behavior of the find file dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
124
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
125 self.findStatusLabel.clear()
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
126
2701
7904fd3bc30d A little change to the find file dialog so that an extension is matched exactly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2632
diff changeset
127 patternFormat = fileExt and "{0}{1}{2}" or "{0}*{1}{2}"
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3019
diff changeset
128 fileNamePattern = patternFormat.format(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3019
diff changeset
129 fileName, os.extsep, fileExt and fileExt or '*')
998
eb7a1af5d9fc Fixed a strange behavior of the find file dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
130
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 searchPaths = []
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
132 if (
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
133 self.searchDirCheckBox.isChecked() and
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
134 self.searchDirPicker.text() != ""
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
135 ):
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
136 searchPaths.append(self.searchDirPicker.text())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 if self.projectCheckBox.isChecked():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 searchPaths.append(self.project.ppath)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 if self.syspathCheckBox.isChecked():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 searchPaths.extend(sys.path)
998
eb7a1af5d9fc Fixed a strange behavior of the find file dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
141
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.fileList.clear()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 locations = {}
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
144 self.__shouldStop = False
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.stopButton.setEnabled(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 QApplication.processEvents()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 for path in searchPaths:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 if os.path.isdir(path):
3012
d177226027e2 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2754
diff changeset
150 files = direntries(path, True, fileNamePattern,
d177226027e2 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2754
diff changeset
151 False, self.checkStop)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 if files:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 for file in files:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 fp, fn = os.path.split(file)
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
155 if fn in locations:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 if fp in locations[fn]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 locations[fn].append(fp)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 locations[fn] = [fp]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 QTreeWidgetItem(self.fileList, [fn, fp])
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 QApplication.processEvents()
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
164
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 del locations
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 self.stopButton.setEnabled(False)
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: 7923
diff changeset
167 self.fileList.header().resizeSections(
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: 7923
diff changeset
168 QHeaderView.ResizeMode.ResizeToContents)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 self.fileList.header().setStretchLastSection(True)
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
170
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
171 self.findStatusLabel.setText(self.tr(
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
172 "%n file(s) found", "", self.fileList.topLevelItemCount()))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 def checkStop(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 Public method to check, if the search should be stopped.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
178 @return flag indicating the search should be stopped
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
179 @rtype bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 QApplication.processEvents()
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
182 return self.__shouldStop
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
183
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
184 @pyqtSlot(str)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 def on_fileNameEdit_textChanged(self, text):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 Private slot to handle the textChanged signal of the file name edit.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 @param text (ignored)
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
190 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 """
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
192 self.findButton.setEnabled(bool(text))
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
193
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
194 @pyqtSlot(str)
4589
b648ccbdbef9 Modified more dialogs to use the path picker widgets.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
195 def on_searchDirPicker_textChanged(self, text):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 """
3012
d177226027e2 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2754
diff changeset
197 Private slot to handle the textChanged signal of the search directory
d177226027e2 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2754
diff changeset
198 edit.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
200 @param text text of the search dir edit
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
201 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 self.searchDirCheckBox.setEnabled(text != "")
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
204
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
205 @pyqtSlot(QTreeWidgetItem, int)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 def on_fileList_itemActivated(self, itm, column):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
208 Private slot to handle the double click on a file item.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
210 It emits the signal sourceFile or designerFile depending on the
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
211 file extension.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
213 @param itm the double clicked listview item
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
214 @type QTreeWidgetItem
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
215 @param column column that was double clicked (ignored)
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
216 @type int
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 """
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
218 self.__openFile(itm)
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
219
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
220 @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
221 def on_fileList_currentItemChanged(self, current, previous):
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
222 """
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
223 Private slot handling a change of the current item.
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
224
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
225 @param current current item
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
226 @type QTreeWidgetItem
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
227 @param previous prevoius current item
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
228 @type QTreeWidgetItem
2754
2b3a46d8905b Fixed an issue in the find file by name dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2701
diff changeset
229 """
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
230 self.openButton.setEnabled(current is not None)
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
231
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
232 @pyqtSlot()
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
233 def activate(self):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 """
8632
f25cd4b94eb0 Changed the Find File dialog to an integrated widget (right side)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
235 Public slot to enable/disable the project checkbox.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 if self.project and self.project.isOpen():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 self.projectCheckBox.setEnabled(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.projectCheckBox.setChecked(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 self.projectCheckBox.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 self.projectCheckBox.setChecked(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 self.fileNameEdit.selectAll()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 self.fileNameEdit.setFocus()

eric ide

mercurial