Commit 667814c3 authored by Andy Stewart's avatar Andy Stewart
Browse files

Move imageviewer keybinding from python to elisp side.

parent 78533d2e
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -33,6 +33,12 @@ class AppBuffer(Buffer):
        self.add_widget(ImageViewerWidget(url, QColor(0, 0, 0, 255)))
        self.buffer_widget.render_image.connect(self.change_title)

    def load_next_image(self):
        self.buffer_widget.load_next_image()

    def load_prev_image(self):
        self.buffer_widget.load_prev_image()

class ImageViewerWidget(QWidget):

    render_image = QtCore.pyqtSignal(str)
@@ -53,7 +59,7 @@ class ImageViewerWidget(QWidget):

    def load_next_image(self):
        files = [f for f in os.listdir(self.parent_dir) if os.path.isfile(os.path.join(self.parent_dir, f))]
        images = list(filter(lambda f: f.endswith(".jpg") or f.endswith(".png"), files))
        images = list(filter(lambda f: f.endswith(".jpg") or f.endswith(".jpeg") or f.endswith(".png"), files))
        if self.image_name in images:
            image_index = images.index(self.image_name)
            if image_index == len(images) - 1:
@@ -65,7 +71,7 @@ class ImageViewerWidget(QWidget):

    def load_prev_image(self):
        files = [f for f in os.listdir(self.parent_dir) if os.path.isfile(os.path.join(self.parent_dir, f))]
        images = list(filter(lambda f: f.endswith(".jpg") or f.endswith(".png"), files))
        images = list(filter(lambda f: f.endswith(".jpg") or f.endswith(".jpeg") or f.endswith(".png"), files))
        if self.image_name in images:
            image_index = images.index(self.image_name)
            if image_index == 0:
@@ -99,12 +105,6 @@ class ImageViewerWidget(QWidget):

        painter.end()

    def keyPressEvent(self, event):
        if event.key() == Qt.Key_J:
            self.load_next_image()
        elif event.key() == Qt.Key_K:
            self.load_prev_image()

if __name__ == "__main__":
    from PyQt5.QtWidgets import QApplication
    import sys
+15 −2
Original line number Diff line number Diff line
@@ -191,6 +191,14 @@ by `dired-find-alternate-file'. Otherwise they will be opened normally with `dir
  :type 'cons
  :group 'eaf)

(defcustom eaf-imageviewer-keybinding
  '(("j" . "load_next_image")
    ("k" . "load_prev_image")
    )
  "The keybinding of image viewer."
  :type 'cons
  :group 'eaf)

(defun eaf-call (method &rest args)
  (apply 'dbus-call-method
         :session                   ; use the session (not system) bus
@@ -411,6 +419,11 @@ We need calcuate render allocation to make sure no black border around render co
                          (if function-name-value
                              (eaf-call "execute_function" buffer-id (cdr function-name-value))
                            (eaf-call "send_key" buffer-id key-desc))))
                       ((equal buffer-app-name "imageviewer")
                        (let ((function-name-value (assoc key-desc eaf-imageviewer-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)
@@ -648,7 +661,7 @@ When called interactively, URL accepts a file that can be opened by EAF."
           ;; Split window to show file and previewer.
           (eaf-split-preview-windows)
           (setq app-name "markdownpreviewer"))
          ((member extension-name '("jpg" "png" "bmp"))
          ((member extension-name '("jpg" "jpeg" "png" "bmp"))
           (setq app-name "imageviewer"))
          ((member extension-name '("avi" "rmvb" "ogg" "mp4"))
           (setq app-name "videoplayer"))
@@ -741,7 +754,7 @@ When called interactively, URL accepts a file that can be opened by EAF."
           (eaf-open (concat "file://" file) "browser"))
          ((member extension-name '("pdf" "xps" "oxps" "cbz" "epub" "fb2" "fbz"))
           (eaf-open file "pdfviewer"))
          ((member extension-name '("jpg" "png" "bmp"))
          ((member extension-name '("jpg" "jpeg" "png" "bmp"))
           (eaf-open file "imageviewer"))
          ((member extension-name '("avi" "rmvb" "ogg" "mp4"))
           (eaf-open file "videoplayer"))