Fix issues while Moonraker is connected but klipper is disconnected

fixes #548
This commit is contained in:
alfrix
2022-03-28 16:47:52 -03:00
parent 2a7acea86c
commit 6f86448405
3 changed files with 98 additions and 68 deletions

View File

@@ -30,6 +30,16 @@ class SplashScreenPanel(ScreenPanel):
self.labels['text'].set_halign(Gtk.Align.CENTER)
self.labels['text'].set_valign(Gtk.Align.CENTER)
self.labels['menu'] = self._gtk.ButtonImage("settings", _("Menu"), "color4")
self.labels['menu'].connect("clicked", self._screen._go_to_submenu, "")
self.labels['restart'] = self._gtk.ButtonImage("refresh", _("Restart") + "\n" + "Klipper", "color1")
self.labels['restart'].connect("clicked", self.restart)
self.labels['firmware_restart'] = self._gtk.ButtonImage("refresh", _("Firmware\nRestart"), "color2")
self.labels['firmware_restart'].connect("clicked", self.firmware_restart)
self.labels['restart_system'] = self._gtk.ButtonImage("refresh", _("Restart\nSystem"), "color1")
self.labels['restart_system'].connect("clicked", self.restart_system)
self.labels['shutdown'] = self._gtk.ButtonImage("shutdown", _('System\nShutdown'), "color2")
self.labels['shutdown'].connect("clicked", self.shutdown)
self.labels['actions'] = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
self.labels['actions'].set_hexpand(True)
@@ -61,6 +71,7 @@ class SplashScreenPanel(ScreenPanel):
def update_text(self, text):
self.labels['text'].set_markup("%s" % text)
self.show_restart_buttons()
def clear_action_bar(self):
for child in self.labels['actions'].get_children():
@@ -69,23 +80,17 @@ class SplashScreenPanel(ScreenPanel):
def show_restart_buttons(self):
_ = self.lang.gettext
if "firmware_restart" not in self.labels:
self.labels['menu'] = self._gtk.ButtonImage("settings", _("Menu"), "color4")
self.labels['menu'].connect("clicked", self._screen._go_to_submenu, "")
self.labels['restart'] = self._gtk.ButtonImage("refresh", _("Restart") + "\n" + "Klipper", "color1")
self.labels['restart'].connect("clicked", self.restart)
self.labels['firmware_restart'] = self._gtk.ButtonImage("refresh", _("Firmware\nRestart"), "color2")
self.labels['firmware_restart'].connect("clicked", self.firmware_restart)
self.labels['power'] = self._gtk.ButtonImage("shutdown", _("Power On Printer"), "color3")
self.labels['restart_system'] = self._gtk.ButtonImage("refresh", _("Restart\nSystem"), "color1")
self.labels['restart_system'].connect("clicked", self.restart_system)
self.labels['shutdown'] = self._gtk.ButtonImage("shutdown", _('System\nShutdown'), "color2")
self.labels['shutdown'].connect("clicked", self.shutdown)
self.clear_action_bar()
printer = self._screen.connected_printer
if printer is not None:
printer_cfg = self._config.get_printer_config(printer)
if printer_cfg is not None:
power_devices = printer_cfg.get("power_devices", "")
power_devices = [str(i.strip()) for i in power_devices.split(',')]
logging.info("Associated power devices: %s", power_devices)
self.add_power_button(self._screen.search_power_devices(power_devices))
if self._screen.printer is not None and self._screen.printer.state != "disconnected":
self.search_power_devices()
self.labels['actions'].add(self.labels['restart'])
self.labels['actions'].add(self.labels['firmware_restart'])
self.labels['actions'].add(self.labels['menu'])
@@ -96,39 +101,27 @@ class SplashScreenPanel(ScreenPanel):
self.labels['actions'].show_all()
def search_power_devices(self):
power_devices = found_devices = []
printer = self._screen.connecting_to_printer
logging.info("Connecting to %s", printer)
printer_cfg = self._config.get_printer_config(printer)
if printer_cfg is not None:
power_devices = printer_cfg.get("power_devices", "")
power_devices = [str(i.strip()) for i in power_devices.split(',')]
logging.info("%s associated power devices: %s", printer, power_devices)
devices = self._screen.printer.get_power_devices()
logging.debug("Power devices: %s", devices)
if devices is not None:
for device in devices:
for power_device in power_devices:
if device == power_device and power_device not in found_devices:
found_devices.append(power_device)
if len(found_devices) > 0:
logging.info("Found %s, Adding power button", found_devices)
self.labels['power'].connect("clicked", self.power_on, found_devices)
def add_power_button(self, powerdevs):
if powerdevs is not None:
_ = self.lang.gettext
self.labels['power'] = self._gtk.ButtonImage("shutdown", _("Power On Printer"), "color3")
self.labels['power'].connect("clicked", self._screen.power_on, powerdevs)
self.check_power_status()
self.labels['actions'].add(self.labels['power'])
else:
logging.info("%s power devices not found", printer)
def power_on(self, widget, devices):
_ = self.lang.gettext
self._screen.show_popup_message(_("Sending Power ON signal to: %s") % devices, level=1)
for device in devices:
if self._screen.printer.get_power_device_status(device) == "off":
logging.info("%s is OFF, Sending Power ON signal", device)
self._screen._ws.klippy.power_device_on(device)
elif self._screen.printer.get_power_device_status(device) == "on":
logging.info("%s is ON", device)
def activate(self):
self.check_power_status()
def check_power_status(self):
if 'power' in self.labels:
devices = self._screen.printer.get_power_devices()
if devices is not None:
for device in devices:
if self._screen.printer.get_power_device_status(device) == "off":
self.labels['power'].set_sensitive(True)
break
elif self._screen.printer.get_power_device_status(device) == "on":
self.labels['power'].set_sensitive(False)
def firmware_restart(self, widget):
self._screen._ws.klippy.restart_firmware()