Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py

changeset 4509
7797ee4a45f9
parent 4506
57666e501a42
child 4514
e410e76d6538
--- a/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py	Tue Oct 27 19:46:12 2015 +0100
+++ b/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py	Wed Oct 28 19:47:16 2015 +0100
@@ -40,6 +40,10 @@
     codeRole = Qt.UserRole + 6
     ignoredRole = Qt.UserRole + 7
     
+    availableFutures = [
+        'division', 'absolute_import', 'with_statement',
+        'print_function', 'unicode_literals', 'generator_stop']
+    
     def __init__(self, styleCheckService, parent=None):
         """
         Constructor
@@ -64,6 +68,8 @@
         self.docTypeComboBox.addItem(self.tr("PEP-257"), "pep257")
         self.docTypeComboBox.addItem(self.tr("Eric"), "eric")
         
+        self.futuresList.addItems(self.availableFutures)
+        
         self.statisticsButton = self.buttonBox.addButton(
             self.tr("Statistics..."), QDialogButtonBox.ActionRole)
         self.statisticsButton.setToolTip(
@@ -307,6 +313,8 @@
                 "CopyrightAuthor" not in self.__data:
             self.__data["CopyrightMinFileSize"] = 0
             self.__data["CopyrightAuthor"] = ""
+        if "FutureChecker" not in self.__data:
+            self.__data["FutureChecker"] = ""
         
         self.excludeFilesEdit.setText(self.__data["ExcludeFiles"])
         self.excludeMessagesEdit.setText(self.__data["ExcludeMessages"])
@@ -325,6 +333,7 @@
         self.copyrightFileSizeSpinBox.setValue(
             self.__data["CopyrightMinFileSize"])
         self.copyrightAuthorEdit.setText(self.__data["CopyrightAuthor"])
+        self.__initFuturesList(self.__data["FutureChecker"])
     
     def start(self, fn, save=False, repeat=None):
         """
@@ -409,7 +418,8 @@
                 "CopyrightChecker": {
                     "MinFilesize": self.copyrightFileSizeSpinBox.value(),
                     "Author": self.copyrightAuthorEdit.text(),
-                }
+                },
+                "FutureChecker": self.__getSelectedFutureImports(),
             }
             
             self.__options = [excludeMessages, includeMessages, repeatMessages,
@@ -698,6 +708,7 @@
                 "ValidEncodings": self.encodingsEdit.text(),
                 "CopyrightMinFileSize": self.copyrightFileSizeSpinBox.value(),
                 "CopyrightAuthor": self.copyrightAuthorEdit.text(),
+                "FutureChecker": self.__getSelectedFutureImports(),
             }
             if data != self.__data:
                 self.__data = data
@@ -848,25 +859,25 @@
         Private slot to load the default configuration values.
         """
         self.excludeFilesEdit.setText(Preferences.Prefs.settings.value(
-            "PEP8/ExcludeFilePatterns"))
+            "PEP8/ExcludeFilePatterns", ""))
         self.excludeMessagesEdit.setText(Preferences.Prefs.settings.value(
             "PEP8/ExcludeMessages", pep8.DEFAULT_IGNORE))
         self.includeMessagesEdit.setText(Preferences.Prefs.settings.value(
-            "PEP8/IncludeMessages"))
+            "PEP8/IncludeMessages", ""))
         self.repeatCheckBox.setChecked(Preferences.toBool(
-            Preferences.Prefs.settings.value("PEP8/RepeatMessages")))
+            Preferences.Prefs.settings.value("PEP8/RepeatMessages", False)))
         self.fixIssuesEdit.setText(Preferences.Prefs.settings.value(
-            "PEP8/FixCodes"))
+            "PEP8/FixCodes", ""))
         self.noFixIssuesEdit.setText(Preferences.Prefs.settings.value(
             "PEP8/NoFixCodes", "E501"))
         self.fixIssuesCheckBox.setChecked(Preferences.toBool(
-            Preferences.Prefs.settings.value("PEP8/FixIssues")))
+            Preferences.Prefs.settings.value("PEP8/FixIssues", False)))
         self.ignoredCheckBox.setChecked(Preferences.toBool(
-            Preferences.Prefs.settings.value("PEP8/ShowIgnored")))
+            Preferences.Prefs.settings.value("PEP8/ShowIgnored", False)))
         self.lineLengthSpinBox.setValue(int(Preferences.Prefs.settings.value(
             "PEP8/MaxLineLength", pep8.MAX_LINE_LENGTH)))
         self.hangClosingCheckBox.setChecked(Preferences.toBool(
-            Preferences.Prefs.settings.value("PEP8/HangClosing")))
+            Preferences.Prefs.settings.value("PEP8/HangClosing", False)))
         self.docTypeComboBox.setCurrentIndex(self.docTypeComboBox.findData(
             Preferences.Prefs.settings.value("PEP8/DocstringType", "pep257")))
         self.complexitySpinBox.setValue(int(Preferences.Prefs.settings.value(
@@ -876,7 +887,9 @@
         self.copyrightFileSizeSpinBox.setValue(int(
             Preferences.Prefs.settings.value("PEP8/CopyrightMinFileSize", 0)))
         self.copyrightAuthorEdit.setText(
-            Preferences.Prefs.settings.value("PEP8/CopyrightAuthor"))
+            Preferences.Prefs.settings.value("PEP8/CopyrightAuthor", ""))
+        self.__initFuturesList(
+            Preferences.Prefs.settings.value("PEP8/FutureChecker", ""))
     
     @pyqtSlot()
     def on_storeDefaultButton_clicked(self):
@@ -915,6 +928,8 @@
             "PEP8/CopyrightMinFileSize", self.copyrightFileSizeSpinBox.value())
         Preferences.Prefs.settings.setValue(
             "PEP8/CopyrightAuthor", self.copyrightAuthorEdit.text())
+        Preferences.Prefs.settings.setValue(
+            "PEP8/FutureChecker", self.__getSelectedFutureImports())
     
     @pyqtSlot()
     def on_resetDefaultButton_clicked(self):
@@ -939,6 +954,7 @@
             "PEP8/ValidEncodings", "latin-1, utf-8")
         Preferences.Prefs.settings.setValue("PEP8/CopyrightMinFileSize", 0)
         Preferences.Prefs.settings.setValue("PEP8/CopyrightAuthor", "")
+        Preferences.Prefs.settings.setValue("PEP8/FutureChecker", "")
     
     @pyqtSlot(QAbstractButton)
     def on_buttonBox_clicked(self, button):
@@ -1038,3 +1054,30 @@
         """
         return (itm.data(0, self.fixableRole) and
                 not itm.data(0, self.ignoredRole))
+    
+    def __initFuturesList(self, selectedFutures):
+        """
+        Private method to set the selected status of the future imports.
+        
+        @param selectedFutures comma separated list of expected future imports
+        @type str
+        """
+        if selectedFutures:
+            expectedImports = [
+                i.strip() for i in selectedFutures.split(",")
+                if bool(i.strip())]
+        else:
+            expectedImports = []
+        for row in range(self.futuresList.count()):
+            itm = self.futuresList.item(row)
+            itm.setSelected(itm.text() in expectedImports)
+    
+    def __getSelectedFutureImports(self):
+        """
+        Private method to get the expected future imports.
+        
+        @return expected future imports as a comma separated string
+        @rtype str
+        """
+        selectedFutures = [i.text() for i in self.futuresList.selectedItems()]
+        return ", ".join(selectedFutures)

eric ide

mercurial