From 9951323e917f2de464d27af387cdeafbcba2ebb5 Mon Sep 17 00:00:00 2001 From: Alexander Spassky Date: Tue, 11 May 2021 02:46:07 +0300 Subject: [PATCH] M117 messages display (#150) * Added displaying M117 messages under printer state label on JobStatus panel --- ks_includes/printer.py | 1 + panels/job_status.py | 11 +++++++++++ screen.py | 2 ++ 3 files changed, 14 insertions(+) diff --git a/ks_includes/printer.py b/ks_includes/printer.py index 1968a88f..1b14d563 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -76,6 +76,7 @@ class Printer: def process_update(self, data): keys = [ 'bed_mesh', + 'display_status', 'fan', 'gcode_move', 'idle_timeout', diff --git a/panels/job_status.py b/panels/job_status.py index 1f68749b..32209395 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -50,9 +50,14 @@ class JobStatusPanel(ScreenPanel): self.labels['status'].set_halign(Gtk.Align.START) self.labels['status'].set_vexpand(False) self.labels['status'].get_style_context().add_class("printing-status") + self.labels['lcdmessage'] = Gtk.Label("") + self.labels['lcdmessage'].set_halign(Gtk.Align.START) + self.labels['lcdmessage'].set_vexpand(False) + self.labels['lcdmessage'].get_style_context().add_class("printing-status") fi_box.add(self.labels['file']) #, True, True, 0) fi_box.add(self.labels['status']) #, True, True, 0) + fi_box.add(self.labels['lcdmessage']) #, True, True, 0) fi_box.set_valign(Gtk.Align.CENTER) info = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) @@ -376,6 +381,8 @@ class JobStatusPanel(ScreenPanel): ps = self._printer.get_stat("print_stats") vsd = self._printer.get_stat("virtual_sdcard") + if 'display_status' in data and 'message' in data['display_status']: + self.update_message() if "print_stats" in data and "filename" in data['print_stats']: if data['print_stats']['filename'] != self.filename and self.state not in ["cancelling","cancelled","complete"]: @@ -589,6 +596,10 @@ class JobStatusPanel(ScreenPanel): def update_progress (self): self.labels['progress_text'].set_text("%s%%" % (str( min(int(self.progress*100),100) ))) + def update_message (self): + msg = self._printer.get_stat("display_status", "message") + self.labels['lcdmessage'].set_text("" if msg == None else msg) + #def update_temp(self, dev, temp, target): # if dev in self.labels: # self.labels[dev].set_label(self._gtk.formatTemperatureString(temp, target)) diff --git a/screen.py b/screen.py index 269fdfe5..f4f7ebdb 100644 --- a/screen.py +++ b/screen.py @@ -41,6 +41,7 @@ PRINTER_BASE_STATUS_OBJECTS = [ 'bed_mesh', 'idle_timeout', 'configfile', + 'display_status', 'gcode_move', 'fan', 'toolhead', @@ -227,6 +228,7 @@ class KlipperScreen(Gtk.Window): "objects": { "bed_mesh": ["profile_name","mesh_max","mesh_min","probed_matrix"], "configfile": ["config"], + "display_status": ["progress","message"], "fan": ["speed"], "gcode_move": ["extrude_factor","gcode_position","homing_origin","speed_factor"], "idle_timeout": ["state"],