From cccbfed4ca84116812e18dbf0fda9ba7d4d39d98 Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Tue, 18 Feb 2020 22:20:26 +0800 Subject: [PATCH] Use build_widget_method and build_browser_method to remove duplicate code. --- app/pdf-viewer/buffer.py | 47 +++----------------- app/rss-reader/buffer.py | 68 ++++++++-------------------- app/video-player/buffer.py | 9 ++-- core/browser.py | 91 ++++++-------------------------------- core/buffer.py | 9 ++++ 5 files changed, 48 insertions(+), 176 deletions(-) diff --git a/app/pdf-viewer/buffer.py b/app/pdf-viewer/buffer.py index bd81692..7aa04be 100755 --- a/app/pdf-viewer/buffer.py +++ b/app/pdf-viewer/buffer.py @@ -40,6 +40,11 @@ class AppBuffer(Buffer): self.add_widget(PdfViewerWidget(url, config_dir, QColor(0, 0, 0, 255), buffer_id, emacs_var_dict)) self.buffer_widget.translate_double_click_word.connect(self.translate_text) + for method_name in ["scroll_up", "scroll_down", "scroll_up_page", "scroll_down_page", "scroll_to_home", "scroll_to_end", + "zoom_reset", "zoom_in", "zoom_out", "save_current_pos", "jump_to_saved_pos", + "toggle_read_mode", "toggle_inverted_mode", "toggle_mark_link"]: + self.build_widget_method(method_name) + def get_table_file(self): return self.buffer_widget.table_file_path @@ -83,54 +88,12 @@ class AppBuffer(Buffer): self.buffer_widget.inverted_mode = inverted_mode == "True" self.buffer_widget.update() - def scroll_up(self): - self.buffer_widget.scroll_up() - - def scroll_down(self): - self.buffer_widget.scroll_down() - - def scroll_up_page(self): - self.buffer_widget.scroll_up_page() - - def scroll_down_page(self): - self.buffer_widget.scroll_down_page() - - def toggle_read_mode(self): - self.buffer_widget.toggle_read_mode() - - def scroll_to_home(self): - self.buffer_widget.scroll_to_home() - - def scroll_to_end(self): - self.buffer_widget.scroll_to_end() - - def zoom_reset(self): - self.buffer_widget.zoom_reset() - - def zoom_in(self): - self.buffer_widget.zoom_in() - - def zoom_out(self): - self.buffer_widget.zoom_out() - def jump_to_page(self): self.send_input_message("Jump to Page: ", "jump_page") def jump_to_percent(self): self.send_input_message("Jump to Percent: ", "jump_percent") - def save_current_pos(self): - self.buffer_widget.save_current_pos() - - def jump_to_saved_pos(self): - self.buffer_widget.jump_to_saved_pos() - - def toggle_inverted_mode(self): - self.buffer_widget.toggle_inverted_mode() - - def toggle_mark_link(self): - self.buffer_widget.toggle_mark_link() - def jump_to_link(self): self.buffer_widget.add_mark_jump_link_tips() self.send_input_message("Jump to Link: ", "jump_link") diff --git a/app/rss-reader/buffer.py b/app/rss-reader/buffer.py index 47a2679..957acfc 100644 --- a/app/rss-reader/buffer.py +++ b/app/rss-reader/buffer.py @@ -36,53 +36,30 @@ class AppBuffer(Buffer): self.add_widget(RSSReaderWidget(config_dir)) - def add_subscription(self): - self.send_input_message("Subscribe to RSS feed: ", "add_subscription") - - def delete_subscription(self): - self.send_input_message("Are you sure you want to delete the current feed? (y or n): ", "delete_subscription") - - def next_subscription(self): - self.buffer_widget.next_subscription() + 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) - def prev_subscription(self): - self.buffer_widget.prev_subscription() + 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) - def next_article(self): - self.buffer_widget.next_article() - - def prev_article(self): - self.buffer_widget.prev_article() - - def first_subscription(self): - self.buffer_widget.first_subscription() - - def last_subscription(self): - self.buffer_widget.last_subscription() + self.build_browser_method("action_quit", "search_quit") - def first_article(self): - self.buffer_widget.first_article() - - def last_article(self): - self.buffer_widget.last_article() - - def scroll_up(self): - self.buffer_widget.browser.scroll_up() - - def scroll_down(self): - self.buffer_widget.browser.scroll_down() - - def scroll_up_page(self): - self.buffer_widget.browser.scroll_up_page() + 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)) - def scroll_down_page(self): - self.buffer_widget.browser.scroll_down_page() + if message != None: + self.message_to_emacs.emit(message) - def scroll_to_begin(self): - self.buffer_widget.browser.scroll_to_begin() + def add_subscription(self): + self.send_input_message("Subscribe to RSS feed: ", "add_subscription") - def scroll_to_bottom(self): - self.buffer_widget.browser.scroll_to_bottom() + def delete_subscription(self): + self.send_input_message("Are you sure you want to delete the current feed? (y or n): ", "delete_subscription") def handle_input_message(self, result_type, result_content): if result_type == "search_text_forward": @@ -103,9 +80,6 @@ class AppBuffer(Buffer): if result_type == "jump_link" or result_type == "jump_link_new_buffer": self.buffer_widget.browser.cleanup_links() - def action_quit(self): - self.buffer_widget.browser.search_quit() - def open_link(self): self.buffer_widget.browser.open_link() self.send_input_message("Open Link: ", "jump_link"); @@ -114,12 +88,6 @@ class AppBuffer(Buffer): self.buffer_widget.browser.open_link_new_buffer() self.send_input_message("Open Link in New Buffer: ", "jump_link_new_buffer"); - def search_text_forward(self): - self.buffer_widget.browser.search_text_forward() - - def search_text_backward(self): - self.buffer_widget.browser.search_text_backward() - class RSSReaderWidget(QWidget): def __init__(self, config_dir): diff --git a/app/video-player/buffer.py b/app/video-player/buffer.py index ce24ef9..53b64a5 100644 --- a/app/video-player/buffer.py +++ b/app/video-player/buffer.py @@ -33,6 +33,9 @@ class AppBuffer(Buffer): self.add_widget(VideoPlayerWidget()) self.buffer_widget.play(url) + for method_name in ["play_backward", "play_forward"]: + self.build_widget_method(method_name) + def all_views_hide(self): # Pause video before all views hdie, otherwise will got error "Internal data stream error". if self.buffer_widget.media_player.state() == QMediaPlayer.PlayingState: @@ -58,12 +61,6 @@ class AppBuffer(Buffer): self.buffer_widget.media_player.play() self.buffer_widget.video_need_replay = True - def play_backward(self): - self.buffer_widget.seek_backward() - - def play_forward(self): - self.buffer_widget.seek_forward() - class VideoPlayerWidget(QWidget): def __init__(self, parent=None): diff --git a/core/browser.py b/core/browser.py index 15a0676..44cf0db 100644 --- a/core/browser.py +++ b/core/browser.py @@ -351,11 +351,23 @@ class BrowserBuffer(Buffer): self.buffer_widget.loadStarted.connect(self.start_progress) self.buffer_widget.loadProgress.connect(self.update_progress) self.buffer_widget.loadFinished.connect(self.stop_progress) - self.buffer_widget.web_page.windowCloseRequested.connect(self.request_close_buffer) self.profile.defaultProfile().downloadRequested.connect(self.handle_download_request) + for method_name in ["search_text_forward", "search_text_backward", "zoom_out", "zoom_in", "zoom_reset", + "scroll_left", "scroll_right", "scroll_up", "scroll_down", + "scroll_up_page", "scroll_down_page", "scroll_to_begin", "scroll_to_bottom", + "refresh_page", "undo_action", "redo_action", "get_url", + "set_focus_text", "clear_focus", "dark_mode"]: + self.build_widget_method(method_name) + + 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.") + def handle_download_request(self, download_item): self.try_start_aria2_daemon() @@ -406,40 +418,10 @@ class BrowserBuffer(Buffer): if result_type == "jump_link" or result_type == "jump_link_new_buffer" or result_type == "jump_link_background_buffer": self.buffer_widget.cleanup_links() - def search_text_forward(self): - self.buffer_widget.search_text_forward() - - def search_text_backward(self): - self.buffer_widget.search_text_backward() - - def history_backward(self): - self.buffer_widget.back() - - def history_forward(self): - self.buffer_widget.forward() - def clear_all_cookies(self): self.buffer_widget.clear_cookies() self.message_to_emacs.emit("Cleared all cookies.") - def action_quit(self): - self.buffer_widget.search_quit() - - def zoom_out(self): - self.buffer_widget.zoom_out() - - def zoom_in(self): - self.buffer_widget.zoom_in() - - def zoom_reset(self): - self.buffer_widget.zoom_reset() - - def scroll_left(self): - self.buffer_widget.scroll_left() - - def scroll_right(self): - self.buffer_widget.scroll_right() - def try_start_aria2_daemon(self): if not is_port_in_use(6800): with open(os.devnull, "w") as null_file: @@ -464,48 +446,10 @@ class BrowserBuffer(Buffer): self.try_start_aria2_daemon() self.buffer_widget.open_download_manage_page() - def scroll_up(self): - self.buffer_widget.scroll_up() - - def scroll_down(self): - self.buffer_widget.scroll_down() - - def scroll_up_page(self): - self.buffer_widget.scroll_up_page() - - def scroll_down_page(self): - self.buffer_widget.scroll_down_page() - - def scroll_to_begin(self): - self.buffer_widget.scroll_to_begin() - - def scroll_to_bottom(self): - self.buffer_widget.scroll_to_bottom() - - def refresh_page(self): - self.buffer_widget.refresh_page() - def copy_text(self): self.buffer_widget.copy_text() self.message_to_emacs.emit("Copy '" + self.buffer_widget.get_selection_text() + "'") - def yank_text(self): - self.buffer_widget.yank_text() - self.message_to_emacs.emit("Yank text.") - - def kill_text(self): - self.buffer_widget.kill_text() - self.message_to_emacs.emit("Kill text.") - - def undo_action(self): - self.buffer_widget.undo_action() - - def redo_action(self): - self.buffer_widget.redo_action() - - def get_url(self): - return self.buffer_widget.get_url() - def open_link(self): self.buffer_widget.get_link_markers() self.send_input_message("Open Link: ", "jump_link"); @@ -529,9 +473,6 @@ class BrowserBuffer(Buffer): else: self.message_to_emacs.emit("No active input element.") - def set_focus_text(self, new_text): - self.buffer_widget.set_focus_text(new_text) - def is_focus(self): return self.buffer_widget.get_focus_text() != None @@ -698,11 +639,5 @@ class BrowserBuffer(Buffer): else: self.buffer_widget.select_all() - def clear_focus(self): - self.buffer_widget.clear_focus() - def eval_js_file(self): self.send_input_message("Eval JS: ", "eval_js_file", "file") - - def dark_mode(self): - self.buffer_widget.dark_mode() diff --git a/core/buffer.py b/core/buffer.py index 0d7db8d..db56842 100755 --- a/core/buffer.py +++ b/core/buffer.py @@ -300,3 +300,12 @@ 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)