From 122c2deffce9a7851cdfae674a95ad34e8e40c7b Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 17 Sep 2010 23:00:29 +0100 Subject: [PATCH] Reset selection in bulk metadata edit --- src/calibre/gui2/actions/edit_metadata.py | 3 +++ src/calibre/gui2/library/views.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index ac04652efa..ebac7c9a4f 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -173,6 +173,8 @@ class EditMetadataAction(InterfaceAction): ''' rows = [r.row() for r in \ 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: d = error_dialog(self.gui, _('Cannot edit metadata'), _('No books selected')) @@ -191,6 +193,7 @@ class EditMetadataAction(InterfaceAction): self.gui.tags_view.recount() if self.gui.cover_flow: self.gui.cover_flow.dataChanged() + self.gui.library_view.select_rows_with_id(ids) # Merge books {{{ def merge_books(self, safe_merge=False): diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index d67d286aeb..b364bd5f70 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -479,6 +479,21 @@ class BooksView(QTableView): # {{{ sm = self.selectionModel() 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): self._model.close()