E5Gui/E5ErrorMessage.py

changeset 3656
441956d8fce5
parent 3178
f25fc1364c88
child 3663
83e22cb3b312
equal deleted inserted replaced
3654:ffeb85cdc72d 3656:441956d8fce5
7 Module implementing a specialized error message dialog. 7 Module implementing a specialized error message dialog.
8 """ 8 """
9 9
10 from __future__ import unicode_literals 10 from __future__ import unicode_literals
11 11
12 from PyQt4.QtCore import qInstallMsgHandler, QCoreApplication, QtDebugMsg, \ 12 from PyQt5.QtCore import qInstallMessageHandler, QCoreApplication, \
13 QtWarningMsg, QtCriticalMsg, QtFatalMsg, QThread, QMetaObject, Qt, Q_ARG, \ 13 QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QThread, \
14 QSettings 14 QMetaObject, Qt, Q_ARG, QSettings
15 from PyQt4.QtGui import QErrorMessage, qApp, QDialog 15 from PyQt5.QtWidgets import QErrorMessage, qApp, QDialog
16 16
17 import Globals 17 import Globals
18 import Utilities 18 import Utilities
19 19
20 20
85 if dlg.exec_() == QDialog.Accepted: 85 if dlg.exec_() == QDialog.Accepted:
86 filters = dlg.getFilters() 86 filters = dlg.getFilters()
87 self.settings.setValue("MessageFilters", filters) 87 self.settings.setValue("MessageFilters", filters)
88 88
89 89
90 def messageHandler(msgType, message): 90 def messageHandler(msgType, context, message):
91 """ 91 """
92 Module function handling messages. 92 Module function handling messages.
93 93
94 @param msgType type of the message (integer, QtMsgType) 94 @param msgType type of the message (integer, QtMsgType)
95 @param message message to be shown (bytes) 95 @param message message to be shown (bytes)
111 if isinstance(message, bytes): 111 if isinstance(message, bytes):
112 message = message.decode() 112 message = message.decode()
113 message = message.replace("\r\n", "<br/>")\ 113 message = message.replace("\r\n", "<br/>")\
114 .replace("\n", "<br/>")\ 114 .replace("\n", "<br/>")\
115 .replace("\r", "<br/>") 115 .replace("\r", "<br/>")
116 msg = "<p><b>{0}</b></p><p>{1}</p>".format( 116 msg = "<p><b>{0}</b></p><p>{1}</p><p>File: {2}</p>" \
117 messageType, Utilities.html_uencode(message)) 117 "<p>Line: {3}</p><p>Function: {4}</p>".format(
118 messageType, Utilities.html_uencode(message),
119 context.file, context.line, context.function)
118 if QThread.currentThread() == qApp.thread(): 120 if QThread.currentThread() == qApp.thread():
119 __msgHandlerDialog.showMessage(msg) 121 __msgHandlerDialog.showMessage(msg)
120 else: 122 else:
121 QMetaObject.invokeMethod( 123 QMetaObject.invokeMethod(
122 __msgHandlerDialog, 124 __msgHandlerDialog,
142 elif msgType == QtFatalMsg: 144 elif msgType == QtFatalMsg:
143 messageType = QCoreApplication.translate( 145 messageType = QCoreApplication.translate(
144 "E5ErrorMessage", "Fatal Error") 146 "E5ErrorMessage", "Fatal Error")
145 if isinstance(message, bytes): 147 if isinstance(message, bytes):
146 message = message.decode() 148 message = message.decode()
147 print("{0}: {1}".format(messageType, message)) 149 print("{0}: {1} in {2} at line {3} ({4})".format(
150 messageType, message, context.file, context.line, context.function))
148 151
149 152
150 def qtHandler(): 153 def qtHandler():
151 """ 154 """
152 Module function to install an E5ErrorMessage dialog as the global 155 Module function to install an E5ErrorMessage dialog as the global
157 global __msgHandlerDialog, __origMsgHandler 160 global __msgHandlerDialog, __origMsgHandler
158 161
159 if __msgHandlerDialog is None: 162 if __msgHandlerDialog is None:
160 # Install an E5ErrorMessage dialog as the global message handler. 163 # Install an E5ErrorMessage dialog as the global message handler.
161 __msgHandlerDialog = E5ErrorMessage() 164 __msgHandlerDialog = E5ErrorMessage()
162 __origMsgHandler = qInstallMsgHandler(messageHandler) 165 __origMsgHandler = qInstallMessageHandler(messageHandler)
163 166
164 return __msgHandlerDialog 167 return __msgHandlerDialog
165 168
166 169
167 def editMessageFilters(): 170 def editMessageFilters():

eric ide

mercurial