X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fscreens%2Frspecscreen.py;h=772f4cb6ef038e0b6443bb34422d72a8de6eb1fc;hp=4c8c041ec4a4cb5c45cb3eb2d83729f5778142b8;hb=8c9d054133c19052e03bc3029ade2476271ac55d;hpb=7f70a14706e1089b8656e8da812c48b2910540b0 diff --git a/sface/screens/rspecscreen.py b/sface/screens/rspecscreen.py index 4c8c041..772f4cb 100644 --- a/sface/screens/rspecscreen.py +++ b/sface/screens/rspecscreen.py @@ -9,10 +9,31 @@ from sface.config import config from sface.screens.sfascreen import SfaScreen +class RSpecView(QTreeView): + def __init__(self, parent): + QTreeView.__init__(self, parent) + + self.setAnimated(True) + self.setItemsExpandable(True) + self.setRootIsDecorated(True) + self.setHeaderHidden(True) + self.setAttribute(Qt.WA_MacShowFocusRect, 0) + self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + + class DomModel(QAbstractItemModel): def __init__(self, document, parent = 0): QAbstractItemModel.__init__(self, parent) self.domDocument = document + # one of the children of the rootItem is the 'xml' thing. + # here I delete it. + childList = document.childNodes() + for i in range(childList.count()): + currElem = childList.item(i) + if (currElem.nodeType() == + QDomNode.ProcessingInstructionNode): + document.removeChild(currElem) + break self.rootItem = DomItem(document, 0); def data(self, index, role): @@ -50,7 +71,8 @@ class DomModel(QAbstractItemModel): elif node.nodeType() == QDomNode.EntityNode: return QString('unsupported node type') elif node.nodeType() == QDomNode.ProcessingInstructionNode: - return node.nodeName() + return QVariant() + #return node.nodeName() elif node.nodeType() == QDomNode.CommentNode: return QString('#').append(node.nodeValue()) elif node.nodeType() == QDomNode.DocumentNode: @@ -77,13 +99,7 @@ class DomModel(QAbstractItemModel): return Qt.ItemIsEnabled | Qt.ItemIsSelectable def headerData(self, section, orientation, role): - if orientation == Qt.Horizontal and role == Qt.DisplayRole: - if section == 0: - return QString("Do I need an header?") - else: - return QVariant() - else: - return QVariant() + return QVariant() def index(self, row, column, parent): if not parent.isValid(): @@ -155,11 +171,16 @@ class DomItem: return self.rowNumber + class RSpecWidget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) - def init_view(self): + self.view = RSpecView(self) + self.updateView() + + + def updateView(self): document = QDomDocument("RSpec") rspec_file = config.getSliceRSpecFile() if not os.path.exists(rspec_file): @@ -168,8 +189,10 @@ class RSpecWidget(QWidget): document.setContent(open(rspec_file,'r').read()) model = DomModel(document, self) - view = QTreeView() + view = RSpecView(self) view.setModel(model) +# too slow! +# view.expandAll() layout = QVBoxLayout() layout.addWidget(view) @@ -183,4 +206,5 @@ class RSpecScreen(SfaScreen): widget = RSpecWidget(self) self.init(widget, "RSpec Window", "RSPec View") - + def rspecUpdated(self): + self.widget.updateView()