extract nodeview and nodemodel
[sface.git] / sface / screens / mainscreen.py
index 9b834fa..117d0ab 100644 (file)
@@ -9,21 +9,28 @@ from sface.sficonfig import config
 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)
@@ -31,8 +38,6 @@ class SliceWidget(QWidget):
         slicename = QLabel ("Slice : %s"%(config.getSlice() or "None"),self)
         slicename.setScaledContents(False)
 
-        self.status = QLabel("")
-
         hlayout = QHBoxLayout()
         hlayout.addWidget(slicename)
         hlayout.addStretch()
@@ -41,7 +46,6 @@ class SliceWidget(QWidget):
         layout = QVBoxLayout()
         layout.addLayout(hlayout)
         layout.addWidget(self.nodeView)
-        layout.addWidget(self.status)
         self.setLayout(layout)
         self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
 
@@ -58,18 +62,18 @@ class SliceWidget(QWidget):
 
     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):
@@ -104,9 +108,8 @@ class SliceWidget(QWidget):
 
 
 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()