Source code for malcolm.modules.builtin.parts.labelpart

from annotypes import Anno

from malcolm.core import Part, PartRegistrar, StringMeta

from ..infos import LabelInfo
from ..util import set_tags

with Anno("Initial value of Block label"):
    ALabelValue = str


[docs]class LabelPart(Part): """Part representing a the title of the Block a GUI should display""" def __init__(self, value: ALabelValue = None) -> None: super().__init__("label") meta = StringMeta("Label for the block") set_tags(meta, writeable=True) self.initial_value = value self.attr = meta.create_attribute_model(self.initial_value) def _report(self): self.registrar.report(LabelInfo(self.attr.value)) def setup(self, registrar: PartRegistrar) -> None: super().setup(registrar) registrar.add_attribute_model(self.name, self.attr, self.set_label) self._report() def set_label(self, value, ts=None): self.attr.set_value(value, ts=ts) self._report()