'Actually fill in the left-hand pane from the information in the
selected column of the selected book'

def _refresh(self, book_id, key):

    if ((key is None) or (not self.fm[key]['is_category'])):
        if (self.current_key is None):
            self.indicate_no_items()
            return
        key = self.current_key
    label_text = _('&Item:    {0}    ({1})')
    if self.is_pane:
        label_text = label_text.replace('&', '')
    self.items_label.setText(label_text.format(self.fm[key]['name'], key))
    self.items.blockSignals(True)
    self.items.clear()
    self.books_table.setRowCount(0)
    mi = self.db.get_metadata(book_id, index_is_id=True, get_user_categories=False)
    vals = mi.get(key, None)
    if vals:
        self.no_valid_items = False
        if (self.fm[key]['datatype'] == 'rating'):
            if self.fm[key]['display'].get('allow_half_stars', False):
                vals = unicode((vals / 2.0))
            else:
                vals = unicode((vals / 2))
        if (not isinstance(vals, list)):
            vals = [vals]
        vals.sort(key=sort_key)
        for v in vals:
            a = QListWidgetItem(v)
            self.items.addItem(a)
        self.items.setCurrentRow(0)
        self.current_book_id = book_id
        self.current_key = key
        self.fill_in_books_box(vals[0])
    else:
        self.indicate_no_items()
    self.items.blockSignals(False)
