ProjectDjangoTagsMenu/DjangoTagInputDialog.py

Wed, 05 Feb 2014 19:13:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 05 Feb 2014 19:13:12 +0100
changeset 4
ba04ed0b14a1
child 5
e2b08694e945
permissions
-rw-r--r--

Implemented template tags 'f' to 'i' (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):
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 super(DjangoTagInputDialog, self).__init__(parent)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 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
24 self.__inputs = []
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 self.__topLayout = QVBoxLayout(self)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 index = 0
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 for label in labels:
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 self.__topLayout.addWidget(QLabel(label, self))
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 entry = E5ClearableLineEdit(self)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 if defaults and index < len(defaults):
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 entry.setText(defaults[index])
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 self.__inputs.append(entry)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.__topLayout.addWidget(entry)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 index += 1
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.__buttonBox = QDialogButtonBox(
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 QDialogButtonBox.Ok | QDialogButtonBox.Cancel,
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 Qt.Horizontal, self)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.__topLayout.addWidget(self.__buttonBox)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.resize(400, self.minimumSizeHint().height())
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.setSizeGripEnabled(True)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.__buttonBox.accepted.connect(self.accept)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.__buttonBox.rejected.connect(self.reject)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__inputs[0].selectAll()
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__inputs[0].setFocus()
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 def getData(self):
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 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
53
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 @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
55 """
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 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
57 return tuple(data)
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 @staticmethod
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 def getText(parent, title, labels, defaults=[]):
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 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
63
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @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
65 (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
66 state (boolean)
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 dlg = DjangoTagInputDialog(labels, defaults, parent)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 dlg.setWindowTitle(title)
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 if dlg.exec_() == QDialog.Accepted:
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 return dlg.getData(), True
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 else:
ba04ed0b14a1 Implemented template tags 'f' to 'i' (except 'if').
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 return tuple(), False

eric ide

mercurial