mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Edit metadata dialog: Allow right clicking on the cover to view it in a popup window at larger size. Fixes #2091216 [[Enhancement] Open cover in Edit metadata with internal image viewer](https://bugs.launchpad.net/calibre/+bug/2091216)
This commit is contained in:
parent
0177afafe6
commit
f846750d48
@ -139,6 +139,7 @@ class ImageView(QDialog):
|
|||||||
self.avail_geom = self.screen().availableGeometry()
|
self.avail_geom = self.screen().availableGeometry()
|
||||||
self.current_img = current_img
|
self.current_img = current_img
|
||||||
self.current_url = current_url
|
self.current_url = current_url
|
||||||
|
self.transformed = False
|
||||||
self.factor = 1.0
|
self.factor = 1.0
|
||||||
self.geom_name = geom_name
|
self.geom_name = geom_name
|
||||||
self.zoom_in_action = ac = QAction(QIcon.ic('plus.png'), _('Zoom &in'), self)
|
self.zoom_in_action = ac = QAction(QIcon.ic('plus.png'), _('Zoom &in'), self)
|
||||||
@ -327,18 +328,12 @@ class ImageView(QDialog):
|
|||||||
t = QTransform()
|
t = QTransform()
|
||||||
t.rotate(90)
|
t.rotate(90)
|
||||||
pm = self.current_img = pm.transformed(t)
|
pm = self.current_img = pm.transformed(t)
|
||||||
|
self.transformed = True
|
||||||
self.label.setPixmap(pm)
|
self.label.setPixmap(pm)
|
||||||
self.label.adjustSize()
|
self.adjust_image(self.factor)
|
||||||
if self.fit_image.isChecked():
|
|
||||||
self.set_to_viewport_size()
|
|
||||||
else:
|
|
||||||
self.factor = 1
|
|
||||||
self.prefs.set('image_popup_zoom_factor', self.factor)
|
|
||||||
for sb in (self.scrollarea.horizontalScrollBar(),
|
|
||||||
self.scrollarea.verticalScrollBar()):
|
|
||||||
sb.setValue(0)
|
|
||||||
|
|
||||||
def __call__(self, use_exec=False):
|
def __call__(self, use_exec=False):
|
||||||
|
self.transformed = False
|
||||||
geom = self.avail_geom
|
geom = self.avail_geom
|
||||||
self.label.setPixmap(self.current_img)
|
self.label.setPixmap(self.current_img)
|
||||||
self.label.adjustSize()
|
self.label.adjustSize()
|
||||||
@ -350,8 +345,7 @@ class ImageView(QDialog):
|
|||||||
self.current_image_name = self.current_url
|
self.current_image_name = self.current_url
|
||||||
reso = ''
|
reso = ''
|
||||||
if self.current_img and not self.current_img.isNull():
|
if self.current_img and not self.current_img.isNull():
|
||||||
if self.factor != 1:
|
self.adjust_image(self.factor)
|
||||||
self.adjust_image(self.factor)
|
|
||||||
reso = f'[{self.current_img.width()}x{self.current_img.height()}]'
|
reso = f'[{self.current_img.width()}x{self.current_img.height()}]'
|
||||||
title = _('Image: {name} {resolution}').format(name=self.current_image_name, resolution=reso)
|
title = _('Image: {name} {resolution}').format(name=self.current_image_name, resolution=reso)
|
||||||
self.setWindowTitle(title)
|
self.setWindowTitle(title)
|
||||||
|
@ -1228,6 +1228,20 @@ class Cover(ImageView): # {{{
|
|||||||
self.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Preferred,
|
self.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Preferred,
|
||||||
QSizePolicy.Policy.Preferred))
|
QSizePolicy.Policy.Preferred))
|
||||||
|
|
||||||
|
def build_context_menu(self):
|
||||||
|
m = super().build_context_menu()
|
||||||
|
m.addSeparator()
|
||||||
|
m.addAction(QIcon.ic('view-image'), _('View image in popup window'), self.view_image)
|
||||||
|
return m
|
||||||
|
|
||||||
|
def view_image(self):
|
||||||
|
from calibre.gui2.image_popup import ImageView
|
||||||
|
d = ImageView(self, self.pixmap(), 'cover.jpg')
|
||||||
|
d(use_exec=True)
|
||||||
|
if d.transformed:
|
||||||
|
from calibre.utils.img import image_to_data
|
||||||
|
self.current_val = image_to_data(d.current_img.toImage(), fmt='png')
|
||||||
|
|
||||||
def undo_trim(self):
|
def undo_trim(self):
|
||||||
if self.cdata_before_trim:
|
if self.cdata_before_trim:
|
||||||
self.current_val = self.cdata_before_trim
|
self.current_val = self.cdata_before_trim
|
||||||
|
Loading…
x
Reference in New Issue
Block a user