migrate addHook/remHook calls

This commit is contained in:
Damien Elmes 2020-01-15 13:49:26 +10:00
parent 26cb9851b4
commit 89fce1f6b7
13 changed files with 64 additions and 66 deletions

View file

@ -7,7 +7,6 @@ import aqt.deckchooser
import aqt.editor import aqt.editor
import aqt.forms import aqt.forms
import aqt.modelchooser import aqt.modelchooser
from anki.hooks import addHook, remHook
from anki.lang import _ from anki.lang import _
from anki.notes import Note from anki.notes import Note
from anki.utils import htmlToTextLine, isMac from anki.utils import htmlToTextLine, isMac
@ -44,8 +43,8 @@ class AddCards(QDialog):
self.history: List[int] = [] self.history: List[int] = []
self.previousNote = None self.previousNote = None
restoreGeom(self, "add") restoreGeom(self, "add")
addHook("reset", self.onReset) gui_hooks.state_did_reset_hook.append(self.onReset)
addHook("currentModelChanged", self.onModelChange) gui_hooks.current_note_type_did_change_hook.append(self.onModelChange)
addCloseShortcut(self) addCloseShortcut(self)
self.show() self.show()
@ -90,7 +89,7 @@ class AddCards(QDialog):
def setAndFocusNote(self, note: Note) -> None: def setAndFocusNote(self, note: Note) -> None:
self.editor.setNote(note, focusTo=0) self.editor.setNote(note, focusTo=0)
def onModelChange(self) -> None: def onModelChange(self, unused) -> None:
oldNote = self.editor.note oldNote = self.editor.note
note = self.mw.col.newNote() note = self.mw.col.newNote()
self.previousNote = None self.previousNote = None
@ -224,8 +223,8 @@ question on all cards."""
self.ifCanClose(self._reject) self.ifCanClose(self._reject)
def _reject(self) -> None: def _reject(self) -> None:
remHook("reset", self.onReset) gui_hooks.state_did_reset_hook.remove(self.onReset)
remHook("currentModelChanged", self.onModelChange) gui_hooks.current_note_type_did_change_hook.remove(self.onModelChange)
clearAudioQueue() clearAudioQueue()
self.removeTempNote(self.editor.note) self.removeTempNote(self.editor.note)
self.editor.cleanup() self.editor.cleanup()

View file

@ -13,9 +13,9 @@ from typing import Callable, List, Optional
import anki import anki
import aqt.forms import aqt.forms
from anki import hooks
from anki.collection import _Collection from anki.collection import _Collection
from anki.consts import * from anki.consts import *
from anki.hooks import addHook, remHook
from anki.lang import _, ngettext from anki.lang import _, ngettext
from anki.utils import ( from anki.utils import (
bodyClass, bodyClass,
@ -2020,22 +2020,24 @@ update cards set usn=?, mod=?, did=? where id in """
###################################################################### ######################################################################
def setupHooks(self): def setupHooks(self):
addHook("undoState", self.onUndoState) gui_hooks.undo_state_did_change_hook.append(self.onUndoState)
addHook("reset", self.onReset) gui_hooks.state_did_reset_hook.append(self.onReset)
addHook("editTimer", self.refreshCurrentCard) gui_hooks.editor_typing_timer_did_fire_hook.append(self.refreshCurrentCard)
addHook("loadNote", self.onLoadNote) gui_hooks.editor_note_did_load_hook.append(self.onLoadNote)
addHook("editFocusLost", self.refreshCurrentCardFilter) gui_hooks.editor_field_did_lose_focus_filter.append(self.refreshCurrentCard)
for t in "newTag", "newModel", "newDeck": hooks.tag_created_hook.append(self.maybeRefreshSidebar)
addHook(t, self.maybeRefreshSidebar) hooks.note_type_created_hook.append(self.maybeRefreshSidebar)
hooks.deck_created_hook.append(self.maybeRefreshSidebar)
def teardownHooks(self): def teardownHooks(self):
remHook("reset", self.onReset) gui_hooks.undo_state_did_change_hook.remove(self.onUndoState)
remHook("editTimer", self.refreshCurrentCard) gui_hooks.state_did_reset_hook.remove(self.onReset)
remHook("loadNote", self.onLoadNote) gui_hooks.editor_typing_timer_did_fire_hook.remove(self.refreshCurrentCard)
remHook("editFocusLost", self.refreshCurrentCardFilter) gui_hooks.editor_note_did_load_hook.remove(self.onLoadNote)
remHook("undoState", self.onUndoState) gui_hooks.editor_field_did_lose_focus_filter.remove(self.refreshCurrentCard)
for t in "newTag", "newModel", "newDeck": hooks.tag_created_hook.remove(self.maybeRefreshSidebar)
remHook(t, self.maybeRefreshSidebar) hooks.note_type_created_hook.remove(self.maybeRefreshSidebar)
hooks.deck_created_hook.remove(self.maybeRefreshSidebar)
def onUndoState(self, on): def onUndoState(self, on):
self.form.actionUndo.setEnabled(on) self.form.actionUndo.setEnabled(on)
@ -2269,8 +2271,8 @@ class ChangeModel(QDialog):
self.setWindowModality(Qt.WindowModal) self.setWindowModality(Qt.WindowModal)
self.setup() self.setup()
restoreGeom(self, "changeModel") restoreGeom(self, "changeModel")
addHook("reset", self.onReset) gui_hooks.state_did_reset_hook.append(self.onReset)
addHook("currentModelChanged", self.onReset) gui_hooks.current_note_type_did_change_hook.append(self.onReset)
self.exec_() self.exec_()
def setup(self): def setup(self):
@ -2393,8 +2395,8 @@ class ChangeModel(QDialog):
) )
def cleanup(self): def cleanup(self):
remHook("reset", self.onReset) gui_hooks.state_did_reset_hook.remove(self.onReset)
remHook("currentModelChanged", self.onReset) gui_hooks.current_note_type_did_change_hook.remove(self.onReset)
self.modelChooser.cleanup() self.modelChooser.cleanup()
saveGeom(self, "changeModel") saveGeom(self, "changeModel")

