annotate python/astviewer.py @ 164:e023d3ce1d63

Fix to loc of assignment
author Windel Bouwman
date Mon, 18 Mar 2013 22:15:57 +0100
parents 5a965e9664f2
children 598d3888a11c
rev   line source
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
1 from PyQt4.QtCore import *
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
2 from PyQt4.QtGui import *
164
e023d3ce1d63 Fix to loc of assignment
Windel Bouwman
parents: 97
diff changeset
3 from c3 import Visitor
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
4
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
5 def astToNamedElement(astNode, parentNode):
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
6 """ Helper to convert and AST tree to NamedElement tree: """
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
7 item = QStandardItem(str(astNode))
4
0d5ef85b8698 Improved link between ast viewer and code edit
windel-eee
parents: 1
diff changeset
8 item.setData(astNode)
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
9 parentNode.appendRow(item)
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
10 for c in astNode.getChildren():
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
11 astToNamedElement(c, item)
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
12
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
13 # The actual widget:
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
14 class AstViewer(QTreeView):
4
0d5ef85b8698 Improved link between ast viewer and code edit
windel-eee
parents: 1
diff changeset
15 sigNodeSelected = pyqtSignal(object)
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
16 def __init__(self, parent=None):
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
17 super(AstViewer, self).__init__(parent)
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
18 self.setHeaderHidden(True)
4
0d5ef85b8698 Improved link between ast viewer and code edit
windel-eee
parents: 1
diff changeset
19 self.clicked.connect(self.selectHandler)
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
20
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
21 def setAst(self, ast):
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
22 """ Create a new model and add all ast elements to it """
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
23 model = QStandardItemModel()
164
e023d3ce1d63 Fix to loc of assignment
Windel Bouwman
parents: 97
diff changeset
24 print(ast)
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
25 if ast:
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
26 astToNamedElement(ast, model.invisibleRootItem())
164
e023d3ce1d63 Fix to loc of assignment
Windel Bouwman
parents: 97
diff changeset
27 self.setModel(model)
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
28 self.expandAll()
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
29
4
0d5ef85b8698 Improved link between ast viewer and code edit
windel-eee
parents: 1
diff changeset
30 def selectHandler(self, index):
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
31 if not index.isValid():
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
32 return
4
0d5ef85b8698 Improved link between ast viewer and code edit
windel-eee
parents: 1
diff changeset
33 model = self.model()
0d5ef85b8698 Improved link between ast viewer and code edit
windel-eee
parents: 1
diff changeset
34 item = model.itemFromIndex(index)
0d5ef85b8698 Improved link between ast viewer and code edit
windel-eee
parents: 1
diff changeset
35 node = item.data()
0d5ef85b8698 Improved link between ast viewer and code edit
windel-eee
parents: 1
diff changeset
36 self.sigNodeSelected.emit(node)
1
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
37
92df07bc2081 Initial import of compiler
windel
parents:
diff changeset
38