From 7ad7a8af395e0e63ca4c81e6eb5af34ad12fe2fe Mon Sep 17 00:00:00 2001 From: Andy Bavier Date: Tue, 1 Mar 2011 17:19:49 -0500 Subject: [PATCH] Added help screen SFA-11 Added a brief help screen to explain how to use the Federation GUI. --- sface/mainwindow.py | 23 ++++++++++-- sface/screens/helpscreen.py | 75 +++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 sface/screens/helpscreen.py diff --git a/sface/mainwindow.py b/sface/mainwindow.py index 0b52d95..b9de6fa 100644 --- a/sface/mainwindow.py +++ b/sface/mainwindow.py @@ -11,6 +11,7 @@ from sface.logwindow import LogWindow from sface.rspecwindow import RSpecWindow from sface.screens.configscreen import ConfigScreen from sface.screens.mainscreen import MainScreen +from sface.screens.helpscreen import HelpScreen class Nav(QWidget): def __init__(self, parent=None): @@ -23,20 +24,25 @@ class Nav(QWidget): self.config = QLabel("", self) self.config.setAlignment(Qt.AlignRight) + self.help = QLabel("", self) + self.help.setAlignment(Qt.AlignRight) + hlayout = QHBoxLayout() hlayout.addWidget(self.title) hlayout.addStretch() hlayout.addWidget(QLabel("Go to: ", self)) hlayout.addWidget(self.main) hlayout.addWidget(self.config) + hlayout.addWidget(self.help) self.setLayout(hlayout) def setTitle(self, title): self.title.setText(title) - def setLinks(self, main, config): + def setLinks(self, main, config, help): self.main.setText(main) self.config.setText(config) + self.help.setText(help) class Status(QLabel): @@ -73,17 +79,20 @@ class MainWindow(QWidget): self.pix = QLabel(self) self.config_screen = ConfigScreen(self) self.main_screen = MainScreen(self) + self.help_screen = HelpScreen(self) self.screens = QStackedWidget(self) self.screens.addWidget(self.main_screen) self.screens.addWidget(self.config_screen) + self.screens.addWidget(self.help_screen) self.screens.addWidget(self.pix) self.next_screen = None self.nav = Nav(self) self.nav.setTitle(self.main_screen.getTitleText()) self.nav.setLinks(self.main_screen.getLinkText(), - self.config_screen.getLinkText()) + self.config_screen.getLinkText(), + self.help_screen.getLinkText()) self.status = Status(self) self.log = QLabel("Show Log", self) @@ -102,7 +111,7 @@ class MainWindow(QWidget): self.setLayout(layout) self.resize(800, 600) - for link in (self.nav.main, self.nav.config): + for link in (self.nav.main, self.nav.config, self.nav.help): self.connect(link, SIGNAL('linkActivated(QString)'), self.animateToScreen) @@ -135,6 +144,8 @@ class MainWindow(QWidget): self.next_screen = self.config_screen elif link == self.main_screen.name: self.next_screen = self.main_screen + elif link == self.help_screen.name: + self.next_screen = self.help_screen curr_screen = self.screens.currentWidget() @@ -162,11 +173,17 @@ class MainWindow(QWidget): self.toConfigScreen() elif self.next_screen == self.main_screen: self.toMainScreen() + elif self.next_screen == self.help_screen: + self.toHelpScreen() def toConfigScreen(self): self.screens.setCurrentWidget(self.config_screen) self.nav.setTitle(self.config_screen.getTitleText()) + def toHelpScreen(self): + self.screens.setCurrentWidget(self.help_screen) + self.nav.setTitle(self.help_screen.getTitleText()) + def toMainScreen(self): self.screens.setCurrentWidget(self.main_screen) self.nav.setTitle(self.main_screen.getTitleText()) diff --git a/sface/screens/helpscreen.py b/sface/screens/helpscreen.py new file mode 100644 index 0000000..662deab --- /dev/null +++ b/sface/screens/helpscreen.py @@ -0,0 +1,75 @@ + +from PyQt4.QtCore import * +from PyQt4.QtGui import * + +from sface.screens.sfascreen import SfaScreen + +class HelpWidget(QWidget): + def __init__(self, parent): + QWidget.__init__(self, parent) + self.showHelpText() + + def showHelpText(self): + layout = QVBoxLayout(self) + layout.setAlignment(Qt.AlignTop) + + text = QLabel(self) + text.setWordWrap(True) + text.setOpenExternalLinks(True) + text.setText(""" +

The PlanetLab Federation is a collection of testbeds that +have joined forces using the Slice Federation Architecture +(SFA).

+ +

This GUI allows users of OneLab and PlanetLab to allocate resources +belonging to any federated testbed to an existing slice. To use it, +follow these steps:

+ +
    + +
  1. Go to the Configure screen and configure your slice, user, +and user authority HRNs.
  2. + +
  3. Go to the Main Window and click Update Slice +Data. This will load the set of resources currently allocated to +your slice, and group them by testbeds. Expand the entry for a +particular testbed to see the resources allocated there.
  4. + +
  5. To modify the resources allocated to your slice: + +
      + +
    • Double click a node to toggle its status.
    • + +
    • Expand a node to see the tags assigned to that node. Right click + on the node to add a new tag. Double click on a tag to toggle its + status.
    • + +
    • The first entry for each testbed begins with Default + tags. Expand this to see the set of tags that applies to all + nodes in the testbed. Right click on it to add a new default + tag. Double click on a tag to toggle its status.
    • + +
    + +
  6. + +
  7. After you have made your changes, click Submit. This will +submit your changes and then refresh the set of slice resources to +reflect the current allocation. No changes are made to your slice +allocation until you click Submit.
  8. + +
+ +

This GUI was built by the OneLab and PlanetLab teams. Please send +feedback on its usefulness to support@planet-lab.org

+""") + text.setTextFormat(Qt.RichText) + layout.addWidget(text) + +class HelpScreen(SfaScreen): + def __init__(self, parent): + SfaScreen.__init__(self, parent) + + widget = HelpWidget(self) + self.init(widget, "Help", "How to use the OneLab Federation GUI") -- 2.43.0