E5Gui/E5ErrorMessage.py

changeset 2697
1cd7fa670b05
parent 2696
c25359355787
child 2742
bf0560b035bf
equal deleted inserted replaced
2696:c25359355787 2697:1cd7fa670b05
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 ]
43 Private method to filter messages. 49 Private method to filter messages.
44 50
45 @param message message to be checked (string) 51 @param message message to be checked (string)
46 @return flag indicating that the message should be filtered out (boolean) 52 @return flag indicating that the message should be filtered out (boolean)
47 """ 53 """
48 for filter in self.__filters: 54 for filter in self.settings.value("MessageFilters", self.__defaultFilters):
49 if filter in message: 55 if filter in message:
50 return True 56 return True
51 57
52 return False 58 return False
53 59
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

eric ide

mercurial