1 from PyQt4 import QtGui, QtCore
2 from PyQt4.QtCore import Qt
3
4 from customdelegate import CustomDelegate, DocumentationMetaclass
5 from camelot.view.controls import editors
6 from camelot.core.utils import variant_to_pyobject
7 from camelot.core import constants
8 from camelot.view.proxy import ValueLoading
9
11 """Custom delegate for integer values"""
12
13 __metaclass__ = DocumentationMetaclass
14
15 editor = editors.IntegerEditor
16
24
25 CustomDelegate.__init__(self, parent=parent, editable=editable, minimum=minimum, maximum=maximum, **kwargs)
26 self.minimum = minimum
27 self.maximum = maximum
28 self.editable = editable
29 self.unicode_format = unicode_format
30
31 - def paint(self, painter, option, index):
32 painter.save()
33 self.drawBackground(painter, option, index)
34 value = variant_to_pyobject(index.model().data(index, Qt.EditRole))
35
36 background_color = QtGui.QColor(index.model().data(index, Qt.BackgroundRole))
37
38 rect = option.rect
39 rect = QtCore.QRect(rect.left()+3, rect.top()+6, 16, 16)
40
41
42 if( option.state & QtGui.QStyle.State_Selected ):
43 painter.fillRect(option.rect, option.palette.highlight())
44 fontColor = QtGui.QColor()
45 if self.editable:
46 Color = option.palette.highlightedText().color()
47 fontColor.setRgb(Color.red(), Color.green(), Color.blue())
48 else:
49 fontColor.setRgb(130,130,130)
50 else:
51 if self.editable:
52 painter.fillRect(option.rect, background_color)
53 fontColor = QtGui.QColor()
54 fontColor.setRgb(0,0,0)
55 else:
56 painter.fillRect(option.rect, option.palette.window())
57 fontColor = QtGui.QColor()
58 fontColor.setRgb(130,130,130)
59
60 if value in (None, ValueLoading):
61 value_str = ''
62 else:
63 value_str = '%i'%value
64 if self.unicode_format != None:
65 value_str = self.unicode_format(value)
66
67
68
69
70
71 painter.setPen(fontColor.toRgb())
72 rect = QtCore.QRect(option.rect.left()+23,
73 option.rect.top(),
74 option.rect.width()-23,
75 option.rect.height())
76 painter.drawText(rect.x()+2,
77 rect.y(),
78 rect.width()-4,
79 rect.height(),
80 Qt.AlignVCenter | Qt.AlignRight,
81 value_str)
82 painter.restore()
83
87