Merge branch 'master' of git://git.onelab.eu/sface
[sface.git] / sface / screens / rspecscreen.py
index 4c8c041..772f4cb 100644 (file)
@@ -9,10 +9,31 @@ from sface.config import config
 from sface.screens.sfascreen import SfaScreen
 
 
 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
 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):
         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:
             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:
             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):
         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():
 
     def index(self, row, column, parent):
         if not parent.isValid():
@@ -155,11 +171,16 @@ class DomItem:
         return self.rowNumber
     
 
         return self.rowNumber
     
 
+
 class RSpecWidget(QWidget):
     def __init__(self, parent=None):
         QWidget.__init__(self, parent)
 
 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):
         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)
 
         document.setContent(open(rspec_file,'r').read())
         model = DomModel(document, self)
 
-        view = QTreeView()
+        view = RSpecView(self)
         view.setModel(model)
         view.setModel(model)
+# too slow!
+#        view.expandAll()
 
         layout = QVBoxLayout()
         layout.addWidget(view)
 
         layout = QVBoxLayout()
         layout.addWidget(view)
@@ -183,4 +206,5 @@ class RSpecScreen(SfaScreen):
         widget = RSpecWidget(self)
         self.init(widget, "RSpec Window", "RSPec View")
 
         widget = RSpecWidget(self)
         self.init(widget, "RSpec Window", "RSPec View")
 
-
+    def rspecUpdated(self):
+        self.widget.updateView()