from sface.screens.sfascreen import SfaScreen
class ConfigWidget(QWidget):
- def __init__(self, parent=None):
+ def __init__(self, parent):
QWidget.__init__(self, parent)
label1 = QLabel("User HRN:", self)
config.setUser("%s" % self.user.text())
config.setSlice("%s" % self.slice.text())
config.save_config()
+ self.parent().setStatus("<font color='green'>Configuration saved!</font>")
class ConfigScreen(SfaScreen):
- def __init__(self, parent=None):
+ def __init__(self, parent):
SfaScreen.__init__(self, parent)
widget = ConfigWidget(self)
class SliceWidget(QWidget):
- def __init__(self, parent=None):
+ def __init__(self, parent):
QWidget.__init__(self, parent)
self.nodeView = QTreeView(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()
class SfaScreen(QWidget):
def __init__(self, parent):
QWidget.__init__(self, parent)
+ self.mainwin = parent
self.name = self.title = self.widget = None
def init(self, widget, name, title):
def getTitleText(self):
return "<b>%s</b>" % self.title
+
+ def setStatus(self, msg):
+ self.mainwin.setStatus(msg)
from sface.screens.configscreen import ConfigScreen
from sface.screens.mainscreen import MainScreen
+class Nav(QWidget):
+ def __init__(self, parent=None):
+ QWidget.__init__(self, parent)
+
+ self.title = QLabel("", self)
+ self.link = QLabel("", self)
+ self.link.setAlignment(Qt.AlignRight)
+
+ hlayout = QHBoxLayout()
+ hlayout.addWidget(self.title)
+ hlayout.addStretch()
+ hlayout.addWidget(self.link)
+ self.setLayout(hlayout)
+
+ def setTitle(self, title):
+ self.title.setText(title)
+
+ def setLink(self, link):
+ self.link.setText(link)
+
+
+class Status(QLabel):
+ def __init__(self, parent=None):
+ QLabel.__init__(self, "", parent)
+
+ def set(self, msg):
+ self.setText(msg)
+ QTimer.singleShot(3000, self, SLOT("clear()"))
+
+ def clear(self):
+ self.setText("")
+
class SfaWindow(QWidget):
-
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.screens.addWidget(self.main_screen)
self.screens.addWidget(self.config_screen)
- self.title = QLabel(self.main_screen.getTitleText(), self)
- self.switch = QLabel(self.config_screen.getLinkText(), self)
- self.switch.setAlignment(Qt.AlignRight)
-
- hlayout = QHBoxLayout()
- hlayout.addWidget(self.title)
- hlayout.addStretch()
- hlayout.addWidget(self.switch)
+ self.nav = Nav(self)
+ self.nav.setTitle(self.main_screen.getTitleText())
+ self.nav.setLink(self.config_screen.getLinkText())
+
+ self.status = Status(self)
layout = QVBoxLayout()
- layout.addLayout(hlayout)
+ layout.addWidget(self.nav)
layout.addWidget(self.screens)
+ layout.addWidget(self.status)
self.setLayout(layout)
self.resize(800, 600)
- self.connect(self.switch, SIGNAL('linkActivated(QString)'),
+ self.connect(self.nav.link, SIGNAL('linkActivated(QString)'),
self.toScreen)
def toScreen(self, link):
def toConfigScreen(self):
self.screens.setCurrentWidget(self.config_screen)
- self.switch.setText(self.main_screen.getLinkText())
- self.title.setText(self.config_screen.getTitleText())
+ self.nav.setLink(self.main_screen.getLinkText())
+ self.nav.setTitle(self.config_screen.getTitleText())
def toMainScreen(self):
self.screens.setCurrentWidget(self.main_screen)
- self.switch.setText(self.config_screen.getLinkText())
- self.title.setText(self.main_screen.getTitleText())
-
-
+ self.nav.setLink(self.config_screen.getLinkText())
+ self.nav.setTitle(self.main_screen.getTitleText())
+ def setStatus(self, msg):
+ self.status.set(msg)