From 48283eac9872189036bfaa6995d28f35501c2106 Mon Sep 17 00:00:00 2001 From: Garrett Bates <gbates@passcal.nmt.edu> Date: Wed, 2 Jun 2021 15:22:59 -0600 Subject: [PATCH] Added subclass of QCalendarWidget with better support for DOY formats --- sohstationviewer/view/ui/calendar_widget.py | 56 +++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 sohstationviewer/view/ui/calendar_widget.py diff --git a/sohstationviewer/view/ui/calendar_widget.py b/sohstationviewer/view/ui/calendar_widget.py new file mode 100644 index 000000000..bb9e265d5 --- /dev/null +++ b/sohstationviewer/view/ui/calendar_widget.py @@ -0,0 +1,56 @@ +from PySide2 import QtCore, QtGui, QtWidgets + + +class CalendarWidget(QtWidgets.QCalendarWidget): + + def __init__(self, parent): + + super().__init__(parent) + self.setupUi() + self._showDayOfYear = getattr(self, 'toggleDayOfYear', None) == None + + + def setupUi(self): + self.setMinimumWidth(300) + self.setMinimumHeight(275) + + navbar = self.findChild(QtWidgets.QWidget, 'qt_calendar_navigationbar') + + if navbar: + # self.toggleDayOfYear = QtWidgets.QPushButton('Show DOY', navbar) + # self.toggleDayOfYear = QtWidgets.QCheckBox('Show DOY', navbar) + self.toggleDayOfYear = QtWidgets.QCheckBox('Show DOY') + # navbar.layout().addWidget(self.toggleDayOfYear) + navbar.layout().insertWidget(1, self.toggleDayOfYear) + + self.toggleDayOfYear.toggled.connect(self.setShowDayOfYear) + self.toggleDayOfYear.setCheckable(True) + + palette = self.toggleDayOfYear.palette() + palette.setColor(QtGui.QPalette.WindowText, QtGui.QColor('white')) + self.toggleDayOfYear.setPalette(palette) + + self.toggleDayOfYear.show() + + + def showDayOfYear(self): + return self._showDayOfYear + + @QtCore.Slot(bool) + def setShowDayOfYear(self, value): + self._showDayOfYear = value + self.updateCells() + + def paintCell(self, painter, rect, date): + super().paintCell(painter, rect, date) + + painter.save() + + if self.showDayOfYear(): + color = QtGui.QColor('red') + font = painter.font() + font.setPointSize(font.pointSize() * 0.9) + painter.setFont(font) + painter.setPen(color) + painter.drawText(rect.bottomLeft(), str(date.dayOfYear())) + painter.restore() -- GitLab