def _entry_to_text(self, entry: LogEntryWithTime): if isinstance(entry.entry, str): txt = entry.entry elif isinstance(entry.entry, MediaSyncProgress): txt = self._logentry_to_text(entry.entry) else: assert_exhaustive(entry.entry) return self._time_and_text(entry.time, txt)
def _interval_for_state(self, state: scheduler_pb2.SchedulingState) -> int: kind = state.WhichOneof("value") if kind == "normal": return self._interval_for_normal_state(state.normal) elif kind == "filtered": return self._interval_for_filtered_state(state.filtered) else: assert_exhaustive(kind) return 0 # unreachable
def _start_recording(self) -> None: driver = self.mw.pm.recording_driver() if driver is RecordingDriver.PyAudio: self._recorder = PyAudioRecorder(self.mw, namedtmp("rec.wav")) elif driver is RecordingDriver.QtAudioInput: self._recorder = QtAudioInputRecorder(namedtmp("rec.wav"), self.mw, self._parent) else: assert_exhaustive(driver) self._recorder.start(self._start_timer)
def _interval_for_filtered_state( self, filtered: scheduler_pb2.SchedulingState.Filtered) -> int: kind = filtered.WhichOneof("value") if kind == "preview": return filtered.preview.scheduled_secs elif kind == "rescheduling": return self._interval_for_normal_state( filtered.rescheduling.original_state) else: assert_exhaustive(kind) return 0 # unreachable
def _interval_for_normal_state(self, normal: _pb.SchedulingState.Normal) -> int: kind = normal.WhichOneof("value") if kind == "new": return 0 elif kind == "review": return normal.review.scheduled_days * 86400 elif kind == "learning": return normal.learning.scheduled_secs elif kind == "relearning": return normal.relearning.learning.scheduled_secs else: assert_exhaustive(kind) return 0 # unreachable
def _legacy_undo(*, parent: QWidget) -> None: from aqt import mw assert mw assert mw.col reviewing = mw.state == "review" just_refresh_reviewer = False result = mw.col.undo_legacy() if result is None: # should not happen showInfo("nothing to undo", parent=parent) mw.update_undo_actions() return elif isinstance(result, LegacyReviewUndo): name = tr.scheduling_review() if reviewing: # push the undone card to the top of the queue cid = result.card.id card = mw.col.get_card(cid) mw.reviewer.cardQueue.append(card) gui_hooks.review_did_undo(cid) just_refresh_reviewer = True elif isinstance(result, LegacyCheckpoint): name = result.name else: assert_exhaustive(result) assert False if just_refresh_reviewer: mw.reviewer.nextCard() else: # full queue+gui reset required mw.reset() tooltip(tr.undo_action_undone(action=name), parent=parent) gui_hooks.state_did_revert(name) mw.update_undo_actions()
def get_queued_cards( self, *, fetch_limit: int = 1, intraday_learning_only: bool = False, ) -> Union[QueuedCards, CongratsInfo]: info = self.col._backend.get_queued_cards( fetch_limit=fetch_limit, intraday_learning_only=intraday_learning_only) kind = info.WhichOneof("value") if kind == "queued_cards": return info.queued_cards elif kind == "congrats_info": return info.congrats_info else: assert_exhaustive(kind) assert False
def refresh_if_needed(self) -> None: if self._refresh_needed is RefreshNeeded.QUEUES: self.mw.col.reset() self.nextCard() self.mw.fade_in_webview() self._refresh_needed = None elif self._refresh_needed is RefreshNeeded.NOTE_TEXT: self._redraw_current_card() self.mw.fade_in_webview() self._refresh_needed = None elif self._refresh_needed is RefreshNeeded.FLAG: self.card.load() self._update_flag_icon() # for when modified in browser self.mw.fade_in_webview() self._refresh_needed = None elif self._refresh_needed: assert_exhaustive(self._refresh_needed)
def _build_stage(self, root: SidebarItem, stage: SidebarStage) -> None: if stage is SidebarStage.SAVED_SEARCHES: self._saved_searches_tree(root) elif stage is SidebarStage.CARD_STATE: self._card_state_tree(root) elif stage is SidebarStage.TODAY: self._today_tree(root) elif stage is SidebarStage.FLAGS: self._flags_tree(root) elif stage is SidebarStage.DECKS: self._deck_tree(root) elif stage is SidebarStage.NOTETYPES: self._notetype_tree(root) elif stage is SidebarStage.TAGS: self._tag_tree(root) elif stage is SidebarStage.ROOT: pass else: assert_exhaustive(stage)