예제 #1
0
파일: GUI.py 프로젝트: vancan1ty/SEAT
    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()