rework property handling

+ DataType validators are shifted to __call__
+ as_json is moved to export_datatape()
+ new HasProperties Base Mixin for Modules/DataTypes
+ accessibles can be accessed via iterator of a module
+ properties are properly 'derived' and checked, are set with .setPropertyValue

remember: parameters only have properties, so use getPropertyValue()

Change-Id: Iae0273f971aacb00fe6bf05e6a4d24a6d1be881a
Reviewed-on: https://forge.frm2.tum.de/review/20635
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
Enrico Faulhaber
2019-05-14 16:08:20 +02:00
committed by Markus Zolliker
parent 155dd8e4c6
commit f6d8f823d9
23 changed files with 956 additions and 465 deletions

View File

@ -40,7 +40,7 @@ class StringWidget(QLineEdit):
def get_value(self):
res = self.text()
return self.datatype.validate(res)
return self.datatype(res)
def set_value(self, value):
self.setText(value)
@ -136,7 +136,7 @@ class TupleWidget(QFrame):
self.update()
def get_value(self):
return [v.validate(w.get_value()) for w, v in zip(self.subwidgets, self.datatypes)]
return [v(w.get_value()) for w, v in zip(self.subwidgets, self.datatypes)]
def set_value(self, value):
for w, _ in zip(self.subwidgets, value):
@ -166,14 +166,14 @@ class StructWidget(QGroupBox):
res = {}
for name, entry in self.subwidgets.items():
w, dt = entry
res[name] = dt.validate(w.get_value())
res[name] = dt(w.get_value())
return res
def set_value(self, value):
for k, v in value.items():
entry = self.subwidgets[k]
w, dt = entry
w.set_value(dt.validate(v))
w.set_value(dt(v))
class ArrayWidget(QGroupBox):
@ -190,7 +190,7 @@ class ArrayWidget(QGroupBox):
self.setLayout(self.layout)
def get_value(self):
return [self.datatype.validate(w.get_value()) for w in self.subwidgets]
return [self.datatype(w.get_value()) for w in self.subwidgets]
def set_value(self, values):
for w, v in zip(self.subwidgets, values):