From 69b01f59626fac8f626bb70d87e41b2b37040eff Mon Sep 17 00:00:00 2001 From: un-pogaz <46523284+un-pogaz@users.noreply.github.com> Date: Fri, 2 Jan 2026 20:31:48 +0100 Subject: [PATCH] Bookshelf: add option to write the texts up to down --- src/calibre/gui2/__init__.py | 1 + src/calibre/gui2/library/bookshelf_view.py | 5 ++++- .../gui2/preferences/look_feel_tabs/bookshelf_view.py | 1 + .../gui2/preferences/look_feel_tabs/bookshelf_view.ui | 11 +++++++++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 3da01ca525..611fca2d28 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -497,6 +497,7 @@ def create_defs(): defs['bookshelf_variable_height'] = True defs['bookshelf_fade_time'] = 400 defs['bookshelf_hover'] = 'shift' + defs['bookshelf_up_to_down'] = False # Migrate beta bookshelf_thumbnail if isinstance(btv := gprefs.get('bookshelf_thumbnail'), bool): diff --git a/src/calibre/gui2/library/bookshelf_view.py b/src/calibre/gui2/library/bookshelf_view.py index 5a58f5c921..8fc59c0474 100644 --- a/src/calibre/gui2/library/bookshelf_view.py +++ b/src/calibre/gui2/library/bookshelf_view.py @@ -1726,6 +1726,9 @@ class BookshelfView(MomentumScrollMixin, QAbstractScrollArea): painter.save() rotate() + if gprefs['bookshelf_up_to_down']: + painter.rotate(180) + text_rect.adjust(max(0, line_rect.width() - 6), 0, 0, 0) painter.setFont(font) painter.drawText(text_rect, Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter, elided_text) painter.restore() @@ -1798,7 +1801,7 @@ class BookshelfView(MomentumScrollMixin, QAbstractScrollArea): return painter.save() painter.translate(rect.left() + rect.width() // 2, rect.top() + rect.height() // 2) - painter.rotate(-90) + painter.rotate(90 if gprefs['bookshelf_up_to_down'] else -90) # Determine text color based on spine background brightness text_color = self.get_contrasting_text_color(spine_color) diff --git a/src/calibre/gui2/preferences/look_feel_tabs/bookshelf_view.py b/src/calibre/gui2/preferences/look_feel_tabs/bookshelf_view.py index dd6a166516..06c1a81b23 100644 --- a/src/calibre/gui2/preferences/look_feel_tabs/bookshelf_view.py +++ b/src/calibre/gui2/preferences/look_feel_tabs/bookshelf_view.py @@ -31,6 +31,7 @@ class BookshelfTab(QTabWidget, LazyConfigWidgetBase, Ui_Form): r('bookshelf_shadow', gprefs) r('bookshelf_variable_height', gprefs) r('bookshelf_fade_time', gprefs) + r('bookshelf_up_to_down', gprefs) r('bookshelf_thumbnail', gprefs, choices=[ (_('Full'), 'full'), diff --git a/src/calibre/gui2/preferences/look_feel_tabs/bookshelf_view.ui b/src/calibre/gui2/preferences/look_feel_tabs/bookshelf_view.ui index 9a0cd57f3e..18065f5287 100644 --- a/src/calibre/gui2/preferences/look_feel_tabs/bookshelf_view.ui +++ b/src/calibre/gui2/preferences/look_feel_tabs/bookshelf_view.ui @@ -51,7 +51,7 @@ - + Cover &thumbnail on the spines: @@ -61,7 +61,7 @@ - + @@ -78,6 +78,13 @@ + + + + &Write the texts up to down + + +