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()
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)
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)
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)
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)