From 463603dab0ac8cf169e1199bb41ad63599cbcb16 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Mon, 9 May 2016 07:39:57 -0500 Subject: [PATCH] Save/reuse ViewLog size from proceed_question when called with log_viewer_unique_name. --- src/calibre/gui2/dialogs/message_box.py | 24 ++++++++++++++++++++++-- src/calibre/gui2/proceed.py | 10 ++++++---- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/calibre/gui2/dialogs/message_box.py b/src/calibre/gui2/dialogs/message_box.py index 7f6b62f666..2113111e74 100644 --- a/src/calibre/gui2/dialogs/message_box.py +++ b/src/calibre/gui2/dialogs/message_box.py @@ -12,6 +12,7 @@ from PyQt5.Qt import (QDialog, QIcon, QApplication, QSize, QKeySequence, QLabel, QPlainTextEdit, QTextDocument, QCheckBox, pyqtSignal) from calibre.constants import __version__, isfrozen +from calibre.gui2 import gprefs class MessageBox(QDialog): # {{{ @@ -167,7 +168,7 @@ class MessageBox(QDialog): # {{{ class ViewLog(QDialog): # {{{ - def __init__(self, title, html, parent=None): + def __init__(self, title, html, parent=None, unique_name=None): QDialog.__init__(self, parent) self.l = l = QVBoxLayout() self.setLayout(l) @@ -184,8 +185,16 @@ class ViewLog(QDialog): # {{{ self.copy_button.setIcon(QIcon(I('edit-copy.png'))) self.copy_button.clicked.connect(self.copy_to_clipboard) l.addWidget(self.bb) + + if unique_name: + self.unique_name = "ViewLog_size_"+unique_name + else: + self.unique_name = None + self.geom = gprefs.get(self.unique_name, None) + self.finished.connect(self.dialog_closing) + self.resize_dialog() + self.setModal(False) - self.resize(QSize(700, 500)) self.setWindowTitle(title) self.setWindowIcon(QIcon(I('debug.png'))) self.show() @@ -193,6 +202,17 @@ class ViewLog(QDialog): # {{{ def copy_to_clipboard(self): txt = self.tb.toPlainText() QApplication.clipboard().setText(txt) + + def resize_dialog(self): + if self.geom is None: + self.resize(QSize(700, 500)) + else: + self.restoreGeometry(self.geom) + + def dialog_closing(self, result): + if self.unique_name: + self.geom = bytearray(self.saveGeometry()) + gprefs[self.unique_name] = self.geom # }}} _proceed_memory = [] diff --git a/src/calibre/gui2/proceed.py b/src/calibre/gui2/proceed.py index 84634d3284..00e7a1f782 100644 --- a/src/calibre/gui2/proceed.py +++ b/src/calibre/gui2/proceed.py @@ -20,7 +20,8 @@ from calibre.gui2.dialogs.message_box import ViewLog Question = namedtuple('Question', 'payload callback cancel_callback ' 'title msg html_log log_viewer_title log_is_file det_msg ' 'show_copy_button checkbox_msg checkbox_checked action_callback ' - 'action_label action_icon focus_action show_det show_ok icon') + 'action_label action_icon focus_action show_det show_ok icon ' + 'log_viewer_unique_name') class Icon(QWidget): @@ -306,7 +307,7 @@ class ProceedQuestion(QWidget): msg, det_msg='', show_copy_button=False, cancel_callback=None, log_is_file=False, checkbox_msg=None, checkbox_checked=False, action_callback=None, action_label=None, action_icon=None, focus_action=False, - show_det=False, show_ok=False, icon=None, **kw): + show_det=False, show_ok=False, icon=None, log_viewer_unique_name=None, **kw): ''' A non modal popup that notifies the user that a background task has been completed. This class guarantees that only a single popup is @@ -341,12 +342,13 @@ class ProceedQuestion(QWidget): :param show_det: If True, the Detailed message will be shown initially :param show_ok: If True, OK will be shown instead of YES/NO :param icon: The icon to be used for this popop (defaults to question mark). Can be either a QIcon or a string to be used with I() + :log_viewer_unique_name: If set, ViewLog will remember/reuse its size for this name in calibre.gui2.gprefs ''' question = Question( payload, callback, cancel_callback, title, msg, html_log, log_viewer_title, log_is_file, det_msg, show_copy_button, checkbox_msg, checkbox_checked, action_callback, action_label, - action_icon, focus_action, show_det, show_ok, icon) + action_icon, focus_action, show_det, show_ok, icon, log_viewer_unique_name) self.questions.append(question) self.show_question() @@ -358,7 +360,7 @@ class ProceedQuestion(QWidget): with open(log, 'rb') as f: log = f.read().decode('utf-8') self.log_viewer = ViewLog(q.log_viewer_title, log, - parent=self) + parent=self, unique_name=q.log_viewer_unique_name) def paintEvent(self, ev): painter = QPainter(self)