anki/qt/aqt/deckdescription.py

81 lines
2.4 KiB
Python
Raw Normal View History

# Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
from __future__ import annotations
import aqt
import aqt.main
import aqt.operations
from anki.decks import DeckDict
from aqt.operations import QueryOp
from aqt.operations.deck import update_deck_dict
from aqt.qt import *
from aqt.utils import addCloseShortcut, disable_help_button, restoreGeom, saveGeom, tr
class DeckDescriptionDialog(QDialog):
TITLE = "deckDescription"
silentlyClose = True
def __init__(self, mw: aqt.main.AnkiQt) -> None:
QDialog.__init__(self, mw, Qt.WindowType.Window)
self.mw = mw
# set on success
self.deck: DeckDict
QueryOp(
parent=self.mw,
op=lambda col: col.decks.current(),
success=self._setup_and_show,
).run_in_background()
def _setup_and_show(self, deck: DeckDict) -> None:
if deck["dyn"]:
return
self.deck = deck
self._setup_ui()
self.show()
def _setup_ui(self) -> None:
self.setWindowTitle(tr.scheduling_description())
self.setWindowModality(Qt.WindowModality.ApplicationModal)
self.mw.garbage_collect_on_dialog_finish(self)
self.setMinimumWidth(400)
disable_help_button(self)
restoreGeom(self, self.TITLE)
addCloseShortcut(self)
box = QVBoxLayout()
self.enable_markdown = QCheckBox(tr.deck_config_description_new_handling())
self.enable_markdown.setToolTip(tr.deck_config_description_new_handling_hint())
self.enable_markdown.setChecked(self.deck.get("md", False))
box.addWidget(self.enable_markdown)
self.description = QPlainTextEdit()
self.description.setPlainText(self.deck.get("desc", ""))
box.addWidget(self.description)
button_box = QDialogButtonBox()
ok = button_box.addButton(QDialogButtonBox.StandardButton.Ok)
qconnect(ok.clicked, self.save_and_accept)
box.addWidget(button_box)
self.setLayout(box)
self.show()
def save_and_accept(self) -> None:
self.deck["desc"] = self.description.toPlainText()
self.deck["md"] = self.enable_markdown.isChecked()
update_deck_dict(parent=self, deck=self.deck).success(
lambda _: self.accept()
).run_in_background()
def accept(self) -> None:
saveGeom(self, self.TITLE)
QDialog.accept(self)