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