mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -04:00
commit
30a8d3260b
3 changed files with 41 additions and 2 deletions
|
@ -135,11 +135,14 @@ class AddCards(QDialog):
|
||||||
m = QMenu(self)
|
m = QMenu(self)
|
||||||
for nid in self.history:
|
for nid in self.history:
|
||||||
if self.mw.col.findNotes("nid:%s" % nid):
|
if self.mw.col.findNotes("nid:%s" % nid):
|
||||||
fields = self.mw.col.getNote(nid).fields
|
note = self.mw.col.getNote(nid)
|
||||||
|
fields = note.fields
|
||||||
txt = htmlToTextLine(", ".join(fields))
|
txt = htmlToTextLine(", ".join(fields))
|
||||||
if len(txt) > 30:
|
if len(txt) > 30:
|
||||||
txt = txt[:30] + "..."
|
txt = txt[:30] + "..."
|
||||||
a = m.addAction(_('Edit "%s"') % txt)
|
line = _('Edit "%s"') % txt
|
||||||
|
line = gui_hooks.addcards_will_add_history_entry(line, note)
|
||||||
|
a = m.addAction(line)
|
||||||
qconnect(a.triggered, lambda b, nid=nid: self.editHistory(nid))
|
qconnect(a.triggered, lambda b, nid=nid: self.editHistory(nid))
|
||||||
else:
|
else:
|
||||||
a = m.addAction(_("(Note deleted)"))
|
a = m.addAction(_("(Note deleted)"))
|
||||||
|
|
|
@ -149,6 +149,36 @@ class _AddCardsWillShowHistoryMenuHook:
|
||||||
add_cards_will_show_history_menu = _AddCardsWillShowHistoryMenuHook()
|
add_cards_will_show_history_menu = _AddCardsWillShowHistoryMenuHook()
|
||||||
|
|
||||||
|
|
||||||
|
class _AddcardsWillAddHistoryEntryFilter:
|
||||||
|
"""Allows changing the history line in the add-card window."""
|
||||||
|
|
||||||
|
_hooks: List[Callable[[str, "anki.notes.Note"], str]] = []
|
||||||
|
|
||||||
|
def append(self, cb: Callable[[str, "anki.notes.Note"], str]) -> None:
|
||||||
|
"""(line: str, note: anki.notes.Note)"""
|
||||||
|
self._hooks.append(cb)
|
||||||
|
|
||||||
|
def remove(self, cb: Callable[[str, "anki.notes.Note"], str]) -> None:
|
||||||
|
if cb in self._hooks:
|
||||||
|
self._hooks.remove(cb)
|
||||||
|
|
||||||
|
def count(self) -> int:
|
||||||
|
return len(self._hooks)
|
||||||
|
|
||||||
|
def __call__(self, line: str, note: anki.notes.Note) -> str:
|
||||||
|
for filter in self._hooks:
|
||||||
|
try:
|
||||||
|
line = filter(line, note)
|
||||||
|
except:
|
||||||
|
# if the hook fails, remove it
|
||||||
|
self._hooks.remove(filter)
|
||||||
|
raise
|
||||||
|
return line
|
||||||
|
|
||||||
|
|
||||||
|
addcards_will_add_history_entry = _AddcardsWillAddHistoryEntryFilter()
|
||||||
|
|
||||||
|
|
||||||
class _AddonConfigEditorWillDisplayJsonFilter:
|
class _AddonConfigEditorWillDisplayJsonFilter:
|
||||||
"""Allows changing the text of the json configuration before actually
|
"""Allows changing the text of the json configuration before actually
|
||||||
displaying it to the user. For example, you can replace "\n" by
|
displaying it to the user. For example, you can replace "\n" by
|
||||||
|
|
|
@ -485,6 +485,12 @@ hooks = [
|
||||||
replace return the reason to reject. Otherwise return the
|
replace return the reason to reject. Otherwise return the
|
||||||
input.""",
|
input.""",
|
||||||
),
|
),
|
||||||
|
Hook(
|
||||||
|
name="addcards_will_add_history_entry",
|
||||||
|
args=["line: str", "note: anki.notes.Note"],
|
||||||
|
return_type="str",
|
||||||
|
doc="""Allows changing the history line in the add-card window.""",
|
||||||
|
),
|
||||||
# Editing
|
# Editing
|
||||||
###################
|
###################
|
||||||
Hook(
|
Hook(
|
||||||
|
|
Loading…
Reference in a new issue