View file

@ -2,8 +2,8 @@
# Copyright: Ankitects Pty Ltd and contributors # Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
from anki.hooks import addHook, remHook
from anki.lang import _ from anki.lang import _
from aqt import gui_hooks
from aqt.qt import * from aqt.qt import *
from aqt.utils import shortcut from aqt.utils import shortcut
@ -19,7 +19,7 @@ class DeckChooser(QHBoxLayout):
self.setSpacing(8) self.setSpacing(8)
self.setupDecks() self.setupDecks()
self.widget.setLayout(self) self.widget.setLayout(self)
addHook("currentModelChanged", self.onModelChange) gui_hooks.current_note_type_did_change_hook.append(self.onModelChange)
def setupDecks(self): def setupDecks(self):
if self.label: if self.label:
@ -64,7 +64,7 @@ class DeckChooser(QHBoxLayout):
self.widget.hide() self.widget.hide()
def cleanup(self): def cleanup(self):
remHook("currentModelChanged", self.onModelChange) gui_hooks.current_note_type_did_change_hook.remove(self.onModelChange)
def onModelChange(self): def onModelChange(self):
if not self.mw.col.conf.get("addToCur", True): if not self.mw.col.conf.get("addToCur", True):

View file

@ -6,7 +6,7 @@ import re
import time import time
import aqt import aqt
from anki.hooks import addHook, remHook from anki import hooks
from anki.lang import _ from anki.lang import _
from anki.sync import AnkiRequestsClient from anki.sync import AnkiRequestsClient
from aqt.qt import * from aqt.qt import *
@ -57,7 +57,7 @@ class Downloader(QThread):
self.recvTotal += bytes self.recvTotal += bytes
self.recv.emit() self.recv.emit()
addHook("httpRecv", recvEvent) hooks.http_data_received_hook.append(recvEvent)
client = AnkiRequestsClient() client = AnkiRequestsClient()
try: try:
resp = client.get(aqt.appShared + "download/%s?v=2.1" % self.code) resp = client.get(aqt.appShared + "download/%s?v=2.1" % self.code)
@ -75,7 +75,7 @@ class Downloader(QThread):
self.error = _("Please check your internet connection.") + "\n\n" + str(e) self.error = _("Please check your internet connection.") + "\n\n" + str(e)
return return
finally: finally:
remHook("httpRecv", recvEvent) hooks.http_data_received_hook.remove(recvEvent)
self.fname = re.match( self.fname = re.match(
"attachment; filename=(.+)", resp.headers["content-disposition"] "attachment; filename=(.+)", resp.headers["content-disposition"]

View file

@ -3,8 +3,8 @@
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import aqt.editor import aqt.editor
from anki.hooks import addHook, remHook
from anki.lang import _ from anki.lang import _
from aqt import gui_hooks
from aqt.qt import * from aqt.qt import *
from aqt.utils import restoreGeom, saveGeom, tooltip from aqt.utils import restoreGeom, saveGeom, tooltip
@ -26,7 +26,7 @@ class EditCurrent(QDialog):
self.editor.card = self.mw.reviewer.card self.editor.card = self.mw.reviewer.card
self.editor.setNote(self.mw.reviewer.card.note(), focusTo=0) self.editor.setNote(self.mw.reviewer.card.note(), focusTo=0)
restoreGeom(self, "editcurrent") restoreGeom(self, "editcurrent")
addHook("reset", self.onReset) gui_hooks.state_did_reset_hook.append(self.onReset)
self.mw.requireReset() self.mw.requireReset()
self.show() self.show()
# reset focus after open, taking care not to retain webview # reset focus after open, taking care not to retain webview
@ -40,7 +40,7 @@ class EditCurrent(QDialog):
n.load() # reload in case the model changed n.load() # reload in case the model changed
except: except:
# card's been deleted # card's been deleted
remHook("reset", self.onReset) gui_hooks.state_did_reset_hook.remove(self.onReset)
self.editor.setNote(None) self.editor.setNote(None)
self.mw.reset() self.mw.reset()
aqt.dialogs.markClosed("EditCurrent") aqt.dialogs.markClosed("EditCurrent")
@ -59,7 +59,7 @@ class EditCurrent(QDialog):
self.editor.saveNow(self._saveAndClose) self.editor.saveNow(self._saveAndClose)
def _saveAndClose(self): def _saveAndClose(self):
remHook("reset", self.onReset) gui_hooks.state_did_reset_hook.remove(self.onReset)
r = self.mw.reviewer r = self.mw.reviewer
try: try:
r.card.load() r.card.load()

View file

@ -19,7 +19,7 @@ from bs4 import BeautifulSoup
import aqt import aqt
import aqt.sound import aqt.sound
from anki.hooks import addHook, runFilter from anki.hooks import runFilter
from anki.lang import _ from anki.lang import _
from anki.sync import AnkiRequestsClient from anki.sync import AnkiRequestsClient
from anki.utils import checksum, isWin, namedtmp, stripHTMLMedia from anki.utils import checksum, isWin, namedtmp, stripHTMLMedia
@ -1122,4 +1122,4 @@ def fontMungeHack(font):
return re.sub(" L$", " Light", font) return re.sub(" L$", " Light", font)
addHook("mungeEditingFontName", fontMungeHack) gui_hooks.editor_font_for_field_filter.append(fontMungeHack)

View file

@ -6,8 +6,8 @@ import re
import time import time
import aqt import aqt
from anki import hooks
from anki.exporting import exporters from anki.exporting import exporters
from anki.hooks import addHook, remHook
from anki.lang import _, ngettext from anki.lang import _, ngettext
from aqt.qt import * from aqt.qt import *
from aqt.utils import checkInvalidFilename, getSaveFile, showInfo, showWarning, tooltip from aqt.utils import checkInvalidFilename, getSaveFile, showInfo, showWarning, tooltip
@ -132,9 +132,9 @@ class ExportDialog(QDialog):
) )
% cnt % cnt
) )
addHook("exportedMediaFiles", exportedMedia) hooks.exported_media_files_hook.append(exportedMedia)
self.exporter.exportInto(file) self.exporter.exportInto(file)
remHook("exportedMediaFiles", exportedMedia) hooks.exported_media_files_hook.remove(exportedMedia)
period = 3000 period = 3000
if self.isVerbatim: if self.isVerbatim:
msg = _("Collection exported.") msg = _("Collection exported.")

View file

@ -14,9 +14,8 @@ import anki.importing as importing
import aqt.deckchooser import aqt.deckchooser
import aqt.forms import aqt.forms
import aqt.modelchooser import aqt.modelchooser
from anki.hooks import addHook, remHook
from anki.lang import _, ngettext from anki.lang import _, ngettext
from aqt import AnkiQt from aqt import AnkiQt, gui_hooks
from aqt.qt import * from aqt.qt import *
from aqt.utils import ( from aqt.utils import (
askUser, askUser,
@ -87,7 +86,7 @@ class ImportDialog(QDialog):
self.setupOptions() self.setupOptions()
self.modelChanged() self.modelChanged()
self.frm.autoDetect.setVisible(self.importer.needDelimiter) self.frm.autoDetect.setVisible(self.importer.needDelimiter)
addHook("currentModelChanged", self.modelChanged) gui_hooks.current_note_type_did_change_hook.append(self.modelChanged)
self.frm.autoDetect.clicked.connect(self.onDelimiter) self.frm.autoDetect.clicked.connect(self.onDelimiter)
self.updateDelimiterButtonText() self.updateDelimiterButtonText()
self.frm.allowHTML.setChecked(self.mw.pm.profile.get("allowHTML", True)) self.frm.allowHTML.setChecked(self.mw.pm.profile.get("allowHTML", True))
@ -105,7 +104,7 @@ class ImportDialog(QDialog):
) )
self.deck = aqt.deckchooser.DeckChooser(self.mw, self.frm.deckArea, label=False) self.deck = aqt.deckchooser.DeckChooser(self.mw, self.frm.deckArea, label=False)
def modelChanged(self): def modelChanged(self, unused=None):
self.importer.model = self.mw.col.models.current() self.importer.model = self.mw.col.models.current()
self.importer.initMapping() self.importer.initMapping()
self.showMapping() self.showMapping()
@ -281,7 +280,7 @@ you can enter it here. Use \\t to represent tab."""
def reject(self): def reject(self):
self.modelChooser.cleanup() self.modelChooser.cleanup()
self.deck.cleanup() self.deck.cleanup()
remHook("currentModelChanged", self.modelChanged) gui_hooks.current_note_type_did_change_hook.remove(self.modelChanged)
QDialog.reject(self) QDialog.reject(self)
def helpRequested(self): def helpRequested(self):

View file

@ -26,7 +26,7 @@ import aqt.toolbar
import aqt.webview import aqt.webview
from anki import hooks from anki import hooks
from anki.collection import _Collection from anki.collection import _Collection
from anki.hooks import addHook, runHook from anki.hooks import runHook
from anki.lang import _, ngettext from anki.lang import _, ngettext
from anki.storage import Collection from anki.storage import Collection
from anki.utils import devMode, ids2str, intTime, isMac, isWin, splitFields from anki.utils import devMode, ids2str, intTime, isMac, isWin, splitFields
@ -1154,7 +1154,7 @@ Difference to correct time: %s."""
def setupHooks(self) -> None: def setupHooks(self) -> None:
hooks.mod_schema_filter.append(self.onSchemaMod) hooks.mod_schema_filter.append(self.onSchemaMod)
addHook("remNotes", self.onRemNotes) hooks.remove_notes_hook.append(self.onRemNotes)
hooks.odue_invalid_hook.append(self.onOdueInvalid) hooks.odue_invalid_hook.append(self.onOdueInvalid)
gui_hooks.mpv_will_play_hook.append(self.on_mpv_will_play) gui_hooks.mpv_will_play_hook.append(self.on_mpv_will_play)

