diff --git a/qt/aqt/clayout.py b/qt/aqt/clayout.py index 080b153bb..c08e62128 100644 --- a/qt/aqt/clayout.py +++ b/qt/aqt/clayout.py @@ -55,7 +55,9 @@ class CardLayout(QDialog): self.mm = self.mw.col.models self.model = note.model() self.templates = self.model["tmpls"] - self._want_fill_empty_on = fill_empty + self.fill_empty_action_toggled = fill_empty + self.night_mode_action_toggled = self.mw.pm.night_mode() + self.mobile_class_action_toggled = False self.have_autoplayed = False self.mm._remove_from_cache(self.model["id"]) self.mw.checkpoint(_("Card Types")) @@ -288,12 +290,11 @@ class CardLayout(QDialog): pform.preview_front.isChecked() qconnect(pform.preview_front.clicked, self.on_preview_toggled) qconnect(pform.preview_back.clicked, self.on_preview_toggled) - if self._want_fill_empty_on: - pform.fill_empty.setChecked(True) - qconnect(pform.fill_empty.toggled, self.on_preview_toggled) - if not self.note_has_empty_field(): - pform.fill_empty.setHidden(True) - pform.fill_empty.setText(tr(TR.CARD_TEMPLATES_FILL_EMPTY)) + pform.preview_settings.setText( + tr(TR.CARD_TEMPLATES_PREVIEW_SETTINGS) + " " + downArrow() + ) + qconnect(pform.preview_settings.clicked, self.on_preview_settings) + jsinc = [ "jquery.js", "browsersel.js", @@ -317,6 +318,40 @@ class CardLayout(QDialog): self.cloze_numbers = [] self.pform.cloze_number_combo.setHidden(True) + def on_fill_empty_action_toggled(self): + self.fill_empty_action_toggled = not self.fill_empty_action_toggled + self.on_preview_toggled() + + def on_night_mode_action_toggled(self): + self.night_mode_action_toggled = not self.night_mode_action_toggled + self.on_preview_toggled() + + def on_mobile_class_action_toggled(self): + self.mobile_class_action_toggled = not self.mobile_class_action_toggled + self.on_preview_toggled() + + def on_preview_settings(self): + m = QMenu(self) + + a = m.addAction(tr(TR.CARD_TEMPLATES_FILL_EMPTY)) + a.setCheckable(True) + a.setChecked(self.fill_empty_action_toggled) + qconnect(a.triggered, self.on_fill_empty_action_toggled) + if not self.note_has_empty_field(): + a.setVisible(False) + + a = m.addAction(tr(TR.CARD_TEMPLATES_INVERT_NIGHT_MODE)) + a.setCheckable(True) + a.setChecked(self.night_mode_action_toggled) + qconnect(a.triggered, self.on_night_mode_action_toggled) + + a = m.addAction(tr(TR.CARD_TEMPLATES_ADD_MOBILE_CLASS)) + a.setCheckable(True) + a.setChecked(self.mobile_class_action_toggled) + qconnect(a.toggled, self.on_mobile_class_action_toggled) + + m.exec_(self.pform.preview_settings.mapToGlobal(QPoint(0, 0))) + def on_preview_toggled(self): self.have_autoplayed = False self._renderPreview() @@ -423,7 +458,11 @@ class CardLayout(QDialog): ti = self.maybeTextInput + theme_manager.set_night_mode(self.night_mode_action_toggled) + bodyclass = theme_manager.body_classes_for_card_ord(c.ord) + if self.mobile_class_action_toggled: + bodyclass += " mobile" if self.pform.preview_front.isChecked(): q = ti(self.mw.prepare_card_text_for_display(c.q())) @@ -485,7 +524,7 @@ class CardLayout(QDialog): card, notetype=self.model, template=template, - fill_empty=self.pform.fill_empty.isChecked(), + fill_empty=self.fill_empty_action_toggled, ).render() card.set_render_output(output) return card @@ -749,6 +788,7 @@ Enter deck to place new %s cards in, or leave blank:""" except TemplateError as e: showWarning(str(e)) return + theme_manager.set_night_mode(self.mw.pm.night_mode()) self.mw.reset() tooltip(tr(TR.CARD_TEMPLATES_CHANGES_SAVED), parent=self.parent()) self.cleanup() @@ -772,6 +812,7 @@ Enter deck to place new %s cards in, or leave blank:""" self.preview_web = None self.model = None self.rendered_card = None + theme_manager.set_night_mode(self.mw.pm.night_mode()) self.mw = None def onHelp(self): diff --git a/qt/aqt/preferences.py b/qt/aqt/preferences.py index 5e3ea5c8c..6575d036a 100644 --- a/qt/aqt/preferences.py +++ b/qt/aqt/preferences.py @@ -226,7 +226,6 @@ Not currently enabled; click the sync button in the main window to enable.""" self.form.pasteInvert.setChecked(self.prof.get("pasteInvert", False)) self.form.showPlayButtons.setChecked(self.prof.get("showPlayButtons", True)) self.form.nightMode.setChecked(self.mw.pm.night_mode()) - self.form.nightMode.setChecked(self.mw.pm.night_mode()) self.form.interrupt_audio.setChecked(self.mw.pm.interrupt_audio()) def updateOptions(self): diff --git a/qt/designer/preview.ui b/qt/designer/preview.ui index 5d9ad877a..0ac419648 100644 --- a/qt/designer/preview.ui +++ b/qt/designer/preview.ui @@ -65,9 +65,13 @@ - + + + padding: 3px; +padding-left: 5px; + - FILL_EMPTY + diff --git a/rslib/ftl/card-templates.ftl b/rslib/ftl/card-templates.ftl index 1cc96c0e6..86cadfe46 100644 --- a/rslib/ftl/card-templates.ftl +++ b/rslib/ftl/card-templates.ftl @@ -13,6 +13,9 @@ card-templates-preview-box = Preview card-templates-template-box = Template card-templates-sample-cloze = This is a {"{{c1::"}sample{"}}"} cloze deletion. card-templates-fill-empty = Fill Empty Fields +card-templates-invert-night-mode = Invert Night Mode +card-templates-add-mobile-class = Add mobile Class +card-templates-preview-settings = Preview Settings card-templates-invalid-template-number = Card template { $number } has a problem. card-templates-changes-saved = Changes saved. card-templates-discard-changes = Discard changes?