diff --git a/src/octoprint/printer/standard.py b/src/octoprint/printer/standard.py index 0d2ebc57..8fec480d 100644 --- a/src/octoprint/printer/standard.py +++ b/src/octoprint/printer/standard.py @@ -510,6 +510,9 @@ class Printer(PrinterInterface, comm.MachineComPrintCallback): def is_locked(self): return self._comm is not None and self._comm.isLocked() + def is_flashing(self): + return self._comm is not None and self._comm.isFlashing() + #~~ sd file handling def get_sd_files(self): @@ -751,7 +754,8 @@ class Printer(PrinterInterface, comm.MachineComPrintCallback): "paused": self.is_paused(), "ready": self.is_ready(), "sdReady": self.is_sd_ready(), - "locked": self.is_locked() + "locked": self.is_locked(), + "flashing": self.is_flashing(), } #~~ comm.MachineComPrintCallback implementation @@ -860,17 +864,17 @@ class Printer(PrinterInterface, comm.MachineComPrintCallback): def on_comm_pos_update(self, MPos, WPos): self._add_position_data(MPos, WPos) - + def _add_position_data(self, MPos, WPos): if MPos is None or WPos is None: MPosString = WPosString = "-" else: MPosString = "X: %.4f Y: %.4f Z: %.4f" % ( MPos[0], MPos[1], MPos[2] ) WPosString = "X: %.4f Y: %.4f Z: %.4f" % ( WPos[0], WPos[1], WPos[2] ) - + self._stateMonitor.setWorkPosition(WPosString) self._stateMonitor.setMachinePosition(MPosString) - + class StateMonitor(object): def __init__(self, interval=0.5, on_update=None, on_add_temperature=None, on_add_log=None, on_add_message=None): @@ -888,7 +892,7 @@ class StateMonitor(object): self._progress = None self._machinePosition = None self._workPosition = None - + self._offsets = {} self._change_event = threading.Event() @@ -966,7 +970,7 @@ class StateMonitor(object): "workPosition": self._workPosition, "machinePosition": self._machinePosition } - + def setWorkPosition(self, workPosition): self._workPosition = workPosition self._change_event.set() diff --git a/src/octoprint/static/js/app/viewmodels/printerstate.js b/src/octoprint/static/js/app/viewmodels/printerstate.js index 2cac8c1e..6afebfc2 100644 --- a/src/octoprint/static/js/app/viewmodels/printerstate.js +++ b/src/octoprint/static/js/app/viewmodels/printerstate.js @@ -15,6 +15,7 @@ $(function() { self.isSdReady = ko.observable(undefined); self.isLocked = ko.observable(undefined); self.isConnecting = ko.observable(undefined); + self.isFlashing = ko.observable(undefined); self.filename = ko.observable(undefined); self.progress = ko.observable(undefined); @@ -134,6 +135,7 @@ $(function() { self.isReady(data.flags.ready); self.isSdReady(data.flags.sdReady); self.isLocked(data.flags.locked); + self.isFlashing(data.flags.flashing); self.isConnecting(data.text === "Connecting" || data.text === "Opening serial port"); if (self.isPaused() != prevPaused) { @@ -267,7 +269,7 @@ $(function() { } }); }; - + self.onEventRealTimeState = function(payload){ self.currentPos({x: payload.wx, y: payload.wy}); }; @@ -278,4 +280,4 @@ $(function() { ["loginStateViewModel"], ["#state_wrapper", "#drop_overlay"] ]); -}); \ No newline at end of file +}); diff --git a/src/octoprint/templates/mrbeam_index.jinja2 b/src/octoprint/templates/mrbeam_index.jinja2 index ce8fc739..7304e342 100644 --- a/src/octoprint/templates/mrbeam_index.jinja2 +++ b/src/octoprint/templates/mrbeam_index.jinja2 @@ -25,7 +25,7 @@
  • design library
  • focus
  • terminal
  • - + {% for key in templates.navbar.order %} {% set data = templates.navbar.entries[key] %} {% if "custom_bindings" not in data or data["custom_bindings"] %}{% endif %} @@ -55,24 +55,28 @@ {{ _('State') }}
    - -
    + +
    Mr Beam is in a locked state as it does not know its position. First remove any objects blocking the gantry's travel range. Then do a homing cycle.
    - +
    +
    + Mr Beam is flashing the Arduino with a new firmware. + Please do NOT power off the System during flashing! +
    {{ _('Position') }}: