mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
tidy up flag/mark code
This commit is contained in:
parent
0331d8b588
commit
2d8e45b6da
3 changed files with 35 additions and 32 deletions
|
@ -23,6 +23,7 @@ from anki.utils import ids2str
|
|||
|
||||
# public exports
|
||||
TagTreeNode = _pb.TagTreeNode
|
||||
MARKED_TAG = "marked"
|
||||
|
||||
|
||||
class TagManager:
|
||||
|
|
|
@ -19,6 +19,7 @@ from anki.errors import InvalidInput, NotFoundError
|
|||
from anki.lang import without_unicode_isolation
|
||||
from anki.models import NoteType
|
||||
from anki.stats import CardStats
|
||||
from anki.tags import MARKED_TAG
|
||||
from anki.utils import htmlToTextLine, ids2str, isMac, isWin
|
||||
from aqt import AnkiQt, colors, gui_hooks
|
||||
from aqt.card_ops import set_card_deck, set_card_flag
|
||||
|
@ -454,7 +455,7 @@ class StatusDelegate(QItemDelegate):
|
|||
col = None
|
||||
if c.user_flag() > 0:
|
||||
col = getattr(colors, f"FLAG{c.user_flag()}_BG")
|
||||
elif c.note().has_tag("Marked"):
|
||||
elif c.note().has_tag(MARKED_TAG):
|
||||
col = colors.MARKED_BG
|
||||
elif c.queue == QUEUE_TYPE_SUSPENDED:
|
||||
col = colors.SUSPENDED_BG
|
||||
|
@ -562,7 +563,9 @@ class Browser(QMainWindow):
|
|||
lambda: self.remove_tags_from_selected_notes(),
|
||||
)
|
||||
qconnect(f.actionClear_Unused_Tags.triggered, self.clear_unused_tags)
|
||||
qconnect(f.actionToggle_Mark.triggered, lambda: self.onMark())
|
||||
qconnect(
|
||||
f.actionToggle_Mark.triggered, lambda: self.toggle_mark_of_selected_notes()
|
||||
)
|
||||
qconnect(f.actionChangeModel.triggered, self.onChangeModel)
|
||||
qconnect(f.actionFindDuplicates.triggered, self.onFindDupes)
|
||||
qconnect(f.actionFindReplace.triggered, self.onFindReplace)
|
||||
|
@ -575,10 +578,16 @@ class Browser(QMainWindow):
|
|||
qconnect(f.action_set_due_date.triggered, self.set_due_date)
|
||||
qconnect(f.action_forget.triggered, self.forget_cards)
|
||||
qconnect(f.actionToggle_Suspend.triggered, self.suspend_selected_cards)
|
||||
qconnect(f.actionRed_Flag.triggered, lambda: self.onSetFlag(1))
|
||||
qconnect(f.actionOrange_Flag.triggered, lambda: self.onSetFlag(2))
|
||||
qconnect(f.actionGreen_Flag.triggered, lambda: self.onSetFlag(3))
|
||||
qconnect(f.actionBlue_Flag.triggered, lambda: self.onSetFlag(4))
|
||||
qconnect(f.actionRed_Flag.triggered, lambda: self.set_flag_of_selected_cards(1))
|
||||
qconnect(
|
||||
f.actionOrange_Flag.triggered, lambda: self.set_flag_of_selected_cards(2)
|
||||
)
|
||||
qconnect(
|
||||
f.actionGreen_Flag.triggered, lambda: self.set_flag_of_selected_cards(3)
|
||||
)
|
||||
qconnect(
|
||||
f.actionBlue_Flag.triggered, lambda: self.set_flag_of_selected_cards(4)
|
||||
)
|
||||
qconnect(f.actionExport.triggered, lambda: self._on_export_notes())
|
||||
# jumps
|
||||
qconnect(f.actionPreviousCard.triggered, self.onPreviousCard)
|
||||
|
@ -870,7 +879,7 @@ QTableView {{ gridline-color: {grid} }}
|
|||
self.focusTo = None
|
||||
self.editor.card = self.card
|
||||
self.singleCard = True
|
||||
self._updateFlagsMenu()
|
||||
self._update_flags_menu()
|
||||
gui_hooks.browser_did_change_row(self)
|
||||
|
||||
def currentRow(self) -> int:
|
||||
|
@ -1296,29 +1305,26 @@ where id in %s"""
|
|||
# Flags & Marking
|
||||
######################################################################
|
||||
|
||||
def onSetFlag(self, n: int) -> None:
|
||||
@ensure_editor_saved
|
||||
def set_flag_of_selected_cards(self, flag: int) -> None:
|
||||
if not self.card:
|
||||
return
|
||||
self.editor.call_after_note_saved(lambda: self._on_set_flag(n))
|
||||
|
||||
def _on_set_flag(self, flag: int) -> None:
|
||||
# flag needs toggling off?
|
||||
if flag == self.card.user_flag():
|
||||
flag = 0
|
||||
|
||||
cids = self.selected_cards()
|
||||
set_card_flag(mw=self.mw, card_ids=cids, flag=flag)
|
||||
set_card_flag(mw=self.mw, card_ids=self.selected_cards(), flag=flag)
|
||||
|
||||
def _updateFlagsMenu(self) -> None:
|
||||
def _update_flags_menu(self) -> None:
|
||||
flag = self.card and self.card.user_flag()
|
||||
flag = flag or 0
|
||||
|
||||
f = self.form
|
||||
flagActions = [
|
||||
f.actionRed_Flag,
|
||||
f.actionOrange_Flag,
|
||||
f.actionGreen_Flag,
|
||||
f.actionBlue_Flag,
|
||||
self.form.actionRed_Flag,
|
||||
self.form.actionOrange_Flag,
|
||||
self.form.actionGreen_Flag,
|
||||
self.form.actionBlue_Flag,
|
||||
]
|
||||
|
||||
for c, act in enumerate(flagActions):
|
||||
|
@ -1326,16 +1332,12 @@ where id in %s"""
|
|||
|
||||
qtMenuShortcutWorkaround(self.form.menuFlag)
|
||||
|
||||
def onMark(self, mark: bool = None) -> None:
|
||||
if mark is None:
|
||||
mark = not self.isMarked()
|
||||
if mark:
|
||||
self.add_tags_to_selected_notes(tags="marked")
|
||||
def toggle_mark_of_selected_notes(self) -> None:
|
||||
have_mark = bool(self.card and self.card.note().has_tag(MARKED_TAG))
|
||||
if have_mark:
|
||||
self.remove_tags_from_selected_notes(tags=MARKED_TAG)
|
||||
else:
|
||||
self.remove_tags_from_selected_notes(tags="marked")
|
||||
|
||||
def isMarked(self) -> bool:
|
||||
return bool(self.card and self.card.note().has_tag("Marked"))
|
||||
self.add_tags_to_selected_notes(tags=MARKED_TAG)
|
||||
|
||||
# Scheduling
|
||||
######################################################################
|
||||
|
|
|
@ -15,6 +15,7 @@ from PyQt5.QtCore import Qt
|
|||
from anki import hooks
|
||||
from anki.cards import Card
|
||||
from anki.collection import Config, OpChanges
|
||||
from anki.tags import MARKED_TAG
|
||||
from anki.utils import stripHTML
|
||||
from aqt import AnkiQt, gui_hooks
|
||||
from aqt.card_ops import set_card_flag
|
||||
|
@ -271,7 +272,7 @@ class Reviewer:
|
|||
self.web.eval(f"_drawFlag({self.card.user_flag()});")
|
||||
|
||||
def _update_mark_icon(self) -> None:
|
||||
self.web.eval(f"_drawMark({json.dumps(self.card.note().has_tag('marked'))});")
|
||||
self.web.eval(f"_drawMark({json.dumps(self.card.note().has_tag(MARKED_TAG))});")
|
||||
|
||||
_drawMark = _update_mark_icon
|
||||
_drawFlag = _update_flag_icon
|
||||
|
@ -844,12 +845,11 @@ time = %(time)d;
|
|||
set_card_flag(mw=self.mw, card_ids=[self.card.id], flag=flag)
|
||||
|
||||
def toggle_mark_on_current_note(self) -> None:
|
||||
tag = "marked"
|
||||
note = self.card.note()
|
||||
if note.has_tag(tag):
|
||||
remove_tags(mw=self.mw, note_ids=[note.id], space_separated_tags=tag)
|
||||
if note.has_tag(MARKED_TAG):
|
||||
remove_tags(mw=self.mw, note_ids=[note.id], space_separated_tags=MARKED_TAG)
|
||||
else:
|
||||
add_tags(mw=self.mw, note_ids=[note.id], space_separated_tags=tag)
|
||||
add_tags(mw=self.mw, note_ids=[note.id], space_separated_tags=MARKED_TAG)
|
||||
|
||||
def on_set_due(self) -> None:
|
||||
if self.mw.state != "review" or not self.card:
|
||||
|
|
Loading…
Reference in a new issue