def data(self, index, role): item = index.internalPointer() col = index.column() # group item if type(item) == GroupItem: if col == 0: if role == QtCore.Qt.DisplayRole: return str(item.name()) # color elif col == self.columnCount() - 1: if role == QtCore.Qt.BackgroundRole: if item.color() >= 0: color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(*color) elif role == QtCore.Qt.DisplayRole: return "" # channel item if type(item) == ChannelItem: # name if col == 0: if role == QtCore.Qt.DisplayRole: return str(item.name()) elif role == QtCore.Qt.BackgroundRole: if item.bgcolor is None: return elif item.bgcolor == 'candidate': color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(color[0], color[1], color[2], 90) elif item.bgcolor == 'target': # return QtGui.QColor(177, 177, 177, 255) color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(color[0], color[1], color[2], 255) elif role == QtCore.Qt.ForegroundRole: if item.bgcolor is None: return QtGui.QColor(177, 177, 177, 255) elif item.bgcolor == 'target': return QtGui.QColor(0, 0, 0, 255) # color elif col == self.columnCount() - 1: if role == QtCore.Qt.BackgroundRole: color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(*color) # default if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: return item.data(col) if role == QtCore.Qt.ForegroundRole: return QtGui.QColor(177, 177, 177, 255)
def change_color_callback(self, checked=None): item = self.current_item initial_color = item.color() if initial_color >= 0: initial_color = 255 * COLORMAP[initial_color] initial_color = QtGui.QColor(*initial_color) color = QtGui.QColorDialog.getColor(initial_color) else: color = QtGui.QColorDialog.getColor() # return if the user canceled if not color.isValid(): return # get the RGB values of the chosen color rgb = np.array(color.getRgbF()[:3]).reshape((1, -1)) # take the closest color in the palette color = np.argmin(np.abs(COLORMAP[1:, :] - rgb).sum(axis=1)) + 1 # Change the color and emit the signal. if isinstance(item, ChannelItem): self.change_channel_color(item.channelidx(), color) elif isinstance(item, GroupItem): self.change_group_color(item.groupidx(), color)
def data(self, index, role): item = index.internalPointer() col = index.column() # group item if type(item) == GroupItem: if col == 0: if role == QtCore.Qt.DisplayRole: return str(item.name()) # quality elif col == 1: if role == QtCore.Qt.TextAlignmentRole: return QtCore.Qt.AlignRight if role == QtCore.Qt.DisplayRole: return #"%." % item.quality() # spkcount elif col == 2: if role == QtCore.Qt.TextAlignmentRole: return QtCore.Qt.AlignRight if role == QtCore.Qt.DisplayRole: return str(item.spkcount()) # color elif col == self.columnCount() - 1: if role == QtCore.Qt.BackgroundRole: if item.color() >= 0: color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(*color) elif role == QtCore.Qt.DisplayRole: return "" # cluster item if type(item) == ClusterItem: # clusteridx if col == 0: if role == QtCore.Qt.DisplayRole: return str(item.clusteridx()) elif role == QtCore.Qt.BackgroundRole: if item.bgcolor is None: return elif item.bgcolor == 'candidate': color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(color[0], color[1], color[2], 90) elif item.bgcolor == 'target': # return QtGui.QColor(177, 177, 177, 255) color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(color[0], color[1], color[2], 255) elif role == QtCore.Qt.ForegroundRole: if item.bgcolor is None: return QtGui.QColor(177, 177, 177, 255) elif item.bgcolor == 'target': return QtGui.QColor(0, 0, 0, 255) # quality elif col == 1: if role == QtCore.Qt.TextAlignmentRole: return QtCore.Qt.AlignRight elif role == QtCore.Qt.DisplayRole: return "%.3f" % item.quality() elif role == QtCore.Qt.BackgroundRole: if item.bgcolor is None: return elif item.bgcolor == 'candidate': color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(color[0], color[1], color[2], 90) elif item.bgcolor == 'target': color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(color[0], color[1], color[2], 255) # return QtGui.QColor(177, 177, 177, 255) elif role == QtCore.Qt.ForegroundRole: if item.bgcolor is None: return QtGui.QColor(177, 177, 177, 255) elif item.bgcolor == 'target': return QtGui.QColor(0, 0, 0, 255) # spkcount elif col == 2: if role == QtCore.Qt.TextAlignmentRole: return QtCore.Qt.AlignRight if role == QtCore.Qt.DisplayRole: return "%d" % item.spkcount() elif role == QtCore.Qt.BackgroundRole: if item.bgcolor is None: return elif item.bgcolor == 'candidate': color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(color[0], color[1], color[2], 90) elif item.bgcolor == 'target': # return QtGui.QColor(177, 177, 177, 255) color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(color[0], color[1], color[2], 255) elif role == QtCore.Qt.ForegroundRole: if item.bgcolor is None: return QtGui.QColor(177, 177, 177, 255) elif item.bgcolor == 'target': return QtGui.QColor(0, 0, 0, 255) # color elif col == self.columnCount() - 1: if role == QtCore.Qt.BackgroundRole: color = np.array(COLORMAP[item.color()]) * 255 return QtGui.QColor(*color) # default if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: return item.data(col) if role == QtCore.Qt.ForegroundRole: return QtGui.QColor(177, 177, 177, 255)