docs: def rebuildMonth( self ):
          """
          Rebuilds the month for this scene.
          """
          # make sure we start at 0 for sunday vs. 7 for sunday
          day_map     = dict([(i+1, i+1) for i in range(7)])
          day_map[7]  = 0
          
          today   = QDate.currentDate()
          curr    = self.currentDate()
          first   = QDate(curr.year(), curr.month(), 1)
          last    = QDate(curr.year(), curr.month(), curr.daysInMonth())
          first   = first.addDays(-day_map[first.dayOfWeek()])
          last    = last.addDays(6-day_map[last.dayOfWeek()])
          
          cols    = 7
          rows    = (first.daysTo(last) + 1) / cols
          
          hlines  = []
          vlines  = []
          
          padx    = 6
          pady    = 6
          header  = 24
          
          w       = self.width() - (2 * padx)
          h       = self.height() - (2 * pady)
          
          dw      = (w / cols) - 1
          dh      = ((h - header) / rows) - 1
          
          x0      = padx
          y0      = pady + header
          
          x       = x0
          y       = y0
          
          for row in range(rows + 1):
              hlines.append(QLine(x0, y, w, y))
              y += dh
          
          for col in range(cols + 1):
              vlines.append(QLine(x, y0, x, h))
              x += dw
          
          self._buildData['grid'] = hlines + vlines
          
          # draw the date fields
          date = first
          row  = 0
          col  = 0
          
          # draw the headers
          x = x0
          y = pady
          
          regular_text = []
          mid_text     = []
          self._buildData['regular_text'] = regular_text
          self._buildData['mid_text']     = mid_text
          
          for day in ('Sun', 'Mon','Tue','Wed','Thu','Fri','Sat'):
              regular_text.append((x + 5,
                                   y,
                                   dw,
                                   y0,
                                   Qt.AlignLeft | Qt.AlignVCenter,
                                   day))
              x += dw
          
          for i in range(first.daysTo(last) + 1):
              top    = (y0 + (row * dh))
              left   = (x0 + (col * dw))
              rect   = QRectF(left - 1, top, dw, dh)
              
              # mark the current date on the calendar
              if ( date == curr ):
                  self._buildData['curr_date'] = rect
              
              # mark today's date on the calendar
              elif ( date == today ):
                  self._buildData['today'] = rect
              
              # determine how to draw the calendar
              format = 'd'
              if ( date.day() == 1 ):
                  format = 'MMM d'
              
              # determine the color to draw the text
              if ( date.month() == curr.month() ):
                  text = regular_text
              else:
                  text = mid_text
              
              # draw the text
              text.append((left + 2,
                           top + 2,
                           dw - 4,
                           dh - 4,
                           Qt.AlignTop | Qt.AlignLeft,
                           date.toString(format)))
              
              # update the limits
              if ( not i ):
                  self._minimumDate = date
              self._maximumDate = date
              
              self._dateGrid[date.toJulianDay()] = ((row, col), rect)
              if ( col == (cols - 1) ):
                  row += 1
                  col = 0
              else:
                  col += 1
                  
              date = date.addDays(1)