Source code for typhos.tweakable

"""
Tweakable value widget.

Variety support pending:
- everything
"""
import logging

import qtpy
from qtpy import QtCore

from . import utils, variety

logger = logging.getLogger(__name__)


[docs]@variety.uses_key_handlers @variety.use_for_variety_write('scalar-tweakable') class TyphosTweakable(utils.TyphosBase): # TODO rearrange package: widgets.TyphosDesignerMixin): """ Widget for a tweakable scalar. Parameters ---------- parent : QWidget The parent widget. init_channel : str, optional The channel to be used by the widget. Notes ----- """ ui_template = utils.ui_dir / 'widgets' / 'tweakable.ui' _readback_attr = 'readback' _setpoint_attr = 'setpoint' def __init__(self, parent=None, init_channel=None, variety_metadata=None, ophyd_signal=None): self._ophyd_signal = ophyd_signal super().__init__(parent=parent) self.ui = qtpy.uic.loadUi(str(self.ui_template), self) self.ui.readback.channel = init_channel self.ui.setpoint.channel = init_channel self.ui.tweak_positive.clicked.connect(self.positive_tweak) self.ui.tweak_negative.clicked.connect(self.negative_tweak) self.variety_metadata = variety_metadata variety_metadata = variety.create_variety_property() def _update_variety_metadata(self, *, display_format=None, **kwargs): display_format = variety.get_display_format(display_format) self.ui.readback.displayFormat = display_format self.ui.setpoint.displayFormat = display_format variety._warn_unhandled_kwargs(self, kwargs)
[docs] def tweak(self, offset): """Tweak by the given ``offset``.""" try: setpoint = float(self.readback.text()) + float(offset) except Exception: logger.exception('Tweak failed') return self.ui.setpoint.setText(str(setpoint)) self.ui.setpoint.send_value()
[docs] @QtCore.Slot() def positive_tweak(self): """Tweak positive by the amount listed in ``ui.tweak_value``""" try: self.tweak(float(self.tweak_value.text())) except Exception: logger.exception('Tweak failed')
[docs] @QtCore.Slot() def negative_tweak(self): """Tweak negative by the amount listed in ``ui.tweak_value``""" try: self.tweak(-float(self.tweak_value.text())) except Exception: logger.exception('Tweak failed')