Loading core/browser.py +12 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,9 @@ class BrowserView(QtWebEngineWidgets.QWebEngineView): self.web_page = BrowserPage() self.setPage(self.web_page) def createWindow(self, window_type): return self.create_new_browser_window_callback() def event(self, event): if event.type() == QEvent.ChildAdded: obj = event.child() Loading @@ -55,15 +58,21 @@ class BrowserView(QtWebEngineWidgets.QWebEngineView): clicked_url = hit.linkUrl() base_url = hit.baseUrl() if clicked_url != base_url and clicked_url != '': if clicked_url != None and base_url != None and clicked_url != base_url and clicked_url != '': result = "" if 'http://' in clicked_url or 'https://' in clicked_url: result = clicked_url elif clicked_url == "#": result = base_url + clicked_url else: # Don't open url in EAF if clicked_url is not start with http/ftp or # result = "http://" + base_url.split("/")[2] + clicked_url event.accept() return False modifiers = QApplication.keyboardModifiers() if modifiers != Qt.ControlModifier: Loading @@ -76,7 +85,8 @@ class BrowserView(QtWebEngineWidgets.QWebEngineView): return True event.accept() return True return False elif event.type() == QEvent.MouseButtonPress: if event.button() == MOUSE_FORWARD_BUTTON: self.forward() Loading eaf.el +19 −3 Original line number Diff line number Diff line Loading @@ -219,14 +219,14 @@ We need calcuate render allocation to make sure no black border around render co (list x y w h))) (defun eaf-generate-id () (format "%04x%04x-%04x-%04x-%04x-%06x%06x" (format "%04x-%04x-%04x-%04x-%04x-%04x-%04x" (random (expt 16 4)) (random (expt 16 4)) (random (expt 16 4)) (random (expt 16 4)) (random (expt 16 4)) (random (expt 16 6)) (random (expt 16 6)) )) (random (expt 16 4)) (random (expt 16 4)) )) (defun eaf-create-buffer (input-content) (let ((eaf-buffer (generate-new-buffer (truncate-string-to-width input-content eaf-title-length)))) Loading Loading @@ -394,6 +394,22 @@ We need calcuate render allocation to make sure no black border around render co ) )))))))) (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" "com.lazycat.eaf" "create_new_browser_buffer" 'eaf-create-new-browser-buffer) (defun eaf-create-new-browser-buffer (new-window-buffer-id) (let ((eaf-buffer (generate-new-buffer (concat "browser popup window " new-window-buffer-id)))) (with-current-buffer eaf-buffer (eaf-mode) (read-only-mode) (set (make-local-variable 'buffer-id) new-window-buffer-id) (set (make-local-variable 'buffer-url) "") (set (make-local-variable 'buffer-app-name) "browser") ) (switch-to-buffer eaf-buffer))) (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" "com.lazycat.eaf" "focus_emacs_buffer" Loading eaf.py +42 −5 Original line number Diff line number Diff line Loading @@ -74,12 +74,34 @@ class EAF(dbus.service.Object): if buffer_id in self.buffer_dict: self.buffer_dict[buffer_id].scroll(scroll_direction, scroll_type) def get_new_browser_window_buffer_id(self): import secrets return "{0}-{1}-{2}-{3}-{4}-{5}-{6}".format( secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2)) def create_new_browser_window(self): # Generate buffer id same as eaf.el does. buffer_id = self.get_new_browser_window_buffer_id() # Create buffer for create new browser window. app_buffer = self.create_buffer(buffer_id, "http://0.0.0.0", "app.browser.buffer") # Create emacs buffer with buffer id. self.create_new_browser_buffer(buffer_id) # Return new QWebEngineView for create new browser window. return app_buffer.buffer_widget def create_app(self, buffer_id, url, module_path): try: module = importlib.import_module(module_path) buf = module.AppBuffer(buffer_id, url) buf.module_path = module_path self.create_buffer(buffer_id, buf) self.create_buffer(buffer_id, url, module_path) return "" except ImportError: Loading @@ -87,9 +109,14 @@ class EAF(dbus.service.Object): traceback.print_exc() return "Something wrong when import {0}".format(module_path) def create_buffer(self, buffer_id, app_buffer): def create_buffer(self, buffer_id, url, module_path): global emacs_width, emacs_height # Create application buffer. module = importlib.import_module(module_path) app_buffer = module.AppBuffer(buffer_id, url) app_buffer.module_path = module_path # Add buffer to buffer dict. self.buffer_dict[buffer_id] = app_buffer Loading @@ -104,9 +131,15 @@ class EAF(dbus.service.Object): # Send message to emacs. app_buffer.input_message.connect(self.input_message) # Add create new window callback if module is browser if module_path == "app.browser.buffer": app_buffer.buffer_widget.create_new_browser_window_callback = self.create_new_browser_window # Restore buffer session. self.restore_buffer_session(app_buffer) return app_buffer @dbus.service.method(EAF_DBUS_NAME, in_signature="s", out_signature="") def update_views(self, args): global emacs_xid Loading Loading @@ -218,6 +251,10 @@ class EAF(dbus.service.Object): def input_message(self, buffer_id, message, callback_type): pass @dbus.service.signal("com.lazycat.eaf") def create_new_browser_buffer(self, buffer_id): pass def save_buffer_session(self, buf): # Create config file it not exist. if not os.path.exists(self.session_file_path): Loading Loading
core/browser.py +12 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,9 @@ class BrowserView(QtWebEngineWidgets.QWebEngineView): self.web_page = BrowserPage() self.setPage(self.web_page) def createWindow(self, window_type): return self.create_new_browser_window_callback() def event(self, event): if event.type() == QEvent.ChildAdded: obj = event.child() Loading @@ -55,15 +58,21 @@ class BrowserView(QtWebEngineWidgets.QWebEngineView): clicked_url = hit.linkUrl() base_url = hit.baseUrl() if clicked_url != base_url and clicked_url != '': if clicked_url != None and base_url != None and clicked_url != base_url and clicked_url != '': result = "" if 'http://' in clicked_url or 'https://' in clicked_url: result = clicked_url elif clicked_url == "#": result = base_url + clicked_url else: # Don't open url in EAF if clicked_url is not start with http/ftp or # result = "http://" + base_url.split("/")[2] + clicked_url event.accept() return False modifiers = QApplication.keyboardModifiers() if modifiers != Qt.ControlModifier: Loading @@ -76,7 +85,8 @@ class BrowserView(QtWebEngineWidgets.QWebEngineView): return True event.accept() return True return False elif event.type() == QEvent.MouseButtonPress: if event.button() == MOUSE_FORWARD_BUTTON: self.forward() Loading
eaf.el +19 −3 Original line number Diff line number Diff line Loading @@ -219,14 +219,14 @@ We need calcuate render allocation to make sure no black border around render co (list x y w h))) (defun eaf-generate-id () (format "%04x%04x-%04x-%04x-%04x-%06x%06x" (format "%04x-%04x-%04x-%04x-%04x-%04x-%04x" (random (expt 16 4)) (random (expt 16 4)) (random (expt 16 4)) (random (expt 16 4)) (random (expt 16 4)) (random (expt 16 6)) (random (expt 16 6)) )) (random (expt 16 4)) (random (expt 16 4)) )) (defun eaf-create-buffer (input-content) (let ((eaf-buffer (generate-new-buffer (truncate-string-to-width input-content eaf-title-length)))) Loading Loading @@ -394,6 +394,22 @@ We need calcuate render allocation to make sure no black border around render co ) )))))))) (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" "com.lazycat.eaf" "create_new_browser_buffer" 'eaf-create-new-browser-buffer) (defun eaf-create-new-browser-buffer (new-window-buffer-id) (let ((eaf-buffer (generate-new-buffer (concat "browser popup window " new-window-buffer-id)))) (with-current-buffer eaf-buffer (eaf-mode) (read-only-mode) (set (make-local-variable 'buffer-id) new-window-buffer-id) (set (make-local-variable 'buffer-url) "") (set (make-local-variable 'buffer-app-name) "browser") ) (switch-to-buffer eaf-buffer))) (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" "com.lazycat.eaf" "focus_emacs_buffer" Loading
eaf.py +42 −5 Original line number Diff line number Diff line Loading @@ -74,12 +74,34 @@ class EAF(dbus.service.Object): if buffer_id in self.buffer_dict: self.buffer_dict[buffer_id].scroll(scroll_direction, scroll_type) def get_new_browser_window_buffer_id(self): import secrets return "{0}-{1}-{2}-{3}-{4}-{5}-{6}".format( secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2), secrets.token_hex(2)) def create_new_browser_window(self): # Generate buffer id same as eaf.el does. buffer_id = self.get_new_browser_window_buffer_id() # Create buffer for create new browser window. app_buffer = self.create_buffer(buffer_id, "http://0.0.0.0", "app.browser.buffer") # Create emacs buffer with buffer id. self.create_new_browser_buffer(buffer_id) # Return new QWebEngineView for create new browser window. return app_buffer.buffer_widget def create_app(self, buffer_id, url, module_path): try: module = importlib.import_module(module_path) buf = module.AppBuffer(buffer_id, url) buf.module_path = module_path self.create_buffer(buffer_id, buf) self.create_buffer(buffer_id, url, module_path) return "" except ImportError: Loading @@ -87,9 +109,14 @@ class EAF(dbus.service.Object): traceback.print_exc() return "Something wrong when import {0}".format(module_path) def create_buffer(self, buffer_id, app_buffer): def create_buffer(self, buffer_id, url, module_path): global emacs_width, emacs_height # Create application buffer. module = importlib.import_module(module_path) app_buffer = module.AppBuffer(buffer_id, url) app_buffer.module_path = module_path # Add buffer to buffer dict. self.buffer_dict[buffer_id] = app_buffer Loading @@ -104,9 +131,15 @@ class EAF(dbus.service.Object): # Send message to emacs. app_buffer.input_message.connect(self.input_message) # Add create new window callback if module is browser if module_path == "app.browser.buffer": app_buffer.buffer_widget.create_new_browser_window_callback = self.create_new_browser_window # Restore buffer session. self.restore_buffer_session(app_buffer) return app_buffer @dbus.service.method(EAF_DBUS_NAME, in_signature="s", out_signature="") def update_views(self, args): global emacs_xid Loading Loading @@ -218,6 +251,10 @@ class EAF(dbus.service.Object): def input_message(self, buffer_id, message, callback_type): pass @dbus.service.signal("com.lazycat.eaf") def create_new_browser_buffer(self, buffer_id): pass def save_buffer_session(self, buf): # Create config file it not exist. if not os.path.exists(self.session_file_path): Loading