'Return the id of the \'next\' row (i.e. the first unselected row after
the current row).'

@property
def next_id(self):

    ci = self.currentIndex()
    if (not ci.isValid()):
        return None
    selected_rows = frozenset([i.row() for i in self.selectedIndexes() if i.isValid()])
    column = ci.column()
    for i in xrange((ci.row() + 1), self.row_count()):
        if (i in selected_rows):
            continue
        try:
            return self.model().id(self.model().index(i, column))
        except:
            pass
    for i in xrange((ci.row() - 1), (-1), (-1)):
        if (i in selected_rows):
            continue
        try:
            return self.model().id(self.model().index(i, column))
        except:
            pass
    return None
