Plugins/CheckerPlugins/Pep8/CodeStyleCodeSelectionDialog.py

changeset 2972
ae58d4b2562e
parent 2971
efd4a4343019
child 2978
9d63132a23e0
diff -r efd4a4343019 -r ae58d4b2562e Plugins/CheckerPlugins/Pep8/CodeStyleCodeSelectionDialog.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/CheckerPlugins/Pep8/CodeStyleCodeSelectionDialog.py	Mon Sep 30 19:21:19 2013 +0200
@@ -0,0 +1,90 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to select PEP 8 message codes.
+"""
+
+from PyQt4.QtCore import QCoreApplication
+from PyQt4.QtGui import QDialog, QTreeWidgetItem
+
+from . import pep8
+from .Pep8NamingChecker import Pep8NamingChecker
+from .DocStyleChecker import DocStyleChecker
+
+from .Ui_CodeStyleCodeSelectionDialog import Ui_CodeStyleCodeSelectionDialog
+
+import UI.PixmapCache
+
+
+class CodeStyleCodeSelectionDialog(QDialog, Ui_CodeStyleCodeSelectionDialog):
+    """
+    Class implementing a dialog to select PEP 8 message codes.
+    """
+    def __init__(self, codes, showFixCodes, parent=None):
+        """
+        Constructor
+        
+        @param codes comma separated list of selected codes (string)
+        @param showFixCodes flag indicating to show a list of fixable
+            issues (boolean)
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        codeList = [code.strip() for code in codes.split(",") if code.strip()]
+        
+        if showFixCodes:
+            from .Pep8Fixer import Pep8FixableIssues
+            selectableCodes = Pep8FixableIssues
+        else:
+            selectableCodes = list(pep8.pep8_messages.keys())
+            selectableCodes.extend(Pep8NamingChecker.Messages.keys())
+            selectableCodes.extend(DocStyleChecker.Messages.keys())
+        for code in sorted(selectableCodes):
+            if code in pep8.pep8_messages_sample_args:
+                message = QCoreApplication.translate(
+                    "pep8", pep8.pep8_messages[code]).format(
+                    *pep8.pep8_messages_sample_args[code])
+            elif code in pep8.pep8_messages:
+                message = QCoreApplication.translate(
+                    "pep8", pep8.pep8_messages[code])
+            elif code in Pep8NamingChecker.Messages:
+                message = QCoreApplication.translate(
+                    "Pep8NamingChecker",
+                    Pep8NamingChecker.Messages[code])
+            elif code in DocStyleChecker.Messages:
+                message = QCoreApplication.translate(
+                    "DocStyleChecker", DocStyleChecker.Messages[code])
+            else:
+                continue
+            itm = QTreeWidgetItem(self.codeTable, [code, message])
+            if code.startswith("W"):
+                itm.setIcon(0, UI.PixmapCache.getIcon("warning.png"))
+            elif code.startswith("E"):
+                itm.setIcon(0, UI.PixmapCache.getIcon("syntaxError.png"))
+            elif code.startswith("N"):
+                itm.setIcon(0, UI.PixmapCache.getIcon("namingError.png"))
+            elif code.startswith("D"):
+                itm.setIcon(0, UI.PixmapCache.getIcon("docstringError.png"))
+            if code in codeList:
+                itm.setSelected(True)
+                codeList.remove(code)
+        
+        self.__extraCodes = codeList[:]
+    
+    def getSelectedCodes(self):
+        """
+        Public method to get a comma separated list of codes selected.
+        
+        @return comma separated list of selected codes (string)
+        """
+        selectedCodes = []
+        
+        for itm in self.codeTable.selectedItems():
+            selectedCodes.append(itm.text(0))
+        
+        return ", ".join(self.__extraCodes + selectedCodes)

eric ide

mercurial