src/eric7/EricWidgets/EricDirFileDialog.py

Sun, 03 Nov 2024 18:12:28 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 03 Nov 2024 18:12:28 +0100
branch
eric7
changeset 11035
e1e1d6e317c7
parent 11006
a671918232f3
child 11090
f5f5f5803935
permissions
-rw-r--r--

Modified some of the EricWidgets dialogs to ensure a valid parent widget.

8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
3 # Copyright (c) 2021 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to select files and directories simultaneously.
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9239
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
10 import pathlib
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
11
11035
e1e1d6e317c7 Modified some of the EricWidgets dialogs to ensure a valid parent widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
12 from PyQt6.QtCore import QCoreApplication, QItemSelection, pyqtSlot
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtGui import QFileSystemModel
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9239
diff changeset
14 from PyQt6.QtWidgets import QFileDialog, QLineEdit, QPushButton, QTreeView
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 class EricDirFileDialog(QFileDialog):
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 Derived QFileDialog to select files and directories simultaneously.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
20
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 For this purpose the none native file dialog is used.
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
23
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 def __init__(self, parent=None, caption="", directory="", filterStr=""):
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param parent parent widget of the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @type QWidget
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param caption window title of the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @type str
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param directory working directory of the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type str
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param filterStr filter string for the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type str
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 self.__selectedFilesFolders = []
11035
e1e1d6e317c7 Modified some of the EricWidgets dialogs to ensure a valid parent widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
38 if parent is None:
e1e1d6e317c7 Modified some of the EricWidgets dialogs to ensure a valid parent widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
39 parent = QCoreApplication.instance().getMainWindow()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 super().__init__(parent, caption, directory, filterStr)
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.setFileMode(QFileDialog.FileMode.ExistingFiles)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @pyqtSlot()
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 def exec(self):
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Public slot to finalize initialization and start the event loop.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @return accepted or rejected
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @rtype QDialog.DialogCode
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__openBtn = self.findChildren(QPushButton)[0]
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__fileNameEdit = self.findChild(QLineEdit)
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.directoryEntered.connect(self.on_directoryEntered)
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__tree = self.findChild(QTreeView)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56 self.__tree.selectionModel().selectionChanged.connect(self.on_selectionChanged)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 return QFileDialog.exec(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @pyqtSlot()
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 def accept(self):
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 Public slot to update the list with the selected files and folders.
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 # Avoid to close the dialog if only return is pressed
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 if not self.__openBtn.isEnabled():
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.__selectedFilesFolders = [
8406
45d7d0eec4d3 Removed a workaround after PyQt6 was fixed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8404
diff changeset
70 x.data(QFileSystemModel.Roles.FilePathRole)
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 for x in self.__tree.selectionModel().selectedIndexes()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72 if x.column() == 0
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.hide()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 @pyqtSlot(str)
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def on_directoryEntered(self, directory):
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Private slot to reset selections if another directory was entered.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param directory name of the directory entered
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @type str
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.__tree.selectionModel().clear()
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.__fileNameEdit.clear()
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__openBtn.setEnabled(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @pyqtSlot(QItemSelection, QItemSelection)
10689
3ede487187f2 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: 10439
diff changeset
90 def on_selectionChanged(self, _selected, _deselected):
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 Private method to determine the selected files and folders and update
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 the line edit.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94
10689
3ede487187f2 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: 10439
diff changeset
95 @param _selected newly selected entries (unused)
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 @type QItemSelection
10689
3ede487187f2 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: 10439
diff changeset
97 @param _deselected deselected entries (unused)
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @type QItemSelection
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 selectedItems = self.__tree.selectionModel().selectedIndexes()
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 if self.__tree.rootIndex() in selectedItems or selectedItems == []:
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104 selectedFiles = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105 x.data(QFileSystemModel.Roles.FileNameRole)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
106 for x in selectedItems
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107 if x.column() == 0
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
108 ]
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 enteredFiles = self.__fileNameEdit.text().split('"')
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 enteredFiles = [x.strip() for x in enteredFiles if x.strip()]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
111
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 # Check if there is a directory in the selection. Then update the
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 # lineEdit.
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 for selectedFile in selectedFiles:
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 if selectedFile not in enteredFiles:
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 txt = '" "'.join(selectedFiles)
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 if len(selectedFiles) > 1:
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 txt = '"{0}"'.format(txt)
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 self.__fileNameEdit.setText(txt)
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 break
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
121
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @staticmethod
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 def getOpenFileAndDirNames(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124 parent=None, caption="", directory="", filterStr="", options=None
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125 ):
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 Static method to get the names of files and directories for opening it.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 @param parent parent widget of the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 @type QWidget
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 @param caption window title of the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @type str
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 @param directory working directory of the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 @type str
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 @param filterStr filter string for the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @type str
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 @param options various options for the dialog
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 @type QFileDialog.Options
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @return names of the selected files and folders
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 @rtype list of str
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 """
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 if options is None:
8404
c455e281b193 Fixed an issue in the new EricDirFileDialog and implemented a workaround for a PyQt6 issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8403
diff changeset
143 options = QFileDialog.Option(0)
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 options |= QFileDialog.Option.DontUseNativeDialog
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
145 dlg = EricDirFileDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
146 parent=parent, caption=caption, directory=directory, filterStr=filterStr
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
147 )
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 dlg.setOptions(options)
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150
8403
d9fd02e8c28b Added a special file dialog to select files and directories simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 return dlg.__selectedFilesFolders
9239
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
152
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
153 @staticmethod
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
154 def getOpenFileAndDirPaths(
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
155 parent=None, caption="", directory="", filterStr="", options=None
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
156 ):
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
157 """
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
158 Static method to get the paths of files and directories for opening it.
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
159
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
160 @param parent parent widget of the dialog
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
161 @type QWidget
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
162 @param caption window title of the dialog
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
163 @type str
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
164 @param directory working directory of the dialog
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
165 @type str or pathlib.Path
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
166 @param filterStr filter string for the dialog
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
167 @type str
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
168 @param options various options for the dialog
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
169 @type QFileDialog.Options
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
170 @return paths of the selected files and folders
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
171 @rtype list of pathlib.Path
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
172 """
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
173 if options is None:
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
174 options = QFileDialog.Option(0)
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
175 options |= QFileDialog.Option.DontUseNativeDialog
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
176 dlg = EricDirFileDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
177 parent=parent,
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
178 caption=caption,
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
179 directory=str(directory),
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
180 filterStr=filterStr,
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
181 )
9239
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
182 dlg.setOptions(options)
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
183 dlg.exec()
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
184
3c605ab5a8c7 Extended EricDirFileDialog and EricFileDialog to offer a pathlib.Path based interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
185 return [pathlib.Path(p) for p in dlg.__selectedFilesFolders]

eric ide

mercurial