src/eric7/EricWidgets/EricPathPickerDialog.py

Sat, 16 Jul 2022 18:14:30 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 16 Jul 2022 18:14:30 +0200
branch
eric7
changeset 9238
a7cbf3d61498
parent 9221
bf71ee032bb4
child 9322
3f0fe9a79aa1
permissions
-rw-r--r--

EricPathPicker, EricPathPickerDialog
- added/changed code to work with pathlib.Path objects next to string paths

6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
3 # Copyright (c) 2018 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to enter a file system path using a file picker.
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
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
10 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
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
12 from .EricPathPicker import EricPathPicker, EricPathPickerModes
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
6466
dac80ad0de75 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6444
diff changeset
14
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
15 class EricPathPickerDialog(QDialog):
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 Class implementing a dialog to enter a file system path using a file
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 picker.
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
20
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 def __init__(self, parent=None):
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
24
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @param parent reference to the parent widget
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @type QWidget
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
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
28 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
29
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 self.setMinimumWidth(400)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
31
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 self.__layout = QVBoxLayout(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
33
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.__label = QLabel(self)
6444
7ce7a43aeeba E5PathPickerDialog: enabled word wrap for the label text to be able to cope with longer texts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6441
diff changeset
35 self.__label.setWordWrap(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36
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
37 self.__pathPicker = EricPathPicker(self)
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.__buttonBox = QDialogButtonBox(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39 QDialogButtonBox.StandardButton.Cancel | QDialogButtonBox.StandardButton.Ok,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
41 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
42
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.__layout.addWidget(self.__label)
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.__layout.addWidget(self.__pathPicker)
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 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
46
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__buttonBox.accepted.connect(self.accept)
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 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
49
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 def setLabelText(self, text):
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 Public method to set the label text.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
53
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 @param text label text
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @type str
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.__label.setText(text)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
58
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 def setTitle(self, title):
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 Public method to set the window title.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 @param title window title
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @type str
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.setWindowTitle(title)
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.__pathPicker.setWindowTitle(title)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 def setPickerMode(self, mode):
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 Public method to set the mode of the path picker.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @param mode picker mode
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
74 @type EricPathPickerModes
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.__pathPicker.setMode(mode)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def setPickerFilters(self, filters):
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Public method to set the filters of the path picker.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 Note: Multiple filters must be separated by ';;'.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
83
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @param filters string containing the file filters
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @type str
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__pathPicker.setFilters(filters)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
89 def setPickerPath(self, fpath):
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
90 """
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
91 Public method to set the path of the path picker.
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
92
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
93 @param fpath path to be set
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
94 @type str or pathlib.Path
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
95 """
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
96 self.__pathPicker.setText(str(fpath))
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
97
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
98 def setDefaultDirectory(self, directory):
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
100 Public method to set the default directory of the path picker.
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
101
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
102 @param directory default directory
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
103 @type str or pathlib.Path
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
104 """
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
105 self.__pathPicker.setDefaultDirectory(str(directory))
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
106
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
107 def getText(self):
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
108 """
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
109 Public method to get the current path as text.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 @return current path
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 @rtype str
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 """
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
114 return self.__pathPicker.text()
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
115
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
116 def getPath(self):
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
117 """
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
118 Public method to get the current path as a pathlib.Path object.
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
119
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
120 @return current path
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
121 @rtype pathlib.Path
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
122 """
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 return self.__pathPicker.path()
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
126 def getStrPath(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 parent,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128 title,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129 label,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130 mode=EricPathPickerModes.OPEN_FILE_MODE,
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
131 strPath=None,
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
132 defaultDirectory=None,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133 filters=None,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134 ):
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 Function to get a file or directory path from the user.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
137
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 @param parent reference to the parent widget
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @type QWidget
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 @param title title of the dialog
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 @type str
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @param label text to be shown above the path picker
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @type str
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
144 @param mode mode of the path picker (defaults to EricPathPickerModes.OPEN_FILE_MODE)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
145 @type EricPathPickerModes (optional)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
146 @param strPath initial path to be shown (defaults to None)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
147 @type str (optional)
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 @param defaultDirectory default directory of the path picker selection
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
149 dialog (defaults to None)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
150 @type str (optional)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
151 @param filters list of file filters (defaults to None)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
152 @type list of str (optional)
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 @return tuple containing the entered path and a flag indicating that the
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 user pressed the OK button
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 @rtype tuple of (str, bool)
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 """
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 # step 1: setup of the dialog
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
158 dlg = EricPathPickerDialog(parent)
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 if title:
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 dlg.setTitle(title)
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 if label:
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 dlg.setLabelText(label)
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 dlg.setPickerMode(mode)
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
164 if strPath:
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
165 dlg.setPickerPath(strPath)
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 if defaultDirectory:
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 dlg.setDefaultDirectory(defaultDirectory)
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 if filters is not None and len(filters) > 0:
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 dlg.setPickerFilters(";;".join(filters))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 # step 2: show the dialog and get the result
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
172 if dlg.exec() == QDialog.DialogCode.Accepted:
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 ok = True
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
174 fpath = dlg.getText().strip()
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 else:
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 ok = False
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
177 fpath = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178
6440
81a4bebbc028 E5PathPickerDialog: added an input dialog using the path picker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 # step 3: return the result
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
180 return fpath, ok
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
181
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
182
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
183 def getPath(
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
184 parent,
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
185 title,
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
186 label,
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
187 mode=EricPathPickerModes.OPEN_FILE_MODE,
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
188 pathlibPath=None,
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
189 defaultDirectory=None,
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
190 filters=None,
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
191 ):
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
192 """
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
193 Function to get a file or directory path from the user.
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
194
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
195 @param parent reference to the parent widget
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
196 @type QWidget
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
197 @param title title of the dialog
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
198 @type str
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
199 @param label text to be shown above the path picker
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
200 @type str
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
201 @param mode mode of the path picker (defaults to EricPathPickerModes.OPEN_FILE_MODE)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
202 @type EricPathPickerModes (optional)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
203 @param pathlibPath initial path to be shown (defaults to None)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
204 @type pathlib.Path (optional)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
205 @param defaultDirectory default directory of the path picker selection
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
206 dialog (defaults to None)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
207 @type pathlib.Path (optional)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
208 @param filters list of file filters (defaults to None)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
209 @type list of str (optional)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
210 @return tuple containing the entered path and a flag indicating that the
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
211 user pressed the OK button
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
212 @rtype tuple of (pathlib.Path, bool)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
213 """
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
214 # step 1: setup of the dialog
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
215 dlg = EricPathPickerDialog(parent)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
216 if title:
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
217 dlg.setTitle(title)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
218 if label:
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
219 dlg.setLabelText(label)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
220 dlg.setPickerMode(mode)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
221 if pathlibPath:
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
222 dlg.setPickerPath(pathlibPath)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
223 if defaultDirectory:
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
224 dlg.setDefaultDirectory(defaultDirectory)
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
225 if filters is not None and len(filters) > 0:
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
226 dlg.setPickerFilters(";;".join(filters))
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
227
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
228 # step 2: show the dialog and get the result
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
229 if dlg.exec() == QDialog.DialogCode.Accepted:
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
230 ok = True
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
231 fpath = dlg.getText().strip()
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
232 else:
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
233 ok = False
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
234 fpath = ""
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
235
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
236 # step 3: return the result
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
237 return fpath, ok

eric ide

mercurial