When showing cover browser in a separate window, remember the last used window size

This commit is contained in:
Kovid Goyal 2010-08-13 11:17:25 -06:00
parent a1201c899c
commit 042f67b12e

View File

@ -10,10 +10,10 @@ Module to implement the Cover Flow feature
import sys, os, time import sys, os, time
from PyQt4.Qt import QImage, QSizePolicy, QTimer, QDialog, Qt, QSize, \ from PyQt4.Qt import QImage, QSizePolicy, QTimer, QDialog, Qt, QSize, \
QStackedLayout, QLabel QStackedLayout, QLabel, QByteArray, pyqtSignal
from calibre import plugins 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'] pictureflow, pictureflowerror = plugins['pictureflow']
@ -107,6 +107,28 @@ else:
DatabaseImages = None DatabaseImages = None
FileSystemImages = 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): class CoverFlowMixin(object):
def __init__(self): def __init__(self):
@ -173,18 +195,12 @@ class CoverFlowMixin(object):
def show_cover_browser(self): def show_cover_browser(self):
d = QDialog(self) d = CBDialog(self, self.cover_flow)
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)
self.cover_flow.setVisible(True) self.cover_flow.setVisible(True)
self.cover_flow.setFocus(Qt.OtherFocusReason) self.cover_flow.setFocus(Qt.OtherFocusReason)
d.show() d.show()
self.cb_splitter.button.set_state_to_hide() 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_dialog = d
self.cb_splitter.button.set_state_to_hide() self.cb_splitter.button.set_state_to_hide()