[settings] store settings

This commit is contained in:
Jan Grewe 2021-03-08 23:52:41 +01:00
parent 2b5982eabb
commit a19df544d7
3 changed files with 32 additions and 14 deletions

View File

@ -147,6 +147,7 @@ class AudioBlop(QWidget):
return return
if not self._session_running: if not self._session_running:
self._settings.set_enabled(False) self._settings.set_enabled(False)
self._settings.store_settings()
self._session_running = True self._session_running = True
self._countdown_label.start(time=self._settings.countdown) self._countdown_label.start(time=self._settings.countdown)

View File

@ -1,5 +1,5 @@
from PyQt5.QtWidgets import QComboBox, QFormLayout, QSlider, QSpinBox, QTextEdit, QWidget from PyQt5.QtWidgets import QComboBox, QFormLayout, QSlider, QSpinBox, QTextEdit, QWidget
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt, QSettings
import blipblop.constants as cnst import blipblop.constants as cnst
@ -7,35 +7,36 @@ class TaskSettings(QWidget):
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent=parent) super().__init__(parent=parent)
self.settings = QSettings()
self._trial_spinner = QSpinBox() self._trial_spinner = QSpinBox()
self._trial_spinner.setMinimum(5) self._trial_spinner.setMinimum(5)
self._trial_spinner.setMaximum(25) self._trial_spinner.setMaximum(25)
self._trial_spinner.setValue(5) self._trial_spinner.setValue(int(self.settings.value("task/trials", 5)))
self._trial_spinner.setToolTip("Number of consecutive trials (5 - 25)") self._trial_spinner.setToolTip("Number of consecutive trials (5 - 25)")
self._min_delay_spinner = QSpinBox() self._min_delay_spinner = QSpinBox()
self._min_delay_spinner.setMinimum(1) self._min_delay_spinner.setMinimum(1)
self._min_delay_spinner.setMaximum(10) self._min_delay_spinner.setMaximum(10)
self._min_delay_spinner.setValue(1) self._min_delay_spinner.setValue(int(self.settings.value("task/min_delay", 1)))
self._min_delay_spinner.setToolTip("Minimum delay between start of trial and stimulus display [s]") self._min_delay_spinner.setToolTip("Minimum delay between start of trial and stimulus display [s]")
self._max_delay_spinner = QSpinBox() self._max_delay_spinner = QSpinBox()
self._max_delay_spinner.setMinimum(1) self._max_delay_spinner.setMinimum(1)
self._max_delay_spinner.setMaximum(10) self._max_delay_spinner.setMaximum(10)
self._max_delay_spinner.setValue(5) self._max_delay_spinner.setValue(int(self.settings.value("task/max_delay", 5)))
self._max_delay_spinner.setToolTip("Maximum delay between start of trial and stimulus display [s]") self._max_delay_spinner.setToolTip("Maximum delay between start of trial and stimulus display [s]")
self._countdown_spinner = QSpinBox() self._countdown_spinner = QSpinBox()
self._countdown_spinner.setMinimum(1) self._countdown_spinner.setMinimum(1)
self._countdown_spinner.setMaximum(10) self._countdown_spinner.setMaximum(10)
self._countdown_spinner.setValue(3) self._countdown_spinner.setValue(int(self.settings.value("task/pause", 3)))
self._countdown_spinner.setToolTip("Pause between trials [s]") self._countdown_spinner.setToolTip("Pause between trials [s]")
self._saliency_slider = QSlider(Qt.Horizontal) self._saliency_slider = QSlider(Qt.Horizontal)
self._saliency_slider.setMinimum(0) self._saliency_slider.setMinimum(0)
self._saliency_slider.setMaximum(100) self._saliency_slider.setMaximum(100)
self._saliency_slider.setSliderPosition(100) self._saliency_slider.setSliderPosition(int(self.settings.value("task/saliency", 100)))
self._saliency_slider.setTickInterval(25) self._saliency_slider.setTickInterval(25)
self._saliency_slider.setTickPosition(QSlider.TicksBelow) self._saliency_slider.setTickPosition(QSlider.TicksBelow)
@ -85,6 +86,13 @@ class TaskSettings(QWidget):
self._min_delay_spinner.setEnabled(enabled) self._min_delay_spinner.setEnabled(enabled)
self._max_delay_spinner.setEnabled(enabled) self._max_delay_spinner.setEnabled(enabled)
def store_settings(self):
self.settings.setValue("task/trials", self.trials)
self.settings.setValue("task/salience", self.saliency)
self.settings.setValue("task/min_delay", self.min_delay)
self.settings.setValue("task/max_delay", self.max_delay)
self.settings.setValue("task/pause", self.countdown)
class AuditoryTaskSettings(TaskSettings): class AuditoryTaskSettings(TaskSettings):
@ -95,13 +103,17 @@ class AuditoryTaskSettings(TaskSettings):
self._sound_combo = QComboBox() self._sound_combo = QComboBox()
for k in cnst.SNDS_DICT.keys(): for k in cnst.SNDS_DICT.keys():
self._sound_combo.addItem(k) self._sound_combo.addItem(k)
self._sound_combo.setCurrentIndex(int(self.settings.value("auditory_task/sound_index", 0)))
self.form_layout.insertRow(self.form_layout.rowCount() - 1, "stimulus sound", self._sound_combo) self.form_layout.insertRow(self.form_layout.rowCount() - 1, "stimulus sound", self._sound_combo)
def set_enabled(self, enabled): def set_enabled(self, enabled):
super().set_enabled(enabled) super().set_enabled(enabled)
self._sound_combo.setEnabled(enabled) self._sound_combo.setEnabled(enabled)
def store_settings(self):
super().store_settings()
self.settings.setValue("auditory_task/sound_index", self._sound_combo.currentIndex)
@property @property
def sound(self): def sound(self):
return self._sound_combo.currentText() return self._sound_combo.currentText()
@ -116,7 +128,7 @@ class VisualTaskSettings(TaskSettings):
self._size_slider = QSlider(Qt.Horizontal) self._size_slider = QSlider(Qt.Horizontal)
self._size_slider.setMinimum(0) self._size_slider.setMinimum(0)
self._size_slider.setMaximum(200) self._size_slider.setMaximum(200)
self._size_slider.setSliderPosition(100) self._size_slider.setSliderPosition(int(self.settings.value("visual_task/stimulus_size", 100)))
self._size_slider.setTickInterval(25) self._size_slider.setTickInterval(25)
self._size_slider.setTickPosition(QSlider.TicksBelow) self._size_slider.setTickPosition(QSlider.TicksBelow)
self._size_slider.setToolTip("Diameter of the stimulus in pixel") self._size_slider.setToolTip("Diameter of the stimulus in pixel")
@ -127,6 +139,10 @@ class VisualTaskSettings(TaskSettings):
super().set_enabled(enabled) super().set_enabled(enabled)
self._size_slider.setEnabled(enabled) self._size_slider.setEnabled(enabled)
def store_settings(self):
super().store_settings()
self.settings.setValue("visual_task/stimulus_size", self.size)
@property @property
def size(self): def size(self):
return self._size_slider.sliderPosition() return self._size_slider.sliderPosition()

View File

@ -154,6 +154,7 @@ class VisualBlip(QWidget):
return return
if not self._session_running: if not self._session_running:
self._settings.set_enabled(False) self._settings.set_enabled(False)
self._settings.store_settings()
self._session_running = True self._session_running = True
self._countdown_label.start(time=self._settings.countdown) self._countdown_label.start(time=self._settings.countdown)