+import os
+import time
+
from PyQt4.QtCore import *
from PyQt4.QtGui import *
+from sface.sficonfig import config
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)
+ self.sliceUpdateDate()
+
+ def set(self, msg, timeout):
+ self.setText(msg)
+ if timeout:
+ QTimer.singleShot(timeout, self.reset)
+
+ def sliceUpdateDate(self):
+ rspec_file = config.getSliceRSpecFile()
+ if not os.path.exists(rspec_file):
+ return
+
+ creation_time = os.stat(rspec_file).st_ctime
+ last_update = time.ctime(creation_time)
+ self.set("Slice data last updated on %s" % last_update, timeout=None)
+
+ def reset(self):
+ self.setText("")
+ QTimer.singleShot(1500, self.sliceUpdateDate)
+
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.switch = QLabel(self.config_screen.getLabelText(), self)
- self.switch.setAlignment(Qt.AlignRight)
-
+ 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.addWidget(self.switch)
+ 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.getLabelText())
+ 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.getLabelText())
-
-
+ self.nav.setLink(self.config_screen.getLinkText())
+ self.nav.setTitle(self.main_screen.getTitleText())
+ def setStatus(self, msg, timeout):
+ self.status.set(msg, timeout)