From f9cfc4d6a0c25d959b47c58ccbbb5fa8cadf87ab Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 26 May 2021 22:02:39 +0530 Subject: [PATCH] Add support for rich text in details message in info boxes --- src/calibre/gui2/dialogs/message_box.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/calibre/gui2/dialogs/message_box.py b/src/calibre/gui2/dialogs/message_box.py index 5684e081ad..1b6f4dc11a 100644 --- a/src/calibre/gui2/dialogs/message_box.py +++ b/src/calibre/gui2/dialogs/message_box.py @@ -7,12 +7,11 @@ __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' import sys - from qt.core import ( - QPainter, QDialog, QIcon, QApplication, QSize, QKeySequence, - QAction, Qt, QTextBrowser, QDialogButtonBox, QVBoxLayout, QGridLayout, - QLabel, QPlainTextEdit, QTextDocument, QCheckBox, pyqtSignal, QWidget, - QSizePolicy) + QAction, QApplication, QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QIcon, + QKeySequence, QLabel, QPainter, QPlainTextEdit, QSize, QSizePolicy, Qt, + QTextBrowser, QTextDocument, QVBoxLayout, QWidget, pyqtSignal +) from calibre.constants import __version__, isfrozen from calibre.gui2 import gprefs @@ -63,7 +62,7 @@ class MessageBox(QDialog): # {{{ la.setOpenExternalLinks(True) la.setObjectName("msg") l.addWidget(la, 0, 1, 1, 1) - self.det_msg = dm = QPlainTextEdit(self) + self.det_msg = dm = QTextBrowser(self) dm.setReadOnly(True) dm.setObjectName("det_msg") l.addWidget(dm, 1, 0, 1, 2) @@ -106,7 +105,10 @@ class MessageBox(QDialog): # {{{ self.setWindowIcon(self.icon) self.icon_widget.set_icon(self.icon) self.msg.setText(msg) - self.det_msg.setPlainText(det_msg) + if det_msg and Qt.mightBeRichText(det_msg): + self.det_msg.setHtml(det_msg) + else: + self.det_msg.setPlainText(det_msg) self.det_msg.setVisible(False) self.toggle_checkbox.setVisible(False) @@ -194,7 +196,10 @@ class MessageBox(QDialog): # {{{ def set_details(self, msg): if not msg: msg = '' - self.det_msg.setPlainText(msg) + if Qt.mightBeRichText(msg): + self.det_msg.setHtml(msg) + else: + self.det_msg.setPlainText(msg) self.det_msg_toggle.setText(self.show_det_msg) self.det_msg_toggle.setVisible(bool(msg)) self.det_msg.setVisible(False) @@ -488,8 +493,8 @@ class JobError(QDialog): # {{{ if __name__ == '__main__': - from calibre.gui2 import question_dialog, Application + from calibre.gui2 import Application, question_dialog app = Application([]) print(question_dialog(None, 'title', 'msg goog ', - det_msg='det '*1000, + det_msg='

hi there guy '*1000, show_copy_button=True))