E5Gui/E5ErrorMessage.py

changeset 6391
0b91857640ed
parent 6048
82ad8ec9548c
child 6393
46e4ae753e22
--- a/E5Gui/E5ErrorMessage.py	Sat Jun 30 17:02:52 2018 +0200
+++ b/E5Gui/E5ErrorMessage.py	Sat Jun 30 17:40:08 2018 +0200
@@ -17,8 +17,43 @@
 import Utilities
 
 
-__msgHandlerDialog = None
-__origMsgHandler = None
+_msgHandlerDialog = None
+_origMsgHandler = None
+
+_filterSettings = QSettings(
+    QSettings.IniFormat,
+    QSettings.UserScope,
+    Globals.settingsNameOrganization,
+    "eric6messagefilters")
+_defaultFilters = [
+    "QFont::",
+    "QCocoaMenu::removeMenuItem",
+    "QCocoaMenu::insertNative",
+    ",type id:",
+    "Remote debugging server started successfully",
+    "Uncaught SecurityError:",
+    "Content Security Policy",
+    "QXcbClipboard:",
+    "QXcbConnection: XCB error",
+    "libpng warning: iCCP:",
+]
+
+
+def filterMessage(message):
+    """
+    Module function to filter messages.
+    
+    @param message message to be checked
+    @type str
+    @return flag indicating that the message should be filtered out
+    @rtype bool
+    """
+    for filterStr in Globals.toList(_filterSettings.value(
+            "MessageFilters", _defaultFilters)):
+        if filterStr in message:
+            return True
+    
+    return False
 
 
 class E5ErrorMessage(QErrorMessage):
@@ -29,52 +64,21 @@
         """
         Constructor
         
-        @param parent reference to the parent widget (QWidget)
+        @param parent reference to the parent widget
+        @type QWidget
         """
         super(E5ErrorMessage, self).__init__(parent)
-        
-        self.settings = QSettings(
-            QSettings.IniFormat,
-            QSettings.UserScope,
-            Globals.settingsNameOrganization,
-            "eric6messagefilters")
-        
-        self.__defaultFilters = [
-            "QFont::",
-            "QCocoaMenu::removeMenuItem",
-            "QCocoaMenu::insertNative",
-            ",type id:",
-            "Remote debugging server started successfully",
-            "Uncaught SecurityError:",
-            "Content Security Policy",
-            "QXcbClipboard:",
-            "QXcbConnection: XCB error",
-            "libpng warning: iCCP:",
-        ]
-    
-    def __filterMessage(self, message):
-        """
-        Private method to filter messages.
-        
-        @param message message to be checked (string)
-        @return flag indicating that the message should be filtered out
-            (boolean)
-        """
-        for filterStr in Globals.toList(self.settings.value(
-                "MessageFilters", self.__defaultFilters)):
-            if filterStr in message:
-                return True
-        
-        return False
     
     def showMessage(self, message, msgType=""):
         """
         Public method to show a message.
         
-        @param message error message to be shown (string)
-        @param msgType type of the error message (string)
+        @param message error message to be shown
+        @type str
+        @param msgType type of the error message
+        @type str
         """
-        if not self.__filterMessage(message):
+        if not filterMessage(message):
             if msgType:
                 super(E5ErrorMessage, self).showMessage(message, msgType)
             else:
@@ -86,29 +90,30 @@
         """
         from .E5ErrorMessageFilterDialog import E5ErrorMessageFilterDialog
         dlg = E5ErrorMessageFilterDialog(
-            Globals.toList(self.settings.value(
-                "MessageFilters", self.__defaultFilters)),
-            self.__defaultFilters)
+            Globals.toList(_filterSettings.value(
+                "MessageFilters", _defaultFilters)),
+            _defaultFilters)
         if dlg.exec_() == QDialog.Accepted:
             filters = dlg.getFilters()
-            self.settings.setValue("MessageFilters", filters)
+            _filterSettings.setValue("MessageFilters", filters)
 
 
 def messageHandler(msgType, *args):
     """
     Module function handling messages.
     
-    @param msgType type of the message (integer, QtMsgType)
-    @param args message handler arguments, for PyQt4 message to be shown
-        (bytes), for PyQt5 context information (QMessageLogContext) and
-        message to be shown (bytes)
+    @param msgType type of the message
+    @type  int, QtMsgType
+    @param args message handler arguments, for PyQt4 message to be shown, for
+        PyQt5 context information and message to be shown
+    @type PyQt4: bytes; PyQt5: tuple of (QMessageLogContext, bytes)
     """
     if len(args) == 2:
         context = args[0]
         message = args[1]
     else:
         message = args[0]
-    if __msgHandlerDialog:
+    if _msgHandlerDialog:
         try:
             if msgType == QtDebugMsg:
                 messageType = "Debug Message:"
@@ -120,6 +125,8 @@
                 messageType = "Fatal Error:"
             if isinstance(message, bytes):
                 message = Utilities.decodeBytes(message)
+            if filterMessage(message):
+                return
             message = message.replace("\r\n", "<br/>")\
                              .replace("\n", "<br/>")\
                              .replace("\r", "<br/>")
@@ -132,18 +139,18 @@
                 msg = "<p><b>{0}</b></p><p>{1}</p>".format(
                     messageType, Utilities.html_uencode(message))
             if QThread.currentThread() == qApp.thread():
-                __msgHandlerDialog.showMessage(msg)
+                _msgHandlerDialog.showMessage(msg)
             else:
                 QMetaObject.invokeMethod(
-                    __msgHandlerDialog,
+                    _msgHandlerDialog,
                     "showMessage",
                     Qt.QueuedConnection,
                     Q_ARG(str, msg))
             return
         except RuntimeError:
             pass
-    elif __origMsgHandler:
-        __origMsgHandler(msgType, message)
+    elif _origMsgHandler:
+        _origMsgHandler(msgType, message)
         return
     
     if msgType == QtDebugMsg:
@@ -169,24 +176,25 @@
     Module function to install an E5ErrorMessage dialog as the global
     message handler.
     
-    @return reference to the message handler dialog (E5ErrorMessage)
+    @return reference to the message handler dialog
+    @rtype E5ErrorMessage
     """
-    global __msgHandlerDialog, __origMsgHandler
+    global _msgHandlerDialog, _origMsgHandler
     
-    if __msgHandlerDialog is None:
+    if _msgHandlerDialog is None:
         # Install an E5ErrorMessage dialog as the global message handler.
-        __msgHandlerDialog = E5ErrorMessage()
-        __origMsgHandler = qInstallMessageHandler(messageHandler)
+        _msgHandlerDialog = E5ErrorMessage()
+        _origMsgHandler = qInstallMessageHandler(messageHandler)
     
-    return __msgHandlerDialog
+    return _msgHandlerDialog
 
 
 def editMessageFilters():
     """
     Module function to edit the list of message filters.
     """
-    if __msgHandlerDialog:
-        __msgHandlerDialog.editMessageFilters()
+    if _msgHandlerDialog:
+        _msgHandlerDialog.editMessageFilters()
     else:
         print("No message handler installed.")
 
@@ -195,9 +203,10 @@
     """
     Module function to check, if a message handler was installed.
     
-    @return flag indicating an installed message handler (boolean)
+    @return flag indicating an installed message handler
+    @rtype bool
     """
-    return __msgHandlerDialog is not None
+    return _msgHandlerDialog is not None
 
 #
 # eflag: noqa = M801

eric ide

mercurial