def setTable(self, data, reset=False): name_row, name_column = [], [] self.blockSignals(True) # - Populate for n, layer in enumerate(sorted(data.keys())): name_row.append(layer) for m, key in enumerate(sorted(data[layer].keys())): name_column.append(key) newitem = QtGui.QTableWidgetItem(str(data[layer][key])) if self.item(n, m) == None or reset: markColor = QtGui.QColor("white") else: if self.item(n, m).text() == newitem.text(): markColor = QtGui.QColor("white") else: markColor = QtGui.QColor("aliceblue") self.setItem(n, m, newitem) self.item(n, m).setBackground(markColor) self.setHorizontalHeaderLabels(name_column) self.setVerticalHeaderLabels(name_row) self.blockSignals(False)
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 refresh(self): # - Init self.glyph = eGlyph() self.wLayers = self.glyph._prepareLayers(pLayers) # - Prepare self.wAnchors = {} self.wAnchorNames = [] for layer in self.wLayers: currAnchors = self.glyph.anchors(layer) self.wAnchors[layer] = currAnchors self.wAnchorNames.append([anchor.name for anchor in currAnchors]) self.edt_glyphName.setText(self.glyph.name) self.lst_anchors.clear() # - Build List and style it self.lst_anchors.addItems(list(set(sum(self.wAnchorNames, [])))) for index in range(self.lst_anchors.count): currItem = self.lst_anchors.item(index) checkLayers = [ currItem.text() in name for name in self.wAnchorNames ] layer_order = 'Layer Order: ' + ', '.join(self.wLayers) toolTip = 'Anchor present in all selected layers.\n\n' + layer_order if all( checkLayers ) else 'Anchor NOT present in all selected layers.\n\n' + layer_order currItem.setData( QtCore.Qt.DecorationRole, QtGui.QColor('LimeGreen' if all(checkLayers) else 'Crimson')) currItem.setData(QtCore.Qt.ToolTipRole, toolTip)
def refresh(self): # - Init layerBanList = ['#', 'img'] self.glyph = eGlyph() # - Prepare self.edt_glyphName.setText(eGlyph().name) self.selection = self.glyph.layer().name self.lst_layers.clear() # - Build List and style it self.lst_layers.addItems( sorted([ layer.name for layer in self.glyph.layers() if all([item not in layer.name for item in layerBanList]) ])) for index in range(self.lst_layers.count): currItem = self.lst_layers.item(index) currLayer = self.glyph.layer(currItem.text()) control = (currLayer.isService, currLayer.isMasterLayer, currLayer.isMaskLayer, currLayer.isWireframe) controlColor = [int(item) * 255 for item in control[:-1] ] + [150 - int(control[-1]) * 100] text = 'Service Master Mask Wireframe'.split(' ') controlText = ' | '.join( [text[pos] for pos in range(len(text)) if control[pos]]) currItem.setData(QtCore.Qt.DecorationRole, QtGui.QColor(*controlColor)) currItem.setData(QtCore.Qt.ToolTipRole, controlText)
def __init__(self): super(GroupTableView, self).__init__() # - Init self.flag_valueChanged = QtGui.QColor('powderblue') self.kern_pos_mods = ['KernLeft', 'KernRight', 'KernBothSide'] # - Behavior self.itemChanged.connect(self.markChange) # - Styling self.verticalHeader().hide() self.horizontalHeader().setStretchLastSection(True) self.setAlternatingRowColors(True) self.setShowGrid(False) #self.resizeRowsToContents() self.setSortingEnabled(True)
def __init__(self): super(QDropGuide, self).__init__() # -- Editi fileds self.edt_guideName = QtGui.QLineEdit() self.edt_guideName.setPlaceholderText('New Guideline') self.edt_guideTag = GLineEdit() self.edt_guideTag.setPlaceholderText('Tag') # -- Combo box self.cmb_select_V = QtGui.QComboBox() self.cmb_select_H = QtGui.QComboBox() self.cmb_select_color = QtGui.QComboBox() self.cmb_select_V.addItems(['BBox width', 'Adv. width']) self.cmb_select_H.addItems([ 'BBox height', 'X-Height', 'Caps Height', 'Ascender', 'Descender', 'Adv. height' ]) colorNames = QtGui.QColor.colorNames() for i in range(len(colorNames)): self.cmb_select_color.addItem(colorNames[i]) self.cmb_select_color.setItemData(i, QtGui.QColor(colorNames[i]), QtCore.Qt.DecorationRole) self.cmb_select_color.setCurrentIndex(colorNames.index('red')) self.cmb_select_color.setMinimumWidth(40) self.edt_guideName.setMinimumWidth(40) self.edt_guideTag.setMinimumWidth(40) # -- SpinBox self.spb_prc_V = QtGui.QSpinBox() self.spb_prc_V.setMaximum(100) self.spb_prc_V.setSuffix('%') self.spb_prc_V.setMinimumWidth(45) self.spb_prc_H = QtGui.QSpinBox() self.spb_prc_H.setMaximum(100) self.spb_prc_H.setSuffix('%') self.spb_prc_H.setMinimumWidth(45) self.spb_unit_V = QtGui.QSpinBox() self.spb_unit_V.setMaximum(100) self.spb_unit_V.setMinimum(-100) self.spb_unit_V.setSuffix(' U') self.spb_unit_V.setMinimumWidth(45) self.spb_unit_H = QtGui.QSpinBox() self.spb_unit_H.setMaximum(100) self.spb_unit_H.setMinimum(-100) self.spb_unit_H.setSuffix(' U') self.spb_unit_H.setMinimumWidth(45) # -- Button self.btn_dropGuide = QtGui.QPushButton('&Drop') self.btn_dropFlipX = QtGui.QPushButton('Drop: Flip &X') self.btn_dropFlipY = QtGui.QPushButton('Drop: Flip &Y') self.btn_dropLayer_V = QtGui.QPushButton('Vertical') self.btn_dropLayer_H = QtGui.QPushButton('Horizontal') self.btn_dropGuide.setToolTip( 'Drop guideline between any two selected nodes.\nIf single node is selected a vertical guide is\ndropped (using the italic angle if present).' ) self.btn_dropFlipX.setToolTip( 'Drop flipped guideline between any two selected nodes.') self.btn_dropFlipY.setToolTip( 'Drop flipped guideline between any two selected nodes.') self.btn_dropGuide.clicked.connect(lambda: self.drop_guide_nodes( (1, 1))) self.btn_dropFlipX.clicked.connect(lambda: self.drop_guide_nodes( (-1, 1))) self.btn_dropFlipY.clicked.connect(lambda: self.drop_guide_nodes( (1, -1))) self.btn_dropLayer_V.clicked.connect(self.drop_guide_V) self.btn_dropLayer_H.clicked.connect(self.drop_guide_H) # - Build self.addWidget(QtGui.QLabel('Name:'), 1, 0, 1, 4) self.addWidget(QtGui.QLabel('Tag:'), 1, 4, 1, 4) self.addWidget(QtGui.QLabel('Color:'), 1, 8, 1, 4) self.addWidget(self.edt_guideName, 2, 0, 1, 4) self.addWidget(self.cmb_select_color, 2, 8, 1, 4) self.addWidget(self.edt_guideTag, 2, 4, 1, 4) self.addWidget(QtGui.QLabel('Selected Nodes:'), 3, 0, 1, 9) self.addWidget(self.btn_dropGuide, 4, 0, 1, 4) self.addWidget(self.btn_dropFlipX, 4, 4, 1, 4) self.addWidget(self.btn_dropFlipY, 4, 8, 1, 4) self.addWidget(QtGui.QLabel('Glyph Layer:'), 5, 0, 1, 9) self.addWidget(self.cmb_select_V, 6, 0, 1, 4) self.addWidget(self.spb_prc_V, 6, 4, 1, 2) self.addWidget(self.spb_unit_V, 6, 6, 1, 2) self.addWidget(self.btn_dropLayer_V, 6, 8, 1, 4) self.addWidget(self.cmb_select_H, 7, 0, 1, 4) self.addWidget(self.spb_prc_H, 7, 4, 1, 2) self.addWidget(self.spb_unit_H, 7, 6, 1, 2) self.addWidget(self.btn_dropLayer_H, 7, 8, 1, 4)
def markChange(self, item): item.setBackground(QtGui.QColor('powderblue'))
def markChange(self, item): item.setText(0, ('B: %s', 'T: %s')[float(item.text(2)) > 0] %item.text(1)) for col in range(item.columnCount()): item.setBackground(col, QtGui.QColor('powderblue'))
def markChange(self, item): print item.setBackground(QtGui.QColor("aliceblue"))
def __init__(self, data): super(trTreeView, self).__init__() # - Init self.flag_valueChanged = QtGui.QColor('powderblue')