Пример #1
0
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)
Пример #2
0
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,
    )
Пример #3
0
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,
        ),
    )
Пример #4
0
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,
        ),
    )
Пример #5
0
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
        ),
    )
Пример #6
0
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)
Пример #7
0
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),
    )
Пример #8
0
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),
    )
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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
        ),
    )
Пример #12
0
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)
Пример #13
0
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
    )
Пример #14
0
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,
    )
Пример #15
0
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
    )
Пример #16
0
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),
    )
Пример #17
0
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
        ),
    )
Пример #18
0
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,
    )
Пример #19
0
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),
    )
Пример #20
0
def empty_filtered_deck(*, mw: AnkiQt, deck_id: DeckID) -> None:
    mw.perform_op(lambda: mw.col.sched.empty_filtered_deck(deck_id))
Пример #21
0
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))
Пример #22
0
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))
Пример #23
0
def unsuspend_cards(*, mw: AnkiQt, card_ids: Sequence[int]) -> None:
    mw.perform_op(lambda: mw.col.sched.unsuspend_cards(card_ids))
Пример #24
0
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,
    )
Пример #25
0
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))