mirror of
https://github.com/ankitects/anki.git
synced 2025-12-12 22:36:55 -05:00
add some types to main.py
This commit is contained in:
parent
98f4b3db81
commit
84f8d7f604
2 changed files with 29 additions and 23 deletions
|
|
@ -235,13 +235,13 @@ class DeckBrowser:
|
||||||
a = m.addAction(tr(TR.ACTIONS_OPTIONS))
|
a = m.addAction(tr(TR.ACTIONS_OPTIONS))
|
||||||
qconnect(a.triggered, lambda b, did=did: self._options(did))
|
qconnect(a.triggered, lambda b, did=did: self._options(did))
|
||||||
a = m.addAction(tr(TR.ACTIONS_EXPORT))
|
a = m.addAction(tr(TR.ACTIONS_EXPORT))
|
||||||
qconnect(a.triggered, lambda b, did=did: self._export(did))
|
qconnect(a.triggered, lambda b, did=did: self._export(int(did)))
|
||||||
a = m.addAction(tr(TR.ACTIONS_DELETE))
|
a = m.addAction(tr(TR.ACTIONS_DELETE))
|
||||||
qconnect(a.triggered, lambda b, did=did: self._delete(int(did)))
|
qconnect(a.triggered, lambda b, did=did: self._delete(int(did)))
|
||||||
gui_hooks.deck_browser_will_show_options_menu(m, int(did))
|
gui_hooks.deck_browser_will_show_options_menu(m, int(did))
|
||||||
m.exec_(QCursor.pos())
|
m.exec_(QCursor.pos())
|
||||||
|
|
||||||
def _export(self, did):
|
def _export(self, did: int) -> None:
|
||||||
self.mw.onExport(did=did)
|
self.mw.onExport(did=did)
|
||||||
|
|
||||||
def _rename(self, did: int) -> None:
|
def _rename(self, did: int) -> None:
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import weakref
|
||||||
import zipfile
|
import zipfile
|
||||||
from argparse import Namespace
|
from argparse import Namespace
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from typing import Any, Callable, List, Optional, Sequence, TextIO, Tuple, cast
|
from typing import Any, Callable, List, Optional, Sequence, TextIO, Tuple, Union, cast
|
||||||
|
|
||||||
import anki
|
import anki
|
||||||
import aqt
|
import aqt
|
||||||
|
|
@ -71,6 +71,7 @@ install_pylib_legacy()
|
||||||
|
|
||||||
|
|
||||||
class ResetReason(enum.Enum):
|
class ResetReason(enum.Enum):
|
||||||
|
Unknown = "unknown"
|
||||||
AddCardsAddNote = "addCardsAddNote"
|
AddCardsAddNote = "addCardsAddNote"
|
||||||
EditCurrentInit = "editCurrentInit"
|
EditCurrentInit = "editCurrentInit"
|
||||||
EditorBridgeCmd = "editorBridgeCmd"
|
EditorBridgeCmd = "editorBridgeCmd"
|
||||||
|
|
@ -510,12 +511,12 @@ class AnkiQt(QMainWindow):
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _loadCollection(self):
|
def _loadCollection(self) -> None:
|
||||||
cpath = self.pm.collectionPath()
|
cpath = self.pm.collectionPath()
|
||||||
self.col = Collection(cpath, backend=self.backend, log=True)
|
self.col = Collection(cpath, backend=self.backend, log=True)
|
||||||
self.setEnabled(True)
|
self.setEnabled(True)
|
||||||
|
|
||||||
def reopen(self):
|
def reopen(self) -> None:
|
||||||
self.col.reopen()
|
self.col.reopen()
|
||||||
|
|
||||||
def unloadCollection(self, onsuccess: Callable) -> None:
|
def unloadCollection(self, onsuccess: Callable) -> None:
|
||||||
|
|
@ -656,10 +657,10 @@ class AnkiQt(QMainWindow):
|
||||||
return self.moveToState("deckBrowser")
|
return self.moveToState("deckBrowser")
|
||||||
self.overview.show()
|
self.overview.show()
|
||||||
|
|
||||||
def _reviewState(self, oldState):
|
def _reviewState(self, oldState: str) -> None:
|
||||||
self.reviewer.show()
|
self.reviewer.show()
|
||||||
|
|
||||||
def _reviewCleanup(self, newState):
|
def _reviewCleanup(self, newState: str) -> None:
|
||||||
if newState != "resetRequired" and newState != "review":
|
if newState != "resetRequired" and newState != "review":
|
||||||
self.reviewer.cleanup()
|
self.reviewer.cleanup()
|
||||||
|
|
||||||
|
|
@ -675,7 +676,12 @@ class AnkiQt(QMainWindow):
|
||||||
self.maybeEnableUndo()
|
self.maybeEnableUndo()
|
||||||
self.moveToState(self.state)
|
self.moveToState(self.state)
|
||||||
|
|
||||||
def requireReset(self, modal=False, reason="unknown", context=None):
|
def requireReset(
|
||||||
|
self,
|
||||||
|
modal: bool = False,
|
||||||
|
reason: ResetReason = ResetReason.Unknown,
|
||||||
|
context: Any = None,
|
||||||
|
) -> None:
|
||||||
"Signal queue needs to be rebuilt when edits are finished or by user."
|
"Signal queue needs to be rebuilt when edits are finished or by user."
|
||||||
self.autosave()
|
self.autosave()
|
||||||
self.resetModal = modal
|
self.resetModal = modal
|
||||||
|
|
@ -684,7 +690,7 @@ class AnkiQt(QMainWindow):
|
||||||
):
|
):
|
||||||
self.moveToState("resetRequired")
|
self.moveToState("resetRequired")
|
||||||
|
|
||||||
def interactiveState(self):
|
def interactiveState(self) -> bool:
|
||||||
"True if not in profile manager, syncing, etc."
|
"True if not in profile manager, syncing, etc."
|
||||||
return self.state in ("overview", "review", "deckBrowser")
|
return self.state in ("overview", "review", "deckBrowser")
|
||||||
|
|
||||||
|
|
@ -823,7 +829,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
self.addonManager.loadAddons()
|
self.addonManager.loadAddons()
|
||||||
self.maybe_check_for_addon_updates()
|
self.maybe_check_for_addon_updates()
|
||||||
|
|
||||||
def maybe_check_for_addon_updates(self):
|
def maybe_check_for_addon_updates(self) -> None:
|
||||||
last_check = self.pm.last_addon_update_check()
|
last_check = self.pm.last_addon_update_check()
|
||||||
elap = intTime() - last_check
|
elap = intTime() - last_check
|
||||||
|
|
||||||
|
|
@ -866,7 +872,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
# Syncing
|
# Syncing
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
def on_sync_button_clicked(self):
|
def on_sync_button_clicked(self) -> None:
|
||||||
if self.media_syncer.is_syncing():
|
if self.media_syncer.is_syncing():
|
||||||
self.media_syncer.show_sync_log()
|
self.media_syncer.show_sync_log()
|
||||||
else:
|
else:
|
||||||
|
|
@ -879,7 +885,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
else:
|
else:
|
||||||
self._sync_collection_and_media(self._refresh_after_sync)
|
self._sync_collection_and_media(self._refresh_after_sync)
|
||||||
|
|
||||||
def _refresh_after_sync(self):
|
def _refresh_after_sync(self) -> None:
|
||||||
self.toolbar.redraw()
|
self.toolbar.redraw()
|
||||||
|
|
||||||
def _sync_collection_and_media(self, after_sync: Callable[[], None]):
|
def _sync_collection_and_media(self, after_sync: Callable[[], None]):
|
||||||
|
|
@ -1028,7 +1034,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
self.form.actionUndo.setEnabled(False)
|
self.form.actionUndo.setEnabled(False)
|
||||||
gui_hooks.undo_state_did_change(False)
|
gui_hooks.undo_state_did_change(False)
|
||||||
|
|
||||||
def checkpoint(self, name):
|
def checkpoint(self, name: str) -> None:
|
||||||
self.col.save(name)
|
self.col.save(name)
|
||||||
self.maybeEnableUndo()
|
self.maybeEnableUndo()
|
||||||
|
|
||||||
|
|
@ -1048,7 +1054,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
browser = aqt.dialogs.open("Browser", self)
|
browser = aqt.dialogs.open("Browser", self)
|
||||||
browser.show_single_card(self.reviewer.card)
|
browser.show_single_card(self.reviewer.card)
|
||||||
|
|
||||||
def onEditCurrent(self):
|
def onEditCurrent(self) -> None:
|
||||||
aqt.dialogs.open("EditCurrent", self)
|
aqt.dialogs.open("EditCurrent", self)
|
||||||
|
|
||||||
def onDeckConf(self, deck=None):
|
def onDeckConf(self, deck=None):
|
||||||
|
|
@ -1067,7 +1073,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
self.col.reset()
|
self.col.reset()
|
||||||
self.moveToState("overview")
|
self.moveToState("overview")
|
||||||
|
|
||||||
def onStats(self):
|
def onStats(self) -> None:
|
||||||
deck = self._selectedDeck()
|
deck = self._selectedDeck()
|
||||||
if not deck:
|
if not deck:
|
||||||
return
|
return
|
||||||
|
|
@ -1080,7 +1086,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
def onPrefs(self):
|
def onPrefs(self):
|
||||||
aqt.dialogs.open("Preferences", self)
|
aqt.dialogs.open("Preferences", self)
|
||||||
|
|
||||||
def onNoteTypes(self):
|
def onNoteTypes(self) -> None:
|
||||||
import aqt.models
|
import aqt.models
|
||||||
|
|
||||||
aqt.models.Models(self, self, fromMain=True)
|
aqt.models.Models(self, self, fromMain=True)
|
||||||
|
|
@ -1107,12 +1113,12 @@ title="%s" %s>%s</button>""" % (
|
||||||
aqt.importing.importFile(self, path)
|
aqt.importing.importFile(self, path)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def onImport(self):
|
def onImport(self) -> None:
|
||||||
import aqt.importing
|
import aqt.importing
|
||||||
|
|
||||||
aqt.importing.onImport(self)
|
aqt.importing.onImport(self)
|
||||||
|
|
||||||
def onExport(self, did=None):
|
def onExport(self, did: Optional[int] = None) -> None:
|
||||||
import aqt.exporting
|
import aqt.exporting
|
||||||
|
|
||||||
aqt.exporting.ExportDialog(self, did=did)
|
aqt.exporting.ExportDialog(self, did=did)
|
||||||
|
|
@ -1229,7 +1235,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
elif self.state == "overview":
|
elif self.state == "overview":
|
||||||
self.overview.refresh()
|
self.overview.refresh()
|
||||||
|
|
||||||
def on_autosync_timer(self):
|
def on_autosync_timer(self) -> None:
|
||||||
elap = self.media_syncer.seconds_since_last_sync()
|
elap = self.media_syncer.seconds_since_last_sync()
|
||||||
minutes = self.pm.auto_sync_media_minutes()
|
minutes = self.pm.auto_sync_media_minutes()
|
||||||
if not minutes:
|
if not minutes:
|
||||||
|
|
@ -1295,7 +1301,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
# this will gradually be phased out
|
# this will gradually be phased out
|
||||||
def onSchemaMod(self, arg):
|
def onSchemaMod(self, arg: bool) -> bool:
|
||||||
assert self.inMainThread()
|
assert self.inMainThread()
|
||||||
progress_shown = self.progress.busy()
|
progress_shown = self.progress.busy()
|
||||||
if progress_shown:
|
if progress_shown:
|
||||||
|
|
@ -1316,14 +1322,14 @@ title="%s" %s>%s</button>""" % (
|
||||||
# Advanced features
|
# Advanced features
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
def onCheckDB(self):
|
def onCheckDB(self) -> None:
|
||||||
check_db(self)
|
check_db(self)
|
||||||
|
|
||||||
def on_check_media_db(self) -> None:
|
def on_check_media_db(self) -> None:
|
||||||
gui_hooks.media_check_will_start()
|
gui_hooks.media_check_will_start()
|
||||||
check_media_db(self)
|
check_media_db(self)
|
||||||
|
|
||||||
def onStudyDeck(self):
|
def onStudyDeck(self) -> None:
|
||||||
from aqt.studydeck import StudyDeck
|
from aqt.studydeck import StudyDeck
|
||||||
|
|
||||||
ret = StudyDeck(self, dyn=True, current=self.col.decks.current()["name"])
|
ret = StudyDeck(self, dyn=True, current=self.col.decks.current()["name"])
|
||||||
|
|
@ -1377,7 +1383,7 @@ title="%s" %s>%s</button>""" % (
|
||||||
a = menu.addAction("Clear Code")
|
a = menu.addAction("Clear Code")
|
||||||
a.setShortcuts(QKeySequence("ctrl+shift+l"))
|
a.setShortcuts(QKeySequence("ctrl+shift+l"))
|
||||||
qconnect(a.triggered, frm.text.clear)
|
qconnect(a.triggered, frm.text.clear)
|
||||||
menu.exec(QCursor.pos())
|
menu.exec_(QCursor.pos())
|
||||||
|
|
||||||
frm.log.contextMenuEvent = lambda ev: addContextMenu(ev, "log")
|
frm.log.contextMenuEvent = lambda ev: addContextMenu(ev, "log")
|
||||||
frm.text.contextMenuEvent = lambda ev: addContextMenu(ev, "text")
|
frm.text.contextMenuEvent = lambda ev: addContextMenu(ev, "text")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue