mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from PySide6 import QtCore, QtGui
|
|
from PySide6.QtWidgets import QCalendarWidget
|
|
|
|
|
|
class QLiberationCalendar(QCalendarWidget):
|
|
def __init__(self, parent=None):
|
|
super(QLiberationCalendar, self).__init__(parent)
|
|
self.setVerticalHeaderFormat(
|
|
QCalendarWidget.VerticalHeaderFormat.NoVerticalHeader
|
|
)
|
|
self.setGridVisible(False)
|
|
|
|
# Overrride default QCalendar behaviour that is rendering week end days in red
|
|
for d in (
|
|
QtCore.Qt.DayOfWeek.Monday,
|
|
QtCore.Qt.DayOfWeek.Tuesday,
|
|
QtCore.Qt.DayOfWeek.Wednesday,
|
|
QtCore.Qt.DayOfWeek.Thursday,
|
|
QtCore.Qt.DayOfWeek.Friday,
|
|
QtCore.Qt.DayOfWeek.Saturday,
|
|
QtCore.Qt.DayOfWeek.Sunday,
|
|
):
|
|
fmt = self.weekdayTextFormat(d)
|
|
fmt.setForeground(QtCore.Qt.GlobalColor.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.PenStyle.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.AlignmentFlag.AlignCenter, str(date.day()))
|
|
painter.restore()
|
|
else:
|
|
super(QLiberationCalendar, self).paintCell(painter, rect, date)
|