From e94b101b92ec34a00a40efede30e09df7ff72676 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bar=C4=B1=C5=9F=20Metin?= Date: Wed, 15 Sep 2010 12:18:36 +0200 Subject: [PATCH] manage signals between screens through sfascreen --- sface/screens/configscreen.py | 4 ++++ sface/screens/mainscreen.py | 20 ++++++++++++++------ sface/screens/rspecscreen.py | 3 +++ sface/screens/sfascreen.py | 13 +++++++++++++ 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/sface/screens/configscreen.py b/sface/screens/configscreen.py index dbe3909..3f2440e 100644 --- a/sface/screens/configscreen.py +++ b/sface/screens/configscreen.py @@ -59,6 +59,9 @@ class ConfigWidget(QWidget): self.parent().setStatus("Settings loaded for current session", timeout=5000) config.display("after apply") + self.parent().signalAll('configurationChanged') + + 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") + diff --git a/sface/screens/mainscreen.py b/sface/screens/mainscreen.py index be67787..5507294 100644 --- a/sface/screens/mainscreen.py +++ b/sface/screens/mainscreen.py @@ -47,7 +47,6 @@ class NodeView(QTreeView): model.emit(SIGNAL("dataChanged(QModelIndex, QModelIndex)"), hostname_index, hostname_index) - class NodeNameDelegate(QStyledItemDelegate): def __init__(self, parent): @@ -99,6 +98,7 @@ class NodeNameDelegate(QStyledItemDelegate): painter.restore() + class TreeItem: def __init__(self, data, parent=None): self.parentItem = parent @@ -267,7 +267,6 @@ class NodeModel(QAbstractItemModel): return ret - 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) - 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() - 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) @@ -329,6 +329,7 @@ class SliceWidget(QWidget): def refreshFinished(self): self.setStatus("Slice data updated.", timeout=5000) self.updateView() + self.parent().signalAll("rspecUpdated") 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.connect(self.process, SIGNAL('finished()'), self.parent().rspecUpdated) 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) + def updateSliceName(self): + self.slicename.setText("Slice : %s" % (config.getSlice() or "None")) + 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") + + def configurationChanged(self): + self.widget.updateSliceName() + self.widget.updateView() + diff --git a/sface/screens/rspecscreen.py b/sface/screens/rspecscreen.py index fcaa2bf..37bbc2f 100644 --- a/sface/screens/rspecscreen.py +++ b/sface/screens/rspecscreen.py @@ -165,7 +165,10 @@ class DomItem: class RSpecWidget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) + + self.view = RSpecView(self) self.updateView() + def updateView(self): document = QDomDocument("RSpec") diff --git a/sface/screens/sfascreen.py b/sface/screens/sfascreen.py index 1b2e12c..e3c584a 100644 --- a/sface/screens/sfascreen.py +++ b/sface/screens/sfascreen.py @@ -4,11 +4,17 @@ from PyQt4.QtCore import * from PyQt4.QtGui import * class SfaScreen(QWidget): + instances = [] + def __init__(self, parent): + SfaScreen.instances.append(self) 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") @@ -31,5 +37,12 @@ class SfaScreen(QWidget): 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 configurationChanged(self): + pass -- 2.43.0