View file

@ -2,7 +2,6 @@
# Copyright: Ankitects Pty Ltd and contributors # Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
from anki.hooks import addHook, remHook
from anki.lang import _ from anki.lang import _
from aqt import gui_hooks from aqt import gui_hooks
from aqt.qt import * from aqt.qt import *
@ -19,7 +18,7 @@ class ModelChooser(QHBoxLayout):
self.setContentsMargins(0, 0, 0, 0) self.setContentsMargins(0, 0, 0, 0)
self.setSpacing(8) self.setSpacing(8)
self.setupModels() self.setupModels()
addHook("reset", self.onReset) gui_hooks.state_did_reset_hook.append(self.onReset)
self.widget.setLayout(self) self.widget.setLayout(self)
def setupModels(self): def setupModels(self):
@ -42,7 +41,7 @@ class ModelChooser(QHBoxLayout):
self.updateModels() self.updateModels()
def cleanup(self): def cleanup(self):
remHook("reset", self.onReset) gui_hooks.state_did_reset_hook.remove(self.onReset)
def onReset(self): def onReset(self):
self.updateModels() self.updateModels()

View file

@ -11,7 +11,6 @@ import threading
import time import time
from typing import Any, Callable, Dict, List, Optional, Tuple from typing import Any, Callable, Dict, List, Optional, Tuple
from anki.hooks import addHook
from anki.lang import _ from anki.lang import _
from anki.sound import allSounds from anki.sound import allSounds
from anki.utils import isLin, isMac, isWin, tmpdir from anki.utils import isLin, isMac, isWin, tmpdir
@ -378,7 +377,7 @@ def stopMplayer(*args) -> None:
cleanupOldMplayerProcesses() cleanupOldMplayerProcesses()
addHook("unloadProfile", stopMplayer) gui_hooks.profile_will_close_hook.append(stopMplayer)
# PyAudio recording # PyAudio recording
########################################################################## ##########################################################################

View file

@ -3,8 +3,8 @@
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import aqt import aqt
from anki.hooks import addHook, remHook
from anki.lang import _ from anki.lang import _
from aqt import gui_hooks
from aqt.qt import * from aqt.qt import *
from aqt.utils import getOnlyText, openHelp, restoreGeom, saveGeom, shortcut, showInfo from aqt.utils import getOnlyText, openHelp, restoreGeom, saveGeom, shortcut, showInfo
@ -32,7 +32,7 @@ class StudyDeck(QDialog):
self.form.setupUi(self) self.form.setupUi(self)
self.form.filter.installEventFilter(self) self.form.filter.installEventFilter(self)
self.cancel = cancel self.cancel = cancel
addHook("reset", self.onReset) gui_hooks.state_did_reset_hook.append(self.onReset)
self.geomKey = "studyDeck-" + geomKey self.geomKey = "studyDeck-" + geomKey
restoreGeom(self, self.geomKey) restoreGeom(self, self.geomKey)
if not cancel: if not cancel:
@ -120,7 +120,7 @@ class StudyDeck(QDialog):
def accept(self): def accept(self):
saveGeom(self, self.geomKey) saveGeom(self, self.geomKey)
remHook("reset", self.onReset) gui_hooks.state_did_reset_hook.remove(self.onReset)
row = self.form.list.currentRow() row = self.form.list.currentRow()
if row < 0: if row < 0:
showInfo(_("Please select something.")) showInfo(_("Please select something."))
@ -130,7 +130,7 @@ class StudyDeck(QDialog):
def reject(self): def reject(self):
saveGeom(self, self.geomKey) saveGeom(self, self.geomKey)
remHook("reset", self.onReset) gui_hooks.state_did_reset_hook.remove(self.onReset)
QDialog.reject(self) QDialog.reject(self)
def onAddDeck(self): def onAddDeck(self):
@ -144,5 +144,5 @@ class StudyDeck(QDialog):
self.mw.col.decks.id(n) self.mw.col.decks.id(n)
self.name = n self.name = n
# make sure we clean up reset hook when manually exiting # make sure we clean up reset hook when manually exiting
remHook("reset", self.onReset) gui_hooks.state_did_reset_hook.remove(self.onReset)
QDialog.accept(self) QDialog.accept(self)

View file

@ -4,7 +4,7 @@
import gc import gc
import time import time
from anki.hooks import addHook, remHook from anki import hooks
from anki.lang import _ from anki.lang import _
from anki.storage import Collection from anki.storage import Collection
from anki.sync import FullSyncer, MediaSyncer, RemoteMediaServer, RemoteServer, Syncer from anki.sync import FullSyncer, MediaSyncer, RemoteMediaServer, RemoteServer, Syncer
@ -406,10 +406,10 @@ class SyncThread(QThread):
self._abort = 2 self._abort = 2
raise Exception("sync cancelled") raise Exception("sync cancelled")
addHook("sync", syncEvent) hooks.sync_stage_hook.append(syncEvent)
addHook("syncMsg", syncMsg) hooks.sync_progress_message_hook.append(syncMsg)
addHook("httpSend", sendEvent) hooks.http_data_sent_hook.append(sendEvent)
addHook("httpRecv", recvEvent) hooks.http_data_received_hook.append(recvEvent)
# run sync and catch any errors # run sync and catch any errors
try: try:
self._sync() self._sync()
@ -419,10 +419,10 @@ class SyncThread(QThread):
finally: finally:
# don't bump mod time unless we explicitly save # don't bump mod time unless we explicitly save
self.col.close(save=False) self.col.close(save=False)
remHook("sync", syncEvent) hooks.sync_stage_hook.remove(syncEvent)
remHook("syncMsg", syncMsg) hooks.sync_progress_message_hook.remove(syncMsg)
remHook("httpSend", sendEvent) hooks.http_data_sent_hook.remove(sendEvent)
remHook("httpRecv", recvEvent) hooks.http_data_received_hook.remove(recvEvent)
def _abortingSync(self): def _abortingSync(self):
try: try: