Add new command: toggle_device.

master
Andy Stewart 6 years ago
parent d4c4ea0fc1
commit 8cf4a6f24c
  1. 17
      core/browser.py
  2. 8
      core/buffer.py
  3. 22
      core/view.py
  4. 1
      eaf.el

@ -396,8 +396,10 @@ class BrowserBuffer(Buffer):
self.history_list.append(HistoryPage(his_line.group(1), his_line.group(2), his_line.group(3)))
# Set User Agent with Firefox's one to make EAF browser can login in Google account.
self.pc_user_agent = "Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/72.0"
self.phone_user_agent = "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A5370a Safari/604.1"
self.profile = QWebEngineProfile(self.buffer_widget)
self.profile.defaultProfile().setHttpUserAgent("Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/72.0")
self.profile.defaultProfile().setHttpUserAgent(self.pc_user_agent)
self.buffer_widget.loadStarted.connect(self.start_progress)
self.buffer_widget.loadProgress.connect(self.update_progress)
@ -435,7 +437,7 @@ class BrowserBuffer(Buffer):
"open_link", "open_link_new_buffer", "open_link_background_buffer",
"history_backward", "history_forward", "new_blank_page", "open_download_manage_page",
"refresh_page", "zoom_in", "zoom_out", "zoom_reset", "save_as_bookmark",
"download_youtube_video", "download_youtube_audio"]:
"download_youtube_video", "download_youtube_audio", "toggle_device"]:
self.build_insert_or_do(method_name)
def handle_fullscreen_request(self, request):
@ -697,6 +699,17 @@ class BrowserBuffer(Buffer):
def open_dev_tool_page(self):
self.open_dev_tools_tab.emit(self.buffer_widget.web_page)
def toggle_device(self):
user_agent = self.profile.defaultProfile().httpUserAgent()
if user_agent == self.pc_user_agent:
self.profile.defaultProfile().setHttpUserAgent(self.phone_user_agent)
self.set_aspect_ratio(2.0 / 3)
else:
self.profile.defaultProfile().setHttpUserAgent(self.pc_user_agent)
self.set_aspect_ratio(0)
self.refresh_page()
def download_youtube_video(self):
self.download_youtube_file()

@ -158,6 +158,7 @@ class Buffer(QGraphicsScene):
eval_in_emacs = QtCore.pyqtSignal(str)
goto_left_tab = QtCore.pyqtSignal()
goto_right_tab = QtCore.pyqtSignal()
aspect_ratio_change = QtCore.pyqtSignal()
def __init__(self, buffer_id, url, arguments, emacs_var_dict, fit_to_view, background_color):
super(QGraphicsScene, self).__init__()
@ -179,6 +180,13 @@ class Buffer(QGraphicsScene):
self.current_event_string = ""
self.aspect_ratio = 0
self.vertical_padding_ratio = 1.0 / 8
def set_aspect_ratio(self, aspect_ratio):
self.aspect_ratio = aspect_ratio
self.aspect_ratio_change.emit()
def drawForeground(self, painter, rect):
if self.draw_progressbar:
painter.setBrush(self.progressbar_color)

@ -67,6 +67,8 @@ class View(QWidget):
# Resize after show to trigger fit view operation.
self.resize(self.width, self.height)
self.buffer.aspect_ratio_change.connect(self.adjust_aspect_ratio)
def resizeEvent(self, event):
# Fit content to view rect just when buffer fit_to_view option is enable.
if self.buffer.fit_to_view:
@ -74,6 +76,26 @@ class View(QWidget):
self.graphics_view.fitInView(self.graphics_view.scene().sceneRect(), Qt.KeepAspectRatio)
QWidget.resizeEvent(self, event)
def adjust_aspect_ratio(self):
widget_width = self.width
widget_height = self.height
if self.buffer.aspect_ratio == 0:
self.buffer.buffer_widget.resize(self.width, self.height)
self.layout.setContentsMargins(0, 0, 0, 0)
else:
view_height = widget_height * (1 - 2 * self.buffer.vertical_padding_ratio)
view_width = view_height * self.buffer.aspect_ratio
horizontal_padding = (widget_width - view_width) / 2
vertical_padding = self.buffer.vertical_padding_ratio * widget_height
self.buffer.buffer_widget.resize(view_width, view_height)
self.layout.setContentsMargins(
horizontal_padding, vertical_padding,
horizontal_padding, vertical_padding)
def eventFilter(self, obj, event):
# Focus emacs buffer when user click view.
if event.type() in [QEvent.MouseButtonPress, QEvent.MouseButtonRelease,

@ -309,6 +309,7 @@ Try not to modify this alist directly. Use `eaf-setq' to modify instead."
("o" . "insert_or_open_url")
("y" . "insert_or_download_youtube_video")
("Y" . "insert_or_download_youtube_audio")
("p" . "insert_or_toggle_device")
("C-a" . "select_all_or_input_text")
("M-u" . "clear_focus")
("M-i" . "open_download_manage_page")

Loading…
Cancel
Save