diff --git a/grum/dictlist.py b/grum/dictlist.py index 1502be5..1e880d2 100644 --- a/grum/dictlist.py +++ b/grum/dictlist.py @@ -1,6 +1,9 @@ from collections import defaultdict from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QListWidget, QListWidgetItem +from PyQt5.QtGui import QIcon, QPixmap, QPainter + +from .theme import VIOLET, GREY4 class DictList(QListWidget): @@ -25,6 +28,7 @@ class DictList(QListWidget): def prepend_item_if_missing(self, key): if key not in self.data: itm = QListWidgetItem(key) + set_alarm(itm, False) self.prependItem(itm) def prependItem(self, itm): @@ -49,19 +53,42 @@ class DictList(QListWidget): def set_alarm_by_key(self, key, state): itm = self.findItems(key, Qt.MatchExactly)[0] - set_bold(itm, state) + set_alarm(itm, state) def set_alarm_by_index(self, index, state): row = index.row() itm = self.item(row) - set_bold(itm, state) + set_alarm(itm, state) +def set_alarm(*args, **kwargs): + set_bold(*args, **kwargs) + set_dot(*args, **kwargs) + + def set_bold(itm, state): fnt = itm.font() fnt.setBold(state) itm.setFont(fnt) +def set_dot(itm, state): + pixmap = QPixmap(8, 8) + pixmap.fill(Qt.transparent) + + if state: + painter = QPainter() + painter.begin(pixmap) + painter.setRenderHint(QPainter.Antialiasing) + painter.setPen(GREY4) + painter.setBrush(VIOLET) + rect = pixmap.rect() + painter.drawEllipse(rect) + painter.end() + + icon = QIcon(pixmap) + itm.setIcon(icon) + +