Commit cccbfed4 authored by Andy Stewart's avatar Andy Stewart
Browse files

Use build_widget_method and build_browser_method to remove duplicate code.

parent 65df5c4b
Loading
Loading
Loading
Loading
+5 −42
Original line number Diff line number Diff line
@@ -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")
+18 −50
Original line number Diff line number Diff line
@@ -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):
+3 −6
Original line number Diff line number Diff line
@@ -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):
+13 −78
Original line number Diff line number Diff line
@@ -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()
+9 −0
Original line number Diff line number Diff line
@@ -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)