diff --git a/src/pyj/read_book/annotations.pyj b/src/pyj/read_book/annotations.pyj index a142b54f84..dcfea8a490 100644 --- a/src/pyj/read_book/annotations.pyj +++ b/src/pyj/read_book/annotations.pyj @@ -150,6 +150,17 @@ class AnnotationsManager: # {{{ self.sync_annots_to_server('bookmarks') return changed + def edit_bookmark(self, title, new_title): + changed = False + for b in self.bookmarks: + if b.title is title: + b.title = new_title + b.timestamp = Date().toISOString() + changed = True + if changed: + self.sync_annots_to_server('bookmarks') + return changed + def default_bookmark_title(self): all_titles = {bm.title:True for bm in self.bookmarks if not bm.removed} base_default_title = _('Bookmark') diff --git a/src/pyj/read_book/bookmarks.pyj b/src/pyj/read_book/bookmarks.pyj index 33d3b49c15..ef93c6c352 100644 --- a/src/pyj/read_book/bookmarks.pyj +++ b/src/pyj/read_book/bookmarks.pyj @@ -23,6 +23,13 @@ def remove_bookmark(annotations_manager, title, list_dom_node): ) +def edit_bookmark(annotations_manager, title, list_dom_node): + new_title = window.prompt(_('Enter new title for bookmark:'), title) + if new_title: + if annotations_manager.edit_bookmark(title, new_title): + console.log(list_dom_node) + list_dom_node.querySelector('.item-title').textContent = new_title + def create_bookmarks_list(annotations_manager, onclick): bookmarks = sorted(annotations_manager.all_bookmarks(), key=def(x): return x.title.toLowerCase();) @@ -30,10 +37,11 @@ def create_bookmarks_list(annotations_manager, onclick): for bookmark in bookmarks: if not bookmark.removed: sa = create_side_action('trash', remove_bookmark.bind(None, annotations_manager, bookmark.title), _('Remove this bookmark')) + ea = create_side_action('edit', edit_bookmark.bind(None, annotations_manager, bookmark.title), _('Edit this bookmark')) items.push(create_item( bookmark.title, data=bookmark.pos, action=onclick.bind(None, goto_cfi.bind(None, bookmark.pos)), - side_actions=[sa] + side_actions=[sa, ea] )) c = E.div(style='margin-top: 1ex') build_list(c, items)