Loading eaf.el +32 −5 Original line number Diff line number Diff line Loading @@ -110,6 +110,8 @@ (defvar eaf-first-start-url nil) (defvar eaf-first-start-app-name nil) (defvar eaf-title-length 30) (defcustom eaf-name "*eaf*" Loading Loading @@ -321,7 +323,7 @@ We need calcuate render allocation to make sure no black border around render co (defun eaf-start-finish () ;; Call `eaf-open-internal' after receive `start_finish' signal from server process. (eaf-open-internal eaf-first-start-url)) (eaf-open-internal eaf-first-start-url eaf-first-start-app-name)) (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" Loading Loading @@ -366,11 +368,11 @@ We need calcuate render allocation to make sure no black border around render co (add-hook 'pre-command-hook #'eaf-monitor-key-event) (add-hook 'kill-buffer-hook #'eaf-monitor-buffer-kill) (defun eaf-open-internal (url) (defun eaf-open-internal (url app-name) (let* ((buffer (eaf-create-buffer url)) buffer-result) (with-current-buffer buffer (setq buffer-result (eaf-call "new_buffer" buffer-id url))) (setq buffer-result (eaf-call "new_buffer" buffer-id url app-name))) (if (equal buffer-result "") ;; Switch to new buffer if buffer create successful. (switch-to-buffer buffer) Loading @@ -379,15 +381,40 @@ We need calcuate render allocation to make sure no black border around render co (message buffer-result)) )) (defun eaf-open (url) (defun eaf-open (url &optional app-name) (interactive "FOpen with EAF: ") (unless app-name (cond ((string-equal url "eaf-demo") (setq app-name "demo")) ((string-equal url "eaf-camera") (setq app-name "camera")) ((file-exists-p url) (setq url (expand-file-name url)) (setq extension-name (file-name-extension url)) (cond ((member extension-name '("pdf" "xps" "oxps" "cbz" "epub" "fb2" "fbz")) (setq app-name "pdfviewer")) ((member extension-name '("md")) (setq app-name "markdownpreviewer")) ((member extension-name '("jpg" "png" "bmp")) (setq app-name "imageviewer")) ((member extension-name '("avi" "rmvb" "ogg" "mp4")) (setq app-name "videoplayer")))) (t (setq app-name "browser") (unless (string-prefix-p "http" url) (setq url (concat "http://" url)))))) (if (process-live-p eaf-process) ;; Call `eaf-open-internal' directly if server process has start. (eaf-open-internal url) (eaf-open-internal url app-name) ;; Record user input, and call `eaf-open-internal' after receive `start_finish' signal from server process. (setq eaf-first-start-url url) (setq eaf-first-start-app-name app-name) (eaf-start-process))) (defun eaf-show-file-qrcode (url) (interactive "FShow file QR code: ") (eaf-open url "filetransfer")) (provide 'eaf) ;;; eaf.el ends here eaf.py +5 −39 Original line number Diff line number Diff line Loading @@ -48,45 +48,11 @@ class EAF(dbus.service.Object): self.start_finish() @dbus.service.method(EAF_DBUS_NAME, in_signature="ss", out_signature="s") def new_buffer(self, buffer_id, url): if url == "eaf-demo": return self.create_app(buffer_id, url, "app.demo.buffer") elif url == "eaf-camera": return self.create_app(buffer_id, url, "app.camera.buffer") else: url = os.path.expanduser(url) if url.startswith("/"): if os.path.exists(url): (_, extension) = os.path.splitext(url) if extension in [".pdf", ".xps", ".oxps", ".cbz", ".epub", ".fb2", "fbz"]: return self.create_app(buffer_id, url, "app.pdfviewer.buffer") if extension in [".md"]: return self.create_app(buffer_id, url, "app.markdownpreviewer.buffer") else: file_info = MediaInfo.parse(url) if file_is_image(file_info): return self.create_app(buffer_id, url, "app.imageviewer.buffer") elif file_is_video(file_info): return self.create_app(buffer_id, url, "app.videoplayer.buffer") else: return "Don't know how to open {0}".format(url) else: return "Path {0} not exists.".format(url) else: from urllib.parse import urlparse result = urlparse(url) if len(result.scheme) != 0: return self.create_app(buffer_id, result.geturl(), "app.browser.buffer") else: result = urlparse("{0}:{1}".format("http", url)) if result.scheme != "": return self.create_app(buffer_id, result.geturl(), "app.browser.buffer") else: return "{0} is not valid url".format(url) return "" @dbus.service.method(EAF_DBUS_NAME, in_signature="sss", out_signature="s") def new_buffer(self, buffer_id, url, app_name): # NOTE: We need use function str convert dbus.String to String, # otherwise some library will throw error, such as fitz library. return self.create_app(buffer_id, str(url), "app.{0}.buffer".format(str(app_name))) def create_app(self, buffer_id, url, module_path): if importlib.util.find_spec(module_path) is not None: Loading Loading
eaf.el +32 −5 Original line number Diff line number Diff line Loading @@ -110,6 +110,8 @@ (defvar eaf-first-start-url nil) (defvar eaf-first-start-app-name nil) (defvar eaf-title-length 30) (defcustom eaf-name "*eaf*" Loading Loading @@ -321,7 +323,7 @@ We need calcuate render allocation to make sure no black border around render co (defun eaf-start-finish () ;; Call `eaf-open-internal' after receive `start_finish' signal from server process. (eaf-open-internal eaf-first-start-url)) (eaf-open-internal eaf-first-start-url eaf-first-start-app-name)) (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" Loading Loading @@ -366,11 +368,11 @@ We need calcuate render allocation to make sure no black border around render co (add-hook 'pre-command-hook #'eaf-monitor-key-event) (add-hook 'kill-buffer-hook #'eaf-monitor-buffer-kill) (defun eaf-open-internal (url) (defun eaf-open-internal (url app-name) (let* ((buffer (eaf-create-buffer url)) buffer-result) (with-current-buffer buffer (setq buffer-result (eaf-call "new_buffer" buffer-id url))) (setq buffer-result (eaf-call "new_buffer" buffer-id url app-name))) (if (equal buffer-result "") ;; Switch to new buffer if buffer create successful. (switch-to-buffer buffer) Loading @@ -379,15 +381,40 @@ We need calcuate render allocation to make sure no black border around render co (message buffer-result)) )) (defun eaf-open (url) (defun eaf-open (url &optional app-name) (interactive "FOpen with EAF: ") (unless app-name (cond ((string-equal url "eaf-demo") (setq app-name "demo")) ((string-equal url "eaf-camera") (setq app-name "camera")) ((file-exists-p url) (setq url (expand-file-name url)) (setq extension-name (file-name-extension url)) (cond ((member extension-name '("pdf" "xps" "oxps" "cbz" "epub" "fb2" "fbz")) (setq app-name "pdfviewer")) ((member extension-name '("md")) (setq app-name "markdownpreviewer")) ((member extension-name '("jpg" "png" "bmp")) (setq app-name "imageviewer")) ((member extension-name '("avi" "rmvb" "ogg" "mp4")) (setq app-name "videoplayer")))) (t (setq app-name "browser") (unless (string-prefix-p "http" url) (setq url (concat "http://" url)))))) (if (process-live-p eaf-process) ;; Call `eaf-open-internal' directly if server process has start. (eaf-open-internal url) (eaf-open-internal url app-name) ;; Record user input, and call `eaf-open-internal' after receive `start_finish' signal from server process. (setq eaf-first-start-url url) (setq eaf-first-start-app-name app-name) (eaf-start-process))) (defun eaf-show-file-qrcode (url) (interactive "FShow file QR code: ") (eaf-open url "filetransfer")) (provide 'eaf) ;;; eaf.el ends here
eaf.py +5 −39 Original line number Diff line number Diff line Loading @@ -48,45 +48,11 @@ class EAF(dbus.service.Object): self.start_finish() @dbus.service.method(EAF_DBUS_NAME, in_signature="ss", out_signature="s") def new_buffer(self, buffer_id, url): if url == "eaf-demo": return self.create_app(buffer_id, url, "app.demo.buffer") elif url == "eaf-camera": return self.create_app(buffer_id, url, "app.camera.buffer") else: url = os.path.expanduser(url) if url.startswith("/"): if os.path.exists(url): (_, extension) = os.path.splitext(url) if extension in [".pdf", ".xps", ".oxps", ".cbz", ".epub", ".fb2", "fbz"]: return self.create_app(buffer_id, url, "app.pdfviewer.buffer") if extension in [".md"]: return self.create_app(buffer_id, url, "app.markdownpreviewer.buffer") else: file_info = MediaInfo.parse(url) if file_is_image(file_info): return self.create_app(buffer_id, url, "app.imageviewer.buffer") elif file_is_video(file_info): return self.create_app(buffer_id, url, "app.videoplayer.buffer") else: return "Don't know how to open {0}".format(url) else: return "Path {0} not exists.".format(url) else: from urllib.parse import urlparse result = urlparse(url) if len(result.scheme) != 0: return self.create_app(buffer_id, result.geturl(), "app.browser.buffer") else: result = urlparse("{0}:{1}".format("http", url)) if result.scheme != "": return self.create_app(buffer_id, result.geturl(), "app.browser.buffer") else: return "{0} is not valid url".format(url) return "" @dbus.service.method(EAF_DBUS_NAME, in_signature="sss", out_signature="s") def new_buffer(self, buffer_id, url, app_name): # NOTE: We need use function str convert dbus.String to String, # otherwise some library will throw error, such as fitz library. return self.create_app(buffer_id, str(url), "app.{0}.buffer".format(str(app_name))) def create_app(self, buffer_id, url, module_path): if importlib.util.find_spec(module_path) is not None: Loading