from PyQt4 import QtGui, QtCore
class ViewerItem(QtGui.QListWidgetItem):
def __init__(self, name, parent = None, color = None):
super(ViewerItem, self).__init__(name, parent, QtGui.QListWidgetItem.UserType)
r,g,b = color if color else (0,0,0)
self.set_color(QtGui.QColor(r,g,b))
self.visible = True
self.setChecked()
def toggleVisible(self):
self.visible = not self.visible
self.setChecked()
def setChecked(self):
if self.visible:
self.setCheckState(QtCore.Qt.Checked)
else:
self.setCheckState(QtCore.Qt.Unchecked)
def createMenu(self):
menu = QtGui.QMenu()
colorAction = menu.addAction("Color")
colorAction.setIcon(self.color_icon())
colorAction.command = lambda: self.colorCommand()
return menu
def contextMenu(self, position):
menu = self.createMenu()
action = menu.exec_(position)
if action: action.command()
def colorCommand(self):
color = QtGui.QColorDialog.getColor(self.color)
self.set_color(color)
def color_icon(self):
color_pixmap = QtGui.QPixmap(10,10)
color_pixmap.fill(self.color)
return QtGui.QIcon(color_pixmap)
def set_color(self, color):
if color.isValid():
self.color = color
self.setIcon(self.color_icon())