Mercurial > lcfOS
view python/astviewer.py @ 158:9683a4cd848f
Added some functions for code generation
author | Windel Bouwman |
---|---|
date | Fri, 08 Mar 2013 16:52:44 +0100 |
parents | 5a965e9664f2 |
children | e023d3ce1d63 |
line wrap: on
line source
from PyQt4.QtCore import * from PyQt4.QtGui import * def astToNamedElement(astNode, parentNode): """ Helper to convert and AST tree to NamedElement tree: """ item = QStandardItem(str(astNode)) item.setData(astNode) parentNode.appendRow(item) for c in astNode.getChildren(): astToNamedElement(c, item) # The actual widget: class AstViewer(QTreeView): sigNodeSelected = pyqtSignal(object) def __init__(self, parent=None): super(AstViewer, self).__init__(parent) self.setHeaderHidden(True) self.clicked.connect(self.selectHandler) def setAst(self, ast): """ Create a new model and add all ast elements to it """ model = QStandardItemModel() if ast: astToNamedElement(ast, model.invisibleRootItem()) self.setModel( model ) self.expandAll() def selectHandler(self, index): if not index.isValid(): return model = self.model() item = model.itemFromIndex(index) node = item.data() self.sigNodeSelected.emit(node)