diff options
author | Sayamindu Dasgupta <sayamindu@gmail.com> | 2009-02-22 20:37:49 (GMT) |
---|---|---|
committer | Sayamindu Dasgupta <sayamindu@gmail.com> | 2009-02-22 20:37:49 (GMT) |
commit | 14ef8b32f2a492e831df4d5915a99284ba5b26ce (patch) | |
tree | 70ecdc526170ec1354d34d12f982f7bb26e0ad7f /readdb.py | |
parent | c3b22d8ad925638783f1708dda28666bb2082afe (diff) |
Enable jumping between bookmarks (jump to next/previous bookmark
Diffstat (limited to 'readdb.py')
-rw-r--r-- | readdb.py | 32 |
1 files changed, 31 insertions, 1 deletions
@@ -46,7 +46,7 @@ class BookmarkManager: def _populate_bookmarks(self): # TODO: Figure out if caching the entire set of bookmarks is a good idea or not - self._cur.execute('select * from bookmarks where md5=?', (self._filehash,)) + self._cur.execute('select * from bookmarks where md5=? order by page', (self._filehash,)) for row in self._cur: self._bookmarks.append(Bookmark(row)) @@ -63,3 +63,33 @@ class BookmarkManager: # To be called when a new bookmark has been added/removed self._bookmarks = [] self._populate_bookmarks() + + + def get_prev_bookmark_for_page(self, page, wrap = True): + if not len(self._bookmarks): + return None + + if page <= self._bookmarks[0].page_no and wrap: + return self._bookmarks[-1] + else: + for i in range(page-1, -1, -1): + for bookmark in self._bookmarks: + if bookmark.belongstopage(i): + return bookmark + + return None + + + def get_next_bookmark_for_page(self, page, wrap = True): + if not len(self._bookmarks): + return None + + if page >= self._bookmarks[-1].page_no and wrap: + return self._bookmarks[0] + else: + for i in range(page+1, self._bookmarks[-1].page_no + 1): + for bookmark in self._bookmarks: + if bookmark.belongstopage(i): + return bookmark + + return None |