manage signals between screens through sfascreen
authorBarış Metin <Talip-Baris.Metin@sophia.inria.fr>
Wed, 15 Sep 2010 10:18:36 +0000 (12:18 +0200)
committerBarış Metin <Talip-Baris.Metin@sophia.inria.fr>
Wed, 15 Sep 2010 10:18:36 +0000 (12:18 +0200)
sface/screens/configscreen.py
sface/screens/mainscreen.py
sface/screens/rspecscreen.py
sface/screens/sfascreen.py

index dbe3909..3f2440e 100644 (file)
@@ -59,6 +59,9 @@ class ConfigWidget(QWidget):
         self.parent().setStatus("<font color='green'>Settings loaded for current session</font>", timeout=5000)
         config.display("after apply")
 
         self.parent().setStatus("<font color='green'>Settings loaded for current session</font>", timeout=5000)
         config.display("after apply")
 
+        self.parent().signalAll('configurationChanged')
+
+
     def save(self):
         self.apply()
         config.save_config()
     def save(self):
         self.apply()
         config.save_config()
@@ -70,3 +73,4 @@ class ConfigScreen(SfaScreen):
         
         widget = ConfigWidget(self)
         self.init(widget, "Configure", "Configure the OneLab Federation GUI")
         
         widget = ConfigWidget(self)
         self.init(widget, "Configure", "Configure the OneLab Federation GUI")
+
index be67787..5507294 100644 (file)
@@ -47,7 +47,6 @@ class NodeView(QTreeView):
 
         model.emit(SIGNAL("dataChanged(QModelIndex, QModelIndex)"), hostname_index, hostname_index)
                 
 
         model.emit(SIGNAL("dataChanged(QModelIndex, QModelIndex)"), hostname_index, hostname_index)
                 
-        
 
 class NodeNameDelegate(QStyledItemDelegate):
     def __init__(self, parent):
 
 class NodeNameDelegate(QStyledItemDelegate):
     def __init__(self, parent):
@@ -99,6 +98,7 @@ class NodeNameDelegate(QStyledItemDelegate):
 
         painter.restore()
 
 
         painter.restore()
 
+
 class TreeItem:
     def __init__(self, data, parent=None):
         self.parentItem = parent
 class TreeItem:
     def __init__(self, data, parent=None):
         self.parentItem = parent
@@ -267,7 +267,6 @@ class NodeModel(QAbstractItemModel):
         return ret
 
 
         return ret
 
 
-
 class SliceWidget(QWidget):
     def __init__(self, parent):
         QWidget.__init__(self, parent)
 class SliceWidget(QWidget):
     def __init__(self, parent):
         QWidget.__init__(self, parent)
@@ -275,15 +274,16 @@ class SliceWidget(QWidget):
         self.network_names = []
         self.process = SfiProcess(self)
 
         self.network_names = []
         self.process = SfiProcess(self)
 
-        slicename = QLabel ("Slice : %s"%(config.getSlice() or "None"),self)
-        slicename.setScaledContents(False)
+        self.slicename = QLabel("", self)
+        self.updateSliceName()
+        self.slicename.setScaledContents(False)
         searchlabel = QLabel ("Search: ", self)
         searchlabel.setScaledContents(False)
         searchbox = QLineEdit(self)
         searchbox.setAttribute(Qt.WA_MacShowFocusRect, 0)
 
         toplayout = QHBoxLayout()
         searchlabel = QLabel ("Search: ", self)
         searchlabel.setScaledContents(False)
         searchbox = QLineEdit(self)
         searchbox.setAttribute(Qt.WA_MacShowFocusRect, 0)
 
         toplayout = QHBoxLayout()
-        toplayout.addWidget(slicename, 0, Qt.AlignLeft)
+        toplayout.addWidget(self.slicename, 0, Qt.AlignLeft)
         toplayout.addStretch()
         toplayout.addWidget(searchlabel, 0, Qt.AlignRight)
         toplayout.addWidget(searchbox, 0, Qt.AlignRight)
         toplayout.addStretch()
         toplayout.addWidget(searchlabel, 0, Qt.AlignRight)
         toplayout.addWidget(searchbox, 0, Qt.AlignRight)
