mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02: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.consts import *
|
||||
from anki.lang import _, ngettext
|
||||
from anki.notes import Note
|
||||
from anki.types import NoteType
|
||||
from anki.utils import (
|
||||
bodyClass,
|
||||
fmtTimeSpan,
|
||||
|
@ -656,7 +658,7 @@ class Browser(QMainWindow):
|
|||
m.addSeparator()
|
||||
for act in self.form.menu_Notes.actions():
|
||||
m.addAction(act)
|
||||
gui_hooks.browser_will_show_context_menu(self)
|
||||
gui_hooks.browser_will_show_context_menu(self, m)
|
||||
qtMenuShortcutWorkaround(m)
|
||||
m.exec_(QCursor.pos())
|
||||
|
||||
|
@ -844,13 +846,13 @@ class Browser(QMainWindow):
|
|||
else:
|
||||
self.editor.setNote(self.card.note(reload=True), focusTo=self.focusTo)
|
||||
self.focusTo = None
|
||||
self.editor.card = self.card # type: ignore
|
||||
self.editor.card = self.card # type: ignore
|
||||
self.singleCard = True
|
||||
self._updateFlagsMenu()
|
||||
gui_hooks.browser_did_change_row(self)
|
||||
self._renderPreview(True)
|
||||
|
||||
def refreshCurrentCard(self, note):
|
||||
def refreshCurrentCard(self, note: Note) -> None:
|
||||
self.model.refreshNote(note)
|
||||
self._renderPreview(False)
|
||||
|
||||
|
@ -1533,7 +1535,7 @@ where id in %s"""
|
|||
######################################################################
|
||||
|
||||
_previewTimer = None
|
||||
_lastPreviewRender: Union[int,float] = 0
|
||||
_lastPreviewRender: Union[int, float] = 0
|
||||
_lastPreviewState = None
|
||||
_previewCardChanged = False
|
||||
|
||||
|
@ -2019,7 +2021,7 @@ update cards set usn=?, mod=?, did=? where id in """
|
|||
self.form.tableView.selectAll()
|
||||
sm.select(items, QItemSelectionModel.Deselect | QItemSelectionModel.Rows)
|
||||
|
||||
# Edit: undo
|
||||
# Hooks
|
||||
######################################################################
|
||||
|
||||
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.editor_did_fire_typing_timer.append(self.refreshCurrentCard)
|
||||
gui_hooks.editor_did_load_note.append(self.onLoadNote)
|
||||
gui_hooks.editor_did_unfocus_field.append(self.refreshCurrentCard)
|
||||
hooks.tag_added.append(self.maybeRefreshSidebar)
|
||||
hooks.note_type_added.append(self.maybeRefreshSidebar)
|
||||
hooks.deck_added.append(self.maybeRefreshSidebar)
|
||||
gui_hooks.editor_did_unfocus_field.append(self.on_unfocus_field)
|
||||
hooks.tag_added.append(self.on_item_added)
|
||||
hooks.note_type_added.append(self.on_item_added)
|
||||
hooks.deck_added.append(self.on_item_added)
|
||||
|
||||
def teardownHooks(self) -> None:
|
||||
gui_hooks.undo_state_did_change.remove(self.onUndoState)
|
||||
gui_hooks.state_did_reset.remove(self.onReset)
|
||||
gui_hooks.editor_did_fire_typing_timer.remove(self.refreshCurrentCard)
|
||||
gui_hooks.editor_did_load_note.remove(self.onLoadNote)
|
||||
gui_hooks.editor_did_unfocus_field.remove(self.refreshCurrentCard)
|
||||
hooks.tag_added.remove(self.maybeRefreshSidebar)
|
||||
hooks.note_type_added.remove(self.maybeRefreshSidebar)
|
||||
hooks.deck_added.remove(self.maybeRefreshSidebar)
|
||||
gui_hooks.editor_did_unfocus_field.remove(self.on_unfocus_field)
|
||||
hooks.tag_added.remove(self.on_item_added)
|
||||
hooks.note_type_added.remove(self.on_item_added)
|
||||
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):
|
||||
self.form.actionUndo.setEnabled(on)
|
||||
|
@ -2275,9 +2284,12 @@ class ChangeModel(QDialog):
|
|||
self.setup()
|
||||
restoreGeom(self, "changeModel")
|
||||
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_()
|
||||
|
||||
def on_note_type_change(self, notetype: NoteType) -> None:
|
||||
self.onReset()
|
||||
|
||||
def setup(self):
|
||||
# maps
|
||||
self.flayout = QHBoxLayout()
|
||||
|
@ -2399,7 +2411,7 @@ class ChangeModel(QDialog):
|
|||
|
||||
def cleanup(self) -> None:
|
||||
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()
|
||||
saveGeom(self, "changeModel")
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ from aqt.utils import shortcut
|
|||
class DeckChooser(QHBoxLayout):
|
||||
def __init__(self, mw, widget: QWidget, label=True, start=None) -> None:
|
||||
QHBoxLayout.__init__(self)
|
||||
self.widget = widget # type: ignore
|
||||
self.widget = widget # type: ignore
|
||||
self.mw = mw
|
||||
self.deck = mw.col
|
||||
self.label = label
|
||||
|
@ -19,7 +19,7 @@ class DeckChooser(QHBoxLayout):
|
|||
self.setSpacing(8)
|
||||
self.setupDecks()
|
||||
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):
|
||||
if self.label:
|
||||
|
@ -64,7 +64,10 @@ class DeckChooser(QHBoxLayout):
|
|||
self.widget.hide()
|
||||
|
||||
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):
|
||||
if not self.mw.col.conf.get("addToCur", True):
|
||||
|
|
|
@ -160,7 +160,7 @@ class Editor:
|
|||
fldsTitle=_("Customize Fields"),
|
||||
cardsTitle=shortcut(_("Customize Card Templates (Ctrl+L)")),
|
||||
)
|
||||
bgcol = self.mw.app.palette().window().color().name() # type: ignore
|
||||
bgcol = self.mw.app.palette().window().color().name() # type: ignore
|
||||
# then load page
|
||||
self.web.stdHtml(
|
||||
_html % (bgcol, bgcol, topbuts, _("Show Duplicates")),
|
||||
|
@ -293,7 +293,7 @@ class Editor:
|
|||
fn = self._addFocusCheck(fn)
|
||||
else:
|
||||
keys, fn, _ = row
|
||||
QShortcut(QKeySequence(keys), self.widget, activated=fn) # type: ignore
|
||||
QShortcut(QKeySequence(keys), self.widget, activated=fn) # type: ignore
|
||||
|
||||
def _addFocusCheck(self, fn):
|
||||
def checkFocus():
|
||||
|
@ -427,7 +427,7 @@ class Editor:
|
|||
)
|
||||
self.web.evalWithCallback(js, oncallback)
|
||||
|
||||
def fonts(self) -> List[Tuple[str,int,bool]]:
|
||||
def fonts(self) -> List[Tuple[str, int, bool]]:
|
||||
return [
|
||||
(gui_hooks.editor_will_use_font_for_field(f["font"]), f["size"], f["rtl"])
|
||||
for f in self.note.model()["flds"]
|
||||
|
|
|
@ -11,7 +11,7 @@ from aqt.utils import shortcut
|
|||
class ModelChooser(QHBoxLayout):
|
||||
def __init__(self, mw, widget, label=True) -> None:
|
||||
QHBoxLayout.__init__(self)
|
||||
self.widget = widget # type: ignore
|
||||
self.widget = widget # type: ignore
|
||||
self.mw = mw
|
||||
self.deck = mw.col
|
||||
self.label = label
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
import os
|
||||
import sys
|
||||
import traceback
|
||||
from typing import Callable
|
||||
|
||||
from PyQt5.Qt import * # type: ignore
|
||||
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.QtWebEngineWidgets import * # type: ignore
|
||||
from PyQt5.QtWidgets import *
|
||||
from typing import Callable
|
||||
|
||||
from anki.utils import isMac, isWin
|
||||
|
||||
|
@ -54,6 +54,7 @@ qtpoint = QT_VERSION & 0xFF
|
|||
if qtmajor != 5 or qtminor < 9 or qtminor == 10:
|
||||
raise Exception("Anki does not support your Qt version.")
|
||||
|
||||
|
||||
def qconnect(signal: Callable, func: Callable) -> None:
|
||||
"Helper to work around type checking not working with signal.connect(func)."
|
||||
signal.connect(func) # type: ignore
|
||||
signal.connect(func) # type: ignore
|
||||
|
|
|
@ -181,7 +181,7 @@ class AnkiWebView(QWebEngineView): # type: ignore
|
|||
def contextMenuEvent(self, evt) -> None:
|
||||
m = QMenu(self)
|
||||
a = m.addAction(_("Copy"))
|
||||
a.triggered.connect(self.onCopy) # type: ignore
|
||||
a.triggered.connect(self.onCopy) # type: ignore
|
||||
gui_hooks.webview_will_show_context_menu(self, m)
|
||||
m.popup(QCursor.pos())
|
||||
|
||||
|
|
Loading…
Reference in a new issue