Fix copilot's code

This commit is contained in:
Kovid Goyal 2026-02-23 11:05:16 +05:30
parent deeb08929c
commit 4bdca872eb
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 42 additions and 54 deletions

View File

@ -530,35 +530,31 @@ def create_defs():
'light': {}, 'dark': {},
}
# Migrate beta bookshelf_thumbnail
if isinstance(btv := gprefs.get('bookshelf_thumbnail'), bool):
gprefs['bookshelf_thumbnail'] = 'full' if btv else 'none'
with gprefs:
# Migrate beta bookshelf_thumbnail
if isinstance(btv := gprefs.get('bookshelf_thumbnail'), bool):
gprefs['bookshelf_thumbnail'] = 'full' if btv else 'none'
def migrate_tweak(tweak_name, pref_name):
# If the tweak has been changed then leave the tweak in the file so
# that the user can bounce between versions with and without the
# migration. For versions before the migration the tweak wins. For
# versions after the migration any changes win.
v = tweaks.get(tweak_name, None)
migrated_tweak_name = pref_name + '_tweak_migrated'
m = gprefs.get(migrated_tweak_name, None)
if m is None and v is not None:
gprefs[pref_name] = v
gprefs[migrated_tweak_name] = True
migrate_tweak('metadata_edit_elide_labels', 'edit_metadata_elide_labels')
migrate_tweak('metadata_edit_elision_point', 'edit_metadata_elision_point')
migrate_tweak('metadata_edit_bulk_cc_label_length', 'edit_metadata_bulk_cc_label_length')
migrate_tweak('metadata_edit_single_cc_label_length', 'edit_metadata_single_cc_label_length')
migrate_tweak('metadata_single_use_2_cols_for_custom_fields', 'edit_metadata_single_use_2_cols_for_custom_fields')
def migrate_tweak(tweak_name, pref_name):
# If the tweak has been changed then leave the tweak in the file so
# that the user can bounce between versions with and without the
# migration. For versions before the migration the tweak wins. For
# versions after the migration any changes win.
v = tweaks.get(tweak_name, None)
migrated_tweak_name = pref_name + '_tweak_migrated'
m = gprefs.get(migrated_tweak_name, None)
if m is None and v is not None:
gprefs[pref_name] = v
gprefs[migrated_tweak_name] = True
migrate_tweak('metadata_edit_elide_labels', 'edit_metadata_elide_labels')
migrate_tweak('metadata_edit_elision_point', 'edit_metadata_elision_point')
migrate_tweak('metadata_edit_bulk_cc_label_length', 'edit_metadata_bulk_cc_label_length')
migrate_tweak('metadata_edit_single_cc_label_length', 'edit_metadata_single_cc_label_length')
migrate_tweak('metadata_single_use_2_cols_for_custom_fields', 'edit_metadata_single_use_2_cols_for_custom_fields')
# Migrate show_emblems and draw_emblems_on_cover to emblem_style
show_emblems = gprefs.pop('show_emblems', None)
draw_emblems_on_cover = gprefs.pop('draw_emblems_on_cover', None)
if show_emblems is not None or draw_emblems_on_cover is not None:
if show_emblems:
gprefs['emblem_style'] = 'emboss' if draw_emblems_on_cover else 'gutter'
else:
gprefs['emblem_style'] = 'none'
if gprefs.get('show_emblems'):
gprefs['emblem_style'] = 'gutter'
gprefs.pop('show_emblems', None)
create_defs()

View File

