from sface.sfiprocess import SfiProcess
from sface.screens.sfascreen import SfaScreen
+class NodeView(QTreeView):
+ def __init__(self, parent):
+ QTreeView.__init__(self, parent)
-class SliceWidget(QWidget):
- def __init__(self, parent=None):
- QWidget.__init__(self, parent)
+ self.setRootIsDecorated(False)
+ self.setAlternatingRowColors(True)
+ self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
- self.nodeView = QTreeView(self)
- self.nodeView.setRootIsDecorated(False)
- self.nodeView.setAlternatingRowColors(True)
- self.nodeView.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+class NodeModel(QStandardItemModel):
+ def __init__(self, parent):
+ QStandardItemModel.__init__(self, 0, 3, parent)
+ self.setHeaderData(0, Qt.Horizontal, QString("Testbed"))
+ self.setHeaderData(1, Qt.Horizontal, QString("Hostname"))
+ self.setHeaderData(2, Qt.Horizontal, QString("IsIn"))
- self.nodeModel = QStandardItemModel(0, 3, self)
- self.nodeModel.setHeaderData(0, Qt.Horizontal, QString("Testbed"))
- self.nodeModel.setHeaderData(1, Qt.Horizontal, QString("Hostname"))
- self.nodeModel.setHeaderData(2, Qt.Horizontal, QString("IsIn"))
+class SliceWidget(QWidget):
+ def __init__(self, parent):
+ QWidget.__init__(self, parent)
+
+ self.nodeView = NodeView(self)
+ self.nodeModel = NodeModel(self)
self.nodeView.setModel(self.nodeModel)
refresh = QLabel("<a href='refresh'>Refresh</a>", self)
slicename = QLabel ("Slice : %s"%(config.getSlice() or "None"),self)
slicename.setScaledContents(False)
- self.status = QLabel("")
-
hlayout = QHBoxLayout()
hlayout.addWidget(slicename)
hlayout.addStretch()
layout = QVBoxLayout()
layout.addLayout(hlayout)
layout.addWidget(self.nodeView)
- layout.addWidget(self.status)
self.setLayout(layout)
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
def refresh(self, link=None):
if not config.getSlice():
- self.status.setText("Slice not set yet!")
+ self.parent().setStatus("<font color='red'>Slice not set yet!</font>")
return
self.process = SfiProcess()
outfile = self.process.getRSpecFromSM()
- self.status.setText("Updating slice data. This may take some time...")
+ self.parent().setStatus("Updating slice data. This may take some time...")
self.connect(self.process, SIGNAL('finished()'), self.refreshFinished)
def refreshFinished(self):
del self.process
- self.status.setText("Slice data updated.")
+ self.parent().setStatus("<font color='green'>Slice data updated.</font>")
self.updateView()
def updateView(self):
class MainScreen(SfaScreen):
- def __init__(self, parent=None):
+ def __init__(self, parent):
SfaScreen.__init__(self, parent)
slice = SliceWidget(self)
self.init(slice, "Main Window", "PlanetLab Federation GUI")
-# slice.refresh()