29
screen.py
29
screen.py
@@ -73,6 +73,7 @@ class KlipperScreen(Gtk.Window):
|
|||||||
windowed = False
|
windowed = False
|
||||||
notification_log = []
|
notification_log = []
|
||||||
prompt = None
|
prompt = None
|
||||||
|
tempstore_timeout = None
|
||||||
|
|
||||||
def __init__(self, args):
|
def __init__(self, args):
|
||||||
self.server_info = None
|
self.server_info = None
|
||||||
@@ -1104,19 +1105,26 @@ class KlipperScreen(Gtk.Window):
|
|||||||
|
|
||||||
def init_tempstore(self):
|
def init_tempstore(self):
|
||||||
if len(self.printer.get_temp_devices()) == 0:
|
if len(self.printer.get_temp_devices()) == 0:
|
||||||
return
|
return False
|
||||||
tempstore = self.apiclient.send_request("server/temperature_store")
|
tempstore = self.apiclient.send_request("server/temperature_store")
|
||||||
if tempstore:
|
if tempstore:
|
||||||
self.printer.init_temp_store(tempstore)
|
self.printer.init_temp_store(tempstore)
|
||||||
if hasattr(self.panels[self._cur_panels[-1]], "update_graph_visibility"):
|
if hasattr(self.panels[self._cur_panels[-1]], "update_graph_visibility"):
|
||||||
self.panels[self._cur_panels[-1]].update_graph_visibility()
|
self.panels[self._cur_panels[-1]].update_graph_visibility()
|
||||||
|
if self.tempstore_timeout:
|
||||||
|
self.remove_tempstore_timeout()
|
||||||
else:
|
else:
|
||||||
logging.error(f'Tempstore not ready: {tempstore} Retrying in 5 seconds')
|
logging.error(f'Tempstore not ready: {tempstore} Retrying in 5 seconds')
|
||||||
GLib.timeout_add_seconds(5, self.init_tempstore)
|
if self.tempstore_timeout:
|
||||||
return
|
return False
|
||||||
if set(self.printer.tempstore) != set(self.printer.get_temp_devices()):
|
if self.reinit_count < self.max_retries:
|
||||||
GLib.timeout_add_seconds(5, self.init_tempstore)
|
self.reinit_count += 1
|
||||||
return
|
self.tempstore_timeout = GLib.timeout_add_seconds(5, self.retry_init_tempstore)
|
||||||
|
else:
|
||||||
|
logging.error("Max retries reached. Stopping attempts to initialize tempstore.")
|
||||||
|
self.remove_tempstore_timeout()
|
||||||
|
return False
|
||||||
|
|
||||||
server_config = self.apiclient.send_request("server/config")
|
server_config = self.apiclient.send_request("server/config")
|
||||||
if server_config:
|
if server_config:
|
||||||
try:
|
try:
|
||||||
@@ -1126,6 +1134,15 @@ class KlipperScreen(Gtk.Window):
|
|||||||
logging.error("Couldn't get the temperature store size")
|
logging.error("Couldn't get the temperature store size")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def remove_tempstore_timeout(self):
|
||||||
|
GLib.source_remove(self.tempstore_timeout)
|
||||||
|
self.tempstore_timeout = None
|
||||||
|
self.reinit_count = 0
|
||||||
|
|
||||||
|
def retry_init_tempstore(self):
|
||||||
|
self.remove_tempstore_timeout()
|
||||||
|
return self.init_tempstore()
|
||||||
|
|
||||||
def show_keyboard(self, entry=None, event=None):
|
def show_keyboard(self, entry=None, event=None):
|
||||||
if self.keyboard is not None:
|
if self.keyboard is not None:
|
||||||
return
|
return
|
||||||
|
Reference in New Issue
Block a user