'row and column both refer the qv table. In particular, column is not
the logical column in the book list.'

def select_book(self, row, column):

    item = self.books_table.item(row, column)
    if (item is None):
        return
    book_id = int(self.books_table.item(row, column).data(Qt.UserRole))
    key = self.column_order[column]
    modifiers = int(QApplication.keyboardModifiers())
    if (modifiers in (Qt.CTRL, Qt.SHIFT)):
        self.view.select_rows([book_id])
        em = find_plugin('Edit    Metadata')
        if (em and em.actual_plugin_):
            em.actual_plugin_.edit_metadata(None)
    else:
        self.view.select_cell(self.db.data.id_to_index(book_id), self.view.column_map.index(key))