@ -732,7 +732,6 @@ class CoverDelegate(QStyledItemDelegate):
painter.save()
right_adjust = 0
emblem_rect = None
try:
rect = option.rect
rect.adjust(self.MARGIN, self.MARGIN, -self.MARGIN, -self.MARGIN)
@ -750,7 +749,6 @@ class CoverDelegate(QStyledItemDelegate):
painter.drawText(rect, Qt.AlignmentFlag.AlignCenter|Qt.TextFlag.TextWordWrap, f'{title}\n\n{authors}')
if self.title_height != 0:
self.paint_title(painter, trect, db, book_id)
emblem_rect = QRect(rect)
else:
if self.animating is not None and self.animating.row() == index.row():
cover = cover.scaled(cover.size() * self._animated_size)
@ -766,9 +764,8 @@ class CoverDelegate(QStyledItemDelegate):
if self.flush_bottom:
trect.setTop(rect.bottom() + 5)
self.paint_title(painter, trect, db, book_id, align_top=self.flush_bottom)
emblem_rect = QRect(rect)
if self.original_emblem_style == 'emboss' and emblems:
self.paint_emblems_on_cover(painter, emblem_rect, emblems)
self.paint_emblems_on_cover(painter, rect, emblems)
return
if self.emblem_size > 0:
# We don't draw embossed emblems as the ondevice/marked emblems are drawn in the gutter
@ -838,10 +835,8 @@ class CoverDelegate(QStyledItemDelegate):
painter.restore()
def paint_emblems_on_cover(self, painter, rect, emblems):
esz = self.emblem_size
if not esz:
if not (esz := self.emblem_size):
return
margin = self.MARGIN
r = gprefs['cover_corner_radius']
if r > 0:
if gprefs['cover_corner_radius_unit'] == '%':
@ -850,23 +845,29 @@ class CoverDelegate(QStyledItemDelegate):
corner_inset = int(r)
else:
corner_inset = 0
available_height = rect.height() - corner_inset
max_per_edge = max(1, available_height // (esz + margin))
with painter:
margin = self.MARGIN
rect = rect.adjusted(corner_inset, corner_inset, -corner_inset, -corner_inset - margin)
available_height = rect.height()
sz_with_margin = esz + margin
max_per_edge = max(1, available_height // sz_with_margin)
painter.save()
try:
painter.setClipRect(rect)
for i, emblem in enumerate(emblems):
if i < max_per_edge:
x = rect.left() + margin
y = rect.top() + corner_inset + i * (esz + margin)
x = rect.left()
y = rect.top() + i * sz_with_margin
else:
j = i - max_per_edge
if j >= max_per_edge:
break
x = rect.right() - esz - margin
y = rect.top() + corner_inset + j * (esz + margin)
x = rect.right() - esz
y = rect.top() + j * sz_with_margin
ew = int(emblem.width() / emblem.devicePixelRatio())
eh = int(emblem.height() / emblem.devicePixelRatio())
painter.drawPixmap(QRect(x, y, ew, eh), emblem)
finally:
painter.restore()
def paint_embossed_emblem(self, pixmap, painter, orect, right_adjust, left=True):
drect = QRect(orect)

View File

@ -1180,16 +1180,6 @@ class EditRules(QWidget): # {{{
'<p>You can <b>change an existing rule</b> by double clicking it.')
self.l1.setText('<p>'+ text)
match pref_name:
case 'cover_grid_icon_rules':
self.enabled.setVisible(True)
self.enabled.setChecked(gprefs['show_emblems'])
self.enabled.setText(_('Show &emblems next to the covers'))
self.enabled.stateChanged.connect(self.enabled_toggled)
self.enabled.setToolTip(_(
'If checked, you can tell calibre to display icons of your choosing'
' next to the covers shown in the Cover grid, controlled by the'
' metadata of the book.'))
self.enabled_toggled()
case 'bookshelf_icon_rules':
self.choices_label.setVisible(True)
self.choices.setVisible(True)

View File

@ -39,9 +39,10 @@ class CoverGridTab(QTabWidget, LazyConfigWidgetBase, Ui_cover_grid_tab):
r('emblem_position', gprefs, choices=[
(_('Left'), 'left'), (_('Top'), 'top'), (_('Right'), 'right'), (_('Bottom'), 'bottom')])
r('emblem_style', gprefs, choices=[
(_('Do not show emblems'), 'none'),
(_('Show in a gutter next to the cover'), 'gutter'),
(_('Draw on the cover'), 'emboss')])
(_('No emblems'), 'none'),
(_('Show next to cover'), 'gutter'),
(_('Show on top of cover'), 'emboss')
])
fm = db.field_metadata
choices = sorted((('{} ({})'.format(fm[k]['name'], k), k) for k in fm.displayable_field_keys() if fm[k]['name']),