remember splitter state, possible fix for focus error

This commit is contained in:
Damien Elmes 2008-12-01 00:02:51 +09:00
parent dda48886dd
commit e6d77ebb6d
4 changed files with 29 additions and 3 deletions

View file

@ -9,7 +9,7 @@ import anki
from anki.facts import Fact
from anki.errors import *
from anki.utils import stripHTML
from ankiqt.ui.utils import saveGeom, restoreGeom
from ankiqt.ui.utils import saveGeom, restoreGeom, saveSplitter, restoreSplitter
from ankiqt import ui
class AddCards(QDialog):
@ -27,6 +27,7 @@ class AddCards(QDialog):
self.modelChanged(self.parent.deck.currentModel)
self.addedItems = 0
restoreGeom(self, "add")
restoreSplitter(self.dialog.splitter, "add")
self.show()
ui.dialogs.open("AddCards", self)
@ -138,6 +139,7 @@ question or answer on all cards. Can't proceed."""), parent=self)
self.parent.deck.rebuildCSS()
self.parent.moveToState("auto")
saveGeom(self, "add")
saveSplitter(self.dialog.splitter, "add")
return True
else:
return False

View file

@ -12,7 +12,7 @@ from anki.cards import cardsTable, Card
from anki.facts import factsTable, fieldsTable, Fact
from anki.utils import fmtTimeSpan, parseTags, findTag, addTags, deleteTags, \
stripHTML, ids2str
from ankiqt.ui.utils import saveGeom, restoreGeom
from ankiqt.ui.utils import saveGeom, restoreGeom, saveSplitter, restoreSplitter
from anki.errors import *
from anki.db import *
from anki.stats import CardStats
@ -211,6 +211,7 @@ class EditDeck(QMainWindow):
self.drawTags()
self.updateFilterLabel()
restoreGeom(self, "editor")
restoreSplitter(self.dialog.splitter, "editor")
self.show()
self.updateSearch()
@ -391,12 +392,14 @@ class EditDeck(QMainWindow):
def onClose(self):
self.editor.saveFieldsNow()
self.editor.setFact(None)
if not self.factValid:
ui.utils.showInfo(_(
"Some fields are missing or not unique."),
parent=self, help="AddItems#AddError")
return
saveGeom(self, "editor")
saveSplitter(self.dialog.splitter, "editor")
self.hide()
if self.origModTime != self.deck.modified:
self.parent.reset()
@ -547,6 +550,8 @@ where id in (%s)""" % ",".join([
self.updateSearch()
def selectFacts(self):
self.editor.setFact(None)
return
sm = self.dialog.tableView.selectionModel()
cardIds = dict([(x, 1) for x in self.selectedFactsAsCards()])
for i, card in enumerate(self.model.cards):

View file

@ -40,9 +40,14 @@ class FactEditor(object):
self.changeTimer.stop()
self.changeTimer = None
if self.needToRedraw():
self.drawFields(noFocus, check)
if self.fact:
self.drawFields(noFocus, check)
else:
self.widget.hide()
return
else:
self.loadFields(check)
self.widget.show()
if not noFocus:
# update focus to first field
self.fields[self.fact.fields[0].name][1].setFocus()
@ -256,6 +261,8 @@ class FactEditor(object):
self.fieldsScroll.setWidget(self.fieldsFrame)
def needToRedraw(self):
if self.fact is None:
return True
if len(self.fact.fields) != len(self.fields):
return True
for field in self.fact.fields:
@ -311,6 +318,9 @@ class FactEditor(object):
self.deck.setUndoEnd(n)
def onFocusLost(self, widget):
if self.fact is None:
# editor closed
return
self.saveFields()
field = self.widgets[widget]
self.fact.onKeyPress(field, field.value)

View file

@ -149,6 +149,15 @@ def restoreGeom(widget, key):
if ankiqt.mw.config.get(key):
widget.restoreGeometry(ankiqt.mw.config[key])
def saveSplitter(widget, key):
key += "Splitter"
ankiqt.mw.config[key] = widget.saveState()
def restoreSplitter(widget, key):
key += "Splitter"
if ankiqt.mw.config.get(key):
widget.restoreState(ankiqt.mw.config[key])
def mungeQA(deck, txt):
txt = renderLatex(deck, txt)
txt = stripSounds(txt)