""" TD Isolated UF UI Loader """ # Python import os import can import struct # Qt from PySide2 import QtCore, QtWidgets from PySide2.QtCore import Slot # parent from engine.dynamicloader import DynamicLoader # plugin specific from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols import CAN from leahi_dialin.utils import conversions # hd Simulator from leahi_dialin.ui.td_messaging import TD_Messaging class Loader(DynamicLoader): """ TD Isolated UF UI Loader """ def __init__(self): self.td_interface = TD_Messaging() self.can_interface = self.td_interface.can_interface super().__init__(os.path.dirname(__file__)) def _init_loader(self): """ finds and creates widgets :return: none """ self.tbSend = self.find_widget(QtWidgets.QToolButton , 'tbSend' ) self.tbReset = self.find_widget(QtWidgets.QToolButton , 'tbReset' ) self.slDuration = self.find_widget(QtWidgets.QSlider , 'slDuration' ) self.lbDuration = self.find_widget(QtWidgets.QLabel , 'lbDuration' ) self.slSetVolume = self.find_widget(QtWidgets.QSlider , 'slSetVolume' ) self.lbSetVolume = self.find_widget(QtWidgets.QLabel , 'lbSetVolume' ) self.slVolumeDelivered = self.find_widget(QtWidgets.QSlider , 'slVolumeDelivered' ) self.lbVolumeDelivered = self.find_widget(QtWidgets.QLabel , 'lbVolumeDelivered' ) self.slRate = self.find_widget(QtWidgets.QSlider , 'slRate' ) self.lbRate = self.find_widget(QtWidgets.QLabel , 'lbRate' ) def _init_connections(self): """ initializes the widgets connections :return: none """ self.tbSend .clicked .connect(self.do_send) self.tbReset .clicked .connect(self.do_reset) self.slDuration .valueChanged .connect(self.do_send) self.slDuration .valueChanged .connect(lambda value: self.lbDuration.setText(f"{value}")) self.slSetVolume .valueChanged .connect(self.do_send) self.slSetVolume .valueChanged .connect(lambda value: self.lbSetVolume.setText(f"{value}")) self.slVolumeDelivered .valueChanged .connect(self.do_send) self.slVolumeDelivered .valueChanged .connect(lambda value: self.lbVolumeDelivered.setText(f"{value}")) self.slRate .valueChanged .connect(self.do_send) self.slRate .valueChanged .connect(lambda value: self.lbRate.setText(f"{value}")) @Slot() def _init_widgets(self): """ initializes the widgets' properties :return: none """ self.do_reset() @Slot() def do_send(self): """ slot for sending blood prime data :return: none """ self.td_interface.td_isolated_uf( self.slDuration.value(), self.slSetVolume.value(), self.slVolumeDelivered.value(), self.slRate.value(), ) @Slot() def do_reset(self): self.slDuration .setValue(0) self.slSetVolume .setValue(0) self.slVolumeDelivered .setValue(0) self.slRate .setValue(0)