From f5526b01c90d7ac2df22d5f4d06a98f2ad4d76d9 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 19 Dec 2019 02:17:04 -0500 Subject: [PATCH] Use C-s and C-r the Emacs-way to search in EAF Browser --- core/browser.py | 1 - core/browser_buffer.py | 32 ++++++++++++++++++++++++++++++++ eaf.el | 2 ++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/core/browser.py b/core/browser.py index 3444925..9839ee8 100644 --- a/core/browser.py +++ b/core/browser.py @@ -132,7 +132,6 @@ class BrowserView(QWebEngineView): self.setZoomFactor(1) class BrowserPage(QWebEnginePage): - def __init__(self): QWebEnginePage.__init__(self) diff --git a/core/browser_buffer.py b/core/browser_buffer.py index afa3278..cbac6c0 100755 --- a/core/browser_buffer.py +++ b/core/browser_buffer.py @@ -35,6 +35,8 @@ class BrowserBuffer(Buffer): self.buffer_widget.web_page.windowCloseRequested.connect(self.request_close_buffer) + self.search_term = "" + def get_key_event_widgets(self): # We need send key event to QWebEngineView's focusProxy widget, not QWebEngineView. return [self.buffer_widget.focusProxy()] @@ -51,6 +53,32 @@ class BrowserBuffer(Buffer): else: self.scroll_down() + def _search_text(self, text, is_backward = False): + if self.search_term != text: + self.search_term = text + if is_backward: + self.buffer_widget.web_page.findText(self.search_term, self.buffer_widget.web_page.FindBackward) + else: + self.buffer_widget.web_page.findText(self.search_term) + + def handle_input_message(self, result_type, result_content): + if result_type == "search_text_forward": + self._search_text(str(result_content)) + elif result_type == "search_text_backward": + self._search_text(str(result_content), True) + + def search_text_forward(self): + if self.search_term == "": + self.send_input_message("EAF Browser - Forward Search Text: ", "search_text_forward") + else: + self._search_text(self.search_term) + + def search_text_backward(self): + if self.search_term == "": + self.send_input_message("EAF Browser - Forward Search Text: ", "search_text_backward") + else: + self._search_text(self.search_term, True) + def eval_js(self, js): self.buffer_widget.web_page.runJavaScript(js) @@ -64,6 +92,10 @@ class BrowserBuffer(Buffer): self.buffer_widget.clean_cookie() self.message_to_emacs.emit("EAF Browser - Cleared all cookies.") + def action_quit(self): + if self.search_term != "": + self._search_text("") + def zoom_out(self): self.buffer_widget.zoom_out() diff --git a/eaf.el b/eaf.el index b780a5e..990e20c 100644 --- a/eaf.el +++ b/eaf.el @@ -203,6 +203,8 @@ Try not to modify this alist directly. Use `eaf-setq' to modify instead." ("C--" . "zoom_out") ("C-=" . "zoom_in") ("C-0" . "zoom_reset") + ("C-s" . "search_text_forward") + ("C-r" . "search_text_backward") ("C-n" . "scroll_up") ("C-p" . "scroll_down") ("C-v" . "scroll_up_page")