cleanups
This commit is contained in:
parent
65f2409d03
commit
03c1e1d896
@ -21,7 +21,7 @@ import logging
|
|||||||
import math
|
import math
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSignal, QObject, QEvent, Qt, QUrl
|
from PyQt5.QtCore import pyqtSignal, QObject, QEvent, Qt
|
||||||
from PyQt5.QtGui import QMouseEvent, QClipboard
|
from PyQt5.QtGui import QMouseEvent, QClipboard
|
||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
|
|
||||||
@ -153,6 +153,7 @@ class HintManager(QObject):
|
|||||||
self._frame = frame
|
self._frame = frame
|
||||||
self._elems = {}
|
self._elems = {}
|
||||||
self._target = None
|
self._target = None
|
||||||
|
self._baseurl = None
|
||||||
|
|
||||||
def _hint_strings(self, elems):
|
def _hint_strings(self, elems):
|
||||||
"""Calculate the hint strings for elems.
|
"""Calculate the hint strings for elems.
|
||||||
@ -311,6 +312,25 @@ class HintManager(QObject):
|
|||||||
self.set_cmd_text.emit(':{} {}'.format(command,
|
self.set_cmd_text.emit(':{} {}'.format(command,
|
||||||
urlutils.urlstring(link)))
|
urlutils.urlstring(link)))
|
||||||
|
|
||||||
|
def _resolve_link(self, elem):
|
||||||
|
"""Resolve a link and check if we want to keep it.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
elem: The QWebElement to get the link of.
|
||||||
|
|
||||||
|
Return:
|
||||||
|
A QUrl with the absolute link, or None.
|
||||||
|
"""
|
||||||
|
link = elem.attribute('href')
|
||||||
|
if not link:
|
||||||
|
return None
|
||||||
|
link = urlutils.qurl(link)
|
||||||
|
if link.scheme() == "javascript":
|
||||||
|
return None
|
||||||
|
if link.isRelative():
|
||||||
|
link = self._baseurl.resolved(link)
|
||||||
|
return link
|
||||||
|
|
||||||
def start(self, baseurl, mode="all", target="normal"):
|
def start(self, baseurl, mode="all", target="normal"):
|
||||||
"""Start hinting.
|
"""Start hinting.
|
||||||
|
|
||||||
@ -378,33 +398,28 @@ class HintManager(QObject):
|
|||||||
|
|
||||||
def fire(self, keystr):
|
def fire(self, keystr):
|
||||||
"""Fire a completed hint."""
|
"""Fire a completed hint."""
|
||||||
|
# Targets which require a valid link
|
||||||
|
require_link = ['yank', 'yank_primary', 'cmd', 'cmd_tab', 'cmd_bgtab']
|
||||||
elem = self._elems[keystr].elem
|
elem = self._elems[keystr].elem
|
||||||
target = self._target
|
target = self._target
|
||||||
if target != 'rapid':
|
if target != 'rapid':
|
||||||
self.stop()
|
self.stop()
|
||||||
|
if target in require_link:
|
||||||
|
link = self._resolve_link(elem)
|
||||||
|
if link is None:
|
||||||
|
message.error("No suitable link found for this element.")
|
||||||
|
return
|
||||||
if target in ['normal', 'tab', 'bgtab']:
|
if target in ['normal', 'tab', 'bgtab']:
|
||||||
self._click(elem, target)
|
self._click(elem, target)
|
||||||
elif target == 'rapid':
|
elif target == 'rapid':
|
||||||
self._click(elem, 'bgtab')
|
self._click(elem, 'bgtab')
|
||||||
else:
|
elif target in ['yank', 'yank_primary']:
|
||||||
# Target which require a link
|
sel = target == 'yank_primary'
|
||||||
link = elem.attribute('href')
|
self._yank(link, sel)
|
||||||
if not link:
|
elif target in ['cmd', 'cmd_tab', 'cmd_bgtab']:
|
||||||
message.error("No link found for this element.")
|
commands = {
|
||||||
return
|
'cmd': 'open',
|
||||||
link = urlutils.qurl(link)
|
'cmd_tab': 'tabopen',
|
||||||
if link.scheme() == "javascript":
|
'cmd_bgtab': 'backtabopen',
|
||||||
return
|
}
|
||||||
if link.isRelative():
|
self._set_cmd_text(link, commands[target])
|
||||||
link = self._baseurl.resolved(link)
|
|
||||||
if target in ['yank', 'yank_primary']:
|
|
||||||
sel = target == 'yank_primary'
|
|
||||||
self._yank(link, sel)
|
|
||||||
if target in ['cmd', 'cmd_tab', 'cmd_bgtab']:
|
|
||||||
commands = {
|
|
||||||
'cmd': 'open',
|
|
||||||
'cmd_tab': 'tabopen',
|
|
||||||
'cmd_bgtab': 'backtabopen',
|
|
||||||
}
|
|
||||||
self._set_cmd_text(link, commands[target])
|
|
||||||
|
Loading…
Reference in New Issue
Block a user