job_status and base_panel: supress is twice as slow than directly checking if the key exist
This commit is contained in:
parent
5b7da9a9b8
commit
6f6f0d3f13
@ -8,7 +8,6 @@ from gi.repository import GLib, Gtk, Pango
|
|||||||
from jinja2 import Environment
|
from jinja2 import Environment
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from math import log
|
from math import log
|
||||||
from contextlib import suppress
|
|
||||||
from ks_includes.screen_panel import ScreenPanel
|
from ks_includes.screen_panel import ScreenPanel
|
||||||
|
|
||||||
|
|
||||||
@ -198,22 +197,21 @@ class BasePanel(ScreenPanel):
|
|||||||
if action == "notify_update_response":
|
if action == "notify_update_response":
|
||||||
if self.update_dialog is None:
|
if self.update_dialog is None:
|
||||||
self.show_update_dialog()
|
self.show_update_dialog()
|
||||||
with suppress(KeyError):
|
if 'message' in data:
|
||||||
self.labels['update_progress'].set_text(
|
self.labels['update_progress'].set_text(
|
||||||
f"{self.labels['update_progress'].get_text().strip()}\n"
|
f"{self.labels['update_progress'].get_text().strip()}\n"
|
||||||
f"{data['message']}\n")
|
f"{data['message']}\n")
|
||||||
with suppress(KeyError):
|
if 'complete' in data and data['complete']:
|
||||||
if data['complete']:
|
logging.info("Update complete")
|
||||||
logging.info("Update complete")
|
if self.update_dialog is not None:
|
||||||
if self.update_dialog is not None:
|
try:
|
||||||
try:
|
self.update_dialog.set_response_sensitive(Gtk.ResponseType.OK, True)
|
||||||
self.update_dialog.set_response_sensitive(Gtk.ResponseType.OK, True)
|
self.update_dialog.get_widget_for_response(Gtk.ResponseType.OK).show()
|
||||||
self.update_dialog.get_widget_for_response(Gtk.ResponseType.OK).show()
|
except AttributeError:
|
||||||
except AttributeError:
|
logging.error("error trying to show the updater button the dialog might be closed")
|
||||||
logging.error("error trying to show the updater button the dialog might be closed")
|
self._screen.updating = False
|
||||||
self._screen.updating = False
|
for dialog in self._screen.dialogs:
|
||||||
for dialog in self._screen.dialogs:
|
self._gtk.remove_dialog(dialog)
|
||||||
self._gtk.remove_dialog(dialog)
|
|
||||||
|
|
||||||
if action != "notify_status_update" or self._screen.printer is None:
|
if action != "notify_status_update" or self._screen.printer is None:
|
||||||
return
|
return
|
||||||
@ -230,13 +228,13 @@ class BasePanel(ScreenPanel):
|
|||||||
name = f"{name[:1].upper()}: "
|
name = f"{name[:1].upper()}: "
|
||||||
self.labels[device].set_label(f"{name}{int(temp)}°")
|
self.labels[device].set_label(f"{name}{int(temp)}°")
|
||||||
|
|
||||||
with suppress(Exception):
|
if (self.current_extruder is not False and 'toolhead' in data and 'extruder' in data['toolhead']
|
||||||
if self.current_extruder is not False and data["toolhead"]["extruder"] != self.current_extruder:
|
and data["toolhead"]["extruder"] != self.current_extruder):
|
||||||
self.control['temp_box'].remove(self.labels[f"{self.current_extruder}_box"])
|
self.control['temp_box'].remove(self.labels[f"{self.current_extruder}_box"])
|
||||||
self.current_extruder = data["toolhead"]["extruder"]
|
self.current_extruder = data["toolhead"]["extruder"]
|
||||||
self.control['temp_box'].pack_start(self.labels[f"{self.current_extruder}_box"], True, True, 3)
|
self.control['temp_box'].pack_start(self.labels[f"{self.current_extruder}_box"], True, True, 3)
|
||||||
self.control['temp_box'].reorder_child(self.labels[f"{self.current_extruder}_box"], 0)
|
self.control['temp_box'].reorder_child(self.labels[f"{self.current_extruder}_box"], 0)
|
||||||
self.control['temp_box'].show_all()
|
self.control['temp_box'].show_all()
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import gi
|
|||||||
|
|
||||||
gi.require_version("Gtk", "3.0")
|
gi.require_version("Gtk", "3.0")
|
||||||
from gi.repository import GLib, Gtk, Pango
|
from gi.repository import GLib, Gtk, Pango
|
||||||
from contextlib import suppress
|
|
||||||
from math import pi, sqrt, trunc
|
from math import pi, sqrt, trunc
|
||||||
from statistics import median
|
from statistics import median
|
||||||
from time import time
|
from time import time
|
||||||
@ -487,41 +486,41 @@ class Panel(ScreenPanel):
|
|||||||
f"{data['display_status']['message'] if data['display_status']['message'] is not None else ''}"
|
f"{data['display_status']['message'] if data['display_status']['message'] is not None else ''}"
|
||||||
)
|
)
|
||||||
|
|
||||||
with suppress(KeyError):
|
if 'toolhead' in data:
|
||||||
if data["toolhead"]["extruder"] != self.current_extruder:
|
if 'extruder' in data['toolhead'] and data['toolhead']['extruder'] != self.current_extruder:
|
||||||
self.labels['temp_grid'].remove_column(0)
|
self.labels['temp_grid'].remove_column(0)
|
||||||
self.labels['temp_grid'].insert_column(0)
|
self.labels['temp_grid'].insert_column(0)
|
||||||
self.current_extruder = data["toolhead"]["extruder"]
|
self.current_extruder = data["toolhead"]["extruder"]
|
||||||
self.labels['temp_grid'].attach(self.buttons['extruder'][self.current_extruder], 0, 0, 1, 1)
|
self.labels['temp_grid'].attach(self.buttons['extruder'][self.current_extruder], 0, 0, 1, 1)
|
||||||
self._screen.show_all()
|
self._screen.show_all()
|
||||||
with suppress(KeyError):
|
if "max_accel" in data["toolhead"]:
|
||||||
self.labels['max_accel'].set_label(f"{data['toolhead']['max_accel']:.0f} {self.mms2}")
|
self.labels['max_accel'].set_label(f"{data['toolhead']['max_accel']:.0f} {self.mms2}")
|
||||||
with suppress(KeyError):
|
if 'extruder' in data and 'pressure_advance' in data['extruder']:
|
||||||
self.labels['advance'].set_label(f"{data['extruder']['pressure_advance']:.2f}")
|
self.labels['advance'].set_label(f"{data['extruder']['pressure_advance']:.2f}")
|
||||||
|
|
||||||
if "gcode_move" in data:
|
if 'gcode_move' in data:
|
||||||
with suppress(KeyError):
|
if 'gcode_position' in data['gcode_move']:
|
||||||
self.pos_z = round(float(data['gcode_move']['gcode_position'][2]), 2)
|
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 ''}")
|
self.buttons['z'].set_label(f"Z: {self.pos_z:6.2f}{f'/{self.oheight}' if self.oheight > 0 else ''}")
|
||||||
with suppress(KeyError):
|
if 'extrude_factor' in data['gcode_move']:
|
||||||
self.extrusion = round(float(data["gcode_move"]["extrude_factor"]) * 100)
|
self.extrusion = round(float(data['gcode_move']['extrude_factor']) * 100)
|
||||||
self.labels['extrude_factor'].set_label(f"{self.extrusion:3}%")
|
self.labels['extrude_factor'].set_label(f"{self.extrusion:3}%")
|
||||||
with suppress(KeyError):
|
if 'speed_factor' in data['gcode_move']:
|
||||||
self.speed = round(float(data["gcode_move"]["speed_factor"]) * 100)
|
self.speed = round(float(data['gcode_move']['speed_factor']) * 100)
|
||||||
self.speed_factor = float(data["gcode_move"]["speed_factor"])
|
self.speed_factor = float(data['gcode_move']['speed_factor'])
|
||||||
self.labels['speed_factor'].set_label(f"{self.speed:3}%")
|
self.labels['speed_factor'].set_label(f"{self.speed:3}%")
|
||||||
with suppress(KeyError):
|
if 'speed' in data['gcode_move']:
|
||||||
self.req_speed = round(float(data["gcode_move"]["speed"]) / 60 * self.speed_factor)
|
self.req_speed = round(float(data["gcode_move"]["speed"]) / 60 * self.speed_factor)
|
||||||
self.labels['req_speed'].set_label(
|
self.labels['req_speed'].set_label(
|
||||||
f"{self.speed}% {self.vel:3.0f}/{self.req_speed:3.0f} "
|
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 and self._screen.width > 500 else ''}"
|
f"{f'{self.mms}' if self.vel < 1000 and self.req_speed < 1000 and self._screen.width > 500 else ''}"
|
||||||
)
|
)
|
||||||
self.buttons['speed'].set_label(self.labels['req_speed'].get_label())
|
self.buttons['speed'].set_label(self.labels['req_speed'].get_label())
|
||||||
with suppress(KeyError):
|
if 'homing_origin' in data['gcode_move']:
|
||||||
self.zoffset = float(data["gcode_move"]["homing_origin"][2])
|
self.zoffset = float(data['gcode_move']['homing_origin'][2])
|
||||||
self.labels['zoffset'].set_label(f"{self.zoffset:.3f} {self.mm}")
|
self.labels['zoffset'].set_label(f"{self.zoffset:.3f} {self.mm}")
|
||||||
if "motion_report" in data:
|
if 'motion_report' in data:
|
||||||
with suppress(KeyError):
|
if 'live_position' in data['motion_report']:
|
||||||
self.labels['pos_x'].set_label(f"X: {data['motion_report']['live_position'][0]:6.2f}")
|
self.labels['pos_x'].set_label(f"X: {data['motion_report']['live_position'][0]:6.2f}")
|
||||||
self.labels['pos_y'].set_label(f"Y: {data['motion_report']['live_position'][1]:6.2f}")
|
self.labels['pos_y'].set_label(f"Y: {data['motion_report']['live_position'][1]:6.2f}")
|
||||||
self.labels['pos_z'].set_label(f"Z: {data['motion_report']['live_position'][2]:6.2f}")
|
self.labels['pos_z'].set_label(f"Z: {data['motion_report']['live_position'][2]:6.2f}")
|
||||||
@ -533,14 +532,14 @@ class Panel(ScreenPanel):
|
|||||||
evelocity = (pos[3] - self.prev_pos[0][3]) / interval
|
evelocity = (pos[3] - self.prev_pos[0][3]) / interval
|
||||||
self.flowstore.append(self.fila_section * evelocity)
|
self.flowstore.append(self.fila_section * evelocity)
|
||||||
self.prev_pos = [pos, now]
|
self.prev_pos = [pos, now]
|
||||||
with suppress(KeyError):
|
if 'live_velocity' in data['motion_report']:
|
||||||
self.vel = float(data["motion_report"]["live_velocity"])
|
self.vel = float(data["motion_report"]["live_velocity"])
|
||||||
self.labels['req_speed'].set_label(
|
self.labels['req_speed'].set_label(
|
||||||
f"{self.speed}% {self.vel:3.0f}/{self.req_speed:3.0f} "
|
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 and self._screen.width > 500 else ''}"
|
f"{f'{self.mms}' if self.vel < 1000 and self.req_speed < 1000 and self._screen.width > 500 else ''}"
|
||||||
)
|
)
|
||||||
self.buttons['speed'].set_label(self.labels['req_speed'].get_label())
|
self.buttons['speed'].set_label(self.labels['req_speed'].get_label())
|
||||||
with suppress(KeyError):
|
if 'live_extruder_velocity' in data['motion_report']:
|
||||||
self.flowstore.append(self.fila_section * float(data["motion_report"]["live_extruder_velocity"]))
|
self.flowstore.append(self.fila_section * float(data["motion_report"]["live_extruder_velocity"]))
|
||||||
fan_label = ""
|
fan_label = ""
|
||||||
for fan in self.fans:
|
for fan in self.fans:
|
||||||
@ -549,28 +548,27 @@ class Panel(ScreenPanel):
|
|||||||
if fan_label:
|
if fan_label:
|
||||||
self.buttons['fan'].set_label(fan_label[:12])
|
self.buttons['fan'].set_label(fan_label[:12])
|
||||||
if "print_stats" in data:
|
if "print_stats" in data:
|
||||||
with suppress(KeyError):
|
if 'state' in data['print_stats']:
|
||||||
self.set_state(
|
self.set_state(
|
||||||
data["print_stats"]["state"],
|
data["print_stats"]["state"],
|
||||||
msg=f'{data["print_stats"]["message"] if "message" in data["print_stats"] else ""}'
|
msg=f'{data["print_stats"]["message"] if "message" in data["print_stats"] else ""}'
|
||||||
)
|
)
|
||||||
with suppress(KeyError):
|
if 'filename' in data['print_stats']:
|
||||||
self.update_filename(data['print_stats']["filename"])
|
self.update_filename(data['print_stats']["filename"])
|
||||||
with suppress(KeyError):
|
if 'filament_used' in data['print_stats']:
|
||||||
if 'filament_used' in data["print_stats"]:
|
self.labels['filament_used'].set_label(
|
||||||
self.labels['filament_used'].set_label(
|
f"{float(data['print_stats']['filament_used']) / 1000:.1f} m"
|
||||||
f"{float(data['print_stats']['filament_used']) / 1000:.1f} m"
|
)
|
||||||
)
|
|
||||||
if 'info' in data["print_stats"]:
|
if 'info' in data["print_stats"]:
|
||||||
with suppress(KeyError):
|
if ('total_layer' in data['print_stats']['info']
|
||||||
if data["print_stats"]['info']['total_layer'] is not None:
|
and data["print_stats"]['info']['total_layer'] is not None):
|
||||||
self.labels['total_layers'].set_label(f"{data['print_stats']['info']['total_layer']}")
|
self.labels['total_layers'].set_label(f"{data['print_stats']['info']['total_layer']}")
|
||||||
with suppress(KeyError):
|
if ('current_layer' in data['print_stats']['info']
|
||||||
if data["print_stats"]['info']['current_layer'] is not None:
|
and data['print_stats']['info']['current_layer'] is not None):
|
||||||
self.labels['layer'].set_label(
|
self.labels['layer'].set_label(
|
||||||
f"{data['print_stats']['info']['current_layer']} / "
|
f"{data['print_stats']['info']['current_layer']} / "
|
||||||
f"{self.labels['total_layers'].get_text()}"
|
f"{self.labels['total_layers'].get_text()}"
|
||||||
)
|
)
|
||||||
elif "layer_height" in self.file_metadata and "object_height" in self.file_metadata:
|
elif "layer_height" in self.file_metadata and "object_height" in self.file_metadata:
|
||||||
self.labels['layer'].set_label(
|
self.labels['layer'].set_label(
|
||||||
f"{1 + round((self.pos_z - self.f_layer_h) / self.layer_h)} / "
|
f"{1 + round((self.pos_z - self.f_layer_h) / self.layer_h)} / "
|
||||||
@ -601,18 +599,15 @@ class Panel(ScreenPanel):
|
|||||||
estimated = slicer_time = filament_time = file_time = 0
|
estimated = slicer_time = filament_time = file_time = 0
|
||||||
timeleft_type = self._config.get_config()['main'].get('print_estimate_method', 'auto')
|
timeleft_type = self._config.get_config()['main'].get('print_estimate_method', 'auto')
|
||||||
|
|
||||||
with suppress(KeyError):
|
if 'estimated_time' in self.file_metadata and self.file_metadata['estimated_time'] > 1:
|
||||||
if self.file_metadata['estimated_time'] > 1:
|
spdcomp = sqrt(self.speed_factor)
|
||||||
# speed_factor compensation based on empirical testing
|
slicer_time = ((self.file_metadata['estimated_time']) / spdcomp)
|
||||||
spdcomp = sqrt(self.speed_factor)
|
self.labels["slicer_time"].set_label(self.format_time(slicer_time))
|
||||||
slicer_time = ((self.file_metadata['estimated_time']) / spdcomp)
|
|
||||||
self.labels["slicer_time"].set_label(self.format_time(slicer_time))
|
|
||||||
|
|
||||||
with suppress(Exception):
|
if 'filament_total' in self.file_metadata and self.file_metadata['filament_total'] >= fila_used > 0:
|
||||||
if self.file_metadata['filament_total'] >= fila_used:
|
filament_time = (print_duration / (fila_used / self.file_metadata['filament_total']))
|
||||||
filament_time = (print_duration / (fila_used / self.file_metadata['filament_total']))
|
self.labels["filament_time"].set_label(self.format_time(filament_time))
|
||||||
self.labels["filament_time"].set_label(self.format_time(filament_time))
|
if progress > 0:
|
||||||
with suppress(ZeroDivisionError):
|
|
||||||
file_time = (print_duration / progress)
|
file_time = (print_duration / progress)
|
||||||
self.labels["file_time"].set_label(self.format_time(file_time))
|
self.labels["file_time"].set_label(self.format_time(file_time))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user