remember current card on reverse, don't reset current card on delete etc

This commit is contained in:
Damien Elmes 2009-01-21 18:07:00 +09:00
parent f89c8e97a0
commit a645b8ef40

View file

@ -232,6 +232,8 @@ class EditDeck(QMainWindow):
restoreSplitter(self.dialog.splitter, "editor") restoreSplitter(self.dialog.splitter, "editor")
self.show() self.show()
self.updateSearch() self.updateSearch()
self.currentCard = self.parent.currentCard
self.focusCurrentCard()
def findCardInDeckModel(self, model, card): def findCardInDeckModel(self, model, card):
for i, thisCard in enumerate(model.cards): for i, thisCard in enumerate(model.cards):
@ -373,6 +375,7 @@ class EditDeck(QMainWindow):
self.updateSearch() self.updateSearch()
def updateSearch(self): def updateSearch(self):
idx = self.dialog.tableView.currentIndex()
self.model.searchStr = unicode(self.dialog.filterEdit.text()) self.model.searchStr = unicode(self.dialog.filterEdit.text())
self.model.tag = self.currentTag self.model.tag = self.currentTag
self.model.showMatching() self.model.showMatching()
@ -388,19 +391,20 @@ class EditDeck(QMainWindow):
else: else:
self.dialog.cardInfoGroup.hide() self.dialog.cardInfoGroup.hide()
self.dialog.fieldsArea.hide() self.dialog.fieldsArea.hide()
self.focusCurrentCard() self.dialog.tableView.selectRow(idx.row())
self.dialog.tableView.scrollTo(idx, QAbstractItemView.PositionAtCenter)
def focusCurrentCard(self): def focusCurrentCard(self):
if self.parent.currentCard: if self.currentCard:
currentCardIndex = self.findCardInDeckModel( currentCardIndex = self.findCardInDeckModel(
self.model, self.parent.currentCard) self.model, self.currentCard)
if currentCardIndex >= 0: if currentCardIndex >= 0:
sm = self.dialog.tableView.selectionModel() sm = self.dialog.tableView.selectionModel()
sm.clear() sm.clear()
self.dialog.tableView.selectRow(currentCardIndex) self.dialog.tableView.selectRow(currentCardIndex)
self.dialog.tableView.scrollTo( self.dialog.tableView.scrollTo(
self.model.index(currentCardIndex,0), self.model.index(currentCardIndex,0),
self.dialog.tableView.PositionAtTop) self.dialog.tableView.PositionAtCenter)
def setupHeaders(self): def setupHeaders(self):
if not sys.platform.startswith("win32"): if not sys.platform.startswith("win32"):