diff --git a/ankiqt/ui/graphs.py b/ankiqt/ui/graphs.py index 2430ca511..94a954e1a 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() @@ -75,8 +76,11 @@ class AdjustableFigure(QWidget): self.setUpdatesEnabled(False) idx = self.vbox.indexOf(self.figureCanvas) self.vbox.removeWidget(self.figureCanvas) - self.figureCanvas.deleteLater() - self.figureCanvas = AnkiFigureCanvas(self.figureFunc(self.range)) + if not self.figureCanvas: + self.addFigure() + else: + self.figureCanvas.deleteLater() + self.figureCanvas = AnkiFigureCanvas(self.figureFunc(self.range)) self.vbox.insertWidget(idx, self.figureCanvas) self.setUpdatesEnabled(True) @@ -89,12 +93,13 @@ class AdjustableFigure(QWidget): self.periodCombo.setCurrentIndex(idx) self.connect(self.periodCombo, SIGNAL("currentIndexChanged(int)"), self.onPeriodChange) - self.onPeriodChange(idx) + self.onPeriodChange(idx, initialSkip=True) - def onPeriodChange(self, index): + def onPeriodChange(self, index, initialSkip=False): self.config['graphs.period.' + self.name] = index self.range = self.choices[index] - self.scheduleUpdate() + if not initialSkip: + self.scheduleUpdate() def scheduleUpdate(self): if not self.updateTimer: @@ -113,6 +118,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): @@ -153,38 +160,37 @@ def intervalGraph(parent, deck): # views nextDue = AdjustableFigure(parent.config, 'due', dg.nextDue, range) nextDue.addWidget(QLabel(_("