From e20d092ba01b38971990f6c9646b1d72458bcad6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 7 Dec 2010 11:09:06 -0700 Subject: [PATCH] Adding books: Dont refresh the Tag Browser while adding multiple books. Should speed up the adding of large numbers of books. --- src/calibre/gui2/actions/add.py | 4 ++++ src/calibre/gui2/tag_view.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/calibre/gui2/actions/add.py b/src/calibre/gui2/actions/add.py index 9b348d8285..014fa573d2 100644 --- a/src/calibre/gui2/actions/add.py +++ b/src/calibre/gui2/actions/add.py @@ -61,6 +61,7 @@ class AddAction(InterfaceAction): self._adder = Adder(self.gui, self.gui.library_view.model().db, self.Dispatcher(self._files_added), spare_server=self.gui.spare_server) + self.gui.tags_view.disable_recounting = True self._adder.add_recursive(root, single) def add_recursive_single(self, *args): @@ -201,9 +202,11 @@ class AddAction(InterfaceAction): self._adder = Adder(self.gui, None if to_device else self.gui.library_view.model().db, self.Dispatcher(self.__adder_func), spare_server=self.gui.spare_server) + self.gui.tags_view.disable_recounting = True self._adder.add(paths) def _files_added(self, paths=[], names=[], infos=[], on_card=None): + self.gui.tags_view.disable_recounting = False if paths: self.gui.upload_books(paths, list(map(ascii_filename, names)), @@ -214,6 +217,7 @@ class AddAction(InterfaceAction): self.gui.library_view.model().books_added(self._adder.number_of_books_added) if hasattr(self.gui, 'db_images'): self.gui.db_images.reset() + self.gui.tags_view.recount() if getattr(self._adder, 'merged_books', False): books = u'\n'.join([x if isinstance(x, unicode) else x.decode(preferred_encoding, 'replace') for x in diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index fdae1bdbc9..2ede698c85 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -73,6 +73,7 @@ class TagsView(QTreeView): # {{{ def __init__(self, parent=None): QTreeView.__init__(self, parent=None) self.tag_match = None + self.disable_recounting = False self.setUniformRowHeights(True) self.setCursor(Qt.PointingHandCursor) self.setIconSize(QSize(30, 30)) @@ -299,6 +300,8 @@ class TagsView(QTreeView): # {{{ return self.isExpanded(idx) def recount(self, *args): + if self.disable_recounting: + return self.refresh_signal_processed = True ci = self.currentIndex() if not ci.isValid():