Fri, 05 Apr 2019 19:08:41 +0200
Finished Snapshot development.
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
6645
ad476851d7e0
Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6393
diff
changeset
|
3 | # Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a specialized error message dialog. |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
3145
a9de05d4a22f
# __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3058
diff
changeset
|
10 | from __future__ import unicode_literals |
2791
a9577f248f04
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2770
diff
changeset
|
11 | |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
12 | from PyQt5.QtCore import qInstallMessageHandler, QtDebugMsg, QtWarningMsg, \ |
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
13 | QtCriticalMsg, QtFatalMsg, QThread, QMetaObject, Qt, Q_ARG, QSettings |
3656
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3178
diff
changeset
|
14 | from PyQt5.QtWidgets import QErrorMessage, qApp, QDialog |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
2697
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
16 | import Globals |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | import Utilities |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
20 | _msgHandlerDialog = None |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
21 | _origMsgHandler = None |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
22 | |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
23 | _filterSettings = QSettings( |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
24 | QSettings.IniFormat, |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
25 | QSettings.UserScope, |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
26 | Globals.settingsNameOrganization, |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
27 | "eric6messagefilters") |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
28 | _defaultFilters = [ |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
29 | "QFont::", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
30 | "QCocoaMenu::removeMenuItem", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
31 | "QCocoaMenu::insertNative", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
32 | ",type id:", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
33 | "Remote debugging server started successfully", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
34 | "Uncaught SecurityError:", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
35 | "Content Security Policy", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
36 | "QXcbClipboard:", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
37 | "QXcbConnection: XCB error", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
38 | "libpng warning: iCCP:", |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
39 | ] |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
40 | |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
41 | |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
42 | def filterMessage(message): |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
43 | """ |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
44 | Module function to filter messages. |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
45 | |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
46 | @param message message to be checked |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
47 | @type str |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
48 | @return flag indicating that the message should be filtered out |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
49 | @rtype bool |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
50 | """ |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
51 | for filterStr in Globals.toList(_filterSettings.value( |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
52 | "MessageFilters", _defaultFilters)): |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
53 | if filterStr in message: |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
54 | return True |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
55 | |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
56 | return False |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | class E5ErrorMessage(QErrorMessage): |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | """ |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | Class implementing a specialized error message dialog. |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | def __init__(self, parent=None): |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | """ |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | Constructor |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
67 | @param parent reference to the parent widget |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
68 | @type QWidget |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | """ |
2791
a9577f248f04
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2770
diff
changeset
|
70 | super(E5ErrorMessage, self).__init__(parent) |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | def showMessage(self, message, msgType=""): |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | """ |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | Public method to show a message. |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
76 | @param message error message to be shown |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
77 | @type str |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
78 | @param msgType type of the error message |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
79 | @type str |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | """ |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
81 | if not filterMessage(message): |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | if msgType: |
2791
a9577f248f04
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2770
diff
changeset
|
83 | super(E5ErrorMessage, self).showMessage(message, msgType) |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | else: |
2791
a9577f248f04
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2770
diff
changeset
|
85 | super(E5ErrorMessage, self).showMessage(message) |
2697
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
86 | |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
87 | def editMessageFilters(self): |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
88 | """ |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
89 | Public method to edit the list of message filters. |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
90 | """ |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
91 | from .E5ErrorMessageFilterDialog import E5ErrorMessageFilterDialog |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
92 | dlg = E5ErrorMessageFilterDialog( |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
93 | Globals.toList(_filterSettings.value( |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
94 | "MessageFilters", _defaultFilters)), |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
95 | _defaultFilters) |
2697
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
96 | if dlg.exec_() == QDialog.Accepted: |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
97 | filters = dlg.getFilters() |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
98 | _filterSettings.setValue("MessageFilters", filters) |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | |
3776
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
101 | def messageHandler(msgType, *args): |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | """ |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | Module function handling messages. |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
105 | @param msgType type of the message |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
106 | @type int, QtMsgType |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
107 | @param args message handler arguments, for PyQt4 message to be shown, for |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
108 | PyQt5 context information and message to be shown |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
109 | @type PyQt4: bytes; PyQt5: tuple of (QMessageLogContext, bytes) |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | """ |
3776
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
111 | if len(args) == 2: |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
112 | context = args[0] |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
113 | message = args[1] |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
114 | else: |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
115 | message = args[0] |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
116 | if _msgHandlerDialog: |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
117 | try: |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
118 | if msgType == QtDebugMsg: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
119 | messageType = "Debug Message:" |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
120 | elif msgType == QtWarningMsg: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
121 | messageType = "Warning:" |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
122 | elif msgType == QtCriticalMsg: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
123 | messageType = "Critical:" |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
124 | elif msgType == QtFatalMsg: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
125 | messageType = "Fatal Error:" |
2696
c25359355787
Fixed another issue in the new error message dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2695
diff
changeset
|
126 | if isinstance(message, bytes): |
3663
83e22cb3b312
Fixed a little issue in the error message handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3656
diff
changeset
|
127 | message = Utilities.decodeBytes(message) |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
128 | if filterMessage(message): |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
129 | return |
2742
bf0560b035bf
Fixed an issue in the E5ErrorMessage dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2697
diff
changeset
|
130 | message = message.replace("\r\n", "<br/>")\ |
bf0560b035bf
Fixed an issue in the E5ErrorMessage dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2697
diff
changeset
|
131 | .replace("\n", "<br/>")\ |
bf0560b035bf
Fixed an issue in the E5ErrorMessage dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2697
diff
changeset
|
132 | .replace("\r", "<br/>") |
6393
46e4ae753e22
E5ErrorMessage: streamline the handling of error messages a little bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6391
diff
changeset
|
133 | if len(args) == 2 and context.file is not None: |
3776
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
134 | msg = "<p><b>{0}</b></p><p>{1}</p><p>File: {2}</p>" \ |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
135 | "<p>Line: {3}</p><p>Function: {4}</p>".format( |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
136 | messageType, Utilities.html_uencode(message), |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
137 | context.file, context.line, context.function) |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
138 | else: |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
139 | msg = "<p><b>{0}</b></p><p>{1}</p>".format( |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
140 | messageType, Utilities.html_uencode(message)) |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
141 | if QThread.currentThread() == qApp.thread(): |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
142 | _msgHandlerDialog.showMessage(msg) |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
143 | else: |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
144 | QMetaObject.invokeMethod( |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
145 | _msgHandlerDialog, |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
146 | "showMessage", |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
147 | Qt.QueuedConnection, |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
148 | Q_ARG(str, msg)) |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
149 | return |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
150 | except RuntimeError: |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
151 | pass |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
152 | elif _origMsgHandler: |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
153 | _origMsgHandler(msgType, message) |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
154 | return |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
155 | |
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
156 | if msgType == QtDebugMsg: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
157 | messageType = "Debug Message" |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
158 | elif msgType == QtWarningMsg: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
159 | messageType = "Warning" |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
160 | elif msgType == QtCriticalMsg: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
161 | messageType = "Critical" |
2695
13c6301cbed3
Fixed an issue in the new error message window.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2683
diff
changeset
|
162 | elif msgType == QtFatalMsg: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
163 | messageType = "Fatal Error" |
2696
c25359355787
Fixed another issue in the new error message dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2695
diff
changeset
|
164 | if isinstance(message, bytes): |
c25359355787
Fixed another issue in the new error message dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2695
diff
changeset
|
165 | message = message.decode() |
3776
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
166 | if len(args) == 2: |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
167 | print("{0}: {1} in {2} at line {3} ({4})".format( |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
168 | messageType, message, context.file, context.line, |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
169 | context.function)) |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
170 | else: |
ccb6eacb50e5
Started adding code to make eric6 usable with PyQt5 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3687
diff
changeset
|
171 | print("{0}: {1}".format(messageType, message)) |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | def qtHandler(): |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | """ |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | Module function to install an E5ErrorMessage dialog as the global |
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | message handler. |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2770
diff
changeset
|
178 | |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
179 | @return reference to the message handler dialog |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
180 | @rtype E5ErrorMessage |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | """ |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
182 | global _msgHandlerDialog, _origMsgHandler |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
184 | if _msgHandlerDialog is None: |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | # Install an E5ErrorMessage dialog as the global message handler. |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
186 | _msgHandlerDialog = E5ErrorMessage() |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
187 | _origMsgHandler = qInstallMessageHandler(messageHandler) |
2683
ef93fc7332a2
Added a specialized error message handler allowing to filter messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
189 | return _msgHandlerDialog |
2697
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
190 | |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
191 | |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
192 | def editMessageFilters(): |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
193 | """ |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
194 | Module function to edit the list of message filters. |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
195 | """ |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
196 | if _msgHandlerDialog: |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
197 | _msgHandlerDialog.editMessageFilters() |
2697
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
198 | else: |
5840
36f8973c5a8d
Removed the translations from E5ErrorMessage as this causes issues on openSUSE Leap 42.3 (maybe earlier versions as well).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
199 | print("No message handler installed.") |
2697
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
200 | |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
201 | |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
202 | def messageHandlerInstalled(): |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
203 | """ |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
204 | Module function to check, if a message handler was installed. |
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
205 | |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
206 | @return flag indicating an installed message handler |
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
207 | @rtype bool |
2697
1cd7fa670b05
Added a dialog to edit the list of unwanted error messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2696
diff
changeset
|
208 | """ |
6391
0b91857640ed
E5ErrorMessage: improved the functionality to be able to cope with error message from threads.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
209 | return _msgHandlerDialog is not None |
4566
a2e8f3c420ec
Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4241
diff
changeset
|
210 | |
a2e8f3c420ec
Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4241
diff
changeset
|
211 | # |
a2e8f3c420ec
Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4241
diff
changeset
|
212 | # eflag: noqa = M801 |