Move keybinding of pdf viewer code from python to elisp side.

master
Andy Stewart 7 years ago
parent 22456ca1e1
commit 4a5f1cc884
  1. 73
      app/pdfviewer/buffer.py
  2. 28
      eaf.el

@ -63,6 +63,48 @@ class AppBuffer(Buffer):
self.buffer_widget.read_mode = read_mode
self.buffer_widget.update()
def scroll_up(self):
self.buffer_widget.scroll_up()
def scroll_down(self):
self.buffer_widget.scroll_down()
def scroll_up_page(self):
self.buffer_widget.scroll_up_page()
def scroll_down_page(self):
self.buffer_widget.scroll_down_page()
def swtich_to_read_mode(self):
self.buffer_widget.switch_to_read_mode()
def scroll_to_home(self):
self.buffer_widget.scroll_to_home()
def scroll_to_end(self):
self.buffer_widget.scroll_to_end()
def zoom_reset(self):
self.buffer_widget.zoom_reset()
def zoom_in(self):
self.buffer_widget.zoom_in()
def zoom_out(self):
self.buffer_widget.zoom_out()
def jump_to_page(self):
self.buffer_widget.send_input_message("Jump to: ", "jump_page")
def jump_to_percent(self):
self.buffer_widget.send_input_message("Jump to percent: ", "jump_percent")
def remember_current_position(self):
self.buffer_widget.remember_current_position()
def remeber_jump(self):
self.buffer_widget.remeber_jump()
class PdfViewerWidget(QWidget):
def __init__(self, url, background_color):
@ -248,37 +290,6 @@ class PdfViewerWidget(QWidget):
def wheelEvent(self, event):
self.update_scroll_offset(max(min(self.scroll_offset - self.scale * event.angleDelta().y() / 120 * self.mouse_scroll_offset, self.max_scroll_offset()), 0))
@build_context_wrap
def keyPressEvent(self, event):
if event.key() == Qt.Key_J:
self.scroll_up()
elif event.key() == Qt.Key_K:
self.scroll_down()
elif event.key() == Qt.Key_Space:
self.scroll_up_page()
elif event.key() == Qt.Key_B:
self.scroll_down_page()
elif event.key() == Qt.Key_T:
self.switch_to_read_mode()
elif event.key() == Qt.Key_Period:
self.scroll_to_home()
elif event.key() == Qt.Key_Comma:
self.scroll_to_end()
elif event.key() == Qt.Key_0:
self.zoom_reset()
elif event.key() == Qt.Key_Equal:
self.zoom_in()
elif event.key() == Qt.Key_Minus:
self.zoom_out()
elif event.key() == Qt.Key_G:
self.send_input_message("Jump to: ", "jump_page")
elif event.key() == Qt.Key_P:
self.send_input_message("Jump to percent: ", "jump_percent")
elif event.key() == Qt.Key_BracketLeft:
self.remember_current_position()
elif event.key() == Qt.Key_BracketRight:
self.remember_jump()
def get_start_page_index(self):
return int(self.scroll_offset * 1.0 / self.scale / self.page_height)

@ -162,6 +162,26 @@ by `dired-find-alternate-file'. Otherwise they will be opened normally with `dir
:type 'cons
:group 'eaf)
(defcustom eaf-pdfviewer-keybinding
'(("j" . "scroll_up")
("k" . "scroll_down")
("SPC" . "scroll_up_page")
("b" . "scroll_down_page")
("t" . "switch_to_read_mode")
("." . "scroll_to_home")
("," . "scroll_to_end")
("0" . "zoom_reset")
("=" . "zoom_in")
("-" . "zoom_out")
("g" . "jump_to_page")
("p" . "jump_to_percent")
("[" . "remember_current_position")
("]" . "remeber_jump")
)
"The keybinding of pdf viewer."
:type 'cons
:group 'eaf)
(defun eaf-call (method &rest args)
(apply 'dbus-call-method
:session ; use the session (not system) bus
@ -372,7 +392,13 @@ We need calcuate render allocation to make sure no black border around render co
(equal key-command "self-insert-command")
(equal key-command "completion-select-if-within-overlay"))
(equal 1 (string-width (this-command-keys))))
(eaf-call "send_key" buffer-id key-desc))
(cond ((equal buffer-app-name "pdfviewer")
(let ((function-name-value (assoc key-desc eaf-pdfviewer-keybinding)))
(if function-name-value
(eaf-call "execute_function" buffer-id (cdr function-name-value))
(eaf-call "send_key" buffer-id key-desc))))
(t
(eaf-call "send_key" buffer-id key-desc))))
((string-match "^[CMSs]-.*" key-desc)
(cond ((equal buffer-app-name "browser")
(let ((function-name-value (assoc key-desc eaf-browser-keybinding)))

Loading…
Cancel
Save