@@ -329,6 +329,7 @@ class SliceWidget(QWidget):
     def refreshFinished(self):
         self.setStatus("<font color='green'>Slice data updated.</font>", timeout=5000)
         self.updateView()
     def refreshFinished(self):
         self.setStatus("<font color='green'>Slice data updated.</font>", timeout=5000)
         self.updateView()
+        self.parent().signalAll("rspecUpdated")
 
     def readSliceRSpec(self):
         rspec_file = config.getSliceRSpecFile()
 
     def readSliceRSpec(self):
         rspec_file = config.getSliceRSpecFile()
@@ -397,7 +398,6 @@ class SliceWidget(QWidget):
 
         self.disconnect(self.process, SIGNAL('finished()'), self.submitFinished)
         self.connect(self.process, SIGNAL('finished()'), self.refreshFinished)
 
         self.disconnect(self.process, SIGNAL('finished()'), self.submitFinished)
         self.connect(self.process, SIGNAL('finished()'), self.refreshFinished)
-        self.connect(self.process, SIGNAL('finished()'), self.parent().rspecUpdated)
 
         self.process.getRSpecFromSM()
         self.setStatus("Updating slice data. This may take some time...")
 
         self.process.getRSpecFromSM()
         self.setStatus("Updating slice data. This may take some time...")
@@ -442,6 +442,9 @@ class SliceWidget(QWidget):
         self.nodeView.expandAll()
         self.nodeView.resizeColumnToContents(1)
 
         self.nodeView.expandAll()
         self.nodeView.resizeColumnToContents(1)
 
+    def updateSliceName(self):
+        self.slicename.setText("Slice : %s" % (config.getSlice() or "None"))
+
 
 class MainScreen(SfaScreen):
     def __init__(self, parent):
 
 class MainScreen(SfaScreen):
     def __init__(self, parent):
@@ -449,3 +452,8 @@ class MainScreen(SfaScreen):
 
         slice = SliceWidget(self)
         self.init(slice, "Main Window", "OneLab Federation GUI")
 
         slice = SliceWidget(self)
         self.init(slice, "Main Window", "OneLab Federation GUI")
+
+    def configurationChanged(self):
+        self.widget.updateSliceName()
+        self.widget.updateView()
+
index fcaa2bf..37bbc2f 100644 (file)
@@ -165,7 +165,10 @@ class DomItem:
 class RSpecWidget(QWidget):
     def __init__(self, parent=None):
         QWidget.__init__(self, parent)
 class RSpecWidget(QWidget):
     def __init__(self, parent=None):
         QWidget.__init__(self, parent)
+
+        self.view = RSpecView(self)
         self.updateView()
         self.updateView()
+        
 
     def updateView(self):
         document = QDomDocument("RSpec")
 
     def updateView(self):
         document = QDomDocument("RSpec")
index 1b2e12c..e3c584a 100644 (file)
@@ -4,11 +4,17 @@ from PyQt4.QtCore import *
 from PyQt4.QtGui import *
 
 class SfaScreen(QWidget):
 from PyQt4.QtGui import *
 
 class SfaScreen(QWidget):
+    instances = []
+
     def __init__(self, parent):
     def __init__(self, parent):
+        SfaScreen.instances.append(self)
         QWidget.__init__(self, parent)
         self.mainwin = parent
         self.name = self.title = self.widget = None
 
         QWidget.__init__(self, parent)
         self.mainwin = parent
         self.name = self.title = self.widget = None
 
+    def __del__(self):
+        SfaScreen.instances.remove(self)
+
     def init(self, widget, name, title):
         if self.widget:
             sys.stderr.write("Screen is already initialized\n")
     def init(self, widget, name, title):
         if self.widget:
             sys.stderr.write("Screen is already initialized\n")
@@ -31,5 +37,12 @@ class SfaScreen(QWidget):
     def setStatus(self, msg, timeout):
         self.mainwin.setStatus(msg, timeout)
 
     def setStatus(self, msg, timeout):
         self.mainwin.setStatus(msg, timeout)
 
+    def signalAll(self, action):
+        for i in SfaScreen.instances:
+            getattr(i, action)()
+
     def rspecUpdated(self):
         pass
     def rspecUpdated(self):
         pass
+
+    def configurationChanged(self):
+        pass