mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
fix cases where we used the wrong type sig to connect to gui hook
This commit is contained in:
parent
8310cb7a0e
commit
886536d78f
6 changed files with 41 additions and 25 deletions
|
@ -18,6 +18,8 @@ from anki.cards import Card
|
||||||
from anki.collection import _Collection
|
from anki.collection import _Collection
|
||||||
from anki.consts import *
|
from anki.consts import *
|
||||||
from anki.lang import _, ngettext
|
from anki.lang import _, ngettext
|
||||||
|
from anki.notes import Note
|
||||||
|
from anki.types import NoteType
|
||||||
from anki.utils import (
|
from anki.utils import (
|
||||||
bodyClass,
|
bodyClass,
|
||||||
fmtTimeSpan,
|
fmtTimeSpan,
|
||||||
|
@ -656,7 +658,7 @@ class Browser(QMainWindow):
|
||||||
m.addSeparator()
|
m.addSeparator()
|
||||||
for act in self.form.menu_Notes.actions():
|
for act in self.form.menu_Notes.actions():
|
||||||
m.addAction(act)
|
m.addAction(act)
|
||||||
gui_hooks.browser_will_show_context_menu(self)
|
gui_hooks.browser_will_show_context_menu(self, m)
|
||||||
qtMenuShortcutWorkaround(m)
|
qtMenuShortcutWorkaround(m)
|
||||||
m.exec_(QCursor.pos())
|
m.exec_(QCursor.pos())
|
||||||
|
|
||||||
|
@ -850,7 +852,7 @@ class Browser(QMainWindow):
|
||||||
gui_hooks.browser_did_change_row(self)
|
gui_hooks.browser_did_change_row(self)
|
||||||
self._renderPreview(True)
|
self._renderPreview(True)
|
||||||
|
|
||||||
def refreshCurrentCard(self, note):
|
def refreshCurrentCard(self, note: Note) -> None:
|
||||||
self.model.refreshNote(note)
|
self.model.refreshNote(note)
|
||||||
self._renderPreview(False)
|
self._renderPreview(False)
|
||||||
|
|
||||||
|
@ -2019,7 +2021,7 @@ update cards set usn=?, mod=?, did=? where id in """
|
||||||
self.form.tableView.selectAll()
|
self.form.tableView.selectAll()
|
||||||
sm.select(items, QItemSelectionModel.Deselect | QItemSelectionModel.Rows)
|
sm.select(items, QItemSelectionModel.Deselect | QItemSelectionModel.Rows)
|
||||||
|
|
||||||
# Edit: undo
|
# Hooks
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
def setupHooks(self) -> None:
|
def setupHooks(self) -> None:
|
||||||
|
@ -2027,20 +2029,27 @@ update cards set usn=?, mod=?, did=? where id in """
|
||||||
gui_hooks.state_did_reset.append(self.onReset)
|
gui_hooks.state_did_reset.append(self.onReset)
|
||||||
gui_hooks.editor_did_fire_typing_timer.append(self.refreshCurrentCard)
|
gui_hooks.editor_did_fire_typing_timer.append(self.refreshCurrentCard)
|
||||||
gui_hooks.editor_did_load_note.append(self.onLoadNote)
|
gui_hooks.editor_did_load_note.append(self.onLoadNote)
|
||||||
gui_hooks.editor_did_unfocus_field.append(self.refreshCurrentCard)
|
gui_hooks.editor_did_unfocus_field.append(self.on_unfocus_field)
|
||||||
hooks.tag_added.append(self.maybeRefreshSidebar)
|
hooks.tag_added.append(self.on_item_added)
|
||||||
hooks.note_type_added.append(self.maybeRefreshSidebar)
|
hooks.note_type_added.append(self.on_item_added)
|
||||||
hooks.deck_added.append(self.maybeRefreshSidebar)
|
hooks.deck_added.append(self.on_item_added)
|
||||||
|
|
||||||
def teardownHooks(self) -> None:
|
def teardownHooks(self) -> None:
|
||||||
gui_hooks.undo_state_did_change.remove(self.onUndoState)
|
gui_hooks.undo_state_did_change.remove(self.onUndoState)
|
||||||
gui_hooks.state_did_reset.remove(self.onReset)
|
gui_hooks.state_did_reset.remove(self.onReset)
|
||||||
gui_hooks.editor_did_fire_typing_timer.remove(self.refreshCurrentCard)
|
gui_hooks.editor_did_fire_typing_timer.remove(self.refreshCurrentCard)
|
||||||
gui_hooks.editor_did_load_note.remove(self.onLoadNote)
|
gui_hooks.editor_did_load_note.remove(self.onLoadNote)
|
||||||
gui_hooks.editor_did_unfocus_field.remove(self.refreshCurrentCard)
|
gui_hooks.editor_did_unfocus_field.remove(self.on_unfocus_field)
|
||||||
hooks.tag_added.remove(self.maybeRefreshSidebar)
|
hooks.tag_added.remove(self.on_item_added)
|
||||||
hooks.note_type_added.remove(self.maybeRefreshSidebar)
|
hooks.note_type_added.remove(self.on_item_added)
|
||||||
hooks.deck_added.remove(self.maybeRefreshSidebar)
|
hooks.deck_added.remove(self.on_item_added)
|
||||||
|
|
||||||
|
def onUnfocusCard(self, changed: bool, note: Note, field_idx: int):
|
||||||
|
self.refreshCurrentCard(note)
|
||||||
|
|
||||||
|
# covers the tag, note and deck case
|
||||||
|
def on_item_added(self, item):
|
||||||
|
self.maybeRefreshSidebar()
|
||||||
|
|
||||||
def onUndoState(self, on):
|
def onUndoState(self, on):
|
||||||
self.form.actionUndo.setEnabled(on)
|
self.form.actionUndo.setEnabled(on)
|
||||||
|
@ -2275,9 +2284,12 @@ class ChangeModel(QDialog):
|
||||||
self.setup()
|
self.setup()
|
||||||
restoreGeom(self, "changeModel")
|
restoreGeom(self, "changeModel")
|
||||||
gui_hooks.state_did_reset.append(self.onReset)
|
gui_hooks.state_did_reset.append(self.onReset)
|
||||||
gui_hooks.current_note_type_did_change.append(self.onReset)
|
gui_hooks.current_note_type_did_change.append(self.on_note_type_change)
|
||||||
self.exec_()
|
self.exec_()
|
||||||
|
|
||||||
|
def on_note_type_change(self, notetype: NoteType) -> None:
|
||||||
|
self.onReset()
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
# maps
|
# maps
|
||||||
self.flayout = QHBoxLayout()
|
self.flayout = QHBoxLayout()
|
||||||
|
@ -2399,7 +2411,7 @@ class ChangeModel(QDialog):
|
||||||
|
|
||||||
def cleanup(self) -> None:
|
def cleanup(self) -> None:
|
||||||
gui_hooks.state_did_reset.remove(self.onReset)
|
gui_hooks.state_did_reset.remove(self.onReset)
|
||||||
gui_hooks.current_note_type_did_change.remove(self.onReset)
|
gui_hooks.current_note_type_did_change.remove(self.on_note_type_change)
|
||||||
self.modelChooser.cleanup()
|
self.modelChooser.cleanup()
|
||||||
saveGeom(self, "changeModel")
|
saveGeom(self, "changeModel")
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
gui_hooks.current_note_type_did_change.append(self.onModelChange)
|
gui_hooks.current_note_type_did_change.append(self.onModelChangeNew)
|
||||||
|
|
||||||
def setupDecks(self):
|
def setupDecks(self):
|
||||||
if self.label:
|
if self.label:
|
||||||
|
@ -64,7 +64,10 @@ class DeckChooser(QHBoxLayout):
|
||||||
self.widget.hide()
|
self.widget.hide()
|
||||||
|
|
||||||
def cleanup(self) -> None:
|
def cleanup(self) -> None:
|
||||||
gui_hooks.current_note_type_did_change.remove(self.onModelChange)
|
gui_hooks.current_note_type_did_change.remove(self.onModelChangeNew)
|
||||||
|
|
||||||
|
def onModelChangeNew(self, unused):
|
||||||
|
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):
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
from typing import Callable
|
||||||
|
|
||||||
from PyQt5.Qt import * # type: ignore
|
from PyQt5.Qt import * # type: ignore
|
||||||
from PyQt5.QtCore import *
|
from PyQt5.QtCore import *
|
||||||
|
@ -14,7 +15,6 @@ from PyQt5.QtCore import pyqtRemoveInputHook # pylint: disable=no-name-in-modul
|
||||||
from PyQt5.QtGui import * # type: ignore
|
from PyQt5.QtGui import * # type: ignore
|
||||||
from PyQt5.QtWebEngineWidgets import * # type: ignore
|
from PyQt5.QtWebEngineWidgets import * # type: ignore
|
||||||
from PyQt5.QtWidgets import *
|
from PyQt5.QtWidgets import *
|
||||||
from typing import Callable
|
|
||||||
|
|
||||||
from anki.utils import isMac, isWin
|
from anki.utils import isMac, isWin
|
||||||
|
|
||||||
|
@ -54,6 +54,7 @@ qtpoint = QT_VERSION & 0xFF
|
||||||
if qtmajor != 5 or qtminor < 9 or qtminor == 10:
|
if qtmajor != 5 or qtminor < 9 or qtminor == 10:
|
||||||
raise Exception("Anki does not support your Qt version.")
|
raise Exception("Anki does not support your Qt version.")
|
||||||
|
|
||||||
|
|
||||||
def qconnect(signal: Callable, func: Callable) -> None:
|
def qconnect(signal: Callable, func: Callable) -> None:
|
||||||
"Helper to work around type checking not working with signal.connect(func)."
|
"Helper to work around type checking not working with signal.connect(func)."
|
||||||
signal.connect(func) # type: ignore
|
signal.connect(func) # type: ignore
|
Loading…
Reference in a new issue