update rspecview properly
[sface.git] / sface / screens / rspecscreen.py
index e7edb47..75be23a 100644 (file)
@@ -164,25 +164,32 @@ class RSpecWidget(QWidget):
     def __init__(self, parent=None):
         QWidget.__init__(self, parent)
 
+        self.document = None
+        self.model = None
+
         self.view = RSpecView(self)
+        layout = QVBoxLayout()
+        layout.addWidget(self.view)
+        self.setLayout(layout)
+
         self.updateView()
         
     def updateView(self):
-        document = QDomDocument("RSpec")
+        del self.document
+        del self.model
+        self.document = None
+        self.model = None
+
         rspec_file = config.getSliceRSpecFile()
         if not os.path.exists(rspec_file):
             return
 
-        document.setContent(open(rspec_file,'r').read())
-        model = DomModel(document, self)
+        self.document = QDomDocument("RSpec")
+        self.document.setContent(open(rspec_file,'r').read())
+        self.model = DomModel(self.document, self)
 
-        view = RSpecView(self)
-        view.setModel(model)
-        view.expand(model.index(0, 0)) #expand first level only
-
-        layout = QVBoxLayout()
-        layout.addWidget(view)
-        self.setLayout(layout)
+        self.view.setModel(self.model)
+        self.view.expand(self.model.index(0, 0)) #expand first level only
 
 
 class RSpecScreen(SfaScreen):
@@ -194,3 +201,6 @@ class RSpecScreen(SfaScreen):
 
     def rspecUpdated(self):
         self.widget.updateView()
+
+    def configurationChanged(self):
+        self.widget.updateView()