@@ -11,7 +11,3 @@ class BoolElement(ValueElement):
on_change: Callable):
super().__init__(view, design, value, on_change)
-
- def set_view_value(self, value: bool):
- self.view.value = value
@@ -17,10 +17,3 @@ class ChoiceElement(ValueElement):
view.options = [{'label': value, 'value': key} for key, value in options.items()]
- def set_view_value(self, value: any):
- try:
- self.view.value = value['value']
- except TypeError:
@@ -15,11 +15,11 @@ class FloatElement(ValueElement):
- def set_view_value(self, value: float):
+ def value_to_view(self, value: float):
if value is None:
- self.view.value = None
+ return None
elif self.format is None:
- self.view.value = str(value)
+ return str(value)
else:
- self.view.value = self.format % float(value)
+ return self.format % float(value)
@@ -13,3 +13,11 @@ class Select(ChoiceElement):
view = jp.QSelect(options=options, input=self.handle_change)
super().__init__(view, design, value, options, on_change)
+
+ def value_to_view(self, value: any):
+ matches = [o for o in self.view.options if o['value'] == value]
+ if any(matches):
+ return matches[0]['label']
+ else:
+ return value
@@ -11,7 +11,3 @@ class StringElement(ValueElement):
- def set_view_value(self, value: str):
@@ -19,7 +19,11 @@ class ValueElement(Element):
self.on_change = on_change
self.value = value
- self.value.bind_to(self.view.value)
+ self.value.bind_to(self.view.value, forward=self.value_to_view)
+ def value_to_view(self, value):
def handle_change(self, msg):