From 62ef4f1844e21117f21bd476def2bb9eb1b38e23 Mon Sep 17 00:00:00 2001 From: alfrix Date: Mon, 28 Nov 2022 23:09:10 -0300 Subject: [PATCH] job_status: stabilize the grid, add object height to main, translate units --- panels/job_status.py | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/panels/job_status.py b/panels/job_status.py index 08ff255e..b7c3873f 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -45,6 +45,10 @@ class JobStatusPanel(ScreenPanel): self.progress = self.zoffset = self.flowrate = self.vel = 0 self.main_status_displayed = True self.flowstore = [] + self.mm = _("mm") + self.mms = _("mm/s") + self.mms2 = _("mm/s²") + self.mms3 = _("mm³/s") data = ['pos_x', 'pos_y', 'pos_z', 'time_left', 'duration', 'slicer_time', 'file_time', 'filament_time', 'est_time', 'speed_factor', 'req_speed', 'max_accel', 'extrude_factor', 'zoffset', @@ -58,10 +62,10 @@ class JobStatusPanel(ScreenPanel): offset = self._screen.printer.get_stat("gcode_move", "homing_origin") self.zoffset = float(offset[2]) if offset else 0 - self.labels['zoffset'].set_label(f"{self.zoffset:.2f}") + self.labels['zoffset'].set_label(f"{self.zoffset:.2f} {self.mm}") accel = self._screen.printer.get_stat('toolhead', 'max_accel') if accel: - self.labels['max_accel'].set_label(f"{accel:.0f} mm/s²") + self.labels['max_accel'].set_label(f"{accel:.0f} {self.mms2}") self.labels['extrude_factor'].set_label(f"{self.extrusion:3}%") adv = self._screen.printer.get_stat('extruder', 'pressure_advance') if adv: @@ -251,12 +255,13 @@ class JobStatusPanel(ScreenPanel): self.buttons['left'].set_halign(Gtk.Align.START) szfe = Gtk.Grid() - szfe.attach(self.buttons['speed'], 0, 0, 1, 1) - szfe.attach(self.buttons['z'], 1, 0, 1, 1) + szfe.set_column_homogeneous(True) + szfe.attach(self.buttons['speed'], 0, 0, 3, 1) + szfe.attach(self.buttons['z'], 2, 0, 2, 1) if self._screen.printer.get_tools(): - szfe.attach(self.buttons['extrusion'], 0, 1, 1, 1) + szfe.attach(self.buttons['extrusion'], 0, 1, 3, 1) if self._screen.printer.get_fans(): - szfe.attach(self.buttons['fan'], 1, 1, 1, 1) + szfe.attach(self.buttons['fan'], 2, 1, 2, 1) info = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) info.get_style_context().add_class("printing-info") @@ -552,15 +557,15 @@ class JobStatusPanel(ScreenPanel): self.labels['temp_grid'].attach(self.buttons['extruder'][self.current_extruder], 0, 0, 1, 1) self._screen.show_all() with contextlib.suppress(KeyError): - self.labels['max_accel'].set_label(f"{data['toolhead']['max_accel']:.0f} mm/s²") + self.labels['max_accel'].set_label(f"{data['toolhead']['max_accel']:.0f} {self.mms2}") with contextlib.suppress(KeyError): self.labels['advance'].set_label(f"{data['extruder']['pressure_advance']:.2f}") if "gcode_move" in data: with contextlib.suppress(KeyError): if self.main_status_displayed: - self.pos_z = float(data['gcode_move']['gcode_position'][2]) - self.buttons['z'].set_label(f"Z: {data['gcode_move']['gcode_position'][2]:6.2f}") + self.pos_z = round(float(data['gcode_move']['gcode_position'][2]), 2) + self.buttons['z'].set_label(f"Z: {self.pos_z:6.2f}{f'/{self.oheight}' if self.oheight > 0 else ''}") with contextlib.suppress(KeyError): self.extrusion = round(float(data["gcode_move"]["extrude_factor"]) * 100) self.labels['extrude_factor'].set_label(f"{self.extrusion:3}%") @@ -570,11 +575,14 @@ class JobStatusPanel(ScreenPanel): self.labels['speed_factor'].set_label(f"{self.speed:3}%") with contextlib.suppress(KeyError): self.req_speed = round(float(data["gcode_move"]["speed"]) / 60 * self.speed_factor) + self.labels['req_speed'].set_label( + f"{self.speed}% {self.vel:3.0f}/{self.req_speed:3.0f} " + f"{f'{self.mms}' if self.vel < 1000 and self.req_speed < 1000 else ''}") if self.main_status_displayed: - self.buttons['speed'].set_label(f"{self.speed}% {self.vel:.0f}/{self.req_speed:.0f} mm/s") + self.buttons['speed'].set_label(self.labels['req_speed'].get_label()) with contextlib.suppress(KeyError): self.zoffset = data["gcode_move"]["homing_origin"][2] - self.labels['zoffset'].set_label(f"{self.zoffset:.2f}") + self.labels['zoffset'].set_label(f"{self.zoffset:.2f} {self.mm}") if "motion_report" in data: with contextlib.suppress(KeyError): self.labels['pos_x'].set_label(f"X: {data['motion_report']['live_position'][0]:6.2f}") @@ -590,9 +598,11 @@ class JobStatusPanel(ScreenPanel): self.prev_pos = [pos, now] with contextlib.suppress(KeyError): self.vel = float(data["motion_report"]["live_velocity"]) - self.labels['req_speed'].set_label(f"{self.speed}% {self.vel:.0f}/{self.req_speed:.0f} mm/s") + self.labels['req_speed'].set_label( + f"{self.speed}% {self.vel:3.0f}/{self.req_speed:3.0f} " + f"{f'{self.mms}' if self.vel < 1000 and self.req_speed < 1000 else ''}") if self.main_status_displayed: - self.buttons['speed'].set_label(f"{self.speed}% {self.vel:.0f}/{self.req_speed:.0f} mm/s") + self.buttons['speed'].set_label(self.labels['req_speed'].get_label()) with contextlib.suppress(KeyError): self.flowstore.append(self.fila_section * float(data["motion_report"]["live_extruder_velocity"])) fan_label = "" @@ -642,9 +652,9 @@ class JobStatusPanel(ScreenPanel): self.flowstore.append(0) self.flowrate = median(self.flowstore) self.flowstore = [] - self.labels['flowrate'].set_label(f"{self.flowrate:.1f} mm³/s") + self.labels['flowrate'].set_label(f"{self.flowrate:.1f} {self.mms3}") if self.main_status_displayed: - self.buttons['extrusion'].set_label(f"{self.extrusion:3}% {self.flowrate:5.1f} mm³/s") + self.buttons['extrusion'].set_label(f"{self.extrusion:3}% {self.flowrate:5.1f} {self.mms3}") return True def update_time_left(self, total_duration, print_duration, fila_used=0): @@ -830,7 +840,7 @@ class JobStatusPanel(ScreenPanel): self.show_file_thumbnail() if "object_height" in self.file_metadata: self.oheight = float(self.file_metadata['object_height']) - self.labels['height'].set_label(f"{self.oheight} mm") + self.labels['height'].set_label(f"{self.oheight} {self.mm}") if "layer_height" in self.file_metadata: self.layer_h = float(self.file_metadata['layer_height']) if "first_layer_height" in self.file_metadata: