def setTree(self, data): # Format Tuple(Tuple(Column Header, Column Header), Tuple((GlyphName, GlyphAnchors))) self._meta, self._data = data self.headerItem().setText(0, self._meta[0]) self.headerItem().setText(1, self._meta[1]) self.setAlternatingRowColors(True) self.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) for glyph_meta, glyph_anchors in self._data: glyph_name, glyph_wLayers = glyph_meta parent = QtGui.QTreeWidgetItem(self) parent.setText(0, glyph_name) #parent.setFlags(parent.flags() | QtCore.Qt.ItemIsTristate | QtCore.Qt.ItemIsUserCheckable) parent.setToolTip(0, 'Glyph') # - Process data glyph_anchors_gr = defaultdict(list) for layer, anchor in glyph_anchors: glyph_anchors_gr[anchor].append(layer) print glyph_anchors_gr # - Set tree for anchor_name, layer_list in glyph_anchors_gr.iteritems(): child = QtGui.QTreeWidgetItem(parent) child.setData( 0, QtCore.Qt.DecorationRole, QtGui.QColor('LimeGreen') if len(layer_list) == len(glyph_wLayers) else QtGui.QColor('Crimson')) child.setText(0, '; '.join(layer_list)) child.setText(1, anchor_name) child.setToolTip(0, 'Compatibility') child.setToolTip(1, 'Anchor Name')
def setTree(self, data, reset=False): self.blockSignals(True) self.clear() header_row = ['Layer/Zone', 'Position', 'Width', 'Private Name'] self.setHeaderLabels(header_row) for key, value in data.iteritems(): master = QtGui.QTreeWidgetItem(self, [key]) for zoneTuple in value: zoneData = QtGui.QTreeWidgetItem(master, [('B: %s', 'T: %s')[zoneTuple[1] > 0] %zoneTuple[0], zoneTuple[0], zoneTuple[1], zoneTuple[2]]) zoneData.setFlags(zoneData.flags() | QtCore.Qt.ItemIsEditable) self.blockSignals(False)