Package Camelot :: Package camelot :: Package view :: Package controls :: Package delegates :: Module datetimedelegate |
[frames] | no frames]

# Source Code for Module Camelot.camelot.view.controls.delegates.datetimedelegate

     1

     2  from customdelegate import CustomDelegate, DocumentationMetaclass, ValueLoading
     3  from camelot.view.controls import editors
     4  from camelot.core.utils import variant_to_pyobject
     5

     6  from PyQt4 import QtCore, QtGui
     7  from PyQt4.QtCore import Qt
     8

     9 -class DateTimeDelegate(CustomDelegate):
    10

    11      __metaclass__ = DocumentationMetaclass
    12

    13      editor = editors.DateTimeEditor
    14

    15 -    def __init__(self, parent=None, editable=True, **kwargs):
    16          CustomDelegate.__init__(self, parent, editable=editable, **kwargs)
    17          locale = QtCore.QLocale()
    18          self.dateTime_format = locale.dateTimeFormat(locale.ShortFormat)
    19

    20 -    def paint(self, painter, option, index):
    21          painter.save()
    22          self.drawBackground(painter, option, index)
    23          dateTime = variant_to_pyobject(index.model().data(index, Qt.EditRole))
    24          if dateTime not in (ValueLoading, None):
    25              dateTime = QtCore.QDateTime(dateTime.year, dateTime.month, dateTime.day,

    26                                          dateTime.hour, dateTime.minute, dateTime.second)
    27              formattedDateTime = dateTime.toString(self.dateTime_format)
    28          else:
    29              formattedDateTime = ''
    30          background_color = QtGui.QColor(index.model().data(index, Qt.BackgroundRole))
    31          rect = option.rect
    32          rect = QtCore.QRect(rect.left()+3, rect.top()+6, 16, 16)
    33

    34          if( option.state & QtGui.QStyle.State_Selected ):
    35              painter.fillRect(option.rect, option.palette.highlight())
    36              fontColor = QtGui.QColor()
    37              if self.editable:
    38                  Color = option.palette.highlightedText().color()
    39                  fontColor.setRgb(Color.red(), Color.green(), Color.blue())
    40              else:
    41                  fontColor.setRgb(130,130,130)
    42          else:
    43              if self.editable:
    44                  painter.fillRect(option.rect, background_color)
    45                  fontColor = QtGui.QColor()
    46                  fontColor.setRgb(0,0,0)
    47              else:
    48                  painter.fillRect(option.rect, option.palette.window())
    49                  fontColor = QtGui.QColor()
    50                  fontColor.setRgb(130,130,130)
    51

    52

    53          painter.setPen(fontColor.toRgb())
    54          rect = QtCore.QRect(option.rect.left(),

    55                              option.rect.top(),

    56                              option.rect.width(),

    57                              option.rect.height())
    58

    59          painter.drawText(rect.x()+2,

    60                           rect.y(),

    61                           rect.width()-4,

    62                           rect.height(),

    63                           Qt.AlignVCenter | Qt.AlignRight,

    64                           str(formattedDateTime))
    65          painter.restore()
    66