diff --git a/src/calibre/customize/__init__.py b/src/calibre/customize/__init__.py index a00a2cd5e2..13e1f20a2d 100644 --- a/src/calibre/customize/__init__.py +++ b/src/calibre/customize/__init__.py @@ -110,10 +110,21 @@ class Plugin(object): # {{{ ''' from PyQt4.Qt import QDialog, QDialogButtonBox, QVBoxLayout, \ QLabel, Qt, QLineEdit + from calibre.gui2 import gprefs + + prefname = 'plugin config dialog:'+self.type + ':' + self.name + geom = gprefs.get(prefname, None) + config_dialog = QDialog(parent) button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) v = QVBoxLayout(config_dialog) + def size_dialog(): + if geom is None: + config_dialog.resize(config_dialog.sizeHint()) + else: + config_dialog.restoreGeometry(geom) + button_box.accepted.connect(config_dialog.accept) button_box.rejected.connect(config_dialog.reject) config_dialog.setWindowTitle(_('Customize') + ' ' + self.name) @@ -125,6 +136,7 @@ class Plugin(object): # {{{ if config_widget is not None: v.addWidget(config_widget) v.addWidget(button_box) + size_dialog() config_dialog.exec_() if config_dialog.result() == QDialog.Accepted: @@ -150,12 +162,16 @@ class Plugin(object): # {{{ sc = QLineEdit(sc, config_dialog) v.addWidget(sc) v.addWidget(button_box) + size_dialog() config_dialog.exec_() if config_dialog.result() == QDialog.Accepted: sc = unicode(sc.text()).strip() customize_plugin(self, sc) + geom = bytearray(config_dialog.saveGeometry()) + gprefs[prefname] = geom + return config_dialog.result() def load_resources(self, names):