Option to hide displayed cover size in edit metadata dialog

Edit metadata dialog: Allow turning off the cover size displayed in the
bottom right corner of the cover by right clicking the cover and
choosing "Hide cover size". It can be restored the same way.
This commit is contained in:
Kovid Goyal 2013-10-12 10:48:24 +05:30
parent c185e93ea9
commit 224f03e1fd
2 changed files with 23 additions and 5 deletions

View File

@ -892,8 +892,7 @@ class Cover(ImageView): # {{{
download_cover = pyqtSignal() download_cover = pyqtSignal()
def __init__(self, parent): def __init__(self, parent):
ImageView.__init__(self, parent) ImageView.__init__(self, parent, show_size_pref_name='edit_metadata_cover_widget', default_show_size=True)
self.show_size = True
self.dialog = parent self.dialog = parent
self._cdata = None self._cdata = None
self.cdata_before_trim = None self.cdata_before_trim = None

View File

@ -247,7 +247,7 @@ class ImageDropMixin(object): # {{{
def set_pixmap(self, pmap): def set_pixmap(self, pmap):
self.setPixmap(pmap) self.setPixmap(pmap)
def contextMenuEvent(self, ev): def build_context_menu(self):
cm = QMenu(self) cm = QMenu(self)
paste = cm.addAction(_('Paste Cover')) paste = cm.addAction(_('Paste Cover'))
copy = cm.addAction(_('Copy Cover')) copy = cm.addAction(_('Copy Cover'))
@ -255,7 +255,10 @@ class ImageDropMixin(object): # {{{
paste.setEnabled(False) paste.setEnabled(False)
copy.triggered.connect(self.copy_to_clipboard) copy.triggered.connect(self.copy_to_clipboard)
paste.triggered.connect(self.paste_from_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): def copy_to_clipboard(self):
QApplication.instance().clipboard().setPixmap(self.get_pixmap()) QApplication.instance().clipboard().setPixmap(self.get_pixmap())
@ -276,13 +279,16 @@ class ImageView(QWidget, ImageDropMixin): # {{{
BORDER_WIDTH = 1 BORDER_WIDTH = 1
cover_changed = pyqtSignal(object) 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) 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._pixmap = QPixmap(self)
self.setMinimumSize(QSize(150, 200)) self.setMinimumSize(QSize(150, 200))
ImageDropMixin.__init__(self) ImageDropMixin.__init__(self)
self.draw_border = True self.draw_border = True
self.show_size = False 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): def setPixmap(self, pixmap):
if not isinstance(pixmap, QPixmap): if not isinstance(pixmap, QPixmap):
@ -291,6 +297,19 @@ class ImageView(QWidget, ImageDropMixin): # {{{
self.updateGeometry() self.updateGeometry()
self.update() 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): def pixmap(self):
return self._pixmap return self._pixmap