docs: def drawBackground( self, painter, rect ):
          """
          Draws the background of the scene using painter.
          
          :param      painter | <QPainter>
                      rect    | <QRectF>
          """
          if ( self._rebuildRequired ):
              self.rebuild()
          
          super(XCalendarScene, self).drawBackground(painter, rect)
          
          palette = self.palette()
          
          # draw custom options
          if ( 'curr_date' in self._buildData ):
              clr = palette.color(QPalette.Highlight)
              clr.setAlpha(40)
              painter.setBrush(clr)
              painter.setPen(Qt.NoPen)
              painter.drawRect(self._buildData['curr_date'])
              painter.setBrush(Qt.NoBrush)
          
          if ( 'today' in self._buildData ):
              painter.setPen(Qt.NoPen)
              clr = palette.color(QPalette.AlternateBase)
              clr.setAlpha(120)
              painter.setBrush(clr)
              painter.drawRect(self._buildData['today'])
              painter.setBrush(Qt.NoBrush)
          
          # draw the grid
          painter.setPen(palette.color(QPalette.Mid))
          painter.drawLines(self._buildData.get('grid', []))
          
          # draw text fields
          painter.setPen(palette.color(QPalette.Text))
          for data in self._buildData.get('regular_text', []):
              painter.drawText(*data)
          
          # draw mid text fields
          painter.setPen(palette.color(QPalette.Mid))
          for data in self._buildData.get('mid_text', []):
              painter.drawText(*data)