/
mainwindow.py
56 lines (43 loc) · 1.99 KB
/
mainwindow.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from PySide import QtCore, QtGui, QtUiTools, QtDeclarative
from red.config import config,get_config
from services.display import Display
class MainWindow(QtGui.QMainWindow):
_instance = None
@staticmethod
def instance():
if MainWindow._instance == None:
MainWindow._instance = MainWindow()
return MainWindow._instance
def __init__(self):
super(MainWindow, self).__init__(None)
self.context = None
self.lastView = None
self.centralWidget = QtGui.QStackedWidget()
self.setCentralWidget(self.centralWidget)
self.setLayout("common/loading")
if get_config(config,"GUI","fullscreen",default='false') == "true":
self.showFullScreen()
else:
self.resize(480,272)
Display._instance.functionSignal.connect(self.functionCall)
Display._instance.fourIntsSignal.connect(self.fourIntsCall)
Display._instance.layoutSignal.connect(self.setLayout)
def functionCall(self, functionName, param):
func = eval("self.view.rootObject()." + functionName)
func(param)
def fourIntsCall(self, functionName, param1, param2):
func = eval("self.view.rootObject()." + functionName)
func(param1, param2)
def setLayout(self, layout):
self.view = QtDeclarative.QDeclarativeView()
self.view.setSource(QtCore.QUrl.fromLocalFile( './layouts/'+ layout +'.qml' ))
self.view.setResizeMode( QtDeclarative.QDeclarativeView.SizeRootObjectToView )
if get_config(config,"GUI","cursor",default="false") != "true":
self.view.setCursor(QtCore.Qt.BlankCursor)
qcontext = self.view.rootContext()
qcontext.setContextProperty("context",Display._instance)
if self.lastView != None:
self.centralWidget.removeWidget(self.lastView)
self.lastView = self.view
self.centralWidget.addWidget(self.view)
self.centralWidget.setCurrentWidget(self.view)