From a19df544d7a02b1029673e55ce73a4305c46bc51 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Mon, 8 Mar 2021 23:52:41 +0100 Subject: [PATCH] [settings] store settings --- blipblop/ui/audioblop.py | 1 + blipblop/ui/settings.py | 44 ++++++++++++++++++++++++++------------- blipblop/ui/visualblip.py | 1 + 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/blipblop/ui/audioblop.py b/blipblop/ui/audioblop.py index 47bcac9..518ad2d 100644 --- a/blipblop/ui/audioblop.py +++ b/blipblop/ui/audioblop.py @@ -147,6 +147,7 @@ class AudioBlop(QWidget): return if not self._session_running: self._settings.set_enabled(False) + self._settings.store_settings() self._session_running = True self._countdown_label.start(time=self._settings.countdown) diff --git a/blipblop/ui/settings.py b/blipblop/ui/settings.py index 65759e2..a417147 100644 --- a/blipblop/ui/settings.py +++ b/blipblop/ui/settings.py @@ -1,5 +1,5 @@ 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 @@ -7,35 +7,36 @@ class TaskSettings(QWidget): def __init__(self, parent=None): super().__init__(parent=parent) - + self.settings = QSettings() + self._trial_spinner = QSpinBox() self._trial_spinner.setMinimum(5) 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._min_delay_spinner = QSpinBox() self._min_delay_spinner.setMinimum(1) 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._max_delay_spinner = QSpinBox() + self._max_delay_spinner = QSpinBox() self._max_delay_spinner.setMinimum(1) 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._countdown_spinner = QSpinBox() + self._countdown_spinner = QSpinBox() self._countdown_spinner.setMinimum(1) 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._saliency_slider = QSlider(Qt.Horizontal) self._saliency_slider.setMinimum(0) 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.setTickPosition(QSlider.TicksBelow) @@ -76,7 +77,7 @@ class TaskSettings(QWidget): @property def countdown(self): - return self._countdown_spinner.value() + return self._countdown_spinner.value() def set_enabled(self, enabled): self._trial_spinner.setEnabled(enabled) @@ -85,6 +86,13 @@ class TaskSettings(QWidget): self._min_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): @@ -95,13 +103,17 @@ class AuditoryTaskSettings(TaskSettings): self._sound_combo = QComboBox() for k in cnst.SNDS_DICT.keys(): self._sound_combo.addItem(k) - - self.form_layout.insertRow(self.form_layout.rowCount() -1, "stimulus sound", self._sound_combo) + 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) def set_enabled(self, enabled): super().set_enabled(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 def sound(self): return self._sound_combo.currentText() @@ -116,17 +128,21 @@ class VisualTaskSettings(TaskSettings): self._size_slider = QSlider(Qt.Horizontal) self._size_slider.setMinimum(0) 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.setTickPosition(QSlider.TicksBelow) self._size_slider.setToolTip("Diameter of the stimulus in pixel") - self.form_layout.insertRow(self.form_layout.rowCount() -1, "stimulus size", self._size_slider) + self.form_layout.insertRow(self.form_layout.rowCount() - 1, "stimulus size", self._size_slider) def set_enabled(self, enabled): super().set_enabled(enabled) self._size_slider.setEnabled(enabled) + def store_settings(self): + super().store_settings() + self.settings.setValue("visual_task/stimulus_size", self.size) + @property def size(self): return self._size_slider.sliderPosition() diff --git a/blipblop/ui/visualblip.py b/blipblop/ui/visualblip.py index e94b07d..eac2c72 100644 --- a/blipblop/ui/visualblip.py +++ b/blipblop/ui/visualblip.py @@ -154,6 +154,7 @@ class VisualBlip(QWidget): return if not self._session_running: self._settings.set_enabled(False) + self._settings.store_settings() self._session_running = True self._countdown_label.start(time=self._settings.countdown)