Support to show SSL status with URL color
This commit is contained in:
parent
7c1ba7ab48
commit
512625cee1
@ -346,7 +346,9 @@ class QuteBrowser(QApplication):
|
|||||||
# statusbar
|
# statusbar
|
||||||
tabs.cur_progress.connect(status.prog.setValue)
|
tabs.cur_progress.connect(status.prog.setValue)
|
||||||
tabs.cur_load_finished.connect(status.prog.hide)
|
tabs.cur_load_finished.connect(status.prog.hide)
|
||||||
|
tabs.cur_load_started.connect(status.url.on_loading_started)
|
||||||
tabs.cur_load_finished.connect(status.url.on_loading_finished)
|
tabs.cur_load_finished.connect(status.url.on_loading_finished)
|
||||||
|
tabs.cur_ssl_errors.connect(status.url.on_ssl_errors)
|
||||||
tabs.cur_load_started.connect(status.prog.on_load_started)
|
tabs.cur_load_started.connect(status.prog.on_load_started)
|
||||||
tabs.cur_scroll_perc_changed.connect(status.percentage.set_perc)
|
tabs.cur_scroll_perc_changed.connect(status.percentage.set_perc)
|
||||||
tabs.cur_statusbar_message.connect(status.txt.on_statusbar_message)
|
tabs.cur_statusbar_message.connect(status.txt.on_statusbar_message)
|
||||||
|
@ -50,7 +50,7 @@ class NetworkManager(QNetworkAccessManager):
|
|||||||
for request in self._requests.values():
|
for request in self._requests.values():
|
||||||
request.abort()
|
request.abort()
|
||||||
|
|
||||||
@pyqtSlot('QNetworkReply', 'QList<QSslError>')
|
@pyqtSlot('QNetworkReply*', 'QList<QSslError>')
|
||||||
def on_ssl_errors(self, reply, errors):
|
def on_ssl_errors(self, reply, errors):
|
||||||
"""Decide if SSL errors should be ignored or not.
|
"""Decide if SSL errors should be ignored or not.
|
||||||
|
|
||||||
|
@ -601,6 +601,7 @@ class _Url(TextBase):
|
|||||||
_old_urltype: The type of the URL displayed before the hover URL.
|
_old_urltype: The type of the URL displayed before the hover URL.
|
||||||
_urltype: The current URL type. One of normal/ok/error/warn/hover.
|
_urltype: The current URL type. One of normal/ok/error/warn/hover.
|
||||||
Accessed via the urltype property.
|
Accessed via the urltype property.
|
||||||
|
_ssl_errors: Whether SSL errors occured while loading.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
STYLESHEET = """
|
STYLESHEET = """
|
||||||
@ -638,6 +639,7 @@ class _Url(TextBase):
|
|||||||
self._urltype = None
|
self._urltype = None
|
||||||
self._old_urltype = None
|
self._old_urltype = None
|
||||||
self._old_url = None
|
self._old_url = None
|
||||||
|
self._ssl_errors = False
|
||||||
|
|
||||||
@pyqtProperty(str)
|
@pyqtProperty(str)
|
||||||
def urltype(self):
|
def urltype(self):
|
||||||
@ -651,6 +653,15 @@ class _Url(TextBase):
|
|||||||
self._urltype = val
|
self._urltype = val
|
||||||
self.setStyleSheet(get_stylesheet(self.STYLESHEET))
|
self.setStyleSheet(get_stylesheet(self.STYLESHEET))
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def on_loading_started(self):
|
||||||
|
"""Slot to clear SSL errors when loading started."""
|
||||||
|
self._ssl_errors = False
|
||||||
|
|
||||||
|
@pyqtSlot('QNetworkReply*', 'QList<QSslError>')
|
||||||
|
def on_ssl_errors(self, _reply, _errors):
|
||||||
|
self._ssl_errors = True
|
||||||
|
|
||||||
@pyqtSlot(bool)
|
@pyqtSlot(bool)
|
||||||
def on_loading_finished(self, ok):
|
def on_loading_finished(self, ok):
|
||||||
"""Slot for cur_loading_finished. Colors the URL according to ok.
|
"""Slot for cur_loading_finished. Colors the URL according to ok.
|
||||||
@ -658,8 +669,12 @@ class _Url(TextBase):
|
|||||||
Args:
|
Args:
|
||||||
ok: Whether loading finished successfully (True) or not (False).
|
ok: Whether loading finished successfully (True) or not (False).
|
||||||
"""
|
"""
|
||||||
# FIXME: set color to warn if there was an SSL error
|
if ok and not self._ssl_errors:
|
||||||
self.urltype = 'success' if ok else 'error'
|
self.urltype = 'success'
|
||||||
|
elif ok:
|
||||||
|
self.urltype = 'warn'
|
||||||
|
else:
|
||||||
|
self.urltype = 'error'
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def set_url(self, s):
|
def set_url(self, s):
|
||||||
|
@ -61,6 +61,7 @@ class TabbedBrowser(TabWidget):
|
|||||||
cur_progress: Progress of the current tab changed (loadProgress).
|
cur_progress: Progress of the current tab changed (loadProgress).
|
||||||
cur_load_started: Current tab started loading (loadStarted)
|
cur_load_started: Current tab started loading (loadStarted)
|
||||||
cur_load_finished: Current tab finished loading (loadFinished)
|
cur_load_finished: Current tab finished loading (loadFinished)
|
||||||
|
cur_ssl_errors: Current tab encountered SSL errors.
|
||||||
cur_statusbar_message: Current tab got a statusbar message
|
cur_statusbar_message: Current tab got a statusbar message
|
||||||
(statusBarMessage)
|
(statusBarMessage)
|
||||||
cur_url_changed: Current URL changed (urlChanged)
|
cur_url_changed: Current URL changed (urlChanged)
|
||||||
@ -84,6 +85,7 @@ class TabbedBrowser(TabWidget):
|
|||||||
cur_url_changed = pyqtSignal('QUrl')
|
cur_url_changed = pyqtSignal('QUrl')
|
||||||
cur_link_hovered = pyqtSignal(str, str, str)
|
cur_link_hovered = pyqtSignal(str, str, str)
|
||||||
cur_scroll_perc_changed = pyqtSignal(int, int)
|
cur_scroll_perc_changed = pyqtSignal(int, int)
|
||||||
|
cur_ssl_errors = pyqtSignal('QNetworkReply*', 'QList<QSslError>')
|
||||||
hint_strings_updated = pyqtSignal(list)
|
hint_strings_updated = pyqtSignal(list)
|
||||||
shutdown_complete = pyqtSignal()
|
shutdown_complete = pyqtSignal()
|
||||||
quit = pyqtSignal()
|
quit = pyqtSignal()
|
||||||
@ -126,6 +128,7 @@ class TabbedBrowser(TabWidget):
|
|||||||
tab.linkHovered.connect(self._filter.create(self.cur_link_hovered))
|
tab.linkHovered.connect(self._filter.create(self.cur_link_hovered))
|
||||||
tab.loadProgress.connect(self._filter.create(self.cur_progress))
|
tab.loadProgress.connect(self._filter.create(self.cur_progress))
|
||||||
tab.loadFinished.connect(self._filter.create(self.cur_load_finished))
|
tab.loadFinished.connect(self._filter.create(self.cur_load_finished))
|
||||||
|
tab.ssl_errors.connect(self._filter.create(self.cur_ssl_errors))
|
||||||
tab.page().mainFrame().loadStarted.connect(partial(
|
tab.page().mainFrame().loadStarted.connect(partial(
|
||||||
self.on_load_started, tab))
|
self.on_load_started, tab))
|
||||||
tab.loadStarted.connect(self._filter.create(self.cur_load_started))
|
tab.loadStarted.connect(self._filter.create(self.cur_load_started))
|
||||||
|
@ -69,6 +69,7 @@ class WebView(QWebView):
|
|||||||
|
|
||||||
scroll_pos_changed = pyqtSignal(int, int)
|
scroll_pos_changed = pyqtSignal(int, int)
|
||||||
linkHovered = pyqtSignal(str, str, str)
|
linkHovered = pyqtSignal(str, str, str)
|
||||||
|
ssl_errors = pyqtSignal('QNetworkReply*', 'QList<QSslError>')
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
@ -88,6 +89,7 @@ class WebView(QWebView):
|
|||||||
self.signal_cache = SignalCache(uncached=['linkHovered'])
|
self.signal_cache = SignalCache(uncached=['linkHovered'])
|
||||||
self.page_.setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
|
self.page_.setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
|
||||||
self.page_.linkHovered.connect(self.linkHovered)
|
self.page_.linkHovered.connect(self.linkHovered)
|
||||||
|
self.page_.networkAccessManager().sslErrors.connect(self.ssl_errors)
|
||||||
self.linkClicked.connect(self.on_link_clicked)
|
self.linkClicked.connect(self.on_link_clicked)
|
||||||
self.page_.mainFrame().loadStarted.connect(
|
self.page_.mainFrame().loadStarted.connect(
|
||||||
lambda: modeman.maybe_leave('insert', 'load started'))
|
lambda: modeman.maybe_leave('insert', 'load started'))
|
||||||
|
Loading…
Reference in New Issue
Block a user