From c1fd349e1064df127814bed72ea4d0d11a23de82 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 3 May 2010 21:03:09 -0600 Subject: [PATCH] Fix display or custom columns of type rating in Tag Browser --- src/calibre/gui2/__init__.py | 5 ++++- src/calibre/gui2/dialogs/config/__init__.py | 2 +- src/calibre/library/custom_columns.py | 2 ++ src/calibre/library/database2.py | 4 +++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index c8b2a47b0e..876b2cc74c 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -184,11 +184,14 @@ class MessageBox(QMessageBox): -def warning_dialog(parent, title, msg, det_msg='', show=False): +def warning_dialog(parent, title, msg, det_msg='', show=False, + show_copy_button=True): d = MessageBox(QMessageBox.Warning, 'WARNING: '+title, msg, QMessageBox.Ok, parent, det_msg) d.setEscapeButton(QMessageBox.Ok) d.setIconPixmap(QPixmap(I('dialog_warning.svg'))) + if not show_copy_button: + d.cb.setVisible(False) if show: return d.exec_() return d diff --git a/src/calibre/gui2/dialogs/config/__init__.py b/src/calibre/gui2/dialogs/config/__init__.py index 731c7b7f12..e9f551af48 100644 --- a/src/calibre/gui2/dialogs/config/__init__.py +++ b/src/calibre/gui2/dialogs/config/__init__.py @@ -831,7 +831,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog): warning_dialog(self, _('Must restart'), _('The changes you made require that Calibre be ' 'restarted. Please restart as soon as practical.'), - show=True) + show=True, show_copy_button=False) self.parent.must_restart_before_config = True QDialog.accept(self) diff --git a/src/calibre/library/custom_columns.py b/src/calibre/library/custom_columns.py index 8a20e66a60..e721a825c8 100644 --- a/src/calibre/library/custom_columns.py +++ b/src/calibre/library/custom_columns.py @@ -145,6 +145,8 @@ class CustomColumns(object): if v['normalized']: tn = 'custom_column_{0}'.format(i) self.tag_browser_categories[tn] = [v['label'], 'value'] + if v['datatype'] == 'rating': + self.tag_browser_formatters[tn] = lambda x:u'\u2605'*int(round(x/2.)) def get_custom(self, idx, label=None, num=None, index_is_id=False): diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 729c531897..8e51143ef2 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -127,6 +127,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): 'authors' : ['author', 'name'], 'news' : ['news', 'name'], } + self.tag_browser_formatters = {} self.connect() self.is_case_sensitive = not iswindows and not isosx and \ @@ -632,7 +633,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): else: icon = icon_map['*custom'] tooltip = self.custom_column_label_map[category]['name'] - categories[category] = [Tag(r[1], count=r[2], id=r[0], icon=icon, tooltip = tooltip) + formatter = self.tag_browser_formatters.get(tn, lambda x: x) + categories[category] = [Tag(formatter(r[1]), count=r[2], id=r[0], icon=icon, tooltip = tooltip) for r in data if r[2] > 0] categories['format'] = [] for fmt in self.conn.get('SELECT DISTINCT format FROM data'):