Reset selection in bulk metadata edit

This commit is contained in:
Charles Haley 2010-09-17 23:00:29 +01:00
parent 308e6af73f
commit 122c2deffc
2 changed files with 18 additions and 0 deletions

View File

@ -173,6 +173,8 @@ class EditMetadataAction(InterfaceAction):
''' '''
rows = [r.row() for r in \ rows = [r.row() for r in \
self.gui.library_view.selectionModel().selectedRows()] self.gui.library_view.selectionModel().selectedRows()]
db = self.gui.library_view.model().db
ids = [db.id(r) for r in rows]
if not rows or len(rows) == 0: if not rows or len(rows) == 0:
d = error_dialog(self.gui, _('Cannot edit metadata'), d = error_dialog(self.gui, _('Cannot edit metadata'),
_('No books selected')) _('No books selected'))
@ -191,6 +193,7 @@ class EditMetadataAction(InterfaceAction):
self.gui.tags_view.recount() self.gui.tags_view.recount()
if self.gui.cover_flow: if self.gui.cover_flow:
self.gui.cover_flow.dataChanged() self.gui.cover_flow.dataChanged()
self.gui.library_view.select_rows_with_id(ids)
# Merge books {{{ # Merge books {{{
def merge_books(self, safe_merge=False): def merge_books(self, safe_merge=False):

View File

@ -479,6 +479,21 @@ class BooksView(QTableView): # {{{
sm = self.selectionModel() sm = self.selectionModel()
sm.select(index, sm.ClearAndSelect|sm.Rows) sm.select(index, sm.ClearAndSelect|sm.Rows)
def select_rows_with_id(self, ids):
'''
Loop through the visible rows, selecting any that have db_id in ids
'''
ids = set(ids)
selmode = self.selectionMode()
self.setSelectionMode(QAbstractItemView.MultiSelection)
self.clearSelection()
db = self.model().db
loc = db.FIELD_MAP['id']
for i in range(0, len(db.data)):
if db.get_property(i, index_is_id=False, loc=loc) in ids:
self.selectRow(i)
self.setSelectionMode(selmode)
def close(self): def close(self):
self._model.close() self._model.close()