add refresh link
[sface.git] / sfamainscreen.py
1
2 from PyQt4.QtCore import Qt, QString, SIGNAL
3 from PyQt4.QtGui import QWidget, QLabel, QTreeView, QStandardItemModel, QVBoxLayout, QSizePolicy
4
5 from sfa.util.rspecHelper import RSpec
6
7 from sfadata import SfaData
8 from sfascreen import SfaScreen
9
10
11 class SliceWidget(QWidget):
12     def __init__(self, parent=None):
13         QWidget.__init__(self, parent)
14
15         self.nodeView = QTreeView(self)
16         self.nodeView.setRootIsDecorated(False)
17         self.nodeView.setAlternatingRowColors(True)
18         self.nodeView.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
19
20         self.nodeModel = QStandardItemModel(0, 2, self)
21         self.nodeModel.setHeaderData(0, Qt.Horizontal, QString("Testbed"))
22         self.nodeModel.setHeaderData(1, Qt.Horizontal, QString("Hostname"))
23
24         self.nodeView.setModel(self.nodeModel)
25
26         label = QLabel("<a href='refresh'>Refresh</a>", self)
27         label.setScaledContents(False)
28
29         layout = QVBoxLayout()
30         layout.addWidget(label)
31         layout.addWidget(self.nodeView)
32         self.setLayout(layout)
33         self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
34         
35         self.connect(label, SIGNAL('linkActivated(QString)'),
36                      self.refresh)
37         
38     def refresh(self, link=None):
39         data = SfaData()
40         xml = data.getRSpecFromSM()
41         rspec = RSpec(xml)
42         nodes = rspec.get_node_list()
43         
44         for n in nodes:
45             self.addNode("TestBedName", n)
46
47     def addNode(self, testbed, hostname):
48         self.nodeModel.insertRow(0)
49         self.nodeModel.setData(self.nodeModel.index(0,0), QString(testbed))
50         self.nodeModel.setData(self.nodeModel.index(0,1), QString(hostname))
51
52
53
54 class SfaMainScreen(SfaScreen):
55     def __init__(self, parent=None):
56         SfaScreen.__init__(self, parent)
57
58         slice = SliceWidget(self)
59         self.init(slice, "Main Window", "PlanetLab Federation GUI")