splash_screen: implement Power On Printer but make it more specific

This commit is contained in:
alfrix 2022-03-01 17:21:17 -03:00
parent 1b7f908d6b
commit 49ab84e8d5
2 changed files with 48 additions and 17 deletions

View File

@ -70,30 +70,47 @@ class SplashScreenPanel(ScreenPanel):
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['power'] = self._gtk.ButtonImage("shutdown", _("Power"), "color3")
self.labels['restart'] = self._gtk.ButtonImage("refresh", _("Restart"), "color1")
self.labels['restart'].connect("clicked", self.restart)
self.labels['firmware_restart'] = self._gtk.ButtonImage("refresh", _("Firmware Restart"), "color2")
self.labels['firmware_restart'].connect("clicked", self.firmware_restart)
self.labels['power'] = self._gtk.ButtonImage("shutdown", _("Power On Printer"), "color3")
self.clear_action_bar()
if self._printer is not None:
devices = [i for i in self._printer.get_power_devices()]
logging.debug("Power devices: %s" % devices)
if len(devices) > 0:
logging.debug("Adding power button")
self.labels['power'].connect("clicked", self.menu_item_clicked, "power", {
"name": "Power",
"panel": "power"
})
self.labels['actions'].add(self.labels['power'])
logging.debug("Connected to %s", self._screen.connected_printer)
connecting = self._screen.connecting_to_printer
if connecting is not None:
printer = connecting
else:
printer = None
logging.debug("Connecting to %s", connecting)
devices = self._printer.get_power_devices()
logging.debug("Power devices: %s", devices)
for device in devices:
if printer == device:
logging.info("Found %s in power devices, Adding power button", printer)
self.labels['actions'].add(self.labels['power'])
self.labels['power'].connect("clicked", self.power_on, device)
if self._screen.printer.get_power_device_status(device) == "off":
logging.info("Printer is OFF")
else:
logging.info("Printer is ON")
break
else:
logging.info("%s not found in power devices", printer)
self.labels['actions'].add(self.labels['restart'])
self.labels['actions'].add(self.labels['firmware_restart'])
self.labels['actions'].add(self.labels['menu'])
self.labels['actions'].show_all()
def power_on(self, widget, device):
_ = self.lang.gettext
self._screen.show_popup_message(_("Sending Power ON signal"), level=1)
self._screen._ws.klippy.power_device_on(device)
def firmware_restart(self, widget):
self._screen._ws.klippy.restart_firmware()

View File

@ -62,6 +62,7 @@ class KlipperScreen(Gtk.Window):
_cur_panels = []
bed_temp_label = None
connecting = False
connecting_to_printer = None
connected_printer = None
currentPanel = None
files = None
@ -159,7 +160,7 @@ class KlipperScreen(Gtk.Window):
def connect_printer(self, name):
_ = self.lang.gettext
self.connecting_to_printer = name
if self.connected_printer == name:
if self.printer_select_prepanel is not None:
self.show_panel(self.printer_select_prepanel, "", "", 2)
@ -227,12 +228,6 @@ class KlipperScreen(Gtk.Window):
"shutdown": self.state_shutdown
})
powerdevs = self.apiclient.send_request("machine/device_power/devices")
logging.debug("Found power devices: %s" % powerdevs)
if powerdevs is not False:
self.printer.configure_power_devices(powerdevs['result'])
self.panels['splash_screen'].show_restart_buttons()
self._ws = KlippyWebsocket(self,
{
"on_connect": self.init_printer,
@ -242,6 +237,24 @@ class KlipperScreen(Gtk.Window):
data["moonraker_host"],
data["moonraker_port"]
)
powerdevs = self.apiclient.send_request("machine/device_power/devices")
if powerdevs is not False:
self.printer.configure_power_devices(powerdevs['result'])
self.panels['splash_screen'].show_restart_buttons()
# Printer auto power on during initial connect
# it should be manual on reinit because the user could be turning it off on purpose
#devices = self.printer.get_power_devices()
#for device in devices:
#if name == device:
#logging.info("Found %s in power devices", name)
#if self.printer.get_power_device_status(device) == "off":
#logging.info("Printer is OFF, sending Power ON")
#self._ws.klippy.power_device_on(device)
#break
#else:
#logging.info("%s not found in power devices", name)
self.files = KlippyFiles(self)
self._ws.initial_connect()
self.connecting = False
@ -898,6 +911,7 @@ class KlipperScreen(Gtk.Window):
if powerdevs is not False:
self.printer.configure_power_devices(powerdevs['result'])
self.panels['splash_screen'].show_restart_buttons()
def printer_ready(self):
_ = self.lang.gettext