splash_screen: implement Power On Printer but make it more specific
This commit is contained in:
parent
1b7f908d6b
commit
49ab84e8d5
@ -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()
|
||||
|
||||
|
28
screen.py
28
screen.py
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user