Anki/aqt/editcurrent.py
ospalh 0eaf03a9b3 Remove redundant connect to clicked().
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.
2012-06-04 16:19:59 +02:00

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")