From 0e64b0c886f84a1b069164816b8fde226470f3d9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 5 Aug 2013 14:08:54 +0530 Subject: [PATCH] Make spacing between covers adjustable --- src/calibre/gui2/__init__.py | 1 + src/calibre/gui2/library/alternate_views.py | 12 ++- src/calibre/gui2/preferences/look_feel.py | 1 + src/calibre/gui2/preferences/look_feel.ui | 94 +++++++++++---------- 4 files changed, 61 insertions(+), 47 deletions(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 9c28b0ebe9..bec9a3177c 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -115,6 +115,7 @@ defs['cover_grid_width'] = 0 defs['cover_grid_height'] = 0 defs['cover_grid_color'] = (80, 80, 80) defs['cover_grid_cache_size'] = 200 +defs['cover_grid_spacing'] = 0 del defs # }}} diff --git a/src/calibre/gui2/library/alternate_views.py b/src/calibre/gui2/library/alternate_views.py index 0b3fc86b0a..260b2460ea 100644 --- a/src/calibre/gui2/library/alternate_views.py +++ b/src/calibre/gui2/library/alternate_views.py @@ -368,11 +368,18 @@ class CoverDelegate(QStyledItemDelegate): width *= self.parent().logicalDpiX() * CM_TO_INCH self.cover_size = QSize(width, height) self.item_size = self.cover_size + QSize(8, 8) - self.spacing = max(10, min(50, int(0.1 * width))) + self.calculate_spacing() self.animation.setStartValue(1.0) self.animation.setKeyValueAt(0.5, 0.5) self.animation.setEndValue(1.0) + def calculate_spacing(self): + spc = self.original_spacing = gprefs['cover_grid_spacing'] + if spc < 0.1: + self.spacing = max(10, min(50, int(0.1 * self.original_width))) + else: + self.spacing = self.parent().logicalDpiX() * CM_TO_INCH * spc + def sizeHint(self, option, index): return self.item_size @@ -479,6 +486,9 @@ class GridView(QListView): self.delegate.set_dimensions() self.setSpacing(self.delegate.spacing) self.delegate.cover_cache.clear() + if gprefs['cover_grid_spacing'] != self.delegate.original_spacing: + self.delegate.calculate_spacing() + self.setSpacing(self.delegate.spacing) self.set_color() self.delegate.cover_cache.set_limit(gprefs['cover_grid_cache_size']) diff --git a/src/calibre/gui2/preferences/look_feel.py b/src/calibre/gui2/preferences/look_feel.py index e0bd8ead36..80521abf9f 100644 --- a/src/calibre/gui2/preferences/look_feel.py +++ b/src/calibre/gui2/preferences/look_feel.py @@ -113,6 +113,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): r('cover_grid_width', gprefs) r('cover_grid_height', gprefs) r('cover_grid_cache_size', gprefs) + r('cover_grid_spacing', gprefs) r('cover_flow_queue_length', config, restart_required=True) r('cover_browser_reflections', gprefs) diff --git a/src/calibre/gui2/preferences/look_feel.ui b/src/calibre/gui2/preferences/look_feel.ui index 9e4851d73e..d704e1a214 100644 --- a/src/calibre/gui2/preferences/look_feel.ui +++ b/src/calibre/gui2/preferences/look_feel.ui @@ -231,8 +231,8 @@ Cover Grid - - + + @@ -272,6 +272,9 @@ The height of displayed covers + + Automatic + cm @@ -305,13 +308,16 @@ - + Background color for the cover grid: + + cover_grid_color_button + @@ -352,52 +358,48 @@ - - - - - - Number of covers to cache in &memory: - - - opt_cover_grid_cache_size - - - - - - - 3000 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + + + + Number of covers to cache in &memory: + + + opt_cover_grid_cache_size + + - - - - Qt::Vertical + + + + 3000 - - - 20 - 355 - + + + + + + &Spacing between covers: - + + opt_cover_grid_spacing + + + + + + + The spacing between covers. A value of zero means calculate automatically based on cover size. + + + Automatic + + + cm + + + 1 + +