add 'replay audio' button to previewer

This commit is contained in:
Soren I. Bjornstad 2014-06-21 15:35:45 -05:00
parent ba084cb46a
commit d659d9cff7
2 changed files with 22 additions and 8 deletions

View file

@ -1015,6 +1015,10 @@ where id in %s""" % ids2str(sf))
self._previewWeb = AnkiWebView(True) self._previewWeb = AnkiWebView(True)
vbox.addWidget(self._previewWeb) vbox.addWidget(self._previewWeb)
bbox = QDialogButtonBox() bbox = QDialogButtonBox()
self._previewReplay = bbox.addButton(_("Replay Audio"), QDialogButtonBox.ActionRole)
self._previewReplay.setAutoDefault(False)
self._previewReplay.setShortcut(QKeySequence("R"))
self._previewReplay.setToolTip(_("Shortcut key: %s" % "R"))
self._previewPrev = bbox.addButton("<", QDialogButtonBox.ActionRole) self._previewPrev = bbox.addButton("<", QDialogButtonBox.ActionRole)
self._previewPrev.setAutoDefault(False) self._previewPrev.setAutoDefault(False)
self._previewPrev.setShortcut(QKeySequence("Left")) self._previewPrev.setShortcut(QKeySequence("Left"))
@ -1023,6 +1027,7 @@ where id in %s""" % ids2str(sf))
self._previewNext.setShortcut(QKeySequence("Right")) self._previewNext.setShortcut(QKeySequence("Right"))
c(self._previewPrev, SIGNAL("clicked()"), self._onPreviewPrev) c(self._previewPrev, SIGNAL("clicked()"), self._onPreviewPrev)
c(self._previewNext, SIGNAL("clicked()"), self._onPreviewNext) c(self._previewNext, SIGNAL("clicked()"), self._onPreviewNext)
c(self._previewReplay, SIGNAL("clicked()"), self._onReplayAudio)
vbox.addWidget(bbox) vbox.addWidget(bbox)
self._previewWindow.setLayout(vbox) self._previewWindow.setLayout(vbox)
restoreGeom(self._previewWindow, "preview") restoreGeom(self._previewWindow, "preview")
@ -1050,6 +1055,9 @@ where id in %s""" % ids2str(sf))
self.onNextCard() self.onNextCard()
self._updatePreviewButtons() self._updatePreviewButtons()
def _onReplayAudio(self):
self.mw.reviewer.replayAudio(self)
def _updatePreviewButtons(self): def _updatePreviewButtons(self):
if not self._previewWindow: if not self._previewWindow:
return return

View file

@ -106,14 +106,19 @@ class Reviewer(object):
# Audio # Audio
########################################################################## ##########################################################################
def replayAudio(self): def replayAudio(self, previewer=None):
if previewer:
state = previewer._previewState
c = previewer.card
else:
state = self.state
c = self.card
clearAudioQueue() clearAudioQueue()
c = self.card if state == "question":
if self.state == "question":
playFromText(c.q()) playFromText(c.q())
elif self.state == "answer": elif state == "answer":
txt = "" txt = ""
if self._replayq(c): if self._replayq(c, previewer):
txt = c.q() txt = c.q()
txt += c.a() txt += c.a()
playFromText(txt) playFromText(txt)
@ -218,9 +223,10 @@ The front of this card is empty. Please run Tools>Empty Cards.""")
return self.mw.col.decks.confForDid( return self.mw.col.decks.confForDid(
card.odid or card.did)['autoplay'] card.odid or card.did)['autoplay']
def _replayq(self, card): def _replayq(self, card, previewer=None):
return self.mw.col.decks.confForDid( s = previewer if previewer else self
self.card.odid or self.card.did).get('replayq', True) return s.mw.col.decks.confForDid(
s.card.odid or s.card.did).get('replayq', True)
def _toggleStar(self): def _toggleStar(self):
self.web.eval("_toggleStar(%s);" % json.dumps( self.web.eval("_toggleStar(%s);" % json.dumps(