def _showQuestion(self) -> None: self._reps += 1 self.state = "question" self.typedAnswer: str = None c = self.card # grab the question and play audio q = c.q() # play audio? if c.autoplay(): sounds = c.question_av_tags() gui_hooks.reviewer_will_play_question_sounds(c, sounds) av_player.play_tags(sounds) else: av_player.clear_queue_and_maybe_interrupt() sounds = [] gui_hooks.reviewer_will_play_question_sounds(c, sounds) av_player.play_tags(sounds) # render & update bottom q = self._mungeQA(q) q = gui_hooks.card_will_show(q, c, "reviewQuestion") bodyclass = theme_manager.body_classes_for_card_ord(c.ord) self.web.eval("_showQuestion(%s,'%s');" % (json.dumps(q), bodyclass)) self._drawFlag() self._drawMark() self._showAnswerButton() # if we have a type answer field, focus main web if self.typeCorrect: self.mw.web.setFocus() # user hook gui_hooks.reviewer_did_show_question(c)
def _showQuestion(self) -> None: self._reps += 1 self.state = "question" self.typedAnswer: str = None c = self.card # grab the question and play audio q = c.q() # play audio? if c.autoplay(): AnkiWebView.setPlaybackRequiresGesture(False) sounds = c.question_av_tags() gui_hooks.reviewer_will_play_question_sounds(c, sounds) av_player.play_tags(sounds) else: AnkiWebView.setPlaybackRequiresGesture(True) av_player.clear_queue_and_maybe_interrupt() sounds = [] gui_hooks.reviewer_will_play_question_sounds(c, sounds) av_player.play_tags(sounds) # render & update bottom q = self._mungeQA(q) q = gui_hooks.card_will_show(q, c, "reviewQuestion") bodyclass = theme_manager.body_classes_for_card_ord(c.ord) self.web.eval(f"_showQuestion({json.dumps(q)},'{bodyclass}');") self._drawFlag() self._drawMark() self._showAnswerButton() self.mw.web.setFocus() # user hook gui_hooks.reviewer_did_show_question(c)
def _showQuestion(self) -> None: self._reps += 1 self.state = "question" self.typedAnswer = None c = self.card # grab the question and play audio if c.isEmpty(): q = _( """\ The front of this card is empty. Please run Tools>Empty Cards.""" ) else: q = c.q() # play audio? if self.autoplay(c): av_player.play_tags(c.question_av_tags()) # render & update bottom q = self._mungeQA(q) q = gui_hooks.card_will_show(q, c, "reviewQuestion") bodyclass = theme_manager.body_classes_for_card_ord(c.ord) self.web.eval("_showQuestion(%s,'%s');" % (json.dumps(q), bodyclass)) self._drawFlag() self._drawMark() self._showAnswerButton() # if we have a type answer field, focus main web if self.typeCorrect: self.mw.web.setFocus() # user hook gui_hooks.reviewer_did_show_question(c)
def _showQuestion(self) -> None: self._reps += 1 self.state = "question" self.typedAnswer: str = None c = self.card # grab the question and play audio q = c.question() # play audio? if c.autoplay(): sounds = c.question_av_tags() gui_hooks.reviewer_will_play_question_sounds(c, sounds) av_player.play_tags(sounds) else: av_player.clear_queue_and_maybe_interrupt() sounds = [] gui_hooks.reviewer_will_play_question_sounds(c, sounds) av_player.play_tags(sounds) # render & update bottom q = self._mungeQA(q) q = gui_hooks.card_will_show(q, c, "reviewQuestion") self._run_state_mutation_hook() bodyclass = theme_manager.body_classes_for_card_ord(c.ord) a = self.mw.col.media.escape_media_filenames(c.answer()) self.web.eval( f"_showQuestion({json.dumps(q)}, {json.dumps(a)}, '{bodyclass}');" ) self._update_flag_icon() self._update_mark_icon() self._showAnswerButton() self.mw.web.setFocus() # user hook gui_hooks.reviewer_did_show_question(c)