Improve parameter settings

This commit is contained in:
Andre Basche 2023-02-19 03:30:48 +01:00
parent 3efa2fd3f5
commit 531548f000
3 changed files with 43 additions and 21 deletions

View file

@ -26,7 +26,8 @@ class HonParameterFixed(HonParameter):
@value.setter
def value(self, value):
raise ValueError("fixed value")
if not value == self._value:
raise ValueError("Can't change fixed value")
class HonParameterRange(HonParameter):
@ -41,30 +42,43 @@ class HonParameterRange(HonParameter):
def __repr__(self):
return f"{self.key} [{self._min} - {self._max}]"
@property
def min(self):
return self._min
@property
def max(self):
return self._max
@property
def step(self):
return self._step
@property
def value(self):
return self._value if self._value is not None else self._min
@value.setter
def value(self, value):
if self._min < value < self._max and not value % self._step:
if self._min <= value <= self._max and not value % self._step:
self._value = self._value
raise ValueError(f"min {self._min} max {self._max} step {self._step}")
else:
raise ValueError(f"Allowed: min {self._min} max {self._max} step {self._step}")
class HonParameterEnum(HonParameter):
def __init__(self, key, attributes):
super().__init__(key, attributes)
self._value = attributes.get("defaultValue", "0")
self._default = attributes.get("defaultValue")
self._value = self._default or "0"
self._values = attributes.get("enumValues")
def __repr__(self):
return f"{self.key} {self._values}"
return f"{self.key} {self.values}"
@property
def values(self):
return self._values
return [str(value) for value in self._values]
@property
def value(self):
@ -72,13 +86,26 @@ class HonParameterEnum(HonParameter):
@value.setter
def value(self, value):
if value in self._values:
if value in self.values:
self._value = self._value
raise ValueError(f"values {self._value}")
else:
raise ValueError(f"Allowed values {self._value}")
class HonParameterProgram(HonParameterEnum):
def __init__(self, key, attributes):
super().__init__(key, attributes)
self._value = attributes["current"]
self._values = attributes["values"]
def __init__(self, key, command):
super().__init__(key, {})
self._command = command
self._value = command._category
self._values = command._multi
@property
def value(self):
return self._value
@value.setter
def value(self, value):
if value in self.values:
self._command.set_program(value)
else:
raise ValueError(f"Allowed values {self._value}")