コード例 #1
0
    def loadClicked(self, *args):
        file = gb.session.calibrationFile.value
        dataDir = gb.session.dataDir.value
        if file:
            file = misc.absolutePath(file, dataDir)
        else:
            file = dataDir
        file = gui.openFile(config.SETTINGS_FILTER, file)

        if not file:
            return

        # use a temp copy for loading new calibration
        calibrationTemp = gb.calibration.copy()
        log.info('Loading calibration from "%s"', file)
        calibrationTemp.loadFile(file, float)

        # on successful load, copy the temp back to the original
        calibrationTemp.copyTo(gb.calibration)

        file = misc.relativePath(file, dataDir)
        gb.session.calibrationFile.value = file
        gb.session.saveFile(config.LAST_SESSION_FILE)

        self.updateCal()
コード例 #2
0
    def paradigmFileButtonClicked(self, *args):
        file = self.paradigmFile.currentText()
        dataDir = self.dataDir.text()
        if file:
            file = misc.absolutePath(file, dataDir)
        else:
            file = dataDir
        file = gui.openFile(config.SETTINGS_FILTER, file)

        if not file:
            return

        file = misc.relativePath(file, dataDir)
        self.paradigmFile.setCurrentText(file)
コード例 #3
0
    def dataFileButtonClicked(self, *args):
        file = self.dataFile.text()
        dataDir = self.dataDir.text()
        if file:
            file = misc.absolutePath(file, dataDir)
        else:
            file = dataDir
        file = gui.saveFile(config.DATA_FILTER, file)

        if not file:
            return

        file = misc.relativePath(file, dataDir)
        self.dataFile.setText(file)
コード例 #4
0
    def saveClicked(self, *args):
        file = gb.session.calibrationFile.value
        dataDir = gb.session.dataDir.value
        if file:
            file = misc.absolutePath(file, dataDir)
        else:
            file = dataDir
        file = gui.saveFile(config.SETTINGS_FILTER, file)

        if not file:
            return

        log.info('Saving calibration to "%s"', file)
        gb.calibration.saveFile(file)

        file = misc.relativePath(file, dataDir)
        gb.session.calibrationFile.value = file
        gb.session.saveFile(config.LAST_SESSION_FILE)
コード例 #5
0
    def __init__(self, parent=None):
        super().__init__(parent)

        # unlike BehaviorWindow, graphical layout in SetupWindow requires
        # micromanaging and hence cannot be generated automatically
        dataDir = gb.session.dataDir.value
        self.dataDir = QtWidgets.QLineEdit(dataDir)
        self.dataDir.textEdited.connect(self.dataDirChanged)
        h = self.dataDir.sizeHint().height()

        self.dataDirButton = gui.makeFileButton('Select data directory')
        self.dataDirButton.clicked.connect(self.dataDirButtonClicked)

        dataDirectoryLayout = QtWidgets.QHBoxLayout()
        dataDirectoryLayout.addWidget(self.dataDir)
        dataDirectoryLayout.addWidget(self.dataDirButton)

        self.subjectID = QtWidgets.QComboBox()
        self.subjectID.setEditable(True)
        self.loadSubjectIDs()
        self.subjectID.setCurrentText(gb.session.subjectID.value)
        self.subjectID.currentTextChanged.connect(self.updateDataFile)

        self.experimentName = QtWidgets.QComboBox()
        self.experimentName.setEditable(True)
        self.experimentName.addItems(gb.session.experimentName.values)
        self.experimentName.setCurrentText(gb.session.experimentName.value)
        self.experimentName.currentTextChanged.connect(self.updateDataFile)

        self.experimentMode = QtWidgets.QComboBox()
        self.experimentMode.addItems(gb.session.experimentMode.values)
        self.experimentMode.setCurrentText(gb.session.experimentMode.value)
        self.experimentMode.currentTextChanged.connect(self.updateDataFile)

        self.recording = QtWidgets.QComboBox()
        self.recording.addItems(gb.session.recording.values)
        self.recording.setCurrentText(gb.session.recording.value)
        self.recording.currentIndexChanged.connect(self.updateDataFile)

        self.autoDataFile = QtWidgets.QCheckBox()
        self.autoDataFile.setToolTip('Automatic file naming')
        if gb.session.autoDataFile.value:
            self.autoDataFile.setCheckState(QtCore.Qt.Checked)
        else:
            self.autoDataFile.setCheckState(QtCore.Qt.Unchecked)
        self.autoDataFile.stateChanged.connect(self.autoDataFileChanged)

        self.dataFile = QtWidgets.QLineEdit()
        # self.dataFile.setFixedWidth(self.dataFile.sizeHint().width()*2.5)
        if gb.session.autoDataFile.value:
            self.dataFile.setReadOnly(True)
        else:
            self.dataFile.setText(gb.session.dataFile.value)
            self.dataFile.setCursorPosition(0)

        self.dataFileButton = gui.makeFileButton('Select data file')
        self.dataFileButton.clicked.connect(self.dataFileButtonClicked)
        if gb.session.autoDataFile.value:
            self.dataFileButton.setEnabled(False)

        dataFileLayout = QtWidgets.QHBoxLayout()
        dataFileLayout.addWidget(self.dataFile)
        dataFileLayout.addWidget(self.autoDataFile)
        dataFileLayout.addWidget(self.dataFileButton)

        calibrationFile = gb.session.calibrationFile.value
        calibrationFile = misc.relativePath(calibrationFile, dataDir)
        self.calibrationFile = QtWidgets.QLineEdit(calibrationFile)

        self.calibrationFileButton = gui.makeFileButton(
            'Select calibration file')
        self.calibrationFileButton.clicked.connect(
            self.calibrationFileButtonClicked)

        calibrationFileLayout = QtWidgets.QHBoxLayout()
        calibrationFileLayout.addWidget(self.calibrationFile)
        calibrationFileLayout.addWidget(self.calibrationFileButton)

        paradigmFile = gb.session.paradigmFile.value
        paradigmFile = misc.relativePath(paradigmFile, dataDir)
        self.paradigmFile = QtWidgets.QComboBox()
        self.paradigmFile.setEditable(True)
        self.loadParadigmFiles()
        self.paradigmFile.setCurrentText(paradigmFile)
        self.paradigmFile.currentTextChanged.connect(self.paradigmFileChanged)

        self.paradigmFileButton = gui.makeFileButton('Select paradigm file')
        self.paradigmFileButton.clicked.connect(self.paradigmFileButtonClicked)

        paradigmFileLayout = QtWidgets.QHBoxLayout()
        paradigmFileLayout.addWidget(self.paradigmFile)
        paradigmFileLayout.addWidget(self.paradigmFileButton)

        self.rove = QtWidgets.QListWidget()
        if self.paradigmFile.currentText(): self.rove.setEnabled(False)
        self.roveParams = []
        for item in gb.paradigm:
            if item.type in (int, float, str):
                self.roveParams += [item.name]
                widgetItem = QtWidgets.QListWidgetItem(item.label)
                widgetItem.setFlags(widgetItem.flags()
                                    | QtCore.Qt.ItemIsUserCheckable)
                if item.name in gb.session.rove.value:
                    widgetItem.setCheckState(QtCore.Qt.Checked)
                else:
                    widgetItem.setCheckState(QtCore.Qt.Unchecked)
                self.rove.addItem(widgetItem)

        # OK and Cancel buttons
        btnOK = QtWidgets.QPushButton('OK')
        btnOK.setDefault(True)
        btnOK.clicked.connect(self.okClicked)
        # btnRevert = QtWidgets.QPushButton('Revert')
        # btnRevert.clicked.connect(self.revertClicked)
        btnCancel = QtWidgets.QPushButton('Cancel')
        btnCancel.clicked.connect(self.reject)
        btnCalibration = QtWidgets.QPushButton('Calibration')
        btnCalibration.clicked.connect(self.calibrationClicked)

        buttonsLayout = QtWidgets.QHBoxLayout()
        buttonsLayout.addStretch()
        buttonsLayout.addWidget(btnOK)
        # buttonsLayout.addWidget(btnRevert)
        buttonsLayout.addWidget(btnCancel)
        buttonsLayout.addWidget(btnCalibration)
        buttonsLayout.addStretch()

        if gb.session.autoDataFile.value:
            self.updateDataFile()

        layout = QtWidgets.QGridLayout()
        layout.addWidget(QtWidgets.QLabel('Data directory:'),
                         layout.rowCount() - 1, 0)
        layout.addLayout(dataDirectoryLayout, layout.rowCount() - 1, 1)
        layout.addWidget(QtWidgets.QLabel('Subject ID:'), layout.rowCount(), 0)
        layout.addWidget(self.subjectID, layout.rowCount() - 1, 1)
        layout.addWidget(QtWidgets.QLabel('Experiment name:'),
                         layout.rowCount(), 0)
        layout.addWidget(self.experimentName, layout.rowCount() - 1, 1)
        layout.addWidget(QtWidgets.QLabel('Experiment mode:'),
                         layout.rowCount(), 0)
        layout.addWidget(self.experimentMode, layout.rowCount() - 1, 1)
        layout.addWidget(QtWidgets.QLabel('Recording:'), layout.rowCount(), 0)
        layout.addWidget(self.recording, layout.rowCount() - 1, 1)
        layout.addWidget(QtWidgets.QLabel('Data file:'), layout.rowCount(), 0)
        layout.addLayout(dataFileLayout, layout.rowCount() - 1, 1)
        layout.addWidget(QtWidgets.QLabel('Calibration file:'),
                         layout.rowCount(), 0)
        layout.addLayout(calibrationFileLayout, layout.rowCount() - 1, 1)
        layout.addWidget(QtWidgets.QLabel('Paradigm file:'), layout.rowCount(),
                         0)
        layout.addLayout(paradigmFileLayout, layout.rowCount() - 1, 1)
        layout.addWidget(QtWidgets.QLabel('Rove:'), layout.rowCount(), 0)
        layout.addWidget(self.rove, layout.rowCount() - 1, 1)
        layout.addLayout(buttonsLayout, layout.rowCount(), 0, 1, 3)
        layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)

        self.setLayout(layout)
        self.setWindowTitle(config.APP_NAME + ' Setup')
        self.setWindowIcon(QtGui.QIcon(config.APP_LOGO))
        self.setWindowFlags(self.windowFlags()
                            & ~QtCore.Qt.WindowContextHelpButtonHint)