Skip to content
Snippets Groups Projects

Refactor signal generation GUI

Merged Oscar Gustafsson requested to merge guisignalgenerator into master
# -*- coding: utf-8 -*-
from qtpy.QtWidgets import QGridLayout, QLabel, QLineEdit, QSpinBox
from b_asic.signal_generator import Impulse, Sinusoid, Step, ZeroPad
_GENERATOR_MAPPING = {
"Impulse": ImpulseInput,
"Sinusoid": SinusoidInput,
"Step": StepInput,
"ZeroPad": ZeroPadInput,
}
from b_asic.signal_generator import Gaussian, Impulse, Sinusoid, Step, ZeroPad
class SignalGeneratorInput(QGridLayout):
@@ -116,3 +109,55 @@ class SinusoidInput(SignalGeneratorInput):
phase = 0
return Sinusoid(frequency, phase)
class GaussianInput(SignalGeneratorInput):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.scale_label = QLabel("Standard deviation")
self.addWidget(self.scale_label, 0, 0)
self.scale_input = QLineEdit()
self.addWidget(self.scale_input, 0, 1)
self.loc_label = QLabel("Average value")
self.addWidget(self.loc_label, 1, 0)
self.loc_input = QLineEdit()
self.addWidget(self.loc_input, 1, 1)
self.seed_label = QLabel("Seed")
self.addWidget(self.seed_label, 2, 0)
self.seed_spin_box = QSpinBox()
self.seed_spin_box.setRange(0, 2147483647)
self.addWidget(self.seed_spin_box, 2, 1)
def get_generator(self):
scale = self.scale_input.text().strip()
try:
if not scale:
scale = 1
scale = float(scale)
except ValueError:
self._window.logger.warning(f"Cannot parse scale: {scale} not a number.")
scale = 1
loc = self.loc_input.text().strip()
try:
if not loc:
loc = 0
loc = float(loc)
except ValueError:
self._window.logger.warning(f"Cannot parse loc: {loc} not a number.")
loc = 0
return Gaussian(self.seed_spin_box.value(), loc, scale)
_GENERATOR_MAPPING = {
"Gaussian": GaussianInput,
"Impulse": ImpulseInput,
"Sinusoid": SinusoidInput,
"Step": StepInput,
"ZeroPad": ZeroPadInput,
}
Loading