mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00

A QDialogButtonBox::Close StandardButton has the RejectRole. (http://doc.qt.nokia.com/4.7-snapshot/qdialogbuttonbox.html#StandardButton-enum) So when that is clicked, that button’s clicked() signal as well as the dialog’s rejected() signals are emitted. Connecting EditCurrent’s onSave() to both was redundant. It looks like calling onSave() twice was mostly harmless, but not quite: When closing the edit dialog, media on the edited card’s front side were played twice (via moveToState ... Reviewer.showQuestion()). So avoid that.
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
# Copyright: Damien Elmes <anki@ichi2.net>
|
|
# -*- coding: utf-8 -*-
|
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
from aqt.qt import *
|
|
import aqt.editor
|
|
from aqt.utils import saveGeom, restoreGeom
|
|
from anki.hooks import addHook, remHook
|
|
from anki.utils import isMac
|
|
|
|
class EditCurrent(QDialog):
|
|
|
|
def __init__(self, mw):
|
|
if isMac:
|
|
# use a separate window on os x so we can a clean menu
|
|
QDialog.__init__(self, None, Qt.Window)
|
|
else:
|
|
QDialog.__init__(self, mw)
|
|
QDialog.__init__(self, None, Qt.Window)
|
|
self.mw = mw
|
|
self.form = aqt.forms.editcurrent.Ui_Dialog()
|
|
self.form.setupUi(self)
|
|
self.setWindowTitle(_("Edit Current"))
|
|
self.setMinimumHeight(400)
|
|
self.setMinimumWidth(500)
|
|
self.connect(self,
|
|
SIGNAL("rejected()"),
|
|
self.onSave)
|
|
self.editor = aqt.editor.Editor(self.mw, self.form.fieldsArea, self)
|
|
self.editor.setNote(self.mw.reviewer.card.note())
|
|
restoreGeom(self, "editcurrent")
|
|
addHook("reset", self.onReset)
|
|
self.mw.requireReset()
|
|
self.show()
|
|
# reset focus after open
|
|
self.editor.web.setFocus()
|
|
|
|
def onReset(self):
|
|
# lazy approach for now: throw away edits
|
|
n = self.mw.reviewer.card.note()
|
|
n.load()
|
|
self.editor.setNote(n)
|
|
|
|
def onSave(self):
|
|
remHook("reset", self.onReset)
|
|
self.editor.saveNow()
|
|
self.editor.setNote(None)
|
|
r = self.mw.reviewer
|
|
try:
|
|
r.card.load()
|
|
except TypeError:
|
|
# card was removed by clayout
|
|
pass
|
|
else:
|
|
self.mw.reviewer.cardQueue.append(self.mw.reviewer.card)
|
|
self.mw.moveToState("review")
|
|
saveGeom(self, "editcurrent")
|
|
aqt.dialogs.close("EditCurrent")
|