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 PyQt5.QtCore import qInstallMessageHandler, QCoreApplication, \ |
12 from PyQt5.QtCore import qInstallMessageHandler, QtDebugMsg, QtWarningMsg, \ |
13 QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QThread, \ |
13 QtCriticalMsg, QtFatalMsg, QThread, QMetaObject, Qt, Q_ARG, QSettings |
14 QMetaObject, Qt, Q_ARG, QSettings |
|
15 from PyQt5.QtWidgets import QErrorMessage, qApp, QDialog |
14 from PyQt5.QtWidgets import QErrorMessage, qApp, QDialog |
16 |
15 |
17 import Globals |
16 import Globals |
18 import Utilities |
17 import Utilities |
19 |
18 |
105 else: |
104 else: |
106 message = args[0] |
105 message = args[0] |
107 if __msgHandlerDialog: |
106 if __msgHandlerDialog: |
108 try: |
107 try: |
109 if msgType == QtDebugMsg: |
108 if msgType == QtDebugMsg: |
110 messageType = QCoreApplication.translate( |
109 messageType = "Debug Message:" |
111 "E5ErrorMessage", "Debug Message:") |
|
112 elif msgType == QtWarningMsg: |
110 elif msgType == QtWarningMsg: |
113 messageType = QCoreApplication.translate( |
111 messageType = "Warning:" |
114 "E5ErrorMessage", "Warning:") |
|
115 elif msgType == QtCriticalMsg: |
112 elif msgType == QtCriticalMsg: |
116 messageType = QCoreApplication.translate( |
113 messageType = "Critical:" |
117 "E5ErrorMessage", "Critical:") |
|
118 elif msgType == QtFatalMsg: |
114 elif msgType == QtFatalMsg: |
119 messageType = QCoreApplication.translate( |
115 messageType = "Fatal Error:" |
120 "E5ErrorMessage", "Fatal Error:") |
|
121 if isinstance(message, bytes): |
116 if isinstance(message, bytes): |
122 message = Utilities.decodeBytes(message) |
117 message = Utilities.decodeBytes(message) |
123 message = message.replace("\r\n", "<br/>")\ |
118 message = message.replace("\r\n", "<br/>")\ |
124 .replace("\n", "<br/>")\ |
119 .replace("\n", "<br/>")\ |
125 .replace("\r", "<br/>") |
120 .replace("\r", "<br/>") |
145 elif __origMsgHandler: |
140 elif __origMsgHandler: |
146 __origMsgHandler(msgType, message) |
141 __origMsgHandler(msgType, message) |
147 return |
142 return |
148 |
143 |
149 if msgType == QtDebugMsg: |
144 if msgType == QtDebugMsg: |
150 messageType = QCoreApplication.translate( |
145 messageType = "Debug Message" |
151 "E5ErrorMessage", "Debug Message") |
|
152 elif msgType == QtWarningMsg: |
146 elif msgType == QtWarningMsg: |
153 messageType = QCoreApplication.translate( |
147 messageType = "Warning" |
154 "E5ErrorMessage", "Warning") |
|
155 elif msgType == QtCriticalMsg: |
148 elif msgType == QtCriticalMsg: |
156 messageType = QCoreApplication.translate( |
149 messageType = "Critical" |
157 "E5ErrorMessage", "Critical") |
|
158 elif msgType == QtFatalMsg: |
150 elif msgType == QtFatalMsg: |
159 messageType = QCoreApplication.translate( |
151 messageType = "Fatal Error" |
160 "E5ErrorMessage", "Fatal Error") |
|
161 if isinstance(message, bytes): |
152 if isinstance(message, bytes): |
162 message = message.decode() |
153 message = message.decode() |
163 if len(args) == 2: |
154 if len(args) == 2: |
164 print("{0}: {1} in {2} at line {3} ({4})".format( |
155 print("{0}: {1} in {2} at line {3} ({4})".format( |
165 messageType, message, context.file, context.line, |
156 messageType, message, context.file, context.line, |
190 Module function to edit the list of message filters. |
181 Module function to edit the list of message filters. |
191 """ |
182 """ |
192 if __msgHandlerDialog: |
183 if __msgHandlerDialog: |
193 __msgHandlerDialog.editMessageFilters() |
184 __msgHandlerDialog.editMessageFilters() |
194 else: |
185 else: |
195 print(QCoreApplication.translate( |
186 print("No message handler installed.") |
196 "E5ErrorMessage", "No message handler installed.")) |
|
197 |
187 |
198 |
188 |
199 def messageHandlerInstalled(): |
189 def messageHandlerInstalled(): |
200 """ |
190 """ |
201 Module function to check, if a message handler was installed. |
191 Module function to check, if a message handler was installed. |