Plugins/CheckerPlugins/Pep8/CodeStyleCodeSelectionDialog.py

changeset 2972
ae58d4b2562e
parent 2971
efd4a4343019
child 2978
9d63132a23e0
equal deleted inserted replaced
2971:efd4a4343019 2972:ae58d4b2562e
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2011 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to select PEP 8 message codes.
8 """
9
10 from PyQt4.QtCore import QCoreApplication
11 from PyQt4.QtGui import QDialog, QTreeWidgetItem
12
13 from . import pep8
14 from .Pep8NamingChecker import Pep8NamingChecker
15 from .DocStyleChecker import DocStyleChecker
16
17 from .Ui_CodeStyleCodeSelectionDialog import Ui_CodeStyleCodeSelectionDialog
18
19 import UI.PixmapCache
20
21
22 class CodeStyleCodeSelectionDialog(QDialog, Ui_CodeStyleCodeSelectionDialog):
23 """
24 Class implementing a dialog to select PEP 8 message codes.
25 """
26 def __init__(self, codes, showFixCodes, parent=None):
27 """
28 Constructor
29
30 @param codes comma separated list of selected codes (string)
31 @param showFixCodes flag indicating to show a list of fixable
32 issues (boolean)
33 @param parent reference to the parent widget (QWidget)
34 """
35 super().__init__(parent)
36 self.setupUi(self)
37
38 codeList = [code.strip() for code in codes.split(",") if code.strip()]
39
40 if showFixCodes:
41 from .Pep8Fixer import Pep8FixableIssues
42 selectableCodes = Pep8FixableIssues
43 else:
44 selectableCodes = list(pep8.pep8_messages.keys())
45 selectableCodes.extend(Pep8NamingChecker.Messages.keys())
46 selectableCodes.extend(DocStyleChecker.Messages.keys())
47 for code in sorted(selectableCodes):
48 if code in pep8.pep8_messages_sample_args:
49 message = QCoreApplication.translate(
50 "pep8", pep8.pep8_messages[code]).format(
51 *pep8.pep8_messages_sample_args[code])
52 elif code in pep8.pep8_messages:
53 message = QCoreApplication.translate(
54 "pep8", pep8.pep8_messages[code])
55 elif code in Pep8NamingChecker.Messages:
56 message = QCoreApplication.translate(
57 "Pep8NamingChecker",
58 Pep8NamingChecker.Messages[code])
59 elif code in DocStyleChecker.Messages:
60 message = QCoreApplication.translate(
61 "DocStyleChecker", DocStyleChecker.Messages[code])
62 else:
63 continue
64 itm = QTreeWidgetItem(self.codeTable, [code, message])
65 if code.startswith("W"):
66 itm.setIcon(0, UI.PixmapCache.getIcon("warning.png"))
67 elif code.startswith("E"):
68 itm.setIcon(0, UI.PixmapCache.getIcon("syntaxError.png"))
69 elif code.startswith("N"):
70 itm.setIcon(0, UI.PixmapCache.getIcon("namingError.png"))
71 elif code.startswith("D"):
72 itm.setIcon(0, UI.PixmapCache.getIcon("docstringError.png"))
73 if code in codeList:
74 itm.setSelected(True)
75 codeList.remove(code)
76
77 self.__extraCodes = codeList[:]
78
79 def getSelectedCodes(self):
80 """
81 Public method to get a comma separated list of codes selected.
82
83 @return comma separated list of selected codes (string)
84 """
85 selectedCodes = []
86
87 for itm in self.codeTable.selectedItems():
88 selectedCodes.append(itm.text(0))
89
90 return ", ".join(self.__extraCodes + selectedCodes)

eric ide

mercurial