Mercurial > lcfOS
view python/libs/widgets/astviewer.py @ 71:5351594349b0
Moved error to core
author | windel |
---|---|
date | Fri, 02 Nov 2012 14:05:00 +0100 |
parents | 4a27c28c7d0f |
children |
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)