From 042f67b12ed16100731833d5788a5b61a72772a5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 13 Aug 2010 11:17:25 -0600 Subject: [PATCH] When showing cover browser in a separate window, remember the last used window size --- src/calibre/gui2/cover_flow.py | 36 ++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/calibre/gui2/cover_flow.py b/src/calibre/gui2/cover_flow.py index 4b8067bd8f..925aa15adf 100644 --- a/src/calibre/gui2/cover_flow.py +++ b/src/calibre/gui2/cover_flow.py @@ -10,10 +10,10 @@ Module to implement the Cover Flow feature import sys, os, time from PyQt4.Qt import QImage, QSizePolicy, QTimer, QDialog, Qt, QSize, \ - QStackedLayout, QLabel + QStackedLayout, QLabel, QByteArray, pyqtSignal from calibre import plugins -from calibre.gui2 import config, available_height, available_width +from calibre.gui2 import config, available_height, available_width, gprefs pictureflow, pictureflowerror = plugins['pictureflow'] @@ -107,6 +107,28 @@ else: DatabaseImages = None FileSystemImages = None +class CBDialog(QDialog): + + closed = pyqtSignal() + + def __init__(self, parent, cover_flow): + QDialog.__init__(self, parent) + self._layout = QStackedLayout() + self.setLayout(self._layout) + self.setWindowTitle(_('Browse by covers')) + self.layout().addWidget(cover_flow) + + geom = gprefs.get('cover_browser_dialog_geometry', bytearray('')) + geom = QByteArray(geom) + if not self.restoreGeometry(geom): + h, w = available_height()-60, int(available_width()/1.5) + self.resize(w, h) + + def closeEvent(self, *args): + geom = bytearray(self.saveGeometry()) + gprefs['cover_browser_dialog_geometry'] = geom + self.closed.emit() + class CoverFlowMixin(object): def __init__(self): @@ -173,18 +195,12 @@ class CoverFlowMixin(object): def show_cover_browser(self): - d = QDialog(self) - ah, aw = available_height(), available_width() - d.resize(int(aw/1.5), ah-60) - d._layout = QStackedLayout() - d.setLayout(d._layout) - d.setWindowTitle(_('Browse by covers')) - d.layout().addWidget(self.cover_flow) + d = CBDialog(self, self.cover_flow) self.cover_flow.setVisible(True) self.cover_flow.setFocus(Qt.OtherFocusReason) d.show() self.cb_splitter.button.set_state_to_hide() - d.finished.connect(self.cover_browser_closed) + d.closed.connect(self.cover_browser_closed) self.cb_dialog = d self.cb_splitter.button.set_state_to_hide()