def remove_notes( *, mw: AnkiQt, note_ids: Sequence[NoteID], success: PerformOpOptionalSuccessCallback = None, ) -> None: mw.perform_op(lambda: mw.col.remove_notes(note_ids), success=success)
def add_deck( *, mw: AnkiQt, name: str, success: PerformOpOptionalSuccessCallback = None ) -> None: mw.perform_op( lambda: mw.col.decks.add_normal_deck_with_name(name), success=success, )
def find_and_replace( *, mw: AnkiQt, parent: QWidget, note_ids: Sequence[int], search: str, replacement: str, regex: bool, field_name: Optional[str], match_case: bool, ) -> None: mw.perform_op( lambda: mw.col.find_and_replace( note_ids=note_ids, search=search, replacement=replacement, regex=regex, field_name=field_name, match_case=match_case, ), success=lambda out: tooltip( tr(TR.FINDREPLACE_NOTES_UPDATED, changed=out.count, total=len(note_ids)), parent=parent, ), )
def set_due_date_dialog( *, mw: aqt.AnkiQt, parent: QWidget, card_ids: List[int], config_key: Optional[Config.String.Key.V], ) -> None: if not card_ids: return default_text = (mw.col.get_config_string(config_key) if config_key is not None else "") prompt = "\n".join([ tr(TR.SCHEDULING_SET_DUE_DATE_PROMPT, cards=len(card_ids)), tr(TR.SCHEDULING_SET_DUE_DATE_PROMPT_HINT), ]) (days, success) = getText( prompt=prompt, parent=parent, default=default_text, title=tr(TR.ACTIONS_SET_DUE_DATE), ) if not success or not days.strip(): return mw.perform_op( lambda: mw.col.sched.set_due_date(card_ids, days, config_key), success=lambda _: tooltip( tr(TR.SCHEDULING_SET_DUE_DATE_DONE, cards=len(card_ids)), parent=parent, ), )
def clear_unused_tags(*, mw: AnkiQt, parent: QWidget) -> None: mw.perform_op( mw.col.tags.clear_unused_tags, success=lambda out: tooltip( tr(TR.BROWSING_REMOVED_UNUSED_TAGS_COUNT, count=out.count), parent=parent ), )
def bury_cards( *, mw: AnkiQt, card_ids: Sequence[int], success: PerformOpOptionalSuccessCallback = None, ) -> None: mw.perform_op(lambda: mw.col.sched.bury_cards(card_ids), success=success)
def reparent_tags(*, mw: AnkiQt, parent: QWidget, tags: Sequence[str], new_parent: str) -> None: mw.perform_op( lambda: mw.col.tags.reparent(tags=tags, new_parent=new_parent), success=lambda out: tooltip( tr(TR.BROWSING_NOTES_UPDATED, count=out.count), parent=parent), )
def remove_tags_for_all_notes(*, mw: AnkiQt, parent: QWidget, space_separated_tags: str) -> None: mw.perform_op( lambda: mw.col.tags.remove(space_separated_tags=space_separated_tags), success=lambda out: tooltip( tr(TR.BROWSING_NOTES_UPDATED, count=out.count), parent=parent), )
def suspend_cards( *, mw: AnkiQt, card_ids: Sequence[CardID], success: PerformOpOptionalSuccessCallback = None, ) -> None: mw.perform_op(lambda: mw.col.sched.suspend_cards(card_ids), success=success)
def add_tags( *, mw: AnkiQt, note_ids: Sequence[NoteID], space_separated_tags: str, success: PerformOpOptionalSuccessCallback = None, ) -> None: mw.perform_op(lambda: mw.col.tags.bulk_add(note_ids, space_separated_tags), success=success)
def reparent_decks( *, mw: AnkiQt, parent: QWidget, deck_ids: Sequence[DeckID], new_parent: DeckID ) -> None: mw.perform_op( lambda: mw.col.decks.reparent(deck_ids=deck_ids, new_parent=new_parent), success=lambda out: tooltip( tr(TR.BROWSING_REPARENTED_DECKS, count=out.count), parent=parent ), )
def add_note( *, mw: AnkiQt, note: Note, target_deck_id: DeckID, success: PerformOpOptionalSuccessCallback = None, ) -> None: mw.perform_op(lambda: mw.col.add_note(note, target_deck_id), success=success)
def rename_deck( *, mw: AnkiQt, deck_id: DeckID, new_name: str, after_rename: Callable[[], None] = None, ) -> None: mw.perform_op( lambda: mw.col.decks.rename(deck_id, new_name), after_hooks=after_rename )
def add_or_update_filtered_deck( *, mw: AnkiQt, deck: FilteredDeckForUpdate, success: PerformOpOptionalSuccessCallback, ) -> None: mw.perform_op( lambda: mw.col.sched.add_or_update_filtered_deck(deck), success=success, )
def remove_tags_for_notes( *, mw: AnkiQt, note_ids: Sequence[int], space_separated_tags: str, success: PerformOpOptionalSuccessCallback = None, ) -> None: mw.perform_op( lambda: mw.col.tags.bulk_remove(note_ids, space_separated_tags), success=success )
def forget_cards(*, mw: aqt.AnkiQt, parent: QWidget, card_ids: List[int]) -> None: if not card_ids: return mw.perform_op( lambda: mw.col.sched.schedule_cards_as_new(card_ids), success=lambda _: tooltip(tr(TR.SCHEDULING_FORGOT_CARDS, cards=len(card_ids)), parent=parent), )
def remove_decks( *, mw: AnkiQt, parent: QWidget, deck_ids: Sequence[DeckID], ) -> None: mw.perform_op( lambda: mw.col.decks.remove(deck_ids), success=lambda out: tooltip( tr(TR.BROWSING_CARDS_DELETED, count=out.count), parent=parent ), )
def rename_tag( *, mw: AnkiQt, parent: QWidget, current_name: str, new_name: str, after_rename: Callable[[], None], ) -> None: def success(out: OpChangesWithCount) -> None: if out.count: tooltip(tr(TR.BROWSING_NOTES_UPDATED, count=out.count), parent=parent) else: showInfo(tr(TR.BROWSING_TAG_RENAME_WARNING_EMPTY), parent=parent) mw.perform_op( lambda: mw.col.tags.rename(old=current_name, new=new_name), success=success, after_hooks=after_rename, )
def reposition_new_cards( *, mw: AnkiQt, parent: QWidget, card_ids: Sequence[int], starting_from: int, step_size: int, randomize: bool, shift_existing: bool, ) -> None: mw.perform_op( lambda: mw.col.sched.reposition_new_cards( card_ids=card_ids, starting_from=starting_from, step_size=step_size, randomize=randomize, shift_existing=shift_existing, ), success=lambda out: tooltip(tr(TR.BROWSING_CHANGED_NEW_POSITION, count=out.count), parent=parent), )
def empty_filtered_deck(*, mw: AnkiQt, deck_id: DeckID) -> None: mw.perform_op(lambda: mw.col.sched.empty_filtered_deck(deck_id))
def set_card_deck(*, mw: AnkiQt, card_ids: Sequence[CardID], deck_id: DeckID) -> None: mw.perform_op(lambda: mw.col.set_deck(card_ids, deck_id))
def set_card_flag(*, mw: AnkiQt, card_ids: Sequence[CardID], flag: int) -> None: mw.perform_op(lambda: mw.col.set_user_flag_for_cards(flag, card_ids))
def unsuspend_cards(*, mw: AnkiQt, card_ids: Sequence[int]) -> None: mw.perform_op(lambda: mw.col.sched.unsuspend_cards(card_ids))
def update_note(*, mw: AnkiQt, note: Note, after_hooks: Callable[[], None]) -> None: mw.perform_op( lambda: mw.col.update_note(note), after_hooks=after_hooks, )
def set_card_deck(*, mw: AnkiQt, card_ids: Sequence[int], deck_id: int) -> None: mw.perform_op(lambda: mw.col.set_deck(card_ids, deck_id))