added DictListItem encapsulating the alarm logic
This commit is contained in:
@ -1,9 +1,8 @@
|
|||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
from PyQt5.QtWidgets import QListWidget, QListWidgetItem
|
from PyQt5.QtWidgets import QListWidget
|
||||||
from PyQt5.QtGui import QIcon, QPixmap, QPainter
|
|
||||||
|
|
||||||
from .theme import VIOLET, GREY4
|
from .dictlistitem import DictListItem
|
||||||
|
|
||||||
|
|
||||||
class DictList(QListWidget):
|
class DictList(QListWidget):
|
||||||
@ -27,8 +26,7 @@ class DictList(QListWidget):
|
|||||||
|
|
||||||
def prepend_item_if_missing(self, key):
|
def prepend_item_if_missing(self, key):
|
||||||
if key not in self.data:
|
if key not in self.data:
|
||||||
itm = QListWidgetItem(key)
|
itm = DictListItem(key)
|
||||||
set_alarm(itm, False)
|
|
||||||
self.prependItem(itm)
|
self.prependItem(itm)
|
||||||
|
|
||||||
def prependItem(self, itm):
|
def prependItem(self, itm):
|
||||||
@ -53,42 +51,12 @@ class DictList(QListWidget):
|
|||||||
|
|
||||||
def set_alarm_by_key(self, key, state):
|
def set_alarm_by_key(self, key, state):
|
||||||
itm = self.findItems(key, Qt.MatchExactly)[0]
|
itm = self.findItems(key, Qt.MatchExactly)[0]
|
||||||
set_alarm(itm, state)
|
itm.set_alarm(state)
|
||||||
|
|
||||||
def set_alarm_by_index(self, index, state):
|
def set_alarm_by_index(self, index, state):
|
||||||
row = index.row()
|
row = index.row()
|
||||||
itm = self.item(row)
|
itm = self.item(row)
|
||||||
set_alarm(itm, state)
|
itm.set_alarm(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)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
49
grum/dictlistitem.py
Normal file
49
grum/dictlistitem.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
from PyQt5.QtCore import Qt
|
||||||
|
from PyQt5.QtWidgets import QListWidgetItem
|
||||||
|
from PyQt5.QtGui import QIcon, QPixmap, QPainter
|
||||||
|
|
||||||
|
from .theme import VIOLET, GREY4
|
||||||
|
|
||||||
|
|
||||||
|
class DictListItem(QListWidgetItem):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.set_alarm(False)
|
||||||
|
|
||||||
|
|
||||||
|
def set_alarm(self, state):
|
||||||
|
self.set_bold(state)
|
||||||
|
self.set_dot(state)
|
||||||
|
|
||||||
|
|
||||||
|
def set_bold(self, state):
|
||||||
|
fnt = self.font()
|
||||||
|
fnt.setBold(state)
|
||||||
|
self.setFont(fnt)
|
||||||
|
|
||||||
|
|
||||||
|
def set_dot(self, state):
|
||||||
|
pixmap = QPixmap(8, 8)
|
||||||
|
pixmap.fill(Qt.transparent)
|
||||||
|
|
||||||
|
if state:
|
||||||
|
draw_dot(pixmap, GREY4, VIOLET)
|
||||||
|
|
||||||
|
icon = QIcon(pixmap)
|
||||||
|
self.setIcon(icon)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def draw_dot(pixmap, pen, brush):
|
||||||
|
painter = QPainter()
|
||||||
|
painter.begin(pixmap)
|
||||||
|
painter.setRenderHint(QPainter.Antialiasing)
|
||||||
|
painter.setPen(pen)
|
||||||
|
painter.setBrush(brush)
|
||||||
|
rect = pixmap.rect()
|
||||||
|
painter.drawEllipse(rect)
|
||||||
|
painter.end()
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user