mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 10:44:09 -04:00
E-book viewer: Fix image display window not remembering its size and settings when run from within calibre. Fixes #1960446 [Remembering position and size of the Image windows in E-book Viewer](https://bugs.launchpad.net/calibre/+bug/1960446)
This commit is contained in:
parent
d9c6bc0af8
commit
b967d20420
@ -94,8 +94,9 @@ class ScrollArea(QScrollArea):
|
|||||||
|
|
||||||
class ImageView(QDialog):
|
class ImageView(QDialog):
|
||||||
|
|
||||||
def __init__(self, parent, current_img, current_url, geom_name='viewer_image_popup_geometry'):
|
def __init__(self, parent, current_img, current_url, geom_name='viewer_image_popup_geometry', prefs=gprefs):
|
||||||
QDialog.__init__(self)
|
QDialog.__init__(self)
|
||||||
|
self.prefs = prefs
|
||||||
self.current_image_name = ''
|
self.current_image_name = ''
|
||||||
self.maximized_at_last_fullscreen = False
|
self.maximized_at_last_fullscreen = False
|
||||||
self.setWindowFlag(Qt.WindowType.WindowMinimizeButtonHint)
|
self.setWindowFlag(Qt.WindowType.WindowMinimizeButtonHint)
|
||||||
@ -139,12 +140,12 @@ class ImageView(QDialog):
|
|||||||
l.addLayout(h)
|
l.addLayout(h)
|
||||||
self.fit_image = i = QCheckBox(_('&Fit image'))
|
self.fit_image = i = QCheckBox(_('&Fit image'))
|
||||||
i.setToolTip(_('Fit image inside the available space'))
|
i.setToolTip(_('Fit image inside the available space'))
|
||||||
i.setChecked(bool(gprefs.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)
|
h.addWidget(i), 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()
|
||||||
geom = gprefs.get(self.geom_name)
|
geom = self.prefs.get(self.geom_name)
|
||||||
if geom is not None:
|
if geom is not None:
|
||||||
self.restoreGeometry(geom)
|
self.restoreGeometry(geom)
|
||||||
fo.setChecked(self.isFullScreen())
|
fo.setChecked(self.isFullScreen())
|
||||||
@ -197,7 +198,7 @@ class ImageView(QDialog):
|
|||||||
|
|
||||||
def fit_changed(self):
|
def fit_changed(self):
|
||||||
fitted = bool(self.fit_image.isChecked())
|
fitted = bool(self.fit_image.isChecked())
|
||||||
gprefs.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()
|
||||||
else:
|
else:
|
||||||
@ -241,7 +242,7 @@ class ImageView(QDialog):
|
|||||||
self.label.setPixmap(self.current_img)
|
self.label.setPixmap(self.current_img)
|
||||||
self.label.adjustSize()
|
self.label.adjustSize()
|
||||||
self.resize(QSize(int(geom.width()/2.5), geom.height()-50))
|
self.resize(QSize(int(geom.width()/2.5), geom.height()-50))
|
||||||
geom = gprefs.get(self.geom_name, None)
|
geom = self.prefs.get(self.geom_name, None)
|
||||||
if geom is not None:
|
if geom is not None:
|
||||||
QApplication.instance().safe_restore_geometry(self, geom)
|
QApplication.instance().safe_restore_geometry(self, geom)
|
||||||
try:
|
try:
|
||||||
@ -259,7 +260,7 @@ class ImageView(QDialog):
|
|||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
def done(self, e):
|
def done(self, e):
|
||||||
gprefs[self.geom_name] = bytearray(self.saveGeometry())
|
self.prefs[self.geom_name] = bytearray(self.saveGeometry())
|
||||||
return QDialog.done(self, e)
|
return QDialog.done(self, e)
|
||||||
|
|
||||||
def toggle_fullscreen(self):
|
def toggle_fullscreen(self):
|
||||||
@ -282,16 +283,17 @@ class ImageView(QDialog):
|
|||||||
|
|
||||||
class ImagePopup:
|
class ImagePopup:
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent, prefs=gprefs):
|
||||||
self.current_img = QPixmap()
|
self.current_img = QPixmap()
|
||||||
self.current_url = QUrl()
|
self.current_url = QUrl()
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.dialogs = []
|
self.dialogs = []
|
||||||
|
self.prefs = prefs
|
||||||
|
|
||||||
def __call__(self):
|
def __call__(self):
|
||||||
if self.current_img.isNull():
|
if self.current_img.isNull():
|
||||||
return
|
return
|
||||||
d = ImageView(self.parent, self.current_img, self.current_url)
|
d = ImageView(self.parent, self.current_img, self.current_url, prefs=self.prefs)
|
||||||
self.dialogs.append(d)
|
self.dialogs.append(d)
|
||||||
d.finished.connect(self.cleanup, type=Qt.ConnectionType.QueuedConnection)
|
d.finished.connect(self.cleanup, type=Qt.ConnectionType.QueuedConnection)
|
||||||
d()
|
d()
|
||||||
|
@ -101,7 +101,7 @@ class EbookViewer(MainWindow):
|
|||||||
self.setDockOptions(QMainWindow.DockOption.AnimatedDocks | QMainWindow.DockOption.AllowTabbedDocks | QMainWindow.DockOption.AllowNestedDocks)
|
self.setDockOptions(QMainWindow.DockOption.AnimatedDocks | QMainWindow.DockOption.AllowTabbedDocks | QMainWindow.DockOption.AllowNestedDocks)
|
||||||
self.setWindowTitle(self.base_window_title)
|
self.setWindowTitle(self.base_window_title)
|
||||||
self.in_full_screen_mode = None
|
self.in_full_screen_mode = None
|
||||||
self.image_popup = ImagePopup(self)
|
self.image_popup = ImagePopup(self, prefs=vprefs)
|
||||||
self.actions_toolbar = at = ActionsToolBar(self)
|
self.actions_toolbar = at = ActionsToolBar(self)
|
||||||
at.open_book_at_path.connect(self.ask_for_open)
|
at.open_book_at_path.connect(self.ask_for_open)
|
||||||
self.addToolBar(Qt.ToolBarArea.LeftToolBarArea, at)
|
self.addToolBar(Qt.ToolBarArea.LeftToolBarArea, at)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user