Setting tag sface-0.1-7
[sface.git] / sface / rspecwindow.py
1 import os
2 import sys
3
4 from PyQt4.QtCore import *
5 from PyQt4.QtGui import *
6 from PyQt4.QtXml import *
7
8 from sface.xmlwidget import *
9 from sface.config import config
10 from sface.screens.sfascreen import SfaScreen
11
12
13 class RSpecView(XmlView):
14     def __init__(self, parent):
15         XmlView.__init__(self, parent)
16
17     def expandMatchingText(self, txt):
18         self.collapseAll()
19         self.expandToDepth(0)
20
21         model = self.model()
22
23         def recursiveExpand(index):
24             parent = index.parent()
25             if parent and parent.isValid():
26                 recursiveExpand(parent)
27             self.expand(index)
28
29         def search(index):
30             if index.data().toString() == txt:
31                 recursiveExpand(index)
32                 self.scrollTo(index, self.PositionAtCenter)
33                 return
34             
35             rows = model.rowCount(index)
36             for r in range(rows):
37                 child_index = index.child(r, 0)
38                 search(child_index)
39             
40         root_rows = model.rowCount()
41         for r in range(root_rows):
42             index = model.index(r, 0)
43             search(index)
44
45 class RSpecWindow(XmlWindow):
46     def __init__(self, parent=None):
47         XmlWindow.__init__(self, parent, 'RSpec Window')
48         self.view = RSpecView(self)
49
50     def showNode(self, hostname):
51         self.view.expandMatchingText(hostname)
52
53     def updateView(self):
54         XmlWindow.updateView(self)
55
56         rspec_file = config.getSliceRSpecFile()
57         if not os.path.exists(rspec_file):
58             return
59
60         self.document.setContent(open(rspec_file,'r').read())