diff --git a/src/calibre/gui2/metadata/single_download.py b/src/calibre/gui2/metadata/single_download.py index ee8cd84261..72b0fd9b1c 100644 --- a/src/calibre/gui2/metadata/single_download.py +++ b/src/calibre/gui2/metadata/single_download.py @@ -31,7 +31,7 @@ from calibre.utils.logging import GUILog as Log from calibre.ebooks.metadata.sources.identify import urls_from_identifiers from calibre.ebooks.metadata.book.base import Metadata from calibre.ebooks.metadata.opf2 import OPF -from calibre.gui2 import error_dialog, NONE, rating_font +from calibre.gui2 import error_dialog, NONE, rating_font, gprefs from calibre.utils.date import (utcnow, fromordinal, format_date, UNDEFINED_DATE, as_utc) from calibre.library.comments import comments_to_html @@ -264,6 +264,15 @@ class ResultsView(QTableView): # {{{ sm = self.selectionModel() sm.select(idx, sm.ClearAndSelect|sm.Rows) + def resize_delegate(self): + self.rt_delegate.max_width = int(self.width()/2.1) + self.resizeColumnsToContents() + + def resizeEvent(self, ev): + ret = super(ResultsView, self).resizeEvent(ev) + self.resize_delegate() + return ret + def currentChanged(self, current, previous): ret = QTableView.currentChanged(self, current, previous) self.show_details(current) @@ -385,7 +394,7 @@ class IdentifyWorker(Thread): # {{{ def sample_results(self): m1 = Metadata('The Great Gatsby', ['Francis Scott Fitzgerald']) - m2 = Metadata('The Great Gatsby', ['F. Scott Fitzgerald']) + m2 = Metadata('The Great Gatsby - An extra long title to test resizing', ['F. Scott Fitzgerald']) m1.has_cached_cover_url = True m2.has_cached_cover_url = False m1.comments = 'Some comments '*10 @@ -963,12 +972,16 @@ class FullFetch(QDialog): # {{{ self.covers_widget.chosen.connect(self.ok_clicked) self.stack.addWidget(self.covers_widget) + self.resize(850, 600) + geom = gprefs.get('metadata_single_gui_geom', None) + if geom is not None and geom: + self.restoreGeometry(geom) + # Workaround for Qt 4.8.0 bug that causes the frame of the window to go # off the top of the screen if a max height is not set for the # QWebView. Seems to only happen on windows, but keep it for all # platforms just in case. - self.identify_widget.comments_view.setMaximumHeight(500) - self.resize(850, 600) + self.identify_widget.comments_view.setMaximumHeight(self.height()-100) self.finished.connect(self.cleanup) @@ -995,12 +1008,14 @@ class FullFetch(QDialog): # {{{ self.covers_widget.reset_covers() def accept(self): + gprefs['metadata_single_gui_geom'] = bytearray(self.saveGeometry()) if self.stack.currentIndex() == 1: return QDialog.accept(self) # Prevent the usual dialog accept mechanisms from working pass def reject(self): + gprefs['metadata_single_gui_geom'] = bytearray(self.saveGeometry()) self.identify_widget.cancel() self.covers_widget.cancel() return QDialog.reject(self)