sped up graph window startup and hide-graph action by making the AdjustableFigure "lazy".

This commit is contained in:
Timo Paulssen 2008-12-13 03:21:18 +01:00
parent 1f78e98907
commit 187193dd1e

View file

@ -56,6 +56,7 @@ class AdjustableFigure(QWidget):
self.hbox = QHBoxLayout()
self.hbox.addSpacing(10)
self.hbox.addStretch(1)
self.figureCanvas = None
if self.choices:
self.addCombo()
@ -71,6 +72,8 @@ class AdjustableFigure(QWidget):
self.vbox.addLayout(self.hbox)
def updateFigure(self):
if not self.figureCanvas:
self.addFigure()
self.updateTimer = None
self.setUpdatesEnabled(False)
idx = self.vbox.indexOf(self.figureCanvas)
@ -114,6 +117,8 @@ class AdjustableFigure(QWidget):
def showHide(self):
shown = self.config.get('graphs.shown.' + self.name, True)
self.setVisible(shown)
if shown and not self.figureCanvas:
self.addFigure()
class IntervalGraph(QDialog):
@ -154,44 +159,37 @@ def intervalGraph(parent, deck):
# views
nextDue = AdjustableFigure(parent.config, 'due', dg.nextDue, range)
nextDue.addWidget(QLabel(_("<h1>Due</h1>")))
nextDue.addFigure()
vbox.addWidget(nextDue)
widgets.append(nextDue)
workload = AdjustableFigure(parent.config, 'workload', dg.workDone, range)
workload.addWidget(QLabel(_("<h1>Work Done</h1>")))
workload.addFigure()
vbox.addWidget(workload)
widgets.append(workload)
cumDue = AdjustableFigure(parent.config, 'cum', dg.cumulativeDue, range)
cumDue.addWidget(QLabel(_("<h1>Cumulative Due</h1>")))
cumDue.addFigure()
vbox.addWidget(cumDue)
widgets.append(cumDue)
interval = AdjustableFigure(parent.config, 'interval', dg.intervalPeriod, range)
interval.addWidget(QLabel(_("<h1>Intervals</h1>")))
interval.addFigure()
vbox.addWidget(interval)
widgets.append(interval)
added = AdjustableFigure(parent.config, 'added', dg.addedRecently, range)
added.addWidget(QLabel(_("<h1>Added</h1>")))
added.addFigure()
vbox.addWidget(added)
widgets.append(added)
answered = AdjustableFigure(parent.config, 'answered', lambda *args: apply(
dg.addedRecently, args + ('firstAnswered',)), range)
answered.addWidget(QLabel(_("<h1>First Answered</h1>")))
answered.addFigure()
vbox.addWidget(answered)
widgets.append(answered)
eases = AdjustableFigure(parent.config, 'eases', dg.easeBars)
eases.addWidget(QLabel(_("<h1>Eases</h1>")))
eases.addFigure()
vbox.addWidget(eases)
widgets.append(eases)