summaryrefslogtreecommitdiff
path: root/qutebrowser/mainwindow/messageview.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/mainwindow/messageview.py')
-rw-r--r--qutebrowser/mainwindow/messageview.py34
1 files changed, 19 insertions, 15 deletions
diff --git a/qutebrowser/mainwindow/messageview.py b/qutebrowser/mainwindow/messageview.py
index 58fcb3683..482d9f5e7 100644
--- a/qutebrowser/mainwindow/messageview.py
+++ b/qutebrowser/mainwindow/messageview.py
@@ -25,7 +25,7 @@ from PyQt5.QtCore import pyqtSlot, pyqtSignal, QTimer, Qt
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QSizePolicy
from qutebrowser.config import config, stylesheet
-from qutebrowser.utils import usertypes
+from qutebrowser.utils import usertypes, message
class Message(QLabel):
@@ -74,6 +74,15 @@ class Message(QLabel):
raise ValueError("Invalid level {!r}".format(level))
stylesheet.set_register(self, qss, update=False)
+ @classmethod
+ def from_info(cls, info: message.MessageInfo, parent: QWidget = None) -> "Message":
+ return cls(
+ level=info.level,
+ text=info.text,
+ replace=info.replace,
+ parent=parent,
+ )
+
class MessageView(QWidget):
@@ -119,31 +128,26 @@ class MessageView(QWidget):
self.hide()
self._clear_timer.stop()
- @pyqtSlot(usertypes.MessageLevel, str, str)
- def show_message(
- self,
- level: usertypes.MessageLevel,
- text: str,
- replace: str = None,
- ) -> None:
+ @pyqtSlot(message.MessageInfo)
+ def show_message(self, info: message.MessageInfo) -> None:
"""Show the given message with the given MessageLevel."""
- if text == self._last_text:
+ if info.text == self._last_text:
return
- if replace: # None -> QString() -> ''
- existing = [msg for msg in self._messages if msg.replace == replace]
+ if info.replace is not None:
+ existing = [msg for msg in self._messages if msg.replace == info.replace]
if existing:
assert len(existing) == 1, existing
- assert existing[0].level == level, (existing, level)
- existing[0].setText(text)
+ assert existing[0].level == info.level, (existing, info)
+ existing[0].setText(info.text)
self.update_geometry.emit()
return
- widget = Message(level, text, replace=replace, parent=self)
+ widget = Message.from_info(info)
self._vbox.addWidget(widget)
widget.show()
self._messages.append(widget)
- self._last_text = text
+ self._last_text = info.text
self.show()
self.update_geometry.emit()
if config.val.messages.timeout != 0: