From f0d32cb528f39fb2d847a1cdb8444e16163ce2d6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 18 Nov 2012 11:48:27 +0530 Subject: [PATCH] Edit metadata dialog: Show the size of the current book cover in the edit metadata dialog. Fixes #1079781 ([Enhancement] Display cover size in pixels) --- src/calibre/gui2/metadata/basic_widgets.py | 1 + src/calibre/gui2/widgets.py | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/metadata/basic_widgets.py b/src/calibre/gui2/metadata/basic_widgets.py index 409088d315..95255d4abb 100644 --- a/src/calibre/gui2/metadata/basic_widgets.py +++ b/src/calibre/gui2/metadata/basic_widgets.py @@ -867,6 +867,7 @@ class Cover(ImageView): # {{{ def __init__(self, parent): ImageView.__init__(self, parent) + self.show_size = True self.dialog = parent self._cdata = None self.cover_changed.connect(self.set_pixmap_from_data) diff --git a/src/calibre/gui2/widgets.py b/src/calibre/gui2/widgets.py index 7730d2d733..e2f0e0bfd2 100644 --- a/src/calibre/gui2/widgets.py +++ b/src/calibre/gui2/widgets.py @@ -283,6 +283,7 @@ class ImageView(QWidget, ImageDropMixin): # {{{ self.setMinimumSize(QSize(150, 200)) ImageDropMixin.__init__(self) self.draw_border = True + self.show_size = False def setPixmap(self, pixmap): if not isinstance(pixmap, QPixmap): @@ -305,6 +306,7 @@ class ImageView(QWidget, ImageDropMixin): # {{{ if pmap.isNull(): return w, h = pmap.width(), pmap.height() + ow, oh = w, h cw, ch = self.rect().width(), self.rect().height() scaled, nw, nh = fit_image(w, h, cw, ch) if scaled: @@ -317,12 +319,23 @@ class ImageView(QWidget, ImageDropMixin): # {{{ p = QPainter(self) p.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform) p.drawPixmap(target, pmap) - pen = QPen() - pen.setWidth(self.BORDER_WIDTH) - p.setPen(pen) if self.draw_border: + pen = QPen() + pen.setWidth(self.BORDER_WIDTH) + p.setPen(pen) p.drawRect(target) - #p.drawRect(self.rect()) + if self.show_size: + sztgt = target.adjusted(0, 0, 0, -4) + f = p.font() + f.setBold(True) + f.setPointSize(12) + p.setFont(f) + sz = u'\u00a0%d x %d\u00a0'%(ow, oh) + flags = Qt.AlignBottom|Qt.AlignRight|Qt.TextSingleLine + szrect = p.boundingRect(sztgt, flags, sz) + p.fillRect(szrect.adjusted(0, 0, 0, 4), QColor(0, 0, 0, 200)) + p.setPen(QPen(QColor(255,255,255))) + p.drawText(sztgt, flags, sz) p.end() # }}}