make sure default slice tags are sorted above all other lines
[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 from sface.sfidata import SfiData
12
13
14 class RSpecView(XmlView):
15     def __init__(self, parent):
16         XmlView.__init__(self, parent)
17
18     def expandMatchingText(self, txt):
19         self.collapseAll()
20         self.expandToDepth(0)
21
22         model = self.model()
23
24         def recursiveExpand(index):
25             parent = index.parent()
26             if parent and parent.isValid():
27                 recursiveExpand(parent)
28             self.expand(index)
29
30         def search(index):
31             if index.data().toString() == txt:
32                 recursiveExpand(index)
33                 self.scrollTo(index, self.PositionAtCenter)
34                 return
35             
36             rows = model.rowCount(index)
37             for r in range(rows):
38                 child_index = index.child(r, 0)
39                 search(child_index)
40
41         root_rows = model.rowCount()
42         for r in range(root_rows):
43             index = model.index(r, 0)
44             search(index)
45
46 class RSpecWindow(XmlWindow):
47     def __init__(self, parent=None):
48         XmlWindow.__init__(self, parent, 'RSpec Window')
49
50     def initView(self):
51         return RSpecView(self)
52
53     def showNode(self, hostname):
54         self.view.expandMatchingText(hostname)
55
56     def readContent(self):
57         rspec = SfiData().getSliceRSpec()
58         if not rspec:
59             return ""
60
61         return rspec.toxml()
62
63 class ResourcesWindow(XmlWindow):
64     def __init__(self, parent=None):
65         XmlWindow.__init__(self, parent, 'Resources Window')
66
67     def initView(self):
68         return RSpecView(self)
69
70     def showNode(self, hostname):
71         self.view.expandMatchingText(hostname)
72
73     def readContent(self):
74         rspec = SfiData().getResourcesRSpec()
75         if not rspec:
76             return ""
77
78         return rspec.toxml()
79
80