From 166798490ac2f78265080fba46d273e2fd11edc1 Mon Sep 17 00:00:00 2001 From: "Mingde (Matthew) Zeng" Date: Wed, 17 Jun 2020 11:56:55 -0400 Subject: [PATCH] Redesign build_widget_method to build_interactive_method Signed-off-by: Mingde (Matthew) Zeng --- app/pdf-viewer/buffer.py | 2 +- app/rss-reader/buffer.py | 15 +++------------ app/terminal/buffer.py | 3 +++ app/video-player/buffer.py | 4 ++-- core/browser.py | 12 ++++++------ core/buffer.py | 21 +++++++++++++-------- 6 files changed, 28 insertions(+), 29 deletions(-) diff --git a/app/pdf-viewer/buffer.py b/app/pdf-viewer/buffer.py index c0d2878..1bb4c47 100755 --- a/app/pdf-viewer/buffer.py +++ b/app/pdf-viewer/buffer.py @@ -47,7 +47,7 @@ class AppBuffer(Buffer): "save_current_pos", "jump_to_saved_pos", "scroll_right", "scroll_left", "toggle_read_mode", "toggle_inverted_mode", "toggle_mark_link"]: - self.build_widget_method(method_name) + self.build_interactive_method(method_name, self.buffer_widget) def destroy_buffer(self): if self.delete_temp_file: diff --git a/app/rss-reader/buffer.py b/app/rss-reader/buffer.py index 1e2b5d6..f537c69 100644 --- a/app/rss-reader/buffer.py +++ b/app/rss-reader/buffer.py @@ -38,22 +38,13 @@ class AppBuffer(Buffer): for method_name in ["next_subscription", "prev_subscription", "next_article", "prev_article", "first_subscription", "last_subscription", "first_article", "last_article"]: - self.build_widget_method(method_name) + self.build_interactive_method(method_name, self.buffer_widget) for method_name in ["scroll_up", "scroll_down", "scroll_up_page", "scroll_down_page", "scroll_to_begin", "scroll_to_bottom", "search_text_forward", "search_text_backward"]: - self.build_browser_method(method_name) + self.build_interactive_method(method_name, self.buffer_widget.browser) - self.build_browser_method("action_quit", "search_quit") - - def build_browser_method(self, method_name, widget_method_name=None, message=None): - if widget_method_name: - setattr(self, method_name, getattr(self.buffer_widget.browser, widget_method_name)) - else: - setattr(self, method_name, getattr(self.buffer_widget.browser, method_name)) - - if message != None: - self.message_to_emacs.emit(message) + self.build_interactive_method("action_quit", self.buffer_widget.browser, "search_quit") def add_subscription(self): self.send_input_message("Subscribe to RSS feed: ", "add_subscription") diff --git a/app/terminal/buffer.py b/app/terminal/buffer.py index dfc09ed..9458f69 100644 --- a/app/terminal/buffer.py +++ b/app/terminal/buffer.py @@ -59,6 +59,9 @@ class AppBuffer(BrowserBuffer): QTimer.singleShot(250, self.focus_terminal) + for method_name in ["search_text_forward", "search_text_backward", "scroll_up", "scroll_down", "scroll_up_page", "scroll_down_page", "scroll_to_begin", "scroll_to_bottom"]: + self.build_interactive_method(method_name, self) + def focus_terminal(self): event = QMouseEvent(QEvent.MouseButtonPress, QPointF(0, 0), Qt.LeftButton, Qt.LeftButton, Qt.NoModifier) QApplication.sendEvent(self.buffer_widget.focusProxy(), event) diff --git a/app/video-player/buffer.py b/app/video-player/buffer.py index ab4aef2..14bc5da 100644 --- a/app/video-player/buffer.py +++ b/app/video-player/buffer.py @@ -33,8 +33,8 @@ class AppBuffer(Buffer): self.add_widget(VideoPlayerWidget()) self.buffer_widget.play(url) - self.build_widget_method("play_backward", "seek_backward") - self.build_widget_method("play_forward", "seek_forward") + self.build_interactive_method("play_backward", self.buffer_widget, "seek_backward") + self.build_interactive_method("play_forward", self.buffer_widget, "seek_forward") def all_views_hide(self): # Pause video before all views hdie, otherwise will got error "Internal data stream error". diff --git a/core/browser.py b/core/browser.py index ee398d1..2215efc 100644 --- a/core/browser.py +++ b/core/browser.py @@ -471,13 +471,13 @@ class BrowserBuffer(Buffer): "scroll_up_page", "scroll_down_page", "scroll_to_begin", "scroll_to_bottom", "refresh_page", "undo_action", "redo_action", "get_url", "exit_fullscreen", "set_focus_text", "clear_focus", "dark_mode", "view_source", "focus_input"]: - self.build_widget_method(method_name) + self.build_interactive_method(method_name, self.buffer_widget) - self.build_widget_method("history_backward", "back") - self.build_widget_method("history_forward", "forward") - self.build_widget_method("action_quit", "search_quit") - self.build_widget_method("yank_text", "yank_text", "Yank text.") - self.build_widget_method("kill_text", "kill_text", "Kill text.") + self.build_interactive_method("history_backward", self.buffer_widget, "back") + self.build_interactive_method("history_forward", self.buffer_widget, "forward") + self.build_interactive_method("action_quit", self.buffer_widget, "search_quit") + self.build_interactive_method("yank_text", self.buffer_widget, "yank_text", "Yank text.") + self.build_interactive_method("kill_text", self.buffer_widget, "kill_text", "Kill text.") for method_name in ["recover_prev_close_page", "scroll_up", "scroll_down", "scroll_left", "scroll_right", "scroll_up_page", "scroll_down_page", "scroll_to_begin", "scroll_to_bottom", diff --git a/core/buffer.py b/core/buffer.py index 5a7abac..607245e 100755 --- a/core/buffer.py +++ b/core/buffer.py @@ -280,14 +280,19 @@ class Buffer(QGraphicsScene): def get_url(self): return self.url - def build_widget_method(self, method_name, widget_method_name=None, message=None): - if widget_method_name: - setattr(self, method_name, getattr(self.buffer_widget, widget_method_name)) - else: - setattr(self, method_name, getattr(self.buffer_widget, method_name)) - - if message != None: - self.message_to_emacs.emit(message) + def build_interactive_method(self, method_name, origin_method_class, origin_method_name=None, message_emacs=None): + try: + del self.__dict__[method_name] + except KeyError: + pass + finally: + if origin_method_name: + setattr(self, method_name, getattr(origin_method_class, origin_method_name)) + else: + setattr(self, method_name, getattr(origin_method_class, method_name)) + + if message_emacs != None: + self.message_to_emacs.emit(message_emacs) def save_as_bookmark(self): self.eval_in_emacs.emit('''(bookmark-set)''')