Tue, 23 Jun 2020 17:52:32 +0200
Removed support for Python2.
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
44
3ea572ed13b6
Updated copyright for 2020.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
40
diff
changeset
|
3 | # Copyright (c) 2014 - 2020 Detlev Offenbach <detlev@die-offenbachs.de> |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to enter data for the creation of a tag. |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
26
b21b4fc418bc
Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
23
diff
changeset
|
10 | from PyQt5.QtCore import Qt |
b21b4fc418bc
Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
23
diff
changeset
|
11 | from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from E5Gui.E5LineEdit import E5ClearableLineEdit |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | class DjangoTagInputDialog(QDialog): |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | Class implementing a dialog to enter data for the creation of a tag. |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | def __init__(self, labels, defaults=None, parent=None): |
5
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
21 | """ |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
22 | Constructor |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
23 | |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
24 | @param labels list of labels for the entry fields (list of string) |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
25 | @param defaults list of default values for the entry fields (list |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
26 | of string) |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
27 | @param parent reference to the parent widget (QWidget) |
47
825bf5861f89
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
44
diff
changeset
|
28 | @exception RuntimeError raised to signal too many labels were given |
5
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
29 | """ |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | super(DjangoTagInputDialog, self).__init__(parent) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | |
47
825bf5861f89
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
44
diff
changeset
|
32 | if len(labels) == 0 or len(labels) > 5: |
825bf5861f89
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
44
diff
changeset
|
33 | raise RuntimeError( |
825bf5861f89
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
44
diff
changeset
|
34 | "Illegal number of labels given (max. 5 allowed)") |
825bf5861f89
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
44
diff
changeset
|
35 | |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | self.__inputs = [] |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | self.__topLayout = QVBoxLayout(self) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | index = 0 |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | for label in labels: |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | self.__topLayout.addWidget(QLabel(label, self)) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | entry = E5ClearableLineEdit(self) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | if defaults and index < len(defaults): |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | entry.setText(defaults[index]) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.__inputs.append(entry) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.__topLayout.addWidget(entry) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | index += 1 |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | self.__buttonBox = QDialogButtonBox( |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | QDialogButtonBox.Ok | QDialogButtonBox.Cancel, |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | Qt.Horizontal, self) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.__topLayout.addWidget(self.__buttonBox) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.resize(400, self.minimumSizeHint().height()) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | self.setSizeGripEnabled(True) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.__buttonBox.accepted.connect(self.accept) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | self.__buttonBox.rejected.connect(self.reject) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.__inputs[0].selectAll() |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | self.__inputs[0].setFocus() |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | def getData(self): |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | Public method to retrieve the entered data. |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | @return tuple containing the text of all entries (tuple of string) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | data = [input.text().strip() for input in self.__inputs] |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | return tuple(data) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | @staticmethod |
37
06449b2d8cfc
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
72 | def getText(parent, title, labels, defaults=None): |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | """ |
26
b21b4fc418bc
Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
23
diff
changeset
|
74 | Public static method to create the dialog and return the entered data. |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
5
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
76 | @param parent reference to the parent widget (QWidget) |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
77 | @param title title of the dialog (string) |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
78 | @param labels list of labels for the entry fields (list of string) |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
79 | @param defaults list of default values for the entry fields (list |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
80 | of string) |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | @return tuple of a tuple containing the text of all entries |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | (tuple of string) and a flag indicating the acceptance |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | state (boolean) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | """ |
37
06449b2d8cfc
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
85 | if defaults is None: |
06449b2d8cfc
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
86 | defaults = [] |
06449b2d8cfc
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
34
diff
changeset
|
87 | |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | dlg = DjangoTagInputDialog(labels, defaults, parent) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | dlg.setWindowTitle(title) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | if dlg.exec_() == QDialog.Accepted: |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | return dlg.getData(), True |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | else: |
47
825bf5861f89
Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
44
diff
changeset
|
93 | return (), False |