From 431d55dbca85d8747cd9cf77eb094065c46e6916 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 24 Dec 2019 20:24:23 +0530 Subject: [PATCH] Book details: Add an option in Preferences->Look & feel->Book details to show a heading for the comments in the book details panel See #1855942 ([Enhancements] Comments and select text with keyboard) --- src/calibre/ebooks/metadata/book/render.py | 11 +- src/calibre/gui2/__init__.py | 2 +- src/calibre/gui2/book_details.py | 7 +- src/calibre/gui2/preferences/look_feel.py | 2 + src/calibre/gui2/preferences/look_feel.ui | 154 ++++++++++++--------- 5 files changed, 105 insertions(+), 71 deletions(-) diff --git a/src/calibre/ebooks/metadata/book/render.py b/src/calibre/ebooks/metadata/book/render.py index e25a57688e..7dd08428a3 100644 --- a/src/calibre/ebooks/metadata/book/render.py +++ b/src/calibre/ebooks/metadata/book/render.py @@ -87,7 +87,11 @@ def author_search_href(which, title=None, author=None): return func(key, title=title, author=author), tt -def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=True, rating_font='Liberation Serif', rtl=False): +def mi_to_html( + mi, + field_list=None, default_author_link=None, use_roman_numbers=True, + rating_font='Liberation Serif', rtl=False, comments_heading_pos='hide' + ): if field_list is None: field_list = get_field_list(mi) ans = [] @@ -131,10 +135,11 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers= val = markdown(val) else: val = comments_to_html(val) - if disp.get('heading_position', 'hide') == 'side': + heading_position = disp.get('heading_position', comments_heading_pos) + if heading_position == 'side': ans.append((field, row % (name, val))) else: - if disp.get('heading_position', 'hide') == 'above': + if heading_position == 'above': val = '

%s

%s' % (p(name), val) comment_fields.append('
%s
' % (field.replace('#', '_'), val)) elif metadata['datatype'] == 'rating': diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index d825fb1e1f..26b52a76b8 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -186,7 +186,7 @@ def create_defs(): defs['qv_dclick_changes_column'] = True defs['qv_retkey_changes_column'] = True defs['qv_follows_column'] = False - defs['book_details_narrow_comments_layout'] = 'float' + defs['book_details_comments_heading_pos'] = 'hide' defs['book_list_split'] = False defs['wrap_toolbar_text'] = False defs['dnd_merge'] = True diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index a3efd68a86..18b8b7e917 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -160,8 +160,11 @@ def get_field_list(fm, use_defaults=False, pref_name='book_display_fields'): def render_data(mi, use_roman_numbers=True, all_fields=False, pref_name='book_display_fields'): field_list = get_field_list(getattr(mi, 'field_metadata', field_metadata), pref_name=pref_name) field_list = [(x, all_fields or display) for x, display in field_list] - return mi_to_html(mi, field_list=field_list, use_roman_numbers=use_roman_numbers, rtl=is_rtl(), - rating_font=rating_font(), default_author_link=default_author_link()) + return mi_to_html( + mi, field_list=field_list, use_roman_numbers=use_roman_numbers, rtl=is_rtl(), + rating_font=rating_font(), default_author_link=default_author_link(), + comments_heading_pos=gprefs['book_details_comments_heading_pos'] + ) # }}} diff --git a/src/calibre/gui2/preferences/look_feel.py b/src/calibre/gui2/preferences/look_feel.py index 0f22ee8064..2e2b8e76df 100644 --- a/src/calibre/gui2/preferences/look_feel.py +++ b/src/calibre/gui2/preferences/look_feel.py @@ -441,6 +441,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): (_('Left'), 'left'), (_('Top'), 'top'), (_('Right'), 'right'), (_('Bottom'), 'bottom')]) r('book_list_extra_row_spacing', gprefs) r('booklist_grid', gprefs) + r('book_details_comments_heading_pos', gprefs, choices=[ + (_('Never'), 'hide'), (_('Above text'), 'above'), (_('Beside text'), 'side')]) self.cover_browser_title_template_button.clicked.connect(self.edit_cb_title_template) self.id_links_button.clicked.connect(self.edit_id_link_rules) diff --git a/src/calibre/gui2/preferences/look_feel.ui b/src/calibre/gui2/preferences/look_feel.ui index e205f0575a..df98d6123a 100644 --- a/src/calibre/gui2/preferences/look_feel.ui +++ b/src/calibre/gui2/preferences/look_feel.ui @@ -17,7 +17,7 @@ - 0 + 2 @@ -726,69 +726,8 @@ A value of zero means calculate automatically. &Book details - - - - - - - Show &cover in the Book details panel - - - - - - - Show the size of the book's cover in pixels - - - Show cover &size - - - - - - - Use &Roman numerals for series - - - true - - - - - - - Qt::Horizontal - - - - 20 - 0 - - - - - - - - - - - 0 - 0 - - - - - - - - Create rules to convert &identifiers into links - - - - + + Text styling @@ -800,7 +739,24 @@ A value of zero means calculate automatically. - + + + + Create rules to convert &identifiers into links + + + + + + + + 0 + 0 + + + + + Select displayed metadata @@ -861,6 +817,74 @@ A value of zero means calculate automatically. + + + + + + Show &cover in the Book details panel + + + + + + + Show the size of the book's cover in pixels + + + Show cover &size + + + + + + + Use &Roman numerals for series + + + true + + + + + + + Qt::Horizontal + + + + 20 + 0 + + + + + + + + + + + + Show comments &heading: + + + opt_book_details_comments_heading_pos + + + + + + + + 0 + 0 + + + + + +