Source code for malcolm.modules.ADCore.parts.filepathtranslatorpart

from annotypes import Anno, add_call_types

from malcolm.core import APartName, Part, PartRegistrar, StringMeta, Widget, config_tag
from malcolm.modules import scanning

from ..infos import FilePathTranslatorInfo

drive_letter_desc = "Letter assigned to the windows drive mount"
with Anno(drive_letter_desc):
    ADriveLetter = str
path_prefix_desc = "The first bit of the file path (i.e. /dls for /dls/i18/...)"
with Anno(path_prefix_desc):
    APathPrefix = str
network_prefix_desc = "The path prefix if it is a network mount (e.g. " "//dc" ")"
with Anno(network_prefix_desc):
    ANetworkPrefix = str

# Pull re-used annotypes into our namespace in case we are subclassed
APartName = APartName


[docs]class FilepathTranslatorPart(Part): def __init__( self, name: APartName, initial_windows_drive_letter: ADriveLetter, initial_path_prefix: APathPrefix = "/dls", initial_network_prefix: ANetworkPrefix = "", ) -> None: super().__init__(name) self.windows_drive_letter = StringMeta( drive_letter_desc, tags=[Widget.TEXTINPUT.tag(), config_tag()], ).create_attribute_model(initial_windows_drive_letter) self.path_prefix = StringMeta( path_prefix_desc, tags=[Widget.TEXTINPUT.tag(), config_tag()], ).create_attribute_model(initial_path_prefix) self.network_prefix = StringMeta( network_prefix_desc, tags=[Widget.TEXTINPUT.tag(), config_tag()], ).create_attribute_model(initial_network_prefix) def setup(self, registrar: PartRegistrar) -> None: super().setup(registrar) # Hooks registrar.hook(scanning.hooks.ReportStatusHook, self.on_report_status) # Attributes registrar.add_attribute_model( "windowsDriveLetter", self.windows_drive_letter, self.windows_drive_letter.set_value, ) registrar.add_attribute_model( "pathPrefix", self.path_prefix, self.path_prefix.set_value ) registrar.add_attribute_model( "networkPrefix", self.network_prefix, self.network_prefix.set_value )
[docs] @add_call_types def on_report_status(self) -> scanning.hooks.UInfos: info = FilePathTranslatorInfo( self.windows_drive_letter.value, self.path_prefix.value, self.network_prefix.value, ) return info