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()