Selectively queue messages rather than unqueueing.
This commit is contained in:
parent
8ed373423a
commit
f0d1d4ed45
@ -326,7 +326,7 @@ class QuteBrowser(QApplication):
|
|||||||
for e in self._args.command:
|
for e in self._args.command:
|
||||||
if e.startswith(':'):
|
if e.startswith(':'):
|
||||||
logging.debug("Startup cmd {}".format(e))
|
logging.debug("Startup cmd {}".format(e))
|
||||||
self.commandmanager.run_safely(e.lstrip(':'))
|
self.commandmanager.run_safely_init(e.lstrip(':'))
|
||||||
else:
|
else:
|
||||||
logging.debug("Startup URL {}".format(e))
|
logging.debug("Startup URL {}".format(e))
|
||||||
self._opened_urls.append(e)
|
self._opened_urls.append(e)
|
||||||
|
@ -230,3 +230,14 @@ class CommandManager:
|
|||||||
self.run(text, count)
|
self.run(text, count)
|
||||||
except (CommandMetaError, CommandError) as e:
|
except (CommandMetaError, CommandError) as e:
|
||||||
message.error(e)
|
message.error(e)
|
||||||
|
|
||||||
|
@pyqtSlot(str, int)
|
||||||
|
def run_safely_init(self, text, count=None):
|
||||||
|
"""Run a command and display exceptions in the statusbar.
|
||||||
|
|
||||||
|
Contrary to run_safely, error messages are queued so this is more
|
||||||
|
suitable to use while initializing."""
|
||||||
|
try:
|
||||||
|
self.run(text, count)
|
||||||
|
except (CommandMetaError, CommandError) as e:
|
||||||
|
message.error(e, queue=True)
|
||||||
|
@ -64,7 +64,8 @@ class NetworkManager(QNetworkAccessManager):
|
|||||||
return
|
return
|
||||||
for err in errors:
|
for err in errors:
|
||||||
# FIXME we might want to use warn here (non-fatal error)
|
# FIXME we might want to use warn here (non-fatal error)
|
||||||
message.error('SSL error: {}'.format(err.errorString()))
|
message.error('SSL error: {}'.format(err.errorString()),
|
||||||
|
queue=True)
|
||||||
reply.ignoreSslErrors()
|
reply.ignoreSslErrors()
|
||||||
|
|
||||||
def createRequest(self, op, req, outgoing_data):
|
def createRequest(self, op, req, outgoing_data):
|
||||||
|
@ -27,30 +27,30 @@ def instance():
|
|||||||
return QCoreApplication.instance().messagebridge
|
return QCoreApplication.instance().messagebridge
|
||||||
|
|
||||||
|
|
||||||
def error(message, immediate=False):
|
def error(message, queue=False):
|
||||||
"""Display an error message in the statusbar.
|
"""Display an error message in the statusbar.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
message: The message to display.
|
message: The message to display.
|
||||||
immediate: If set, message gets displayed immediately rather than
|
queue: If set, message gets queued rather than being displayed
|
||||||
getting queued.
|
immediately.
|
||||||
"""
|
"""
|
||||||
message = str(message)
|
message = str(message)
|
||||||
logging.error(message)
|
logging.error(message)
|
||||||
instance().error.emit(message, immediate)
|
instance().error.emit(message, queue)
|
||||||
|
|
||||||
|
|
||||||
def info(message, immediate=False):
|
def info(message, queue=False):
|
||||||
"""Display a temporary info message in the statusbar.
|
"""Display a temporary info message in the statusbar.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
message: The message to display.
|
message: The message to display.
|
||||||
immediate: If set, message gets displayed immediately rather than
|
queue: If set, message gets queued rather than being displayed
|
||||||
getting queued.
|
immediately.
|
||||||
"""
|
"""
|
||||||
message = str(message)
|
message = str(message)
|
||||||
logging.info(message)
|
logging.info(message)
|
||||||
instance().info.emit(message, immediate)
|
instance().info.emit(message, queue)
|
||||||
|
|
||||||
|
|
||||||
def text(message):
|
def text(message):
|
||||||
|
@ -181,14 +181,14 @@ class StatusBar(QWidget):
|
|||||||
self._text_pop_timer.start()
|
self._text_pop_timer.start()
|
||||||
self._stack.setCurrentWidget(self.txt)
|
self._stack.setCurrentWidget(self.txt)
|
||||||
|
|
||||||
def _disp_text(self, text, error, immediate=False):
|
def _disp_text(self, text, error, queue=False):
|
||||||
"""Inner logic for disp_error and disp_temp_text.
|
"""Inner logic for disp_error and disp_temp_text.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
text: The message to display.
|
text: The message to display.
|
||||||
error: Whether it's an error message (True) or normal text (False)
|
error: Whether it's an error message (True) or normal text (False)
|
||||||
immediate: If set, message gets displayed immediately rather than
|
queue: If set, message gets queued rather than being displayed
|
||||||
getting queued.
|
immediately.
|
||||||
"""
|
"""
|
||||||
logging.debug("Displaying text: {} (error={})".format(text, error))
|
logging.debug("Displaying text: {} (error={})".format(text, error))
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
@ -197,7 +197,7 @@ class StatusBar(QWidget):
|
|||||||
else now - self._last_text_time)
|
else now - self._last_text_time)
|
||||||
self._last_text_time = now
|
self._last_text_time = now
|
||||||
logging.debug("queue: {} / delta: {}".format(self._text_queue, delta))
|
logging.debug("queue: {} / delta: {}".format(self._text_queue, delta))
|
||||||
if immediate or (not self._text_queue and (
|
if (not queue) or (not self._text_queue and (
|
||||||
delta is None or delta.total_seconds() * 1000.0 > mindelta)):
|
delta is None or delta.total_seconds() * 1000.0 > mindelta)):
|
||||||
# If the queue is empty and we didn't print messages for long
|
# If the queue is empty and we didn't print messages for long
|
||||||
# enough, we can take the short route and display the message
|
# enough, we can take the short route and display the message
|
||||||
@ -219,26 +219,26 @@ class StatusBar(QWidget):
|
|||||||
self._text_pop_timer.start()
|
self._text_pop_timer.start()
|
||||||
|
|
||||||
@pyqtSlot(str, bool)
|
@pyqtSlot(str, bool)
|
||||||
def disp_error(self, text, immediate=False):
|
def disp_error(self, text, queue=False):
|
||||||
"""Display an error in the statusbar.
|
"""Display an error in the statusbar.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
text: The message to display.
|
text: The message to display.
|
||||||
immediate: If set, message gets displayed immediately rather than
|
queue: If set, message gets queued rather than being displayed
|
||||||
getting queued.
|
immediately.
|
||||||
"""
|
"""
|
||||||
self._disp_text(text, True, immediate)
|
self._disp_text(text, True, queue)
|
||||||
|
|
||||||
@pyqtSlot(str, bool)
|
@pyqtSlot(str, bool)
|
||||||
def disp_temp_text(self, text, immediate):
|
def disp_temp_text(self, text, queue):
|
||||||
"""Display a temporary text in the statusbar.
|
"""Display a temporary text in the statusbar.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
text: The message to display.
|
text: The message to display.
|
||||||
immediate: If set, message gets displayed immediately rather than
|
queue: If set, message gets queued rather than being displayed
|
||||||
getting queued.
|
immediately.
|
||||||
"""
|
"""
|
||||||
self._disp_text(text, False, immediate)
|
self._disp_text(text, False, queue)
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def set_text(self, val):
|
def set_text(self, val):
|
||||||
|
@ -308,7 +308,7 @@ class WebView(QWebView):
|
|||||||
if perc < 0:
|
if perc < 0:
|
||||||
raise CommandError("Can't zoom {}%!".format(perc))
|
raise CommandError("Can't zoom {}%!".format(perc))
|
||||||
self.setZoomFactor(float(perc) / 100)
|
self.setZoomFactor(float(perc) / 100)
|
||||||
message.info("Zoom level: {}%".format(perc), immediate=True)
|
message.info("Zoom level: {}%".format(perc))
|
||||||
|
|
||||||
def zoom(self, offset):
|
def zoom(self, offset):
|
||||||
"""Increase/Decrease the zoom level.
|
"""Increase/Decrease the zoom level.
|
||||||
|
Loading…
Reference in New Issue
Block a user