Thu, 06 Feb 2014 19:29:47 +0100
Completed template tags(except 'if').
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 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2014 Detlev Offenbach <detlev@die-offenbachs.de> |
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 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from PyQt4.QtCore import Qt |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | from PyQt4.QtGui import QDialog, QDialogButtonBox, QVBoxLayout, QLabel |
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) |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
28 | """ |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | super(DjangoTagInputDialog, self).__init__(parent) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | assert 0 < len(labels) < 6 # max 5 entries allowed |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | self.__inputs = [] |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | self.__topLayout = QVBoxLayout(self) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | index = 0 |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | for label in labels: |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | self.__topLayout.addWidget(QLabel(label, self)) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | entry = E5ClearableLineEdit(self) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | if defaults and index < len(defaults): |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | entry.setText(defaults[index]) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | self.__inputs.append(entry) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | self.__topLayout.addWidget(entry) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | index += 1 |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.__buttonBox = QDialogButtonBox( |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | QDialogButtonBox.Ok | QDialogButtonBox.Cancel, |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | Qt.Horizontal, self) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.__topLayout.addWidget(self.__buttonBox) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | self.resize(400, self.minimumSizeHint().height()) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | self.setSizeGripEnabled(True) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | self.__buttonBox.accepted.connect(self.accept) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.__buttonBox.rejected.connect(self.reject) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | self.__inputs[0].selectAll() |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.__inputs[0].setFocus() |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | def getData(self): |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | 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
|
61 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | @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
|
63 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | 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
|
65 | return tuple(data) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | @staticmethod |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | def getText(parent, title, labels, defaults=[]): |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | Static method to create the dialog and return the entered data. |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | |
5
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
72 | @param parent reference to the parent widget (QWidget) |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
73 | @param title title of the dialog (string) |
e2b08694e945
Completed template tags(except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4
diff
changeset
|
74 | @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
|
75 | @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
|
76 | of string) |
4
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | @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
|
78 | (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
|
79 | state (boolean) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | """ |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | dlg = DjangoTagInputDialog(labels, defaults, parent) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | dlg.setWindowTitle(title) |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | if dlg.exec_() == QDialog.Accepted: |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | return dlg.getData(), True |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | else: |
ba04ed0b14a1
Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | return tuple(), False |