16 QTreeWidget, QApplication, QTreeWidgetItem, QAbstractItemView, QWidget, |
16 QTreeWidget, QApplication, QTreeWidgetItem, QAbstractItemView, QWidget, |
17 QVBoxLayout |
17 QVBoxLayout |
18 ) |
18 ) |
19 |
19 |
20 from ThirdParty.asttokens.asttokens import ASTTokens |
20 from ThirdParty.asttokens.asttokens import ASTTokens |
|
21 |
|
22 import Preferences |
21 |
23 |
22 |
24 |
23 class PythonAstViewer(QWidget): |
25 class PythonAstViewer(QWidget): |
24 """ |
26 """ |
25 Class implementing a widget to visualize the Python AST for some Python |
27 Class implementing a widget to visualize the Python AST for some Python |
58 self.__astWidget.setSortingEnabled(False) |
60 self.__astWidget.setSortingEnabled(False) |
59 self.__astWidget.setSelectionBehavior(QAbstractItemView.SelectRows) |
61 self.__astWidget.setSelectionBehavior(QAbstractItemView.SelectRows) |
60 self.__astWidget.setSelectionMode(QAbstractItemView.SingleSelection) |
62 self.__astWidget.setSelectionMode(QAbstractItemView.SingleSelection) |
61 self.__astWidget.setAlternatingRowColors(True) |
63 self.__astWidget.setAlternatingRowColors(True) |
62 |
64 |
|
65 self.__errorColor = QBrush( |
|
66 Preferences.getPython("ASTViewerErrorColor")) |
|
67 |
63 self.__astWidget.itemClicked.connect(self.__astItemClicked) |
68 self.__astWidget.itemClicked.connect(self.__astItemClicked) |
64 |
69 |
65 self.__vm.astViewerStateChanged.connect(self.__astViewerStateChanged) |
70 self.__vm.astViewerStateChanged.connect(self.__astViewerStateChanged) |
66 |
71 |
67 self.hide() |
72 self.hide() |
177 @return generated item |
182 @return generated item |
178 @rtype QTreeWidgetItem |
183 @rtype QTreeWidgetItem |
179 """ |
184 """ |
180 itm = QTreeWidgetItem(self.__astWidget, [error]) |
185 itm = QTreeWidgetItem(self.__astWidget, [error]) |
181 itm.setFirstColumnSpanned(True) |
186 itm.setFirstColumnSpanned(True) |
182 itm.setForeground(0, QBrush(Qt.red)) |
187 itm.setForeground(0, self.__errorColor) |
183 return itm |
188 return itm |
184 |
189 |
185 def __loadAST(self): |
190 def __loadAST(self): |
186 """ |
191 """ |
187 Private method to generate the AST from the source of the current |
192 Private method to generate the AST from the source of the current |
495 |
500 |
496 self.__editor.gotoLine(startLine, firstVisible=True, |
501 self.__editor.gotoLine(startLine, firstVisible=True, |
497 expand=True) |
502 expand=True) |
498 self.__editor.setHighlight(startLine - 1, startIndex, |
503 self.__editor.setHighlight(startLine - 1, startIndex, |
499 endLine - 1, endIndex) |
504 endLine - 1, endIndex) |
|
505 |
|
506 @pyqtSlot() |
|
507 def preferencesChanged(self): |
|
508 """ |
|
509 Public slot handling changes of the AST viewer settings. |
|
510 """ |
|
511 self.__errorColor = QBrush( |
|
512 Preferences.getPython("ASTViewerErrorColor")) |