This reduces the amount of magic numbers used, some images will scale to bigger sizes, most of the icons and images in vertical mode will be bigger, thumbnails should be bigger in both modes.
145 lines
6.0 KiB
Python
145 lines
6.0 KiB
Python
import gi
|
|
import logging
|
|
import os
|
|
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gdk, Gtk, Pango
|
|
|
|
from ks_includes.screen_panel import ScreenPanel
|
|
|
|
|
|
def create_panel(*args):
|
|
return SplashScreenPanel(*args)
|
|
|
|
|
|
class SplashScreenPanel(ScreenPanel):
|
|
box = None
|
|
|
|
def __init__(self, screen, title, back=True):
|
|
super().__init__(screen, title, back)
|
|
|
|
def initialize(self, panel_name):
|
|
|
|
image = self._gtk.Image("klipper", self._screen.width / 5, -1)
|
|
|
|
self.labels['text'] = Gtk.Label(_("Initializing printer..."))
|
|
self.labels['text'].set_line_wrap(True)
|
|
self.labels['text'].set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
|
|
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", _("Klipper 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['restart_system'] = self._gtk.ButtonImage("refresh", _("System Restart"), "color1")
|
|
self.labels['restart_system'].connect("clicked", self.restart_system)
|
|
self.labels['shutdown'] = self._gtk.ButtonImage("shutdown", _('System Shutdown'), "color2")
|
|
self.labels['shutdown'].connect("clicked", self.shutdown)
|
|
|
|
self.labels['actions'] = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
|
self.labels['actions'].set_hexpand(True)
|
|
self.labels['actions'].set_vexpand(False)
|
|
self.labels['actions'].set_halign(Gtk.Align.CENTER)
|
|
self.labels['actions'].set_homogeneous(True)
|
|
self.labels['actions'].set_size_request(self._screen.base_panel.content.get_allocation().width, 0)
|
|
|
|
scroll = Gtk.ScrolledWindow()
|
|
scroll.set_property("overlay-scrolling", False)
|
|
scroll.set_hexpand(True)
|
|
scroll.set_vexpand(True)
|
|
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
|
|
scroll.add_events(Gdk.EventMask.TOUCH_MASK)
|
|
scroll.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
|
|
scroll.add(self.labels['text'])
|
|
|
|
info = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0)
|
|
info.pack_start(image, False, True, 8)
|
|
info.pack_end(scroll, True, True, 8)
|
|
|
|
main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
|
|
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(f"{text}")
|
|
self.show_restart_buttons()
|
|
|
|
def clear_action_bar(self):
|
|
for child in self.labels['actions'].get_children():
|
|
self.labels['actions'].remove(child)
|
|
|
|
def show_restart_buttons(self):
|
|
|
|
self.clear_action_bar()
|
|
printer = self._screen.connected_printer
|
|
if printer is not None and not self._screen.shutdown:
|
|
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(f"Associated power devices: {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.labels['actions'].add(self.labels['restart'])
|
|
self.labels['actions'].add(self.labels['firmware_restart'])
|
|
else:
|
|
self.labels['actions'].add(self.labels['restart_system'])
|
|
self.labels['actions'].add(self.labels['shutdown'])
|
|
self.labels['actions'].add(self.labels['menu'])
|
|
self.labels['actions'].show_all()
|
|
|
|
def add_power_button(self, powerdevs):
|
|
if powerdevs is not None:
|
|
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'])
|
|
|
|
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()
|
|
|
|
def restart(self, widget):
|
|
self._screen._ws.klippy.restart()
|
|
|
|
def shutdown(self, widget):
|
|
|
|
if self._screen._ws.is_connected():
|
|
self._screen._confirm_send_action(widget,
|
|
_("Are you sure you wish to shutdown the system?"),
|
|
"machine.shutdown")
|
|
else:
|
|
logging.info("OS Shutdown")
|
|
os.system("systemctl poweroff")
|
|
|
|
def restart_system(self, widget):
|
|
|
|
if self._screen._ws.is_connected():
|
|
self._screen._confirm_send_action(widget,
|
|
_("Are you sure you wish to reboot the system?"),
|
|
"machine.reboot")
|
|
else:
|
|
logging.info("OS Reboot")
|
|
os.system("systemctl reboot")
|