docs: def rebuild(self):
          """
          Rebuilds the scene based on the current settings.
          
          :param      start | <QDate>
                      end   | <QDate>
          """
          gantt = self.ganttWidget()
          scale = gantt.timescale()
          rect = self.sceneRect()
          header = gantt.treeWidget().header()
          
          # define the rendering options
          options = {}
          options['start']         = gantt.dateStart()
          options['end']           = gantt.dateEnd()
          options['cell_width']    = gantt.cellWidth()
          options['cell_height']   = gantt.cellHeight()
          options['rect']          = rect
          options['height']        = rect.height()
          
          options['header_height'] = header.height()
          if not header.isVisible():
              options['header_height'] = 0
          
          opt = XGanttRenderOptions(**options)
          
          # rebuild the minute timescale
          if scale in (gantt.Timescale.Minute, gantt.Timescale.Hour):
              opt.start = gantt.dateTimeStart()
              opt.end = gantt.dateTimeEnd()
              
              self.rebuildHour(opt)
          
          # rebuild the day timescale
          elif scale == gantt.Timescale.Day:
              self.rebuildDay(opt)
          
          # rebuild the week timescale
          elif scale == gantt.Timescale.Week:
              self.rebuildWeek(opt)
          
          self.rebuildTiles()