1 from PyQt4 import QtGui, QtCore
2 from PyQt4.QtCore import Qt
3
4 from customeditor import CustomEditor
5 import re
6
8
10 super(PartEditor, self).__init__()
11 self.setInputMask(mask)
12 self.setCursorPosition(0)
13
15
16 - def __init__(self, parent=None, parts=['99','AA'], editable=True, **kwargs):
17 CustomEditor.__init__(self, parent)
18 self.setFocusPolicy(Qt.StrongFocus)
19 self.parts = parts
20 self.part_editors = []
21 layout = QtGui.QHBoxLayout()
22 layout.setMargin(0)
23 layout.setSpacing(0)
24 layout.setAlignment(Qt.AlignLeft)
25 for part in parts:
26 part = re.sub('\W*', '', part)
27 part_length = len(part)
28 editor = PartEditor(part)
29 if not editable:
30 editor.setEnabled(False)
31 space_width = editor.fontMetrics().size(Qt.TextSingleLine, 'A').width()
32 editor.setMaximumWidth(space_width*(part_length+1))
33 self.part_editors.append(editor)
34 layout.addWidget(editor)
35 self.connect(editor,
36 QtCore.SIGNAL('editingFinished()'),
37 self.editingFinished)
38 self.setLayout(layout)
39
41 self.emit(QtCore.SIGNAL('editingFinished()'))
42
44 self.emit(QtCore.SIGNAL('editingFinished()'))
45
51
53 value = CustomEditor.set_value(self, value)
54 if value:
55 old_value = self.get_value()
56 if value!=old_value:
57 for part_editor, part in zip(self.part_editors, value):
58 part_editor.setText(unicode(part))
59 else:
60 for part_editor in self.part_editors:
61 part_editor.setText(u'')
62
68
70 if background_color:
71 for editor in self.part_editors:
72 palette = editor.palette()
73 palette.setColor(editor.backgroundRole(), background_color)
74 editor.setPalette(palette)
75 else:
76 return False
77