def data(model, qtindex, role=Qt.DisplayRole, **kwargs): """ Depending on the role, returns either data or how to display data Returns the data stored under the given role for the item referred to by the index. Note: If you do not have a value to return, return None """ if not qtindex.isValid(): return None flags = model.flags(qtindex) #row = qtindex.row() col = qtindex.column() node = qtindex.internalPointer() if model.col_level_list[col] != node.get_level(): return QVariantHack() type_ = model._get_type(col) #if row >= model.rowCount(): # # Yuck. # print('[item_model] Yuck. row=%r excedes rowCount=%r' % # (row, model.rowCount())) # return QVariantHack() #if role == Qt.SizeHintRole: # #printDBG('REQUEST QSIZE FOR: ' + qtype.ItemDataRoles[role]) # return QtCore.QSize(64, 64) # # Specify Text Alignment Role if role == Qt.TextAlignmentRole: if type_ in qtype.QT_IMAGE_TYPES: value = Qt.AlignRight | Qt.AlignVCenter elif type_ in qtype.QT_BUTTON_TYPES: value = Qt.AlignRight | Qt.AlignVCenter elif type_ in ut.VALID_FLOAT_TYPES: value = Qt.AlignRight | Qt.AlignVCenter else: value = Qt.AlignHCenter | Qt.AlignVCenter return value # # Specify Background Rule elif role == Qt.BackgroundRole: value = model._get_bgrole_value(qtindex) if value is not None: return value if flags & Qt.ItemIsEditable: # Editable fields are colored return QVariantHack(model.EditableItemColor) elif flags & Qt.ItemIsUserCheckable: # Checkable color depends on the truth value data = model._get_data(qtindex, **kwargs) if data: return QVariantHack(model.TrueItemColor) else: return QVariantHack(model.FalseItemColor) else: pass # # Specify Foreground Role elif role == Qt.ForegroundRole: if flags & Qt.ItemIsEditable: return QtGui.QBrush(QtGui.QColor(0, 0, 0)) # Specify Decoration Role (superceded by thumbdelegate) # elif role == Qt.DecorationRole and type_ in qtype.QT_IMAGE_TYPES: # Specify CheckState Role: if role == Qt.CheckStateRole: if flags & Qt.ItemIsUserCheckable: data = model._get_data(qtindex, **kwargs) return Qt.Checked if data else Qt.Unchecked # # Return the data to edit or display elif role in (Qt.DisplayRole, Qt.EditRole): # For types displayed with custom delegates do not cast data into a # qvariant. This includes PIXMAP, BUTTON, and COMBO if type_ in qtype.QT_DELEGATE_TYPES: data = model._get_data(qtindex, **kwargs) #print(data) return data else: # Display data with default delegate by casting to a qvariant data = model._get_data(qtindex, **kwargs) value = qtype.cast_into_qt(data) return value else: #import builtins #role_name = qtype.ItemDataRoles[role] #builtins.print('UNHANDLED ROLE=%r' % role_name) pass # else return None return QVariantHack()
def rgb_to_qbrush(rgb): return QtGui.QBrush(rgb_to_qcolor(rgb))