1
2
3
4 '''
5 @author: Ricardo Ribeiro
6 @credits: Ricardo Ribeiro
7 @license: MIT
8 @version: 0.0
9 @maintainer: Ricardo Ribeiro
10 @email: ricardojvr@gmail.com
11 @status: Development
12 @lastEditedBy: Carlos Mão de Ferro (carlos.maodeferro@neuro.fchampalimaud.org)
13 '''
14
15 import sys
16 from PyQt4 import QtGui, QtCore
17
18 from pyforms.gui.Controls.ControlDockWidget import ControlDockWidget
19
20
22
24 super(QtGui.QMainWindow, self).__init__()
25 w = ClassObject()
26
27 w.initForm()
28 self.setCentralWidget(w)
29 self.setWindowTitle(w.title)
30
31 docks = {}
32 for name, item in w.formControls.items():
33 if isinstance(item, ControlDockWidget):
34 if item.side not in docks:
35 docks[item.side] = []
36 docks[item.side].append((name, item))
37
38 for key, widgets in docks.items():
39 side = QtCore.Qt.RightDockWidgetArea
40 if key == 'left':
41 side = QtCore.Qt.LeftDockWidgetArea
42 elif key == 'right':
43 side = QtCore.Qt.RightDockWidgetArea
44 elif key == 'top':
45 side = QtCore.Qt.TopDockWidgetArea
46 elif key == 'bottom':
47 side = QtCore.Qt.BottomDockWidgetArea
48 else:
49 side = QtCore.Qt.LeftDockWidgetArea
50
51 if isinstance(widgets, list):
52 for name, widget in widgets:
53 dock = QtGui.QDockWidget(self)
54 dock.setFeatures(QtGui.QDockWidget.DockWidgetFloatable |
55 QtGui.QDockWidget.DockWidgetClosable | QtGui.QDockWidget.DockWidgetMovable)
56 dock.setObjectName(name)
57
58
59 dock.setWidget(widget.form)
60 dock.setWindowTitle(widget.label)
61 widget.dock = dock
62 if not widget._show: dock.hide()
63
64 self.addDockWidget(side, dock)
65 else:
66 dock = QtGui.QDockWidget(self)
67 dock.setFeatures(QtGui.QDockWidget.DockWidgetFloatable |
68 QtGui.QDockWidget.DockWidgetClosable | QtGui.QDockWidget.DockWidgetMovable)
69
70
71
72
73 dock.setObjectName(name)
74 dock.setWidget(widget.form)
75 self.addDockWidget(side, dock)
76 dock.setWindowTitle(widget.label)
77 widget.dock = dock
78 if not widget._show: dock.hide()
79
80 if len(w.mainmenu) > 0:
81 self.__initMainMenu(w.mainmenu)
82
83 try:
84 self.loadStyleSheetFile('style.css')
85 except:
86 pass
87
88 - def __initMainMenu(self, options, keys={}):
89 menubar = self.menuBar()
90 for m in options:
91 for key, menus in m.items():
92 menu = menubar.addMenu(key)
93 for m1 in menus:
94 if isinstance(m1, str) and m1 == "-":
95 menu.addSeparator()
96 else:
97 for text, func in m1.items():
98 action = QtGui.QAction(text, self)
99 if func:
100 action.triggered.connect(func)
101 menu.addAction(action)
102
104 infile = open(filename, 'r')
105 text = infile.read()
106 infile.close()
107 self.setStyleSheet(text)
108
109
115