Use build_widget_method and build_browser_method to remove duplicate code.

master
Andy Stewart 6 years ago
parent 65df5c4b05
commit cccbfed4ca
  1. 47
      app/pdf-viewer/buffer.py
  2. 68
      app/rss-reader/buffer.py
  3. 9
      app/video-player/buffer.py
  4. 91
      core/browser.py
  5. 9
      core/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")

@ -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):

@ -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):

@ -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()

@ -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)

Loading…
Cancel
Save