dcs_liberation/qt_ui/widgets/QLiberationCalendar.py
2021-05-30 19:57:14 -07:00

41 lines
1.5 KiB
Python

from PySide2 import QtCore, QtGui
from PySide2.QtWidgets import QCalendarWidget
class QLiberationCalendar(QCalendarWidget):
def __init__(self, parent=None):
super(QLiberationCalendar, self).__init__(parent)
self.setVerticalHeaderFormat(QCalendarWidget.NoVerticalHeader)
self.setGridVisible(False)
# Overrride default QCalendar behaviour that is rendering week end days in red
for d in (
QtCore.Qt.Monday,
QtCore.Qt.Tuesday,
QtCore.Qt.Wednesday,
QtCore.Qt.Thursday,
QtCore.Qt.Friday,
QtCore.Qt.Saturday,
QtCore.Qt.Sunday,
):
fmt = self.weekdayTextFormat(d)
fmt.setForeground(QtCore.Qt.darkGray)
self.setWeekdayTextFormat(d, fmt)
def paintCell(self, painter, rect, date):
if date == self.selectedDate():
painter.save()
painter.fillRect(rect, QtGui.QColor("#D3D3D3"))
painter.setPen(QtCore.Qt.NoPen)
painter.setBrush(QtGui.QColor(52, 68, 85))
r = QtCore.QRect(
QtCore.QPoint(), min(rect.width(), rect.height()) * QtCore.QSize(1, 1)
)
r.moveCenter(rect.center())
painter.drawEllipse(r)
painter.setPen(QtGui.QPen(QtGui.QColor("white")))
painter.drawText(rect, QtCore.Qt.AlignCenter, str(date.day()))
painter.restore()
else:
super(QLiberationCalendar, self).paintCell(painter, rect, date)