Tag browser: Add an option to control the spacing between items

Also tighten the default spacing a little bit
This commit is contained in:
Kovid Goyal 2017-06-19 21:30:35 +05:30
parent 1e12b6d64e
commit bcb3f1c555
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 59 additions and 20 deletions

View File

@ -150,6 +150,7 @@ def create_defs():
defs['tag_browser_show_counts'] = True defs['tag_browser_show_counts'] = True
defs['row_numbers_in_book_list'] = True defs['row_numbers_in_book_list'] = True
defs['hidpi'] = 'auto' defs['hidpi'] = 'auto'
defs['tag_browser_item_padding'] = 0.5
create_defs() create_defs()

View File

@ -350,7 +350,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
r('book_list_tooltips', gprefs) r('book_list_tooltips', gprefs)
r('show_layout_buttons', gprefs, restart_required=True) r('show_layout_buttons', gprefs, restart_required=True)
r('row_numbers_in_book_list', gprefs) r('row_numbers_in_book_list', gprefs)
r('tag_browser_old_look', gprefs, restart_required=True) r('tag_browser_old_look', gprefs)
r('tag_browser_hide_empty_categories', gprefs) r('tag_browser_hide_empty_categories', gprefs)
r('bd_show_cover', gprefs) r('bd_show_cover', gprefs)
r('bd_overlay_cover_size', gprefs) r('bd_overlay_cover_size', gprefs)
@ -361,6 +361,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
r('cover_grid_spacing', gprefs) r('cover_grid_spacing', gprefs)
r('cover_grid_show_title', gprefs) r('cover_grid_show_title', gprefs)
r('tag_browser_show_counts', gprefs) r('tag_browser_show_counts', gprefs)
r('tag_browser_item_padding', gprefs)
r('cover_flow_queue_length', config, restart_required=True) r('cover_flow_queue_length', config, restart_required=True)
r('cover_browser_reflections', gprefs) r('cover_browser_reflections', gprefs)
@ -707,6 +708,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
m = gui.library_view.model() m = gui.library_view.model()
m.beginResetModel(), m.endResetModel() m.beginResetModel(), m.endResetModel()
self.update_font_display() self.update_font_display()
gui.tags_view.set_look_and_feel()
gui.tags_view.reread_collapse_parameters() gui.tags_view.reread_collapse_parameters()
gui.library_view.refresh_book_details() gui.library_view.refresh_book_details()
gui.library_view.set_row_header_visibility() gui.library_view.set_row_header_visibility()

View File

@ -839,7 +839,7 @@ A value of zero means calculate automatically.</string>
<property name="fieldGrowthPolicy"> <property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum> <enum>QFormLayout::ExpandingFieldsGrow</enum>
</property> </property>
<item row="2" column="0"> <item row="3" column="0">
<widget class="QLabel" name="label_10"> <widget class="QLabel" name="label_10">
<property name="text"> <property name="text">
<string>Co&amp;llapse when more items than:</string> <string>Co&amp;llapse when more items than:</string>
@ -849,7 +849,7 @@ A value of zero means calculate automatically.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="3" column="1">
<widget class="QSpinBox" name="opt_tags_browser_collapse_at"> <widget class="QSpinBox" name="opt_tags_browser_collapse_at">
<property name="toolTip"> <property name="toolTip">
<string>If a Tag browser category has more than this number of items, it is divided <string>If a Tag browser category has more than this number of items, it is divided
@ -860,7 +860,7 @@ up into subcategories. If the partition method is set to disable, this value is
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="5" column="0">
<widget class="QLabel" name="label_8111"> <widget class="QLabel" name="label_8111">
<property name="text"> <property name="text">
<string>Categories &amp;not to partition:</string> <string>Categories &amp;not to partition:</string>
@ -870,7 +870,7 @@ up into subcategories. If the partition method is set to disable, this value is
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1"> <item row="5" column="1">
<widget class="EditWithComplete" name="opt_tag_browser_dont_collapse"> <widget class="EditWithComplete" name="opt_tag_browser_dont_collapse">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@ -887,7 +887,7 @@ a few top-level elements.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="7" column="0">
<widget class="QLabel" name="label_81"> <widget class="QLabel" name="label_81">
<property name="text"> <property name="text">
<string>Categories with &amp;hierarchical items:</string> <string>Categories with &amp;hierarchical items:</string>
@ -897,7 +897,7 @@ a few top-level elements.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="7" column="1">
<widget class="EditWithComplete" name="opt_categories_using_hierarchy"> <widget class="EditWithComplete" name="opt_categories_using_hierarchy">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@ -915,14 +915,14 @@ then the tags will be displayed each on their own line.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0" colspan="2"> <item row="10" column="0" colspan="2">
<widget class="QCheckBox" name="opt_tag_browser_old_look"> <widget class="QCheckBox" name="opt_tag_browser_old_look">
<property name="text"> <property name="text">
<string>Use &amp;alternating row colors in the Tag browser</string> <string>Use &amp;alternating row colors in the Tag browser</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="9" column="0" colspan="2"> <item row="11" column="0" colspan="2">
<widget class="QCheckBox" name="opt_tag_browser_hide_empty_categories"> <widget class="QCheckBox" name="opt_tag_browser_hide_empty_categories">
<property name="toolTip"> <property name="toolTip">
<string>When checked, calibre will automatically hide any category <string>When checked, calibre will automatically hide any category
@ -956,7 +956,7 @@ if you never want subcategories</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="8" column="0">
<widget class="QCheckBox" name="opt_show_avg_rating"> <widget class="QCheckBox" name="opt_show_avg_rating">
<property name="text"> <property name="text">
<string>Show &amp;average ratings in the Tag browser</string> <string>Show &amp;average ratings in the Tag browser</string>
@ -966,7 +966,7 @@ if you never want subcategories</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="0" colspan="2"> <item row="9" column="0" colspan="2">
<widget class="QCheckBox" name="opt_tag_browser_show_counts"> <widget class="QCheckBox" name="opt_tag_browser_show_counts">
<property name="toolTip"> <property name="toolTip">
<string>Show counts for items in the Tag browser. Such as the number of books <string>Show counts for items in the Tag browser. Such as the number of books
@ -978,6 +978,38 @@ see the counts by hovering your mouse over any item.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>&amp;Padding between items:</string>
</property>
<property name="buddy">
<cstring>opt_tag_browser_item_padding</cstring>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="opt_tag_browser_item_padding">
<property name="toolTip">
<string>The spacing between consecutive items in the Tag browser. In units of (ex) which is the approximate height of the letter 'x' in the currently used font. </string>
</property>
<property name="suffix">
<string> ex</string>
</property>
<property name="decimals">
<number>1</number>
</property>
<property name="minimum">
<double>-1.000000000000000</double>
</property>
<property name="maximum">
<double>2.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="cover_browser_tab"> <widget class="QWidget" name="cover_browser_tab">

