base_panel and printer optimizations

This commit is contained in:
alfrix 2024-01-13 00:27:17 -03:00
parent 52fdb5d5ba
commit eecb41df93
2 changed files with 28 additions and 28 deletions

View File

@ -28,6 +28,7 @@ class Printer:
self.cameras = [] self.cameras = []
self.available_commands = {} self.available_commands = {}
self.spoolman = False self.spoolman = False
self.temp_devices = self.sensors = None
def reinit(self, printer_info, data): def reinit(self, printer_info, data):
self.config = data['configfile']['config'] self.config = data['configfile']['config']
@ -45,6 +46,7 @@ class Printer:
self.store_timeout = GLib.timeout_add_seconds(1, self._update_temp_store) self.store_timeout = GLib.timeout_add_seconds(1, self._update_temp_store)
self.tempstore_size = 1200 self.tempstore_size = 1200
self.available_commands = {} self.available_commands = {}
self.temp_devices = self.sensors = None
for x in self.config.keys(): for x in self.config.keys():
if x[:8] == "extruder": if x[:8] == "extruder":
@ -201,15 +203,12 @@ class Printer:
fans = [] fans = []
if self.config_section_exists("fan"): if self.config_section_exists("fan"):
fans.append("fan") fans.append("fan")
fan_types = ["controller_fan", "fan_generic", "heater_fan"] for fan_type in ["controller_fan", "fan_generic", "heater_fan"]:
for fan_type in fan_types:
fans.extend(iter(self.get_config_section_list(f"{fan_type} "))) fans.extend(iter(self.get_config_section_list(f"{fan_type} ")))
return fans return fans
def get_output_pins(self): def get_output_pins(self):
output_pins = [] return self.get_config_section_list("output_pin ")
output_pins.extend(iter(self.get_config_section_list("output_pin ")))
return output_pins
def get_gcode_macros(self): def get_gcode_macros(self):
macros = [] macros = []
@ -235,9 +234,10 @@ class Printer:
return self.get_config_section_list("temperature_sensor") return self.get_config_section_list("temperature_sensor")
def get_filament_sensors(self): def get_filament_sensors(self):
sensors = list(self.get_config_section_list("filament_switch_sensor ")) if self.sensors is None:
sensors.extend(iter(self.get_config_section_list("filament_motion_sensor "))) self.sensors = list(self.get_config_section_list("filament_switch_sensor "))
return sensors self.sensors.extend(iter(self.get_config_section_list("filament_motion_sensor ")))
return self.sensors
def get_probe(self): def get_probe(self):
probe_types = ["probe", "bltouch", "smart_effector", "dockable_probe"] probe_types = ["probe", "bltouch", "smart_effector", "dockable_probe"]
@ -372,12 +372,14 @@ class Printer:
return temp return temp
def get_temp_devices(self): def get_temp_devices(self):
if self.temp_devices is None:
devices = [ devices = [
device device
for device in self.tools for device in self.tools
if not device.startswith('extruder_stepper') if not device.startswith('extruder_stepper')
] ]
return devices + self.get_heaters() + self.get_temp_sensors() + self.get_temp_fans() self.temp_devices = devices + self.get_heaters() + self.get_temp_sensors() + self.get_temp_fans()
return self.temp_devices
def get_tools(self): def get_tools(self):
return self.tools return self.tools

View File

@ -217,9 +217,7 @@ class BasePanel(ScreenPanel):
if action != "notify_status_update" or self._screen.printer is None: if action != "notify_status_update" or self._screen.printer is None:
return return
devices = (self._printer.get_temp_devices()) for device in self._printer.get_temp_devices():
if devices is not None:
for device in devices:
temp = self._printer.get_dev_stat(device, "temperature") temp = self._printer.get_dev_stat(device, "temperature")
if temp is not None and device in self.labels: if temp is not None and device in self.labels:
name = "" name = ""