work on status bar
[sface.git] / sface / sfawindow.py
1
2 import os
3 import time
4
5 from PyQt4.QtCore import *
6 from PyQt4.QtGui import *
7
8 from sface.sficonfig import config
9 from sface.screens.configscreen import ConfigScreen
10 from sface.screens.mainscreen import MainScreen
11
12 class Nav(QWidget):
13     def __init__(self, parent=None):
14         QWidget.__init__(self, parent)
15         
16         self.title = QLabel("", self)
17         self.link = QLabel("", self)
18         self.link.setAlignment(Qt.AlignRight)
19         
20         hlayout = QHBoxLayout()
21         hlayout.addWidget(self.title)
22         hlayout.addStretch()
23         hlayout.addWidget(self.link)
24         self.setLayout(hlayout)
25
26     def setTitle(self, title):
27         self.title.setText(title)
28
29     def setLink(self, link):
30         self.link.setText(link)
31
32
33 class Status(QLabel):
34     def __init__(self, parent=None):
35         QLabel.__init__(self, "", parent)
36
37     def set(self, msg, timeout):
38         self.setText(msg)
39         if timeout:
40             QTimer.singleShot(timeout, self, SLOT("clear()"))
41
42     def sliceUpdateDate(self):
43         rspec_file = config.getSliceRSpecFile()
44         creation_time = os.stat(rspec_file).st_ctime
45         last_update = time.ctime(creation_time)
46         self.set(last_update, timeout=None)
47
48     def clear(self):
49 #        self.setText("")
50         self.sliceUpdateDate()
51
52
53 class SfaWindow(QWidget):
54     def __init__(self, parent=None):
55         QWidget.__init__(self, parent)
56
57         self.config_screen = ConfigScreen(self)
58         self.main_screen = MainScreen(self)
59
60         self.screens = QStackedWidget(self)
61         self.screens.addWidget(self.main_screen)
62         self.screens.addWidget(self.config_screen)
63
64         self.nav = Nav(self)
65         self.nav.setTitle(self.main_screen.getTitleText())
66         self.nav.setLink(self.config_screen.getLinkText())
67
68         self.status = Status(self)
69
70         layout = QVBoxLayout()
71         layout.addWidget(self.nav)
72         layout.addWidget(self.screens)
73         layout.addWidget(self.status)
74         self.setLayout(layout)
75         self.resize(800, 600)
76
77         self.connect(self.nav.link, SIGNAL('linkActivated(QString)'),
78                      self.toScreen)
79
80     def toScreen(self, link):
81         if link == self.config_screen.name:
82             self.toConfigScreen()
83         elif link == self.main_screen.name:
84             self.toMainScreen()
85
86     def toConfigScreen(self):
87         self.screens.setCurrentWidget(self.config_screen)
88         self.nav.setLink(self.main_screen.getLinkText())
89         self.nav.setTitle(self.config_screen.getTitleText())
90
91     def toMainScreen(self):
92         self.screens.setCurrentWidget(self.main_screen)
93         self.nav.setLink(self.config_screen.getLinkText())
94         self.nav.setTitle(self.main_screen.getTitleText())
95
96     def setStatus(self, msg, timeout):
97         self.status.set(msg, timeout)