start focused on current deck/model in quick search

This commit is contained in:
Damien Elmes 2012-05-24 12:41:11 +09:00
parent 5f082dfae5
commit 0fd0cfbfc6
2 changed files with 17 additions and 7 deletions

View file

@ -71,9 +71,10 @@ class ModelChooser(QHBoxLayout):
def onModelChange(self): def onModelChange(self):
from aqt.studydeck import StudyDeck from aqt.studydeck import StudyDeck
current = self.deck.models.current()['name']
ret = StudyDeck(self.mw, names=sorted(self.deck.models.allNames()), ret = StudyDeck(self.mw, names=sorted(self.deck.models.allNames()),
accept=_("Select"), title=_("Choose Note Type"), accept=_("Select"), title=_("Choose Note Type"),
help="_notes", parent=self.widget) help="_notes", current=current, parent=self.widget)
if not ret.name: if not ret.name:
return return
m = self.deck.models.byName(ret.name) m = self.deck.models.byName(ret.name)

View file

@ -10,7 +10,7 @@ from operator import itemgetter
class StudyDeck(QDialog): class StudyDeck(QDialog):
def __init__(self, mw, names=None, accept=None, title=None, def __init__(self, mw, names=None, accept=None, title=None,
help="studydeck", parent=None): help="studydeck", current=None, parent=None):
QDialog.__init__(self, parent or mw) QDialog.__init__(self, parent or mw)
self.mw = mw self.mw = mw
self.form = aqt.forms.studydeck.Ui_Dialog() self.form = aqt.forms.studydeck.Ui_Dialog()
@ -20,6 +20,7 @@ class StudyDeck(QDialog):
self.setWindowTitle(title) self.setWindowTitle(title)
if not names: if not names:
names = sorted(self.mw.col.decks.allNames()) names = sorted(self.mw.col.decks.allNames())
current = self.mw.col.decks.current()['name']
self.origNames = names self.origNames = names
self.name = None self.name = None
self.ok = self.form.buttonBox.addButton( self.ok = self.form.buttonBox.addButton(
@ -31,7 +32,9 @@ class StudyDeck(QDialog):
self.connect(self.form.filter, self.connect(self.form.filter,
SIGNAL("textEdited(QString)"), SIGNAL("textEdited(QString)"),
self.redraw) self.redraw)
self.redraw("") self.show()
# redraw after show so position at center correct
self.redraw("", current)
self.exec_() self.exec_()
def eventFilter(self, obj, evt): def eventFilter(self, obj, evt):
@ -52,11 +55,17 @@ class StudyDeck(QDialog):
return True return True
return False return False
def redraw(self, filt): def redraw(self, filt, focus=None):
self.names = [n for n in self.origNames if self._matches(n, filt)] self.names = [n for n in self.origNames if self._matches(n, filt)]
self.form.list.clear() l = self.form.list
self.form.list.addItems(self.names) l.clear()
self.form.list.setCurrentRow(0) l.addItems(self.names)
if focus in self.names:
idx = self.names.index(focus)
else:
idx = 0
l.setCurrentRow(idx)
l.scrollToItem(l.item(idx), QAbstractItemView.PositionAtCenter)
def _matches(self, name, filt): def _matches(self, name, filt):
name = name.lower() name = name.lower()