Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py

Tue, 20 Oct 2015 19:14:55 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 20 Oct 2015 19:14:55 +0200
changeset 4501
3224f20d8eb0
parent 4278
ccd1e13cb9bd
child 4503
d68dcbe1deb3
permissions
-rw-r--r--

Added some TODOs to the various checker dialogs.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
4021
195a471c327b Updated copyright for 2015.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
3 # Copyright (c) 2003 - 2015 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
3004
c4bf32c791d0 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2404
diff changeset
7 Module implementing a dialog to show the output of the tabnanny command
c4bf32c791d0 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2404
diff changeset
8 process.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
3145
a9de05d4a22f # __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3143
diff changeset
11 from __future__ import unicode_literals
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2404
diff changeset
12 try:
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
13 str = unicode
3484
645c12de6b0c Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3456 3190
diff changeset
14 except NameError:
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2404
diff changeset
15 pass
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2404
diff changeset
16
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 import os
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
18 import fnmatch
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
20 from PyQt5.QtCore import pyqtSlot, Qt, QTimer
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
21 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem, \
3004
c4bf32c791d0 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2404
diff changeset
22 QApplication, QHeaderView
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
55
b5c84934de9c Renamed E4Gui to E5Gui.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
24 from E5Gui.E5Application import e5App
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 from .Ui_TabnannyDialog import Ui_TabnannyDialog
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 import Utilities
40
c2e5472b112c Changed some code to adjust eric5 to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
29 import Preferences
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 831
diff changeset
31
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 class TabnannyDialog(QDialog, Ui_TabnannyDialog):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 Class implementing a dialog to show the results of the tabnanny check run.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
36 def __init__(self, indentCheckService, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
40 @param indentCheckService reference to the service (IndentCheckService)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param parent The parent widget (QWidget).
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2404
diff changeset
43 super(TabnannyDialog, self).__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.setupUi(self)
4278
ccd1e13cb9bd Fixed issues where dialogs could not be minimized on some desktop environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4237
diff changeset
45 self.setWindowFlags(Qt.Window)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.resultList.headerItem().setText(self.resultList.columnCount(), "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.resultList.header().setSortIndicator(0, Qt.AscendingOrder)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
53 self.indentCheckService = indentCheckService
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
54 self.indentCheckService.indentChecked.connect(self.__processResult)
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
55 self.indentCheckService.batchFinished.connect(self.__batchFinished)
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
56 self.filename = None
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
57
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.noResults = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.cancelled = False
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
60 self.__finished = True
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
62 self.__fileList = []
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
63 self.__project = None
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
64 self.filterFrame.setVisible(False)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
65
3091
8239cae3f947 Made the progress bar of the syntax and indentation checker dialogs only visible, while it is checking and only if more than 1 file are being checked.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
66 self.checkProgress.setVisible(False)
3137
59d9f8c238f0 Fixed issues in the syntax checker and indentation checker dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3091
diff changeset
67 self.checkProgressLabel.setVisible(False)
59d9f8c238f0 Fixed issues in the syntax checker and indentation checker dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3091
diff changeset
68 self.checkProgressLabel.setMaximumWidth(600)
3091
8239cae3f947 Made the progress bar of the syntax and indentation checker dialogs only visible, while it is checking and only if more than 1 file are being checked.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
69
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 def __resort(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 Private method to resort the tree.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 """
3004
c4bf32c791d0 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2404
diff changeset
74 self.resultList.sortItems(
c4bf32c791d0 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2404
diff changeset
75 self.resultList.sortColumn(),
c4bf32c791d0 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2404
diff changeset
76 self.resultList.header().sortIndicatorOrder())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def __createResultItem(self, file, line, sourcecode):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Private method to create an entry in the result list.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param file filename of file (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @param line linenumber of faulty source (integer or string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @param sourcecode faulty line of code (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
4501
3224f20d8eb0 Added some TODOs to the various checker dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4278
diff changeset
86 # TODO: create the file item relative to the project
1640
1699d46026cd Fixed a compatibility issue with Qt 4.8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
87 itm = QTreeWidgetItem(self.resultList)
1699d46026cd Fixed a compatibility issue with Qt 4.8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
88 itm.setData(0, Qt.DisplayRole, file)
1699d46026cd Fixed a compatibility issue with Qt 4.8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
89 itm.setData(1, Qt.DisplayRole, line)
1699d46026cd Fixed a compatibility issue with Qt 4.8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
90 itm.setData(2, Qt.DisplayRole, sourcecode)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 itm.setTextAlignment(1, Qt.AlignRight)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
93 def prepare(self, fileList, project):
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
94 """
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
95 Public method to prepare the dialog with a list of filenames.
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
96
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
97 @param fileList list of filenames (list of strings)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
98 @param project reference to the project object (Project)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
99 """
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
100 self.__fileList = fileList[:]
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
101 self.__project = project
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
102
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
103 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
104 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
105 self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
106
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
107 self.filterFrame.setVisible(True)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
108
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
109 self.__data = self.__project.getData("CHECKERSPARMS", "Tabnanny")
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
110 if self.__data is None or "ExcludeFiles" not in self.__data:
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 831
diff changeset
111 self.__data = {"ExcludeFiles": ""}
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
112 self.excludeFilesEdit.setText(self.__data["ExcludeFiles"])
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
113
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 def start(self, fn):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 Public slot to start the tabnanny check.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 @param fn File or list of files or directory to be checked
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 (string or list of strings)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 """
805
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 793
diff changeset
121 if self.__project is None:
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 793
diff changeset
122 self.__project = e5App().getObject("Project")
83ca4d1ff648 Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 793
diff changeset
123
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
124 self.cancelled = False
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
125 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
126 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
127 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
3091
8239cae3f947 Made the progress bar of the syntax and indentation checker dialogs only visible, while it is checking and only if more than 1 file are being checked.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
128 self.checkProgress.setVisible(True)
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
129 QApplication.processEvents()
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
130
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
131 if isinstance(fn, list):
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
132 self.files = fn
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 elif os.path.isdir(fn):
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
134 self.files = []
2680
110ac646a3a0 Fixes for TabNanny and some code cleanup. Source doku regenerated.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
135 extensions = set(Preferences.getPython("PythonExtensions") +
3065
070b35dde35e Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3060
diff changeset
136 Preferences.getPython("Python3Extensions"))
2680
110ac646a3a0 Fixes for TabNanny and some code cleanup. Source doku regenerated.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
137 for ext in extensions:
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
138 self.files.extend(
3057
10516539f238 Merge with default branch after shorten the code lines to max. 79 characters.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2680 3004
diff changeset
139 Utilities.direntries(fn, True, '*{0}'.format(ext), 0))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 else:
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
141 self.files = [fn]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
143 if len(self.files) > 0:
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
144 self.checkProgress.setMaximum(len(self.files))
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
145 self.checkProgress.setVisible(len(self.files) > 1)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
146 self.checkProgressLabel.setVisible(len(self.files) > 1)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 QApplication.processEvents()
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
148
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
149 # now go through all the files
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
150 self.progress = 0
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
151 self.files.sort()
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
152 if len(self.files) == 1:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
153 self.__batch = False
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
154 self.check()
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
155 else:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
156 self.__batch = True
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
157 self.checkBatch()
2680
110ac646a3a0 Fixes for TabNanny and some code cleanup. Source doku regenerated.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
158
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
159 def check(self, codestring=''):
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
160 """
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
161 Public method to start an indentation check for one file.
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
162
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
163 The results are reported to the __processResult slot.
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
164 @keyparam codestring optional sourcestring (str)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
165 """
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
166 if not self.files:
3137
59d9f8c238f0 Fixed issues in the syntax checker and indentation checker dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3091
diff changeset
167 self.checkProgressLabel.setPath("")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 self.checkProgress.setMaximum(1)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 self.checkProgress.setValue(1)
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
170 self.__finish()
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
171 return
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
172
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
173 self.filename = self.files.pop(0)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
174 self.checkProgress.setValue(self.progress)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
175 self.checkProgressLabel.setPath(self.filename)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
176 QApplication.processEvents()
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
177 self.__resort()
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
178
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
179 if self.cancelled:
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
180 return
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
182 try:
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
183 self.source = Utilities.readEncodedFile(self.filename)[0]
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
184 self.source = Utilities.normalizeCode(self.source)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
185 except (UnicodeError, IOError) as msg:
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
186 self.noResults = False
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
187 self.__createResultItem(
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
188 self.filename, 1,
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
189 "Error: {0}".format(str(msg)).rstrip())
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
190 self.progress += 1
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
191 # Continue with next file
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
192 self.check()
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
193 return
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
194
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
195 self.__finished = False
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
196 self.indentCheckService.indentCheck(
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
197 None, self.filename, self.source)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
198
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
199 def checkBatch(self):
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
200 """
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
201 Public method to start an indentation check batch job.
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
202
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
203 The results are reported to the __processResult slot.
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
204 """
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
205 self.__lastFileItem = None
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
206
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
207 self.checkProgressLabel.setPath(self.tr("Preparing files..."))
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
208 progress = 0
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
209
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
210 argumentsList = []
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
211 for filename in self.files:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
212 progress += 1
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
213 self.checkProgress.setValue(progress)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
214 QApplication.processEvents()
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
215
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
216 try:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
217 source = Utilities.readEncodedFile(filename)[0]
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
218 source = Utilities.normalizeCode(source)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
219 except (UnicodeError, IOError) as msg:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
220 self.noResults = False
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
221 self.__createResultItem(
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
222 filename, 1,
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
223 "Error: {0}".format(str(msg)).rstrip())
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
224 continue
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
225
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
226 argumentsList.append((filename, source))
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
227
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
228 # reset the progress bar to the checked files
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
229 self.checkProgress.setValue(self.progress)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
230 QApplication.processEvents()
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
231
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
232 self.__finished = False
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
233 self.indentCheckService.indentBatchCheck(argumentsList)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
234
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
235 def __batchFinished(self):
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
236 """
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
237 Private slot handling the completion of a batch job.
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
238 """
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
239 self.checkProgressLabel.setPath("")
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
240 self.checkProgress.setMaximum(1)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
241 self.checkProgress.setValue(1)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
242 self.__finish()
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
243
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
244 def __processResult(self, fn, nok, line, error):
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
245 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
246 Private slot called after perfoming a style check on one file.
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
247
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
248 @param fn filename of the just checked file (str)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
249 @param nok flag if a problem was found (bool)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
250 @param line line number (str)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
251 @param error text of the problem (str)
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
252 """
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
253 if self.__finished:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
254 return
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
255
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
256 # Check if it's the requested file, otherwise ignore signal if not
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
257 # in batch mode
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
258 if not self.__batch and fn != self.filename:
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
259 return
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
260
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
261 if nok:
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
262 self.noResults = False
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
263 self.__createResultItem(fn, line, error.rstrip())
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
264 self.progress += 1
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
265
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
266 self.checkProgress.setValue(self.progress)
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
267 self.checkProgressLabel.setPath(fn)
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
268 QApplication.processEvents()
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
269 self.__resort()
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
270
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
271 if not self.__batch:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
272 self.check()
3414
448cfee96f45 Tabnanny ported to use the background service.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3145
diff changeset
273
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 def __finish(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 Private slot called when the action or the user pressed the button.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 """
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
278 if not self.__finished:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
279 self.__finished = True
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
280
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
281 self.cancelled = True
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
282 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
283 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
284 self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
285
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
286 if self.noResults:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
287 self.__createResultItem(
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
288 self.tr('No indentation errors found.'), "", "")
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
289 QApplication.processEvents()
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
290 self.resultList.header().resizeSections(
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
291 QHeaderView.ResizeToContents)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
292 self.resultList.header().setStretchLastSection(True)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
293
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
294 self.checkProgress.setVisible(False)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
295 self.checkProgressLabel.setVisible(False)
3091
8239cae3f947 Made the progress bar of the syntax and indentation checker dialogs only visible, while it is checking and only if more than 1 file are being checked.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
296
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 def on_buttonBox_clicked(self, button):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 Private slot called by a button of the button box clicked.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 @param button button that was clicked (QAbstractButton)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 if button == self.buttonBox.button(QDialogButtonBox.Close):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 self.close()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 elif button == self.buttonBox.button(QDialogButtonBox.Cancel):
4237
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
306 if self.__batch:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
307 self.indentCheckService.cancelIndentBatchCheck()
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
308 QTimer.singleShot(1000, self.__finish)
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
309 else:
ff8a3e769fca Added a batch mode to the indentation checker to make use of multiple CPUs/CPU-Cores.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
310 self.__finish()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
312 @pyqtSlot()
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
313 def on_startButton_clicked(self):
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
314 """
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
315 Private slot to start a code metrics run.
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
316 """
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
317 fileList = self.__fileList[:]
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
318
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
319 filterString = self.excludeFilesEdit.text()
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
320 if "ExcludeFiles" not in self.__data or \
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
321 filterString != self.__data["ExcludeFiles"]:
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
322 self.__data["ExcludeFiles"] = filterString
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
323 self.__project.setData("CHECKERSPARMS", "Tabnanny", self.__data)
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 831
diff changeset
324 filterList = [f.strip() for f in filterString.split(",")
831
f046b97785db Little optimisation in the syntax and indentation checker dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 830
diff changeset
325 if f.strip()]
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
326 if filterList:
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
327 for filter in filterList:
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
328 fileList = \
831
f046b97785db Little optimisation in the syntax and indentation checker dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 830
diff changeset
329 [f for f in fileList if not fnmatch.fnmatch(f, filter)]
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
330
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
331 self.resultList.clear()
793
cd183f89874b Changed the syntac checker dialog and the tabnanny dialog to use the new eflag: marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
332 self.noResults = True
cd183f89874b Changed the syntac checker dialog and the tabnanny dialog to use the new eflag: marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
333 self.cancelled = False
571
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
334 self.start(fileList)
1a4101cb87eb Added filename filters to the syntax checker and tabnanny dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
335
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 def on_resultList_itemActivated(self, itm, col):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 831
diff changeset
338 Private slot to handle the activation of an item.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 @param itm reference to the activated item (QTreeWidgetItem)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 @param col column the item was activated in (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 if self.noResults:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 fn = Utilities.normabspath(itm.text(0))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 lineno = int(itm.text(1))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348
96
9624a110667d Started to clean up the code supported by py3flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 55
diff changeset
349 e5App().getObject("ViewManager").openSourceFile(fn, lineno)

eric ide

mercurial