Esempio n. 1
0
class AuxJog(BaseWidget):
    """
    A Widget to jog aux axis
    """

    _last_set_value = 0
    label = ""

    def __init__(self, axis):
        super().__init__("Aux Jog")

        assert isinstance(axis, ControlAxis)

        self._axis = axis

        self.label = axis.get_name()

        self._value_field = ControlText(label="Target",
                                        default=str(axis.get_value()))

        self._set_button = ControlButton(label="Go to target")
        self._set_button.value = self._update_value

        self._saved_point_field = ControlCombo(label="Saved Point")

        self._saved_point_button = ControlButton(label="Go to saved point")
        self._saved_point_button.value = self._update_saved_point

        self._current_field = ControlLabel(
            label="Current Value ({})".format(axis.get_units()))

        self.setFrameShape(QFrame.StyledPanel)
        self.setSizePolicy(
            QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed))

        self.set_margin(10)

        self.formset = [("info:{0} ({1}):".format(axis.get_name(),
                                                  axis.get_units()), '', '',
                         '_current_field'), ('_value_field', '_set_button'),
                        ('_saved_point_field', '_saved_point_button')]

    def _update_value(self):
        value = self._value_field.value
        self._axis.goto_value(value)

    def _update_saved_point(self):
        self._axis.goto_value(self._saved_point_field.value)

    def update_events(self, events):
        #print("Aux Event:", events)
        if 'saved_points' in events:
            self._saved_point_field.clear()
            for key, value in events['saved_points'].items():
                self._saved_point_field += (key, key)

    def timer_update(self):
        self._current_field.value = "{0:.5f}".format(
            self._axis.get_current_value())

        if self._axis.get_string_value() != self._last_set_value:
            self._value_field.value = self._axis.get_string_value()
            self._last_set_value = self._axis.get_string_value()