# -*- encoding: utf-8 -*-
import html
from qtpy import QtWidgets
from qtpy.QtCore import Qt
from .escapable_qlist_widget import EscapableQListWidget
class UniqueLabelQListWidget(EscapableQListWidget):
def mousePressEvent(self, event):
super(UniqueLabelQListWidget, self).mousePressEvent(event)
if not self.indexAt(event.pos()).isValid():
self.clearSelection()
def findItemByLabel(self, label):
for row in range(self.count()):
item = self.item(row)
if item.data(Qt.UserRole) == label:
return item
def createItemFromLabel(self, label):
if self.findItemByLabel(label):
raise ValueError("Item for label '{}' already exists".format(label))
item = QtWidgets.QListWidgetItem()
item.setData(Qt.UserRole, label)
return item
def setItemLabel(self, item, label, color=None):
qlabel = QtWidgets.QLabel()
if color is None:
qlabel.setText("{}".format(label))
else:
qlabel.setText(
'{} ●'.format(
html.escape(label), *color
)
)
qlabel.setAlignment(Qt.AlignBottom)
item.setSizeHint(qlabel.sizeHint())
self.setItemWidget(item, qlabel)