def initUI(self): """create the various UI elements""" self.statusBar() holderWidget = QtGui.QWidget() grid = QtGui.QGridLayout() grid.setSpacing(10) grid.setColumnStretch(8, 1) lowLbl = QtGui.QLabel('Low (hz)') grid.addWidget(lowLbl, 0, 0) self.lowEdit = QtGui.QLineEdit("") grid.addWidget(self.lowEdit, 0, 1) highLbl = QtGui.QLabel('High (hz)') grid.addWidget(highLbl, 0, 2) self.highEdit = QtGui.QLineEdit("") grid.addWidget(self.highEdit, 0, 3) startLbl = QtGui.QLabel('Start Time') grid.addWidget(startLbl, 0, 4) self.startEdit = QtGui.QLineEdit("") grid.addWidget(self.startEdit, 0, 5) endLbl = QtGui.QLabel('End Time') grid.addWidget(endLbl, 0, 6) self.endEdit = QtGui.QLineEdit("") grid.addWidget(self.endEdit, 0, 7) # modeLbl = QtGui.QLabel('Mode:') # grid.addWidget(modeLbl, 0, 9) # selectButton = QtGui.QPushButton('Select', holderWidget) # grid.addWidget(selectButton, 0, 10) # zoomButton = QtGui.QPushButton('Zoom', holderWidget) # grid.addWidget(zoomButton, 0, 11) sliderLabel = QtGui.QLabel('Amplitude') grid.addWidget(sliderLabel, 1, 0) self.sliderValue = QtGui.QLabel() grid.addWidget(self.sliderValue, 2, 0) self.canvas = CanvasHandler.EEGCanvas(self.startEdit, self.endEdit, self.lowEdit, self.highEdit) slider = QtGui.QSlider(QtCore.Qt.Vertical, holderWidget) slider.setRange( 0, 100) #qslider does ints, so we divide by ten to get floats grid.addWidget(slider, 3, 0, alignment=QtCore.Qt.AlignHCenter) spikeLbl = QtGui.QLabel('Threshold') grid.addWidget(spikeLbl, 4, 0) self.thresholdEdit = QtGui.QLineEdit("0.001") self.thresholdEdit.setMaximumWidth(80) tValidator = QtGui.QDoubleValidator(0.0, 1.0, 12) self.thresholdEdit.setValidator(tValidator) grid.addWidget(self.thresholdEdit, 5, 0) spikeButton = QtGui.QPushButton('Find Spikes', holderWidget) grid.addWidget(spikeButton, 6, 0) self.scroller = EEGScrollArea(self.canvas) self.canvas.parentScroller = self.scroller #scroller = QtGui.QScrollArea(); #scroller.setWidget(c.native) grid.addWidget(self.scroller, 1, 1, 6, 11) QtCore.QObject.connect(slider, QtCore.SIGNAL('valueChanged(int)'), self.onUpdateSliderValue) QtCore.QObject.connect(self.startEdit, QtCore.SIGNAL('editingFinished()'), self.onStartEndChanged) QtCore.QObject.connect(self.endEdit, QtCore.SIGNAL('editingFinished()'), self.onStartEndChanged) QtCore.QObject.connect(self.lowEdit, QtCore.SIGNAL('editingFinished()'), self.onUpdateTextBoxes) QtCore.QObject.connect(self.highEdit, QtCore.SIGNAL('editingFinished()'), self.onUpdateTextBoxes) QtCore.QObject.connect(spikeButton, QtCore.SIGNAL('clicked()'), self.runSpikeDetection) # QtCore.QObject.connect(selectButton, QtCore.SIGNAL('clicked()'), self.setModeSelect) # QtCore.QObject.connect(zoomButton, QtCore.SIGNAL('clicked()'), self.setModeZoom) slider.setValue(self.canvas.storedAmplitude * 10) self.pythonScripter = QIPythonWidget(customBanner=""" Welcome to SEAT. All functionality of python and this application is available through this command line the variable 'window' contains a reference to your current window here are some commands to get you started: window.canvas.quickTextDraw('hello world',0,0); window.canvas.update(); window.canvas.displayData happy scripting """) self.pythonScripter.pushVariables({"window": self}) #self.pythonScripter.executeCommand(printHelpText) pyDockWidget = QtGui.QDockWidget("Python REPL") pyDockWidget.setWidget(self.pythonScripter) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, pyDockWidget) toggleViewPyDock = pyDockWidget.toggleViewAction() holderWidget.setLayout(grid) self.setCentralWidget(holderWidget) self.statusBar().showMessage( "Use File->Open to choose a dataset to open") #create pulldown menus self.buildChannelSelector() self.setupMenus(toggleViewPyDock, self.toggleChannelSelector) self.setGeometry(50, 50, 350, 300) self.setWindowTitle('Simple EEG Analysis Tool') self.resize(1200, 700) self.show()