From 01a55a8f3bfb5de08eee8573aaeed3d38dc0690f Mon Sep 17 00:00:00 2001 From: luhuaei Date: Sun, 9 Feb 2020 16:02:53 +0800 Subject: [PATCH] pdf-viewer: refactor jump link code. --- app/pdf-viewer/buffer.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/app/pdf-viewer/buffer.py b/app/pdf-viewer/buffer.py index 1893004..b10c7f8 100755 --- a/app/pdf-viewer/buffer.py +++ b/app/pdf-viewer/buffer.py @@ -138,7 +138,7 @@ class AppBuffer(Buffer): def action_quit(self): if self.buffer_widget.is_mark_search: self.buffer_widget.cleanup_search() - if self.buffer_widget.is_mark_link: + if self.buffer_widget.is_jump_link: self.buffer_widget.cleanup_links() if self.buffer_widget.is_select_mode: self.buffer_widget.cleanup_select() @@ -213,6 +213,7 @@ class PdfViewerWidget(QWidget): self.mark_link_annot_cache_dict = {} #jump link + self.is_jump_link = False self.jump_link_key_cache_dict = {} self.jump_link_annot_cache_dict = {} @@ -304,11 +305,9 @@ class PdfViewerWidget(QWidget): self.page_cache_scale = scale self.page_cache_trans = fitz.Matrix(scale, scale) + page = self.document[index] if self.is_mark_link: page = self.add_mark_link(index) - else: - self.delete_all_mark_link() - page = self.document[index] # follow page search text if self.is_mark_search: @@ -537,8 +536,12 @@ class PdfViewerWidget(QWidget): # Re-render page. self.update() - def toggle_mark_link(self): - self.is_mark_link = not self.is_mark_link + def toggle_mark_link(self): # mark_link will add underline mark on link, using prompt link position. + if self.is_mark_link: + self.cleanup_mark_link() + else: + self.is_mark_link = True + self.page_cache_pixmap_dict.clear() self.update() @@ -553,14 +556,14 @@ class PdfViewerWidget(QWidget): self.mark_link_annot_cache_dict[index] = annot_list return page - def delete_all_mark_link(self): - if (not self.is_mark_link) and self.mark_link_annot_cache_dict: + def cleanup_mark_link(self): + if self.mark_link_annot_cache_dict: for index in self.mark_link_annot_cache_dict.keys(): page = self.document[index] for annot in self.mark_link_annot_cache_dict[index]: page.deleteAnnot(annot) + self.is_mark_link = False self.mark_link_annot_cache_dict.clear() - self.update() def generate_random_key(self, count): letters = "ASDFHJKLQWEIOP" @@ -611,6 +614,7 @@ class PdfViewerWidget(QWidget): self.jump_link_annot_cache_dict.clear() def jump_to_link(self, key): + self.is_jump_link = True key = str(key).upper() if key in self.jump_link_key_cache_dict: link = self.jump_link_key_cache_dict[key] @@ -621,7 +625,7 @@ class PdfViewerWidget(QWidget): self.message_to_emacs.emit("Landed on Page " + str(link["page"] + 1)) def cleanup_links(self): - self.is_mark_link = False + self.is_jump_link = False self.delete_all_mark_jump_link_tips() self.page_cache_pixmap_dict.clear()