6 """ |
6 """ |
7 Module implementing a specialized error message dialog. |
7 Module implementing a specialized error message dialog. |
8 """ |
8 """ |
9 |
9 |
10 from PyQt4.QtCore import qInstallMsgHandler, QCoreApplication, QtDebugMsg, \ |
10 from PyQt4.QtCore import qInstallMsgHandler, QCoreApplication, QtDebugMsg, \ |
11 QtWarningMsg, QtCriticalMsg, QtFatalMsg, QThread, QMetaObject, Qt, Q_ARG |
11 QtWarningMsg, QtCriticalMsg, QtFatalMsg, QThread, QMetaObject, Qt, Q_ARG, \ |
12 from PyQt4.QtGui import QErrorMessage, qApp |
12 QSettings |
|
13 from PyQt4.QtGui import QErrorMessage, qApp, QDialog |
13 |
14 |
|
15 import Globals |
14 import Utilities |
16 import Utilities |
15 |
17 |
16 |
18 |
17 __msgHandlerDialog = None |
19 __msgHandlerDialog = None |
18 __origMsgHandler = None |
20 __origMsgHandler = None |
28 |
30 |
29 @param parent reference to the parent widget (QWidget) |
31 @param parent reference to the parent widget (QWidget) |
30 """ |
32 """ |
31 super().__init__(parent) |
33 super().__init__(parent) |
32 |
34 |
33 # TODO: make this list configurable by the user |
35 self.settings = QSettings(QSettings.IniFormat, |
34 self.__filters = [ |
36 QSettings.UserScope, |
|
37 Globals.settingsNameOrganization, |
|
38 "eric5messagefilters") |
|
39 |
|
40 self.__defaultFilters = [ |
35 "QFont::", |
41 "QFont::", |
36 "QCocoaMenu::removeMenuItem", |
42 "QCocoaMenu::removeMenuItem", |
37 "QCocoaMenu::insertNative", |
43 "QCocoaMenu::insertNative", |
38 ",type id:" |
44 ",type id:" |
39 ] |
45 ] |
61 if not self.__filterMessage(message): |
67 if not self.__filterMessage(message): |
62 if msgType: |
68 if msgType: |
63 super().showMessage(message, msgType) |
69 super().showMessage(message, msgType) |
64 else: |
70 else: |
65 super().showMessage(message) |
71 super().showMessage(message) |
|
72 |
|
73 def editMessageFilters(self): |
|
74 """ |
|
75 Public method to edit the list of message filters. |
|
76 """ |
|
77 from .E5ErrorMessageFilterDialog import E5ErrorMessageFilterDialog |
|
78 dlg = E5ErrorMessageFilterDialog( |
|
79 self.settings.value("MessageFilters", self.__defaultFilters)) |
|
80 if dlg.exec_() == QDialog.Accepted: |
|
81 filters = dlg.getFilters() |
|
82 self.settings.setValue("MessageFilters", filters) |
66 |
83 |
67 |
84 |
68 def messageHandler(msgType, message): |
85 def messageHandler(msgType, message): |
69 """ |
86 """ |
70 Module function handling messages. |
87 Module function handling messages. |
129 # Install an E5ErrorMessage dialog as the global message handler. |
146 # Install an E5ErrorMessage dialog as the global message handler. |
130 __msgHandlerDialog = E5ErrorMessage() |
147 __msgHandlerDialog = E5ErrorMessage() |
131 __origMsgHandler = qInstallMsgHandler(messageHandler) |
148 __origMsgHandler = qInstallMsgHandler(messageHandler) |
132 |
149 |
133 return __msgHandlerDialog |
150 return __msgHandlerDialog |
|
151 |
|
152 |
|
153 def editMessageFilters(): |
|
154 """ |
|
155 Module function to edit the list of message filters. |
|
156 """ |
|
157 if __msgHandlerDialog: |
|
158 __msgHandlerDialog.editMessageFilters() |
|
159 else: |
|
160 print(QCoreApplication.translate( "E5ErrorMessage", |
|
161 "No message handler installed.")) |
|
162 |
|
163 |
|
164 def messageHandlerInstalled(): |
|
165 """ |
|
166 Module function to check, if a message handler was installed. |
|
167 |
|
168 @return flag indicating an installed message handler (boolean) |
|
169 """ |
|
170 return __msgHandlerDialog is not None |