From a28ff859e554852be15003ff2c8a20ca57998b9d Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2019 02:08:35 -0500 Subject: [PATCH] PDF code refactor, improve workflow and cancel search when zooming --- app/pdf-viewer/buffer.py | 60 ++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/app/pdf-viewer/buffer.py b/app/pdf-viewer/buffer.py index f252cee..f069a19 100755 --- a/app/pdf-viewer/buffer.py +++ b/app/pdf-viewer/buffer.py @@ -50,7 +50,7 @@ class AppBuffer(Buffer): def cancel_input_message(self, result_type): if result_type == "jump_link": - self.buffer_widget.clean_links() + self.buffer_widget.cleanup_links() def scroll(self, scroll_direction, scroll_type): if scroll_type == "page": @@ -109,10 +109,10 @@ class AppBuffer(Buffer): self.buffer_widget.zoom_out() def jump_to_page(self): - self.buffer_widget.send_input_message("EAF PDF Viewer - Jump to Page: ", "jump_page") + self.buffer_widget.send_input_message("EAF PDF - Jump to Page: ", "jump_page") def jump_to_percent(self): - self.buffer_widget.send_input_message("EAF PDF Viewer - Jump to Percent: ", "jump_percent") + self.buffer_widget.send_input_message("EAF PDF - Jump to Percent: ", "jump_percent") def remember_current_position(self): self.buffer_widget.remember_current_position() @@ -128,25 +128,24 @@ class AppBuffer(Buffer): def jump_to_link(self): self.buffer_widget.add_mark_jump_link_tips() - self.buffer_widget.send_input_message("EAF PDF Viewer - Jump to Link: ", "jump_link") + self.buffer_widget.send_input_message("EAF PDF - Jump to Link: ", "jump_link") def search_text(self): - if self.buffer_widget.search_flag: - self.buffer_widget.remove_marked_search_text() - else: - self.buffer_widget.send_input_message("EAF PDF Viewer - Search Text: ", "search_text") + if self.buffer_widget.is_mark_search: + self.buffer_widget.cleanup_search() + self.buffer_widget.send_input_message("EAF PDF - Search Text: ", "search_text") def jump_next_match(self): - if self.buffer_widget.search_flag: + if self.buffer_widget.is_mark_search: self.buffer_widget.jump_next_match() else: - self.message_to_emacs.emit("EAF PDF Viewer - Cannot jump to next match. Nothing searched!") + self.message_to_emacs.emit("EAF PDF - Cannot jump to next match. Nothing searched!") def jump_last_match(self): - if self.buffer_widget.search_flag: + if self.buffer_widget.is_mark_search: self.buffer_widget.jump_last_match() else: - self.message_to_emacs.emit("EAF PDF Viewer - Cannot jump to last match. Nothing searched!") + self.message_to_emacs.emit("EAF PDF - Cannot jump to last match. Nothing searched!") class PdfViewerWidget(QWidget): translate_double_click_word = QtCore.pyqtSignal(str) @@ -183,7 +182,7 @@ class PdfViewerWidget(QWidget): self.jump_link_annot_cache_dict = {} #global search text - self.search_flag = False + self.is_mark_search = False self.search_text_offset_list = [] self.search_text_annot_cache_dict = {} @@ -218,11 +217,11 @@ class PdfViewerWidget(QWidget): def remember_current_position(self): self.remember_offset = self.scroll_offset - self.message_to_emacs.emit("EAF PDF Viewer - Remembered current position.") + self.message_to_emacs.emit("EAF PDF - Remembered current position.") def remember_jump(self): if self.remember_offset is None: - self.message_to_emacs.emit("EAF PDF Viewer - Cannot jump from this position.") + self.message_to_emacs.emit("EAF PDF - Cannot jump from this position.") else: current_scroll_offset = self.scroll_offset self.scroll_offset = self.remember_offset @@ -248,7 +247,7 @@ class PdfViewerWidget(QWidget): page = self.document[index] # follow page search text - if self.search_flag: + if self.is_mark_search: page = self.add_mark_search_text(page, index) trans = self.page_cache_trans if self.page_cache_trans is not None else fitz.Matrix(scale, scale) @@ -439,16 +438,22 @@ class PdfViewerWidget(QWidget): self.update_scroll_offset(self.max_scroll_offset()) def zoom_in(self): + if self.is_mark_search: + self.cleanup_search() self.read_mode = "fit_to_customize" self.scale_to(min(10, self.scale + 0.2)) self.update() def zoom_out(self): + if self.is_mark_search: + self.cleanup_search() self.read_mode = "fit_to_customize" self.scale_to(max(1, self.scale - 0.2)) self.update() def zoom_reset(self): + if self.is_mark_search: + self.cleanup_search() self.read_mode = "fit_to_width" self.update_scale() self.update() @@ -544,9 +549,9 @@ class PdfViewerWidget(QWidget): self.jump_to_page(link["page"] + 1) self.delete_all_mark_jump_link_tips() self.update() - self.message_to_emacs.emit("EAF PDF Viewer - Landed on Page " + str(link["page"] + 1)) + self.message_to_emacs.emit("EAF PDF - Landed on Page " + str(link["page"] + 1)) - def clean_links(self): + def cleanup_links(self): self.is_mark_link = False self.delete_all_mark_jump_link_tips() self.page_cache_pixmap_dict.clear() @@ -566,7 +571,7 @@ class PdfViewerWidget(QWidget): return page def search_text(self, text): - self.search_flag = True + self.is_mark_search = True self.search_term = text self.page_cache_pixmap_dict.clear() @@ -584,31 +589,32 @@ class PdfViewerWidget(QWidget): search_text_index += 1 self.update() if(len(self.search_text_offset_list) == 0): - self.message_to_emacs.emit("EAF PDF Viewer - No results found with \"" + text + "\".") + self.message_to_emacs.emit("EAF PDF - No results found with \"" + text + "\".") + self.is_mark_search = False else: - self.jump_next_match() - self.message_to_emacs.emit("EAF PDF Viewer - Found " + str(len(self.search_text_offset_list)) + " results with \"" + text + "\".") + self.update_scroll_offset(self.search_text_offset_list[self.search_text_index]) + self.message_to_emacs.emit("EAF PDF - Found " + str(len(self.search_text_offset_list)) + " results with \"" + text + "\".") def jump_next_match(self): if len(self.search_text_offset_list) > 0: self.search_text_index = (self.search_text_index + 1) % len(self.search_text_offset_list) self.update_scroll_offset(self.search_text_offset_list[self.search_text_index]) - self.message_to_emacs.emit("EAF PDF Viewer - Match " + str(self.search_text_index + 1) + "/" + str(len(self.search_text_offset_list))) + self.message_to_emacs.emit("EAF PDF - Match " + str(self.search_text_index + 1) + "/" + str(len(self.search_text_offset_list))) def jump_last_match(self): if len(self.search_text_offset_list) > 0: self.search_text_index = (self.search_text_index - 1) % len(self.search_text_offset_list) self.update_scroll_offset(self.search_text_offset_list[self.search_text_index]) - self.message_to_emacs.emit("EAF PDF Viewer - Match " + str(self.search_text_index + 1) + "/" + str(len(self.search_text_offset_list))) + self.message_to_emacs.emit("EAF PDF - Match " + str(self.search_text_index + 1) + "/" + str(len(self.search_text_offset_list))) - def remove_marked_search_text(self): - self.message_to_emacs.emit("EAF PDF Viewer - Unmarked all matched results.") + def cleanup_search(self): + self.message_to_emacs.emit("EAF PDF - Unmarked all matched results.") if self.search_text_annot_cache_dict: for page_index in self.search_text_annot_cache_dict.keys(): page = self.document[page_index] for annot in self.search_text_annot_cache_dict[page_index]: page.deleteAnnot(annot) - self.search_flag = False + self.is_mark_search = False self.search_term = None self.search_text_annot_cache_dict.clear() self.page_cache_pixmap_dict.clear()