diff --git a/aqt/editcurrent.py b/aqt/editcurrent.py index 6db195d8c..1f9206534 100644 --- a/aqt/editcurrent.py +++ b/aqt/editcurrent.py @@ -6,6 +6,7 @@ from PyQt4.QtGui import * from PyQt4.QtCore import * import aqt.editor from aqt.utils import saveGeom, restoreGeom +from anki.hooks import addHook, removeHook class EditCurrent(QDialog): @@ -26,12 +27,14 @@ class EditCurrent(QDialog): self.editor = aqt.editor.Editor(self.mw, self.form.fieldsArea) self.editor.setFact(self.mw.reviewer.card.fact()) restoreGeom(self, "editcurrent") + addHook("closeEditCurrent", self.onSave) self.mw.requireReset(modal=True) self.open() # reset focus after open self.editor.web.setFocus() def onSave(self): + removeHook("closeEditCurrent", self.onSave) self.editor.saveNow() self.editor.setFact(None) r = self.mw.reviewer diff --git a/aqt/editor.py b/aqt/editor.py index 1c145f40b..05e5a6eef 100644 --- a/aqt/editor.py +++ b/aqt/editor.py @@ -466,14 +466,16 @@ class Editor(object): tb.setSpacing(12) tb.setMargin(6) # group - if self.addMode: - l = QLabel(_("Group")) - else: - l = QLabel(_("Fact Group")) + l = QLabel(_("Group")) tb.addWidget(l, 0, 0) - self.group = aqt.tagedit.TagEdit(self.widget, type=1) - self.group.connect(self.group, SIGNAL("lostFocus"), - self.saveTagsAndGroup) + if not self.addMode: + self.group = QPushButton() + self.group.connect(self.group, SIGNAL("clicked()"), + self.changeGroup) + else: + self.group = aqt.tagedit.TagEdit(self.widget, type=1) + self.group.connect(self.group, SIGNAL("lostFocus"), + self.saveTagsAndGroup) tb.addWidget(self.group, 0, 1) # tags l = QLabel(_("Tags")) @@ -488,7 +490,8 @@ class Editor(object): def updateTagsAndGroup(self): if self.tags.deck != self.mw.deck: self.tags.setDeck(self.mw.deck) - self.group.setDeck(self.mw.deck) + if self.addMode: + self.group.setDeck(self.mw.deck) self.tags.setText(self.fact.stringTags().strip()) if getattr(self.fact, 'gid', None): gid = self.fact.gid @@ -499,10 +502,10 @@ class Editor(object): def saveTagsAndGroup(self): if not self.fact: return - self.fact.gid = self.mw.deck.groupId(unicode(self.group.text())) self.fact.tags = parseTags(unicode(self.tags.text())) if self.addMode: # save group and tags to model + self.fact.gid = self.mw.deck.groupId(unicode(self.group.text())) m = self.fact.model() m.conf['gid'] = self.fact.gid m.conf['tags'] = self.fact.tags @@ -510,6 +513,14 @@ class Editor(object): self.fact.flush() runHook("tagsAndGroupUpdated", self.fact) + def changeGroup(self): + id = self.fact.id + runHook("closeEditCurrent") + browser = aqt.dialogs.open("Browser", self.mw) + browser.form.searchEdit.setText("fid:%d" % id) + browser.onSearch() + browser.setGroup() + # Format buttons ######################################################################