fixed group/tag saving/loading

This commit is contained in:
Damien Elmes 2011-04-06 17:54:05 +09:00
parent fb36199b04
commit b0d0faecf5
2 changed files with 22 additions and 32 deletions

View file

@ -6,7 +6,7 @@ from PyQt4.QtGui import *
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtWebKit import QWebView from PyQt4.QtWebKit import QWebView
import re, os, sys, tempfile, urllib2, ctypes, simplejson, traceback import re, os, sys, tempfile, urllib2, ctypes, simplejson, traceback
from anki.utils import stripHTML from anki.utils import stripHTML, parseTags
from anki.sound import play from anki.sound import play
from anki.hooks import addHook, removeHook, runHook, runFilter from anki.hooks import addHook, removeHook, runHook, runFilter
from aqt.sound import getAudio from aqt.sound import getAudio
@ -184,7 +184,7 @@ class Editor(object):
self.setupOuter() self.setupOuter()
self.setupButtons() self.setupButtons()
self.setupWeb() self.setupWeb()
self.setupTags() self.setupTagsAndGroup()
self.setupKeyboard() self.setupKeyboard()
def close(self): def close(self):
@ -352,7 +352,7 @@ class Editor(object):
if self.fact: if self.fact:
self.web.setHtml(_html % (getBase(self.mw.deck), anki.js.all), self.web.setHtml(_html % (getBase(self.mw.deck), anki.js.all),
loadCB=self._loadFinished) loadCB=self._loadFinished)
self.updateTags() self.updateTagsAndGroup()
self.updateKeyboard() self.updateKeyboard()
else: else:
self.widget.hide() self.widget.hide()
@ -375,15 +375,14 @@ class Editor(object):
def deckClosedHook(self): def deckClosedHook(self):
self.setFact(None) self.setFact(None)
def saveFieldsNow(self): def saveNow(self):
"Must call this before adding cards, closing dialog, etc." "Must call this before adding cards, closing dialog, etc."
if not self.fact: if not self.fact:
return return
self._keepButtons = True self._keepButtons = True
self.web.eval("saveField('blur');") self.web.eval("saveField('blur');")
self._keepButtons = False self._keepButtons = False
self.onTagChange() self.saveTagsAndGroup()
self.onGroupChange()
def checkValid(self): def checkValid(self):
cols = [] cols = []
@ -400,7 +399,7 @@ class Editor(object):
###################################################################### ######################################################################
def onHtmlEdit(self): def onHtmlEdit(self):
self.saveFieldsNow() self.saveNow()
d = QDialog(self.widget) d = QDialog(self.widget)
form = aqt.forms.edithtml.Ui_Dialog() form = aqt.forms.edithtml.Ui_Dialog()
form.setupUi(d) form.setupUi(d)
@ -416,7 +415,7 @@ class Editor(object):
# Tag and group handling # Tag and group handling
###################################################################### ######################################################################
def setupTags(self): def setupTagsAndGroup(self):
import aqt.tagedit import aqt.tagedit
g = QGroupBox(self.widget) g = QGroupBox(self.widget)
tb = QGridLayout() tb = QGridLayout()
@ -427,40 +426,34 @@ class Editor(object):
tb.addWidget(l, 0, 0) tb.addWidget(l, 0, 0)
self.group = aqt.tagedit.TagEdit(self.widget, type=1) self.group = aqt.tagedit.TagEdit(self.widget, type=1)
self.group.connect(self.group, SIGNAL("lostFocus"), self.group.connect(self.group, SIGNAL("lostFocus"),
self.onGroupChange) self.saveTagsAndGroup)
tb.addWidget(self.group, 0, 1) tb.addWidget(self.group, 0, 1)
# tags # tags
l = QLabel(_("Tags")) l = QLabel(_("Tags"))
tb.addWidget(l, 1, 0) tb.addWidget(l, 1, 0)
self.tags = aqt.tagedit.TagEdit(self.widget) self.tags = aqt.tagedit.TagEdit(self.widget)
self.tags.connect(self.tags, SIGNAL("lostFocus"), self.tags.connect(self.tags, SIGNAL("lostFocus"),
self.onTagChange) self.saveTagsAndGroup)
tb.addWidget(self.tags, 1, 1) tb.addWidget(self.tags, 1, 1)
g.setLayout(tb) g.setLayout(tb)
self.outerLayout.addWidget(g) self.outerLayout.addWidget(g)
def updateTags(self): def updateTagsAndGroup(self):
if self.tags.deck != self.mw.deck: if self.tags.deck != self.mw.deck:
self.tags.setDeck(self.mw.deck) self.tags.setDeck(self.mw.deck)
self.tags.setText(self.fact.stringTags().strip())
self.group.setDeck(self.mw.deck) self.group.setDeck(self.mw.deck)
self.group.setText(self.mw.deck.groupName( if getattr(self.fact, 'gid', None):
self.fact.model().conf['gid'])) gid = self.fact.gid
else:
gid = self.fact.model().conf['gid']
self.group.setText(self.mw.deck.groupName(gid))
def onGroupChange(self): def saveTagsAndGroup(self):
pass self.fact.gid = self.mw.deck.groupId(unicode(self.group.text()))
self.fact.tags = parseTags(unicode(self.tags.text()))
def onTagChange(self): print "update tags to ", self.fact.tags
return self.fact.flush()
if not self.fact:
return
old = self.fact.tags
self.fact.tags = canonifyTags(unicode(self.tags.text()))
if old != self.fact.tags:
self.deck.db.flush()
self.deck.updateFactTags([self.fact.id])
self.fact.setModified(textChanged=True, deck=self.deck)
self.deck.flushMod()
self.mw.reset(runHooks=False)
# Format buttons # Format buttons
###################################################################### ######################################################################

View file

@ -98,10 +98,7 @@ class Groups(QDialog):
showInfo(_("The default group can't be deleted.")) showInfo(_("The default group can't be deleted."))
return return
self.mw.checkpoint(_("Delete Group")) self.mw.checkpoint(_("Delete Group"))
self.mw.deck.db.execute( self.mw.deck.delGroup(gid)
"update cards set gid = 1 where gid = ?", gid)
self.mw.deck.db.execute(
"delete from groups where id = ?", gid)
self.reload() self.reload()
def onRename(self): def onRename(self):