-
Notifications
You must be signed in to change notification settings - Fork 1
/
MainWindow.py
99 lines (74 loc) · 3.09 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#Created by Gushu Li on 2013/7/30
from PyQt4 import QtCore, QtGui
from GLWidget import *
from RenderSystem import *
from SourceManager import *
from SceneManager import *
from Surface import *
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
centralWidget = QtGui.QWidget()
self.setCentralWidget(centralWidget)
self.glWidget = GLWidget()
self.glWidgetArea = QtGui.QScrollArea()
self.glWidgetArea.setWidget(self.glWidget)
self.glWidgetArea.setWidgetResizable(True)
self.glWidgetArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.glWidgetArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.glWidgetArea.setSizePolicy(QtGui.QSizePolicy.Ignored,
QtGui.QSizePolicy.Ignored)
self.glWidgetArea.setMinimumSize(50,50)
self.createActions()
self.createMenus()
centralLayout = QtGui.QGridLayout()
centralLayout.addWidget(self.glWidgetArea, 0, 0)
centralWidget.setLayout(centralLayout)
self.setWindowTitle("3D Brain Network Analysis Tool")
self.resize(800, 600)
self.renderSystem = RenderSystem()
self.sourceManager = SourceManager()
self.sceneManager = SceneManager()
self.renderSystem.setRenderWidget(self.glWidget)
self.renderSystem.setSceneManager(self.sceneManager)
self.sceneManager.addSource(self.sourceManager)
self.glWidget.addRenderSystem(self.renderSystem)
def loadFile(self):
fileName = QtGui.QFileDialog.getOpenFileName(self,'Open file','./',
'Surface Template(*.nv)')
self.surface = Surface()
self.surface.LoadIn(fileName)
self.sceneManager.rootNode.localObjectDict['Surface'] = self.surface
def about(self):
QtGui.QMessageBox.about(self, "About 3D Brain Network Analysis Tool",
"The <b>3D Brain Network Analysis Tool</b> is developed by Gushu Li, "
"from NICS Lab in E.E. Dept at Tsinghua University. "
"If you find any problem, "
"please email me at <b>lgs930420@gmail.com</b>.")
def grabFrameBuffer(self):
image = self.glWidget.grabFrameBuffer()
pixmap = QtGui.QPixmap.fromImage(image)
filename = QtGui.QFileDialog.getSaveFileName(self,'Save file','./',
'Image Files (*.png)')
pixmap.save(filename)
def createActions(self):
self.loadAct = QtGui.QAction('Load', self, shortcut = 'Ctrl+L',
triggered = self.loadFile)
self.exitAct = QtGui.QAction('Exit', self, shortcut = 'Ctrl+Q',
triggered = self.close)
self.grabFrameBufferAct = QtGui.QAction('&Grab Frame Buffer', self,
shortcut = 'Ctrl+G', triggered = self.grabFrameBuffer)
self.aboutAct = QtGui.QAction("&About", self, triggered=self.about)
self.aboutQtAct = QtGui.QAction("About &Qt", self,
triggered=QtGui.qApp.aboutQt)
def createMenus(self):
self.fileMenu = self.menuBar().addMenu('&File')
self.fileMenu.addAction(self.loadAct)
self.fileMenu.addSeparator()
self.fileMenu.addAction(self.exitAct)
self.editMenu = self.menuBar().addMenu('&Edit')
self.editMenu.addAction(self.grabFrameBufferAct)
self.helpMenu = self.menuBar().addMenu("&Help")
self.helpMenu.addAction(self.aboutAct)
self.helpMenu.addSeparator()
self.helpMenu.addAction(self.aboutQtAct)