43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
"""BMStatusBar class definition"""
|
|
|
|
from time import time
|
|
|
|
from qtpy import QtWidgets
|
|
|
|
|
|
class BMStatusBar(QtWidgets.QStatusBar):
|
|
"""Status bar with queue and priorities"""
|
|
duration = 10000
|
|
deleteAfter = 60
|
|
|
|
def __init__(self, parent=None):
|
|
super(BMStatusBar, self).__init__(parent)
|
|
self.important = []
|
|
self.timer = self.startTimer(BMStatusBar.duration)
|
|
self.iterator = 0
|
|
|
|
def timerEvent(self, event): # pylint: disable=unused-argument
|
|
"""an event handler which allows to queue and prioritise messages to
|
|
show in the status bar, for example if many messages come very quickly
|
|
after one another, it adds delays and so on"""
|
|
while len(self.important) > 0:
|
|
self.iterator += 1
|
|
try:
|
|
if (
|
|
self.important[self.iterator][1]
|
|
+ BMStatusBar.deleteAfter < time()
|
|
):
|
|
del self.important[self.iterator]
|
|
self.iterator -= 1
|
|
continue
|
|
except IndexError:
|
|
self.iterator = -1
|
|
continue
|
|
self.showMessage(self.important[self.iterator][0], 0)
|
|
break
|
|
|
|
def addImportant(self, message):
|
|
self.important.append([message, time()])
|
|
self.iterator = len(self.important) - 2
|
|
self.timerEvent(None)
|