Rebuilds the grid lines based on the current settings and \
        scene width.  This method is triggered automatically, and \
        shouldn't need to be manually called.

def rebuild( self ):
        """
        Rebuilds the grid lines based on the current settings and \
        scene width.  This method is triggered automatically, and \
        shouldn't need to be manually called.
        """
        rect    = self.sceneRect()
        x       = rect.left()
        y       = rect.top()
        w       = rect.width()
        h       = rect.height()
        
        # calculate background gridlines
        cx      = x + (w / 2)
        cy      = y + (h / 2)
        
        self._centerLines = [QLine(cx, rect.top(), cx, rect.bottom()),
                             QLine(rect.left(), cy, rect.right(), cy) ]
        
        # create the horizontal grid lines
        delta           = self.cellHeight()
        minor_lines     = []
        major_lines     = []
        count           = 1
        while delta < (h / 2):
            pos_line = QLine(x, cy + delta, x + w, cy + delta)
            neg_line = QLine(x, cy - delta, x + w, cy - delta)
            
            # every 10th line will be a major line
            if count == 10:
                major_lines.append(pos_line)
                major_lines.append(neg_line)
                count = 1
            else:
                minor_lines.append(pos_line)
                minor_lines.append(neg_line)
            
            # update the current y location
            delta += self.cellHeight()
            count += 1
        
        # create the vertical grid lines
        delta = self.cellWidth()
        count = 1
        while delta < (w / 2):
            pos_line = QLine(cx + delta, y, cx + delta, y + h)
            neg_line = QLine(cx - delta, y, cx - delta, y + h)
            
            # every 10th line will be a major line
            if count == 10:
                major_lines.append(pos_line)
                major_lines.append(neg_line)
                count = 1
            else:
                minor_lines.append(pos_line)
                minor_lines.append(neg_line)
            
            # update the current y location
            delta += self.cellWidth()
            count += 1
        
        # set the line cache
        self._majorLines = major_lines
        self._minorLines = minor_lines
        
        # unmark the scene as being dirty
        self.setDirty(False)