X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fscreens%2Frspecscreen.py;h=dc79c8361e9fd7a14ce24ef7ca0c5b6d5678c094;hp=4c8c041ec4a4cb5c45cb3eb2d83729f5778142b8;hb=0f6d855d510b419a752cb8e5f67a5489c04d92e9;hpb=7f70a14706e1089b8656e8da812c48b2910540b0 diff --git a/sface/screens/rspecscreen.py b/sface/screens/rspecscreen.py index 4c8c041..dc79c83 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,13 @@ class DomItem: return self.rowNumber + class RSpecWidget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) + self.updateView() - def init_view(self): + def updateView(self): document = QDomDocument("RSpec") rspec_file = config.getSliceRSpecFile() if not os.path.exists(rspec_file): @@ -168,8 +186,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 +203,5 @@ class RSpecScreen(SfaScreen): widget = RSpecWidget(self) self.init(widget, "RSpec Window", "RSPec View") - + def rspecUpdated(self): + self.widget.updateView()