def update_preview(self, focus_widget=None): fact_data = {} for fact_key, name in self.card_type.fact_keys_and_names: if name == "Text" and \ "{{cloze:Text}}" in self.front_template.toPlainText(): fact_data[ fact_key] = "This is a {{c1::sample}} cloze deletion." else: fact_data[fact_key] = "(" + name + ")" fact = Fact(fact_data) fact_view = copy.deepcopy(self.fact_view) fact_view.extra_data["qfmt"] = self.front_template.toPlainText() fact_view.extra_data["afmt"] = self.back_template.toPlainText() # We cannot deepcopy a card type because of card_type.name = _("foo"). card_type = copy.copy(self.card_type) card_type.extra_data = copy.copy(self.card_type.extra_data) card_type.extra_data["css"] = self.css.toPlainText() card = Card(card_type, fact, fact_view) card.extra_data["ord"] = 0 self.front_preview.setHtml(card.question()) self.back_preview.setHtml(card.answer()) # The html widget seems to grab the focus, so we need to restore the # focus to the editor if needed. if focus_widget: focus_widget.setFocus()