no need to select content before adding text annot, just 'M-e' and

click left button.
master
zbelial 6 years ago
parent 6b25182fd6
commit 392c2c102d
  1. 51
      app/pdf-viewer/buffer.py

@ -180,12 +180,17 @@ class AppBuffer(Buffer):
self.buffer_widget.get_focus_text.emit(self.buffer_id, "")
elif self.buffer_widget.is_hover_annot:
self.buffer_widget.annot_handler("edit")
else:
self.buffer_widget.enable_free_text_annot_mode()
def set_focus_text(self, new_text):
self.message_to_emacs.emit(new_text);
if self.buffer_widget.is_select_mode:
self.buffer_widget.annot_select_char_area("text", new_text)
elif self.buffer_widget.is_hover_annot:
self.buffer_widget.update_annot_text(new_text)
else:
self.buffer_widget.annot_free_text_annot(new_text)
def get_toc(self):
result = ""
@ -265,6 +270,8 @@ class PdfViewerWidget(QWidget):
# annot
self.is_hover_annot = False
self.is_free_text_annot_mode = False
self.free_text_annot_pos = (None, None)
self.edited_page_annot = (None, None)
# Init scroll attributes.
@ -965,6 +972,19 @@ class PdfViewerWidget(QWidget):
self.document.saveIncr()
self.select_area_annot_quad_cache_dict.clear()
def annot_free_text_annot(self, text=None):
(point, page_index) = self.free_text_annot_pos
if point == None or page_index == None:
return
page = self.document[page_index]
new_annot = page.addTextAnnot(point, text, icon="Note")
new_annot.parent = page
self.disable_free_text_annot_mode()
self.save_annot()
def cleanup_select(self):
self.is_select_mode = False
self.delete_all_mark_select_area()
@ -1204,18 +1224,26 @@ class PdfViewerWidget(QWidget):
if self.is_select_mode:
self.cleanup_select()
if event.button() == Qt.LeftButton:
# In order to catch mouse move event when drap mouse.
self.setMouseTracking(False)
elif event.button() == Qt.RightButton:
self.handle_click_link()
if self.is_free_text_annot_mode:
if event.button() != Qt.LeftButton:
self.disable_free_text_annot_mode()
else:
if event.button() == Qt.LeftButton:
# In order to catch mouse move event when drap mouse.
self.setMouseTracking(False)
elif event.button() == Qt.RightButton:
self.handle_click_link()
elif event.type() == QEvent.MouseButtonRelease:
# Capture move event, event without holding down the mouse.
self.setMouseTracking(True)
self.releaseMouse()
if self.is_free_text_annot_mode:
self.handle_free_text_annot_mode()
self.disable_free_text_annot_mode()
elif event.type() == QEvent.MouseButtonDblClick:
self.disable_free_text_annot_mode()
if self.is_mark_search:
self.cleanup_search()
if event.button() == Qt.RightButton:
@ -1223,6 +1251,19 @@ class PdfViewerWidget(QWidget):
return False
def enable_free_text_annot_mode(self):
self.is_free_text_annot_mode = True
self.free_text_annot_pos = (None, None)
def disable_free_text_annot_mode(self):
self.is_free_text_annot_mode = False
def handle_free_text_annot_mode(self):
ex, ey, page_index = self.get_cursor_absolute_position()
self.free_text_annot_pos = (fitz.Point(ex, ey), page_index)
self.get_focus_text.emit(self.buffer_id, "")
def handle_select_mode(self):
self.is_select_mode = True
rect_index, page_index = self.get_char_rect_index()

Loading…
Cancel
Save