def rowCount(self, index=QtCore.QModelIndex()): item = self._get_item(index) if item is None: return self.root.children_count return item.children_count
def index(self, row, column, parent=QtCore.QModelIndex()): if column != 0: return QtCore.QModelIndex() if not parent.isValid(): parent_item = self.root else: parent_item = self._get_item(parent) if parent_item is None: return QtCore.QModelIndex() child_item = parent_item.child(row) if child_item: return self._make_index(row, column, child_item) else: return QtCore.QModelIndex()
def parent(self, index=None): if index is None: # overloaded QtCore.QObject.parent() return QtCore.QObject.parent(self) item = self._get_item(index) if item is None: return QtCore.QModelIndex() return self._make_index(item.row, item.column, item.parent)
def move_artist(self, artist, row): """Move an artist before the entry in row Row could be the end of the list (-> put it at the end) """ if len(self.artists) < 2: # can't rearrange lenght 0 or 1 list return try: loc = self.artists.index(artist) except ValueError: return dest = row if not self.beginMoveRows(QtCore.QModelIndex(), loc, loc, QtCore.QModelIndex(), dest): return if dest >= loc: row -= 1 self.artists.pop(loc) self.artists.insert(row, artist) self._update_zorder() self.endMoveRows()
def add_artist(self, row, artist): """Add a new artist""" self.beginInsertRows(QtCore.QModelIndex(), row, row) self.artists.insert(row, artist) self.endInsertRows() self.rowsInserted.emit(self.index(row), row, row)
def flags(self, index=QtCore.QModelIndex()): item = self._get_item(index) if item is None: return Qt.NoItemFlags else: return item.flags