Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class NewItemProxyModel(QtGui.QAbstractProxyModel):
- def __init__(self, new, parent=None, *args):
- super(NewItemProxyModel, self).__init__(parent, *args)
- self.__element__ = new
- def setSourceModel(self, model):
- self.beginResetModel()
- QtGui.QAbstractProxyModel.setSourceModel(self, model)
- model.dataChanged.connect(self.sourceDataChanged)
- model.modelReset.connect(self.sourceModelReset)
- # required for filtering/sorting
- model.rowsInserted.connect(self.sourceRowsInserted)
- model.rowsRemoved.connect(self.sourceRowsRemoved)
- model.rowsAboutToBeInserted.connect(self.sourceRowsAboutToBeInserted)
- model.rowsAboutToBeRemoved.connect(self.sourceRowsAboutToBeRemoved)
- model.layoutAboutToBeChanged.connect(self.sourceLayoutAboutToBeChanged)
- model.layoutChanged.connect(self.sourceLayoutChanged)
- self.endResetModel()
- # ...
- def mapToSource(self, proxy_index):
- if not proxy_index.isValid():
- return QtCore.QModelIndex()
- if proxy_index.row() == 0:
- # return self.createIndex(proxy_index.row(), proxy_index.column(), proxy_index.parent())
- return self.createIndex(proxy_index.row(), proxy_index.column())
- else:
- return self.sourceModel().index(proxy_index.row() - 1, proxy_index.column())
- # return self.sourceModel().createIndex(proxy_index.row() - 1, proxy_index.column(), proxy_index.internalPointer())
- def mapFromSource(self, source_index):
- if not source_index.isValid():
- return QtCore.QModelIndex()
- return self.index(source_index.row() + 1, source_index.column())
- # return self.createIndex(source_index.row() + 1, source_index.column(), source_index.internalPointer())
- def rowCount(self, parent=QtCore.QModelIndex()):
- return self.sourceModel().rowCount() + 1
- def data(self, index, role=QtCore.Qt.DisplayRole):
- if index.isValid():
- if index.row() == 0:
- if role == QtCore.Qt.DisplayRole: # or role == QtCore.Qt.EditRole:
- value = '<new %s>' % (self.__element__.name, )
- return QtCore.QVariant(value)
- else:
- if role == QtCore.Qt.DisplayRole: # or role == QtCore.Qt.EditRole:
- value = self.mapToSource(index).data(role)
- return QtCore.QVariant(value)
- return QtCore.QVariant()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement