diff --git a/src/calibre/gui2/metadata/basic_widgets.py b/src/calibre/gui2/metadata/basic_widgets.py index 299984c5e4..f46f05cdcb 100644 --- a/src/calibre/gui2/metadata/basic_widgets.py +++ b/src/calibre/gui2/metadata/basic_widgets.py @@ -892,8 +892,7 @@ class Cover(ImageView): # {{{ download_cover = pyqtSignal() def __init__(self, parent): - ImageView.__init__(self, parent) - self.show_size = True + ImageView.__init__(self, parent, show_size_pref_name='edit_metadata_cover_widget', default_show_size=True) self.dialog = parent self._cdata = None self.cdata_before_trim = None diff --git a/src/calibre/gui2/widgets.py b/src/calibre/gui2/widgets.py index 71cc7b6169..ad51090556 100644 --- a/src/calibre/gui2/widgets.py +++ b/src/calibre/gui2/widgets.py @@ -247,7 +247,7 @@ class ImageDropMixin(object): # {{{ def set_pixmap(self, pmap): self.setPixmap(pmap) - def contextMenuEvent(self, ev): + def build_context_menu(self): cm = QMenu(self) paste = cm.addAction(_('Paste Cover')) copy = cm.addAction(_('Copy Cover')) @@ -255,7 +255,10 @@ class ImageDropMixin(object): # {{{ paste.setEnabled(False) copy.triggered.connect(self.copy_to_clipboard) paste.triggered.connect(self.paste_from_clipboard) - cm.exec_(ev.globalPos()) + return cm + + def contextMenuEvent(self, ev): + self.build_context_menu().exec_(ev.globalPos()) def copy_to_clipboard(self): QApplication.instance().clipboard().setPixmap(self.get_pixmap()) @@ -276,13 +279,16 @@ class ImageView(QWidget, ImageDropMixin): # {{{ BORDER_WIDTH = 1 cover_changed = pyqtSignal(object) - def __init__(self, parent=None): + def __init__(self, parent=None, show_size_pref_name=None, default_show_size=False): QWidget.__init__(self, parent) + self.show_size_pref_name = ('show_size_on_cover_' + show_size_pref_name) if show_size_pref_name else None self._pixmap = QPixmap(self) self.setMinimumSize(QSize(150, 200)) ImageDropMixin.__init__(self) self.draw_border = True self.show_size = False + if self.show_size_pref_name: + self.show_size = gprefs.get(self.show_size_pref_name, default_show_size) def setPixmap(self, pixmap): if not isinstance(pixmap, QPixmap): @@ -291,6 +297,19 @@ class ImageView(QWidget, ImageDropMixin): # {{{ self.updateGeometry() self.update() + def build_context_menu(self): + m = ImageDropMixin.build_context_menu(self) + if self.show_size_pref_name: + text = _('Hide size in corner') if self.show_size else _('Show size in corner') + m.addAction(text, self.toggle_show_size) + return m + + def toggle_show_size(self): + self.show_size ^= True + if self.show_size_pref_name: + gprefs[self.show_size_pref_name] = self.show_size + self.update() + def pixmap(self): return self._pixmap