View File

@ -30,7 +30,7 @@ class TagDelegate(QStyledItemDelegate): # {{{
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
QStyledItemDelegate.__init__(self, *args, **kwargs) QStyledItemDelegate.__init__(self, *args, **kwargs)
self.old_look = gprefs['tag_browser_old_look'] self.old_look = False
self.rating_pat = re.compile(r'[%s]' % rating_to_stars(3, True)) self.rating_pat = re.compile(r'[%s]' % rating_to_stars(3, True))
self.rating_font = QFont(rating_font()) self.rating_font = QFont(rating_font())
@ -162,6 +162,12 @@ class TagsView(QTreeView): # {{{
self._model.user_categories_edited.connect(self.user_categories_edited, self._model.user_categories_edited.connect(self.user_categories_edited,
type=Qt.QueuedConnection) type=Qt.QueuedConnection)
self._model.drag_drop_finished.connect(self.drag_drop_finished) self._model.drag_drop_finished.connect(self.drag_drop_finished)
self.set_look_and_feel()
# Allowing keyboard focus looks bad in the Qt Fusion style and is useless
# anyway since the enter/spacebar keys do nothing
self.setFocusPolicy(Qt.NoFocus)
def set_look_and_feel(self):
stylish_tb = ''' stylish_tb = '''
QTreeView { QTreeView {
background-color: palette(window); background-color: palette(window);
@ -172,8 +178,8 @@ class TagsView(QTreeView): # {{{
self.setStyleSheet(''' self.setStyleSheet('''
QTreeView::item { QTreeView::item {
border: 1px solid transparent; border: 1px solid transparent;
padding-top:0.8ex; padding-top:PADex;
padding-bottom:0.8ex; padding-bottom:PADex;
} }
QTreeView::item:hover { QTreeView::item:hover {
@ -181,12 +187,10 @@ class TagsView(QTreeView): # {{{
border: 1px solid #bfcde4; border: 1px solid #bfcde4;
border-radius: 6px; border-radius: 6px;
} }
''' + ('' if gprefs['tag_browser_old_look'] else stylish_tb)) '''.replace('PAD', str(gprefs['tag_browser_item_padding'])) + (
if gprefs['tag_browser_old_look']: '' if gprefs['tag_browser_old_look'] else stylish_tb))
self.setAlternatingRowColors(True) self.setAlternatingRowColors(gprefs['tag_browser_old_look'])
# Allowing keyboard focus looks bad in the Qt Fusion style and is useless self.itemDelegate().old_look = gprefs['tag_browser_old_look']
# anyway since the enter/spacebar keys do nothing
self.setFocusPolicy(Qt.NoFocus)
@property @property
def hidden_categories(self): def hidden_categories(self):