1
2 from PyQt4 import QtGui, QtCore
3 from PyQt4.QtCore import Qt
4
5 from customdelegate import CustomDelegate, DocumentationMetaclass
6 from camelot.view.controls import editors
7
9 """Custom delegate for boolean values"""
10
11 __metaclass__ = DocumentationMetaclass
12
13 editor = editors.BoolEditor
14
15 - def paint(self, painter, option, index):
16 painter.save()
17 self.drawBackground(painter, option, index)
18 checked = index.model().data(index, Qt.EditRole).toBool()
19
20 background_color = QtGui.QColor(index.model().data(index, Qt.BackgroundRole))
21
22 check_option = QtGui.QStyleOptionButton()
23
24 rect = QtCore.QRect(option.rect.left(),
25 option.rect.top(),
26 option.rect.width(),
27 option.rect.height())
28
29 check_option.rect = rect
30 check_option.palette = option.palette
31 if (option.state & QtGui.QStyle.State_Selected):
32 painter.fillRect(option.rect, option.palette.highlight())
33 elif not self.editable:
34 painter.fillRect(option.rect, option.palette.window())
35 else:
36 painter.fillRect(option.rect, background_color)
37
38 if checked:
39 check_option.state = option.state | QtGui.QStyle.State_On
40 else:
41 check_option.state = option.state | QtGui.QStyle.State_Off
42
43
44
45 QtGui.QApplication.style().drawControl(QtGui.QStyle.CE_CheckBox,
46 check_option,
47 painter)
48
49
50 painter.restore()
51
52 -class TextBoolDelegate(BoolDelegate):
55