diff --git a/ankiqt/ui/graphs.py b/ankiqt/ui/graphs.py index d136ddfbc..c6bbefc13 100644 --- a/ankiqt/ui/graphs.py +++ b/ankiqt/ui/graphs.py @@ -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(_("

Due

"))) - nextDue.addFigure() vbox.addWidget(nextDue) widgets.append(nextDue) workload = AdjustableFigure(parent.config, 'workload', dg.workDone, range) workload.addWidget(QLabel(_("

Work Done

"))) - workload.addFigure() vbox.addWidget(workload) widgets.append(workload) cumDue = AdjustableFigure(parent.config, 'cum', dg.cumulativeDue, range) cumDue.addWidget(QLabel(_("

Cumulative Due

"))) - cumDue.addFigure() vbox.addWidget(cumDue) widgets.append(cumDue) interval = AdjustableFigure(parent.config, 'interval', dg.intervalPeriod, range) interval.addWidget(QLabel(_("

Intervals

"))) - interval.addFigure() vbox.addWidget(interval) widgets.append(interval) added = AdjustableFigure(parent.config, 'added', dg.addedRecently, range) added.addWidget(QLabel(_("

Added

"))) - added.addFigure() vbox.addWidget(added) widgets.append(added) answered = AdjustableFigure(parent.config, 'answered', lambda *args: apply( dg.addedRecently, args + ('firstAnswered',)), range) answered.addWidget(QLabel(_("

First Answered

"))) - answered.addFigure() vbox.addWidget(answered) widgets.append(answered) eases = AdjustableFigure(parent.config, 'eases', dg.easeBars) eases.addWidget(QLabel(_("

Eases

"))) - eases.addFigure() vbox.addWidget(eases) widgets.append(eases)