def parent(self, item): if not item.isValid(): return QtCore.QModelIndex() item = item.internalPointer() parent_item = item.parent() if (parent_item == self.root_item): return QtCore.QModelIndex() index = self.createIndex(parent_item.row(), 0, parent_item) parent_item.index = index return index
def parent(self, index): if not index.isValid(): return QtCore.QModelIndex() tp, idx = index.internalPointer() if tp == 'group': return QtCore.QModelIndex() elif tp == 'cluster': # Get groupidx from clusteridx (=idx). groupidx = self.cluster_groups[idx] return self.createIndex(groupidx, 0, ('group', groupidx)) return QtCore.QModelIndex()
def index(self, row, column, parent=None): if parent is None: parent = self.root_item.index if not self.hasIndex(row, column, parent): return QtCore.QModelIndex() if not parent.isValid(): parent_item = self.root_item else: parent_item = parent.internalPointer() child_item = parent_item.child(row) if child_item: index = self.createIndex(row, column, child_item) child_item.index = index return index else: return QtCore.QModelIndex()
def __init__(self, parent=None, data=None): """data is an OrderedDict""" self.parent_item = parent self.index = QtCore.QModelIndex() self.children = [] # by default: root if data is None: data = OrderedDict(name='root') self.item_data = data
def index(self, row, column, parent=None): if parent is None: parent = QtCore.QModelIndex() data = parent.internalPointer() if data is None: return self.createIndex(row, column, ('group', row)) else: tp, idx = data assert tp == 'cluster' return self.createIndex(row, column, ('cluster', idx))
def rowCount(self, parent=None): if parent is None: parent = QtCore.QModelIndex() if parent.column() > 0: return 0 if not parent.isValid(): parent_item = self.root_item else: parent_item = parent.internalPointer() return parent_item.rowCount()
def __init__(self, group_sizes={}, cluster_groups=None): """ Arguments: * group_sizes: a dictionary {groupidx: nclusters} that gives the number of clusters in each group. * cluster_groups: an object such that cluster_groups[clusteridx] returns the groupidx that contains that cluster. """ QtCore.QAbstractItemModel.__init__(self) self.group_sizes = group_sizes self.cluster_groups = cluster_groups self.beginInsertRows(QtCore.QModelIndex(), 0, len(self.group_sizes)) self.endInsertRows()
def columnCount(self, parent=None): if parent is None: parent = QtCore.QModelIndex() if not parent.isValid(): return len(self.headers) return parent.internalPointer().columnCount()