Skip to content

Commit

Permalink
splash_screen: implement Power On Printer but make it more specific
Browse files Browse the repository at this point in the history
  • Loading branch information
alfrix committed Mar 1, 2022
1 parent 1b7f908 commit 49ab84e
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 17 deletions.
37 changes: 27 additions & 10 deletions panels/splash_screen.py
Expand Up @@ -70,30 +70,47 @@ def show_restart_buttons(self):
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()

Expand Down
28 changes: 21 additions & 7 deletions screen.py
Expand Up @@ -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
Expand Down Expand Up @@ -159,7 +160,7 @@ def connect_printer_widget(self, widget, name):

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)
Expand Down Expand Up @@ -227,12 +228,6 @@ def connect_printer(self, name):
"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,
Expand All @@ -242,6 +237,24 @@ def connect_printer(self, name):
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
Expand Down Expand Up @@ -898,6 +911,7 @@ def init_printer(self):

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
Expand Down

0 comments on commit 49ab84e

Please sign in to comment.