system: add shutdown and restart host
This commit is contained in:
parent
ea5c5afa5e
commit
c1f17b154c
@ -1,9 +1,9 @@
|
|||||||
import gi
|
import gi
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
gi.require_version("Gtk", "3.0")
|
gi.require_version("Gtk", "3.0")
|
||||||
from gi.repository import Gtk, Pango, GLib
|
from gi.repository import Gtk, Pango, GLib
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from ks_includes.screen_panel import ScreenPanel
|
from ks_includes.screen_panel import ScreenPanel
|
||||||
|
|
||||||
@ -18,6 +18,7 @@ ALLOWED_SERVICES = ["KlipperScreen", "MoonCord", "klipper", "moonraker", "webcam
|
|||||||
class SystemPanel(ScreenPanel):
|
class SystemPanel(ScreenPanel):
|
||||||
def __init__(self, screen, title, back=True):
|
def __init__(self, screen, title, back=True):
|
||||||
super().__init__(screen, title, back)
|
super().__init__(screen, title, back)
|
||||||
|
self.refresh = None
|
||||||
self.update_status = None
|
self.update_status = None
|
||||||
self.update_dialog = None
|
self.update_dialog = None
|
||||||
self.update_prog = None
|
self.update_prog = None
|
||||||
@ -35,12 +36,10 @@ class SystemPanel(ScreenPanel):
|
|||||||
self.refresh.set_vexpand(False)
|
self.refresh.set_vexpand(False)
|
||||||
|
|
||||||
reboot = self._gtk.ButtonImage('refresh', _('System\nRestart'), 'color3')
|
reboot = self._gtk.ButtonImage('refresh', _('System\nRestart'), 'color3')
|
||||||
reboot.connect("clicked", self._screen._confirm_send_action,
|
reboot.connect("clicked", self.reboot_poweroff, "reboot")
|
||||||
_("Are you sure you wish to reboot the system?"), "machine.reboot")
|
|
||||||
reboot.set_vexpand(False)
|
reboot.set_vexpand(False)
|
||||||
shutdown = self._gtk.ButtonImage('shutdown', _('System\nShutdown'), 'color4')
|
shutdown = self._gtk.ButtonImage('shutdown', _('System\nShutdown'), 'color4')
|
||||||
shutdown.connect("clicked", self._screen._confirm_send_action,
|
shutdown.connect("clicked", self.reboot_poweroff, "poweroff")
|
||||||
_("Are you sure you wish to shutdown the system?"), "machine.shutdown")
|
|
||||||
shutdown.set_vexpand(False)
|
shutdown.set_vexpand(False)
|
||||||
|
|
||||||
scroll = self._gtk.ScrolledWindow()
|
scroll = self._gtk.ScrolledWindow()
|
||||||
@ -377,3 +376,35 @@ class SystemPanel(ScreenPanel):
|
|||||||
def _autoscroll(self, *args):
|
def _autoscroll(self, *args):
|
||||||
adj = self.labels['update_scroll'].get_vadjustment()
|
adj = self.labels['update_scroll'].get_vadjustment()
|
||||||
adj.set_value(adj.get_upper() - adj.get_page_size())
|
adj.set_value(adj.get_upper() - adj.get_page_size())
|
||||||
|
|
||||||
|
def reboot_poweroff(self, widget, method):
|
||||||
|
scroll = self._gtk.ScrolledWindow()
|
||||||
|
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
|
||||||
|
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||||
|
vbox.set_halign(Gtk.Align.CENTER)
|
||||||
|
vbox.set_valign(Gtk.Align.CENTER)
|
||||||
|
if method == "reboot":
|
||||||
|
label = Gtk.Label(label=_("Are you sure you wish to reboot the system?"))
|
||||||
|
else:
|
||||||
|
label = Gtk.Label(label=_("Are you sure you wish to shutdown the system?"))
|
||||||
|
vbox.add(label)
|
||||||
|
scroll.add(vbox)
|
||||||
|
buttons = [
|
||||||
|
{"name": _("Host"), "response": Gtk.ResponseType.OK},
|
||||||
|
{"name": _("Machine"), "response": Gtk.ResponseType.APPLY},
|
||||||
|
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL}
|
||||||
|
]
|
||||||
|
self._gtk.Dialog(self._screen, buttons, scroll, self.reboot_poweroff_confirm, method)
|
||||||
|
|
||||||
|
def reboot_poweroff_confirm(self, widget, response_id, method):
|
||||||
|
if response_id == Gtk.ResponseType.OK:
|
||||||
|
if method == "reboot":
|
||||||
|
os.system("systemctl reboot")
|
||||||
|
else:
|
||||||
|
os.system("systemctl poweroff")
|
||||||
|
elif response_id == Gtk.ResponseType.APPLY:
|
||||||
|
if method == "reboot":
|
||||||
|
self._screen._ws.send_method("machine.reboot")
|
||||||
|
else:
|
||||||
|
self._screen._ws.send_method("machine.shutdown")
|
||||||
|
widget.destroy()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user