Splash_screen: fix return and duplicated power devices

fix forcefully returning the user from menu to splash when there is no connection to moonraker/klipper
fix a case where the power device was added multiple times to the list
This commit is contained in:
alfrix 2022-03-24 08:09:16 -03:00
parent ffaad4daf7
commit b83f12265d
2 changed files with 14 additions and 11 deletions

View File

@ -68,14 +68,15 @@ class KlippyWebsocket(threading.Thread):
state = self._screen.apiclient.get_server_info()
if state is False:
if self.reconnect_count > 3:
self._screen.printer_initializing(_("Cannot connect to Moonraker") +
self._screen.panels['splash_screen'].update_text(
_("Cannot connect to Moonraker") +
("\n\n%s\n\n") % self._url +
_("Retry #%s") % self.reconnect_count)
return False
if state['result']['klippy_connected'] is False:
if self.reconnect_count > 3:
self._screen.printer_initializing(_("Moonraker: connected") +
self._screen.panels['splash_screen'].update_text(
_("Moonraker: connected") +
("\n\nKlipper: %s\n\n") % state['result']['klippy_state'] +
_("Retry #%s") % self.reconnect_count)
return False

View File

@ -53,11 +53,12 @@ class SplashScreenPanel(ScreenPanel):
main.pack_start(info, True, True, 8)
main.pack_end(self.labels['actions'], False, False, 0)
self.show_restart_buttons()
self.content.add(main)
def update_text(self, text):
self.labels['text'].set_markup("%s" % text)
self.clear_action_bar()
def clear_action_bar(self):
for child in self.labels['actions'].get_children():
@ -98,12 +99,12 @@ class SplashScreenPanel(ScreenPanel):
if devices is not None:
for device in devices:
for power_device in power_devices:
if device == power_device:
if device == power_device and power_device not in found_devices:
found_devices.append(power_device)
if found_devices:
if len(found_devices) > 0:
logging.info("Found %s, Adding power button", found_devices)
self.labels['actions'].add(self.labels['power'])
self.labels['power'].connect("clicked", self.power_on, found_devices)
self.labels['actions'].add(self.labels['power'])
else:
logging.info("%s power devices not found", printer)
@ -117,6 +118,7 @@ class SplashScreenPanel(ScreenPanel):
elif self._screen.printer.get_power_device_status(device) == "on":
logging.info("%s is ON", device)
def firmware_restart(self, widget):
self._screen._ws.klippy.restart_firmware()