forked from CreatBot/CreatBotKlipperScreen
refactor reinit
should fix an issue when the user presses retry before the websocket fully disconnects
This commit is contained in:
@@ -32,7 +32,6 @@ class KlippyWebsocket(threading.Thread):
|
||||
self.port = port
|
||||
self.header = {"x-api-key": api_key} if api_key else {}
|
||||
self.api_key = api_key
|
||||
self.reconnect_count = 0
|
||||
|
||||
@property
|
||||
def _url(self):
|
||||
|
@@ -13,6 +13,12 @@ class KlippyFiles:
|
||||
self.directories = []
|
||||
self.gcodes_path = None
|
||||
|
||||
def reinit(self):
|
||||
self.callbacks.clear()
|
||||
self.files.clear()
|
||||
self.directories.clear()
|
||||
self.gcodes_path = None
|
||||
|
||||
def set_gcodes_path(self):
|
||||
virtual_sdcard = self._screen.printer.get_config_section("virtual_sdcard")
|
||||
if virtual_sdcard and "path" in virtual_sdcard:
|
||||
|
@@ -124,6 +124,7 @@ class Panel(ScreenPanel):
|
||||
self._screen._ws.klippy.restart()
|
||||
|
||||
def retry(self, widget):
|
||||
logging.debug("User retrying connection")
|
||||
self._screen.connect_printer(self._screen.connecting_to_printer)
|
||||
self.show_restart_buttons()
|
||||
|
||||
|
11
screen.py
11
screen.py
@@ -203,10 +203,10 @@ class KlipperScreen(Gtk.Window):
|
||||
|
||||
def connect_printer(self, name):
|
||||
self.connecting_to_printer = name
|
||||
if self.files:
|
||||
self.files.__init__(self)
|
||||
if self._ws is not None and self._ws.connected:
|
||||
self.printer_initializing("Waiting Websocket closure")
|
||||
self.close_websocket()
|
||||
return
|
||||
gc.collect()
|
||||
self.connecting = True
|
||||
self.initialized = False
|
||||
@@ -239,6 +239,8 @@ class KlipperScreen(Gtk.Window):
|
||||
)
|
||||
if self.files is None:
|
||||
self.files = KlippyFiles(self)
|
||||
else:
|
||||
self.files.reinit()
|
||||
|
||||
self.reinit_count = 0
|
||||
self.printer_initializing(_("Connecting to %s") % name, True)
|
||||
@@ -919,9 +921,12 @@ class KlipperScreen(Gtk.Window):
|
||||
return False
|
||||
self.server_info = self.apiclient.get_server_info()
|
||||
if not self.server_info:
|
||||
logging.info("Moonraker not connected")
|
||||
logging.info("Cannot get server info")
|
||||
if self.reinit_count > 0:
|
||||
self._init_printer(_("Cannot connect to Moonraker") + "\n\n"
|
||||
+ _("Retrying") + f" #{self.reinit_count}")
|
||||
else:
|
||||
self._init_printer(_("Connecting to %s") % self.connecting_to_printer)
|
||||
self.initializing = False
|
||||
self.reinit_count += 1
|
||||
return False
|
||||
|
Reference in New Issue
Block a user