mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 22:42:25 -04:00
fix some issues with the fact editor
- don't save a fact to disk on keystroke timer - update unique/required checking for the above - don't try to set focus to old widget if it doesn't exist
This commit is contained in:
parent
8870adf528
commit
0110875a9d
1 changed files with 27 additions and 10 deletions
|
@ -496,11 +496,8 @@ class FactEditor(object):
|
||||||
self.fact.setModified(textChanged=True)
|
self.fact.setModified(textChanged=True)
|
||||||
if not self.fact.isNew():
|
if not self.fact.isNew():
|
||||||
self.deck.setModified()
|
self.deck.setModified()
|
||||||
oldFocus = ankiqt.mw.app.focusWidget()
|
|
||||||
if self.resetOnEdit:
|
|
||||||
ankiqt.mw.reset()
|
|
||||||
oldFocus.setFocus()
|
|
||||||
self.deck.setUndoEnd(n)
|
self.deck.setUndoEnd(n)
|
||||||
|
return modified
|
||||||
|
|
||||||
def onFocusLost(self, widget):
|
def onFocusLost(self, widget):
|
||||||
from ankiqt import mw
|
from ankiqt import mw
|
||||||
|
@ -509,11 +506,16 @@ class FactEditor(object):
|
||||||
return
|
return
|
||||||
if mw.inDbHandler:
|
if mw.inDbHandler:
|
||||||
return
|
return
|
||||||
self.saveFields()
|
modified = self.saveFields()
|
||||||
field = self.widgets[widget]
|
field = self.widgets[widget]
|
||||||
self.fact.focusLost(field)
|
self.fact.focusLost(field)
|
||||||
self.fact.setModified(textChanged=True)
|
self.fact.setModified(textChanged=True)
|
||||||
self.loadFields(font=False)
|
self.loadFields(font=False)
|
||||||
|
if modified and self.resetOnEdit:
|
||||||
|
oldFocus = ankiqt.mw.app.focusWidget()
|
||||||
|
ankiqt.mw.reset()
|
||||||
|
if oldFocus:
|
||||||
|
oldFocus.setFocus()
|
||||||
|
|
||||||
def onTextChanged(self):
|
def onTextChanged(self):
|
||||||
interval = 250
|
interval = 250
|
||||||
|
@ -535,10 +537,7 @@ class FactEditor(object):
|
||||||
if mw.inDbHandler:
|
if mw.inDbHandler:
|
||||||
self.changeTimer.start(interval)
|
self.changeTimer.start(interval)
|
||||||
return
|
return
|
||||||
self.saveFields()
|
|
||||||
self.checkValid()
|
self.checkValid()
|
||||||
if self.onChange:
|
|
||||||
self.onChange('field')
|
|
||||||
self.changeTimer = None
|
self.changeTimer = None
|
||||||
|
|
||||||
def saveFieldsNow(self):
|
def saveFieldsNow(self):
|
||||||
|
@ -565,11 +564,11 @@ class FactEditor(object):
|
||||||
for field in self.fact.fields:
|
for field in self.fact.fields:
|
||||||
p = QPalette()
|
p = QPalette()
|
||||||
p.setColor(QPalette.Text, QColor("#000000"))
|
p.setColor(QPalette.Text, QColor("#000000"))
|
||||||
if not self.fact.fieldValid(field):
|
if not self.fieldValid(field):
|
||||||
empty.append(field)
|
empty.append(field)
|
||||||
p.setColor(QPalette.Base, QColor("#ffffcc"))
|
p.setColor(QPalette.Base, QColor("#ffffcc"))
|
||||||
self.fields[field.name][1].setPalette(p)
|
self.fields[field.name][1].setPalette(p)
|
||||||
elif not self.fact.fieldUnique(field, self.deck.s):
|
elif not self.fieldUnique(field):
|
||||||
dupe.append(field)
|
dupe.append(field)
|
||||||
p.setColor(QPalette.Base, QColor("#ffcccc"))
|
p.setColor(QPalette.Base, QColor("#ffcccc"))
|
||||||
self.fields[field.name][1].setPalette(p)
|
self.fields[field.name][1].setPalette(p)
|
||||||
|
@ -587,6 +586,24 @@ class FactEditor(object):
|
||||||
self.onFactInvalid(self.fact)
|
self.onFactInvalid(self.fact)
|
||||||
self.factState = "invalid"
|
self.factState = "invalid"
|
||||||
|
|
||||||
|
def textForField(self, field):
|
||||||
|
"Current edited value for field."
|
||||||
|
w = self.fields[field.name][1]
|
||||||
|
v = tidyHTML(unicode(w.toHtml()))
|
||||||
|
return v
|
||||||
|
|
||||||
|
def fieldValid(self, field):
|
||||||
|
return not (field.fieldModel.required and
|
||||||
|
not self.textForField(field).strip())
|
||||||
|
|
||||||
|
def fieldUnique(self, field):
|
||||||
|
if not field.fieldModel.unique:
|
||||||
|
return True
|
||||||
|
req = ("select value from fields "
|
||||||
|
"where fieldModelId = :fmid and value = :val and id != :id")
|
||||||
|
return not self.deck.s.scalar(
|
||||||
|
req, val=self.textForField(field), fmid=field.fieldModel.id, id=field.id)
|
||||||
|
|
||||||
def onTagChange(self):
|
def onTagChange(self):
|
||||||
if not self.fact:
|
if not self.fact:
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in a new issue