From e35166aeefd4e91a614399067fdea902e1e5fe33 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 6 Aug 2014 09:34:26 +0530 Subject: [PATCH] When adding a new bookmark select it in the bookmarks panel --- src/calibre/gui2/viewer/bookmarkmanager.py | 15 +++++++++++++-- src/calibre/gui2/viewer/main.py | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/viewer/bookmarkmanager.py b/src/calibre/gui2/viewer/bookmarkmanager.py index 07fbe96bc7..7df83b960f 100644 --- a/src/calibre/gui2/viewer/bookmarkmanager.py +++ b/src/calibre/gui2/viewer/bookmarkmanager.py @@ -122,6 +122,18 @@ class BookmarkManager(QWidget): if self.bookmarks_list.count() > 0: self.bookmarks_list.setCurrentItem(self.bookmarks_list.item(0), QItemSelectionModel.ClearAndSelect) + def set_current_bookmark(self, bm): + for i, q in enumerate(self): + if bm == q: + l = self.bookmarks_list + item = l.item(i) + l.setCurrentItem(item, QItemSelectionModel.ClearAndSelect) + l.scrollToItem(item) + + def __iter__(self): + for i in xrange(self.bookmarks_list.count()): + yield self.item_to_bm(self.bookmarks_list.item(i)) + def item_changed(self, item): self.bookmarks_list.blockSignals(True) title = unicode(item.data(Qt.DisplayRole).toString()) @@ -168,8 +180,7 @@ class BookmarkManager(QWidget): return cPickle.loads(bytes(item.data(Qt.UserRole).toPyObject())) def get_bookmarks(self): - l = self.bookmarks_list - return [self.item_to_bm(l.item(i)) for i in xrange(l.count())] + return list(self) def export_bookmarks(self): filename = choose_save_file( diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 4a73461de6..02ddba3d42 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -725,6 +725,7 @@ class EbookViewer(MainWindow): bm['title'] = title self.iterator.add_bookmark(bm) self.set_bookmarks(self.iterator.bookmarks) + self.bookmarks.set_current_bookmark(bm) def bookmarks_edited(self, bookmarks): self.build_bookmarks_menu(bookmarks)