mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 18:24:30 -04:00
E-book viewer: Image popup: Add a checkbox to remember the last used zoom level. Fixes #2038862 [[Enhancement] E-book viewer: options for a better comic book reading experience](https://bugs.launchpad.net/calibre/+bug/2038862)
This commit is contained in:
parent
ff7e9006b1
commit
ac0e00e60b
@ -176,9 +176,16 @@ class ImageView(QDialog):
|
|||||||
i.setToolTip(_('Fit image inside the available space'))
|
i.setToolTip(_('Fit image inside the available space'))
|
||||||
i.setChecked(bool(self.prefs.get('image_popup_fit_image')))
|
i.setChecked(bool(self.prefs.get('image_popup_fit_image')))
|
||||||
i.stateChanged.connect(self.fit_changed)
|
i.stateChanged.connect(self.fit_changed)
|
||||||
h.addWidget(i), h.addStretch(), h.addWidget(bb)
|
self.remember_zoom = z = QCheckBox(_('&Remember zoom'))
|
||||||
|
z.setChecked(not i.isChecked() and bool(self.prefs.get('image_popup_remember_zoom', False)))
|
||||||
|
z.stateChanged.connect(self.remember_zoom_changed)
|
||||||
|
h.addWidget(i), h.addWidget(z), h.addStretch(), h.addWidget(bb)
|
||||||
if self.fit_image.isChecked():
|
if self.fit_image.isChecked():
|
||||||
self.set_to_viewport_size()
|
self.set_to_viewport_size()
|
||||||
|
elif z.isChecked():
|
||||||
|
factor = self.prefs.get('image_popup_zoom_factor', self.factor)
|
||||||
|
if factor != self.factor and not self.fit_image.isChecked():
|
||||||
|
self.factor = factor
|
||||||
self.restore_geometry(self.prefs, self.geom_name)
|
self.restore_geometry(self.prefs, self.geom_name)
|
||||||
fo.setChecked(self.isFullScreen())
|
fo.setChecked(self.isFullScreen())
|
||||||
fo.toggled.connect(self.toggle_fullscreen)
|
fo.toggled.connect(self.toggle_fullscreen)
|
||||||
@ -213,6 +220,7 @@ class ImageView(QDialog):
|
|||||||
self.fit_image.setChecked(False)
|
self.fit_image.setChecked(False)
|
||||||
self.factor = factor
|
self.factor = factor
|
||||||
self.factor *= 1.25
|
self.factor *= 1.25
|
||||||
|
self.prefs.set('image_popup_zoom_factor', self.factor)
|
||||||
self.adjust_image(1.25)
|
self.adjust_image(1.25)
|
||||||
|
|
||||||
def zoom_out(self):
|
def zoom_out(self):
|
||||||
@ -221,6 +229,7 @@ class ImageView(QDialog):
|
|||||||
self.fit_image.setChecked(False)
|
self.fit_image.setChecked(False)
|
||||||
self.factor = factor
|
self.factor = factor
|
||||||
self.factor *= 0.8
|
self.factor *= 0.8
|
||||||
|
self.prefs.set('image_popup_zoom_factor', self.factor)
|
||||||
self.adjust_image(0.8)
|
self.adjust_image(0.8)
|
||||||
|
|
||||||
def save_image(self):
|
def save_image(self):
|
||||||
@ -241,10 +250,16 @@ class ImageView(QDialog):
|
|||||||
self.prefs.set('image_popup_fit_image', fitted)
|
self.prefs.set('image_popup_fit_image', fitted)
|
||||||
if self.fit_image.isChecked():
|
if self.fit_image.isChecked():
|
||||||
self.set_to_viewport_size()
|
self.set_to_viewport_size()
|
||||||
|
self.remember_zoom.setChecked(False)
|
||||||
else:
|
else:
|
||||||
self.factor = 1
|
self.factor = 1
|
||||||
|
self.prefs.set('image_popup_zoom_factor', self.factor)
|
||||||
self.adjust_image(1)
|
self.adjust_image(1)
|
||||||
|
|
||||||
|
def remember_zoom_changed(self):
|
||||||
|
val = bool(self.remember_zoom.isChecked())
|
||||||
|
self.prefs.set('image_popup_remember_zoom', val)
|
||||||
|
|
||||||
def toggle_fit(self):
|
def toggle_fit(self):
|
||||||
self.fit_image.toggle()
|
self.fit_image.toggle()
|
||||||
|
|
||||||
@ -273,6 +288,7 @@ class ImageView(QDialog):
|
|||||||
self.set_to_viewport_size()
|
self.set_to_viewport_size()
|
||||||
else:
|
else:
|
||||||
self.factor = 1
|
self.factor = 1
|
||||||
|
self.prefs.set('image_popup_zoom_factor', self.factor)
|
||||||
for sb in (self.scrollarea.horizontalScrollBar(),
|
for sb in (self.scrollarea.horizontalScrollBar(),
|
||||||
self.scrollarea.verticalScrollBar()):
|
self.scrollarea.verticalScrollBar()):
|
||||||
sb.setValue(0)
|
sb.setValue(0)
|
||||||
@ -289,6 +305,8 @@ 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)
|
||||||
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)
|
||||||
@ -349,6 +367,5 @@ def show_image(path=None):
|
|||||||
d()
|
d()
|
||||||
app.exec()
|
app.exec()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
show_image()
|
show_image()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user