################################################################################ # # # This file is part of the Buildbotics firmware. # # # # Copyright (c) 2015 - 2018, Buildbotics LLC # # All rights reserved. # # # # This file ("the software") is free software: you can redistribute it # # and/or modify it under the terms of the GNU General Public License, # # version 2 as published by the Free Software Foundation. You should # # have received a copy of the GNU General Public License, version 2 # # along with the software. If not, see . # # # # The software is distributed in the hope that it will be useful, but # # WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # # Lesser General Public License for more details. # # # # You should have received a copy of the GNU Lesser General Public # # License along with the software. If not, see # # . # # # # For information regarding this software email: # # "Joseph Coffland" # # # ################################################################################ import bbctrl class MainLCDPage(bbctrl.LCDPage): def __init__(self, ctrl): bbctrl.LCDPage.__init__(self, ctrl.lcd) self.ctrl = ctrl self.install = True ctrl.state.add_listener(self.update) def update(self, update): state = self.ctrl.state # Must be after machine vars have loaded if self.install and hasattr(self, 'id'): self.install = False self.ctrl.lcd.set_current_page(self.id) self.text('%-9s' % state.get('xx', ''), 0, 0) metric = not state.get('imperial', False) scale = 1 if metric else 25.4 # Show enabled axes row = 0 for axis in 'xyzabc': if state.is_axis_faulted(axis): self.text(' FAULT %s' % axis.upper(), 9, row) row += 1 elif state.is_axis_enabled(axis): position = state.get(axis + 'p', 0) position += state.get('offset_' + axis, 0) position /= scale self.text('% 10.3f%s' % (position, axis.upper()), 9, row) row += 1 while row < 4: self.text(' ' * 11, 9, row) row += 1 # Show tool, units, feed and speed self.text('%2uT' % state.get('tool', 0), 6, 1) self.text('%-6s' % 'MM' if metric else 'INCH', 0, 1) self.text('%8uF' % (state.get('feed', 0) / scale), 0, 2) self.text('%8dS' % state.get('speed', 0), 0, 3)