|
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) |