diff --git a/src/calibre/gui2/dialogs/template_dialog.ui b/src/calibre/gui2/dialogs/template_dialog.ui
index e90f17065e..cb98554c12 100644
--- a/src/calibre/gui2/dialogs/template_dialog.ui
+++ b/src/calibre/gui2/dialogs/template_dialog.ui
@@ -224,7 +224,7 @@ you the value as well as all the local variables</p>
-
-
+
&Go
@@ -232,8 +232,8 @@ you the value as well as all the local variables</p>
:/images/sync-right.png:/images/sync-right.png
-
- padding: 5; padding-left: 1;
+
+ Qt::ToolButtonTextBesideIcon
If 'Enable breakpoints' is checked then click this button to run your template
@@ -286,12 +286,12 @@ you the value as well as all the local variables</p>
-
-
+
&Toggle
-
- padding: 5; padding-left: 1;
+
+ Qt::ToolButtonTextBesideIcon
@@ -316,12 +316,12 @@ you the value as well as all the local variables</p>
-
-
+
&Remove all
-
- padding: 5; padding-left: 1;
+
+ Qt::ToolButtonTextBesideIcon
@@ -333,12 +333,12 @@ you the value as well as all the local variables</p>
-
-
+
&Set all
-
- padding: 5; padding-left: 1;
+
+ Qt::ToolButtonTextBesideIcon
diff --git a/src/calibre/gui2/preferences/coloring.py b/src/calibre/gui2/preferences/coloring.py
index ed66fe4308..f78274d69d 100644
--- a/src/calibre/gui2/preferences/coloring.py
+++ b/src/calibre/gui2/preferences/coloring.py
@@ -12,7 +12,8 @@ from qt.core import (QWidget, QDialog, QLabel, QGridLayout, QComboBox, QSize,
QLineEdit, QIntValidator, QDoubleValidator, QFrame, Qt, QIcon, QHBoxLayout,
QScrollArea, QPushButton, QVBoxLayout, QDialogButtonBox, QToolButton, QItemSelectionModel,
QListView, QAbstractListModel, pyqtSignal, QSizePolicy, QSpacerItem, QPalette,
- QApplication, QStandardItem, QStandardItemModel, QCheckBox, QMenu, QAbstractItemView)
+ QApplication, QStandardItem, QStandardItemModel, QCheckBox, QMenu, QAbstractItemView,
+ QColor, QBrush, QPixmap, QPainter)
from calibre import prepare_string_for_xml, sanitize_file_name, as_unicode
from calibre.constants import config_dir
@@ -21,7 +22,7 @@ from calibre.gui2 import (error_dialog, choose_files, pixmap_to_data, gprefs,
choose_save_file, open_local_file)
from calibre.gui2.dialogs.template_dialog import TemplateDialog
from calibre.gui2.metadata.single_download import RichTextDelegate
-from calibre.gui2.widgets2 import ColorButton
+from calibre.gui2.widgets2 import ColorButton, FlowLayout
from calibre.library.coloring import (Rule, conditionable_columns,
displayable_columns, rule_from_template, color_row_key)
from calibre.utils.localization import lang_map
@@ -895,6 +896,33 @@ class RulesView(QListView): # {{{
# }}}
+class Separator(QWidget): # {{{
+
+ def __init__(self, parent, widget_for_height):
+ QWidget.__init__(self, parent)
+ self.bcol = QColor(QPalette.ColorRole.Text)
+ self.update_brush()
+ self.widget_for_height = widget_for_height
+ self.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.MinimumExpanding)
+
+ def update_brush(self):
+ self.brush = QBrush(self.bcol)
+ self.update()
+
+ def sizeHint(self):
+ return QSize(1, self.widget_for_height.height())
+
+ def paintEvent(self, ev):
+ painter = QPainter(self)
+ # Purely subjective: shorten the line a bit to look 'better'
+ r = ev.rect()
+ r.setTop(r.top() + 3)
+ r.setBottom(r.bottom() - 3)
+ painter.fillRect(r, self.brush)
+ painter.end()
+# }}}
+
+
class EditRules(QWidget): # {{{
changed = pyqtSignal()
@@ -949,7 +977,7 @@ class EditRules(QWidget): # {{{
self.add_advanced_button = b = QPushButton(QIcon(I('plus.png')),
_('Add ad&vanced rule'), self)
b.clicked.connect(self.add_advanced)
- self.hb = hb = QHBoxLayout()
+ self.hb = hb = FlowLayout()
l.addLayout(hb, l.rowCount(), 0, 1, 2)
hb.addWidget(b)
self.duplicate_rule_button = b = QPushButton(QIcon(I('edit-copy.png')),
@@ -962,13 +990,16 @@ class EditRules(QWidget): # {{{
b.clicked.connect(self.convert_to_advanced)
b.setEnabled(False)
hb.addWidget(b)
- hb.addStretch(10)
+ sep = Separator(self, b)
+ hb.addWidget(sep)
+
self.open_icon_folder_button = b = QPushButton(QIcon(I('icon_choose.png')),
_('Open icon folder'), self)
connect_lambda(b.clicked, self,
lambda _: open_local_file(os.path.join(config_dir, 'cc_icons')))
hb.addWidget(b)
- hb.addStretch(10)
+ sep = Separator(self, b)
+ hb.addWidget(sep)
self.export_button = b = QPushButton(_('E&xport'), self)
b.clicked.connect(self.export_rules)
b.setToolTip(_('Export these rules to a file'))