Point taken.
Code:
#My edit
###################################################################
cnc_ini = linuxcnc.ini(os.environ['INI_FILE_NAME'])
self.gx = 0
self.gy = 0
self.d_zoom = self.widgets.gremlin.get_zoom_distance()
self.pan_speed = float(cnc_ini.find('GREMLIN_JOY', 'PAN_SPEED') or 50)
self.zoom_speed = float(cnc_ini.find('GREMLIN_JOY', 'ZOOM_SPEED') or 0.5)
###################################################################
Code:
#################################################################
# Gremlin, zoom, pan, clear.
#################################################################
def _on_gremlin_io(self, hal_pin, data=None):
halpin = hal_pin.get()
# print("gremlin_io pin changed to %d." % halpin)
if halpin == 0:
return
elif halpin == 1:
self.gx = self.gx + self.gremlin_joyz_pos.get() * self.pan_speed
self.gy = self.gy + self.gremlin_joyx_pos.get() * self.pan_speed
self.widgets.gremlin.pan(self.gx, self.gy)
elif halpin == 2:
self.d_zoom = self.widgets.gremlin.get_zoom_distance() * (1 + self.gremlin_joyx_pos.get() * self.zoom_speed)
if self.d_zoom < 0.1:
self.d_zoom = 0.1
self.widgets.gremlin.set_zoom_distance(self.d_zoom)
elif halpin == 3:
self.widgets.gremlin.clear_live_plotter()
self.widgets.gremlin.set_zoom_distance(self.d_zoom)
self.widgets.gremlin.pan(self.gx, self.gy)
elif halpin == 4:
self.d_zoom = self.widgets.gremlin.get_zoom_distance()
self.widgets.gremlin.pan(0, 0)
hal_pin.set(0)
# We need extra HAL pins here is where we do it.
# we make pins for the hardware buttons witch can be placed around the
# screen to activate the coresponding buttons on the GUI
def _init_hal_pins( self ):
#################################################################
# My pins.
#################################################################
self.gremlin_joyx_pos = hal_glib.GPin(self.halcomp.newpin('gremlin-joyx-pos', hal.HAL_FLOAT, hal.HAL_IN))
self.gremlin_joyz_pos = hal_glib.GPin(self.halcomp.newpin('gremlin-joyz-pos', hal.HAL_FLOAT, hal.HAL_IN))
self.gremlin_io = hal_glib.GPin(self.halcomp.newpin('gremlin-io', hal.HAL_S32, hal.HAL_IO))
self.gremlin_io.connect('value-changed', self._on_gremlin_io)
#################################################################