refactor tempstore initialization

fixes #1074
This commit is contained in:
alfrix 2023-08-08 21:34:10 -03:00 committed by Alfredo Monclus
parent bd98e758ec
commit 4800b56492
4 changed files with 23 additions and 24 deletions

View File

@ -330,14 +330,14 @@ class Printer:
return True
def init_temp_store(self, tempstore):
if not tempstore or 'result' not in tempstore:
return
if self.tempstore and list(self.tempstore) != list(tempstore['result']):
if not tempstore:
logging.debug("Tempstore not ready")
if self.tempstore and list(self.tempstore) != list(tempstore):
logging.debug("Tempstore has changed")
self.tempstore = tempstore['result']
self.tempstore = tempstore
self.change_state(self.state)
else:
self.tempstore = tempstore['result']
self.tempstore = tempstore
for device in self.tempstore:
for x in self.tempstore[device]:
length = len(self.tempstore[device][x])

View File

@ -11,7 +11,6 @@ from ks_includes.widgets.keypad import Keypad
class Panel(MenuPanel):
def __init__(self, screen, title, items=None):
super().__init__(screen, title, items)
self.graph_retry_timeout = None
self.left_panel = None
self.devices = {}
self.graph_update = None
@ -20,7 +19,6 @@ class Panel(MenuPanel):
self.main_menu = self._gtk.HomogeneousGrid()
self.main_menu.set_hexpand(True)
self.main_menu.set_vexpand(True)
self.graph_retry = 0
scroll = self._gtk.ScrolledWindow()
self.numpad_visible = False
@ -41,18 +39,12 @@ class Panel(MenuPanel):
self.content.add(self.main_menu)
def update_graph_visibility(self):
if self.left_panel is None or not self._printer.get_temp_store_devices():
if self._printer.get_temp_store_devices():
logging.info("Retrying to create left panel")
self._gtk.reset_temp_color()
self.main_menu.attach(self.create_left_panel(), 0, 0, 1, 1)
self.graph_retry += 1
if self.graph_retry < 5:
if self.graph_retry_timeout is None:
self.graph_retry_timeout = GLib.timeout_add_seconds(5, self.update_graph_visibility)
else:
logging.debug(f"Could not create graph {self.left_panel} {self._printer.get_temp_store_devices()}")
return False
if self.left_panel is None:
logging.info("No left panel")
return
if not self._printer.get_temp_store_devices():
logging.debug(f"Could not create graph tempstore: {self._printer.get_temp_store_devices()}")
return
count = 0
for device in self.devices:
visible = self._config.get_config().getboolean(f"graph {self._screen.connected_printer}",
@ -87,9 +79,6 @@ class Panel(MenuPanel):
if self.graph_update is not None:
GLib.source_remove(self.graph_update)
self.graph_update = None
if self.graph_retry_timeout is not None:
GLib.source_remove(self.graph_retry_timeout)
self.graph_retry_timeout = None
if self.active_heater is not None:
self.hide_numpad()

View File

@ -164,6 +164,7 @@ class Panel(ScreenPanel):
def update_graph_visibility(self):
if not self._printer.get_temp_store_devices():
logging.debug(f"Could not create graph tempstore: {self._printer.get_temp_store_devices()}")
return
count = 0
for device in self.devices:

View File

@ -888,7 +888,8 @@ class KlipperScreen(Gtk.Window):
extra_items))
if data is False:
return self._init_printer("Error getting printer object data with extra items")
self.init_tempstore()
if len(self.printer.get_tools() + self.printer.get_heaters()) > 0:
self.init_tempstore()
self.files.initialize()
self.files.refresh_files()
@ -902,7 +903,15 @@ class KlipperScreen(Gtk.Window):
return False
def init_tempstore(self):
self.printer.init_temp_store(self.apiclient.send_request("server/temperature_store"))
tempstore = self.apiclient.send_request("server/temperature_store")
if tempstore and 'result' in tempstore:
self.printer.init_temp_store(tempstore['result'])
if hasattr(self.panels[self._cur_panels[-1]], "update_graph_visibility"):
self.panels[self._cur_panels[-1]].update_graph_visibility()
else:
logging.error(f'Tempstore not ready: {tempstore} Retrying in 5 seconds')
GLib.timeout_add_seconds(5, self.init_tempstore)
return
server_config = self.apiclient.send_request("server/config")
if server_config:
try: