forked from CreatBot/CreatBotKlipperScreen
drop python 3.7 support (#1271)
* drop python 3.7 support start using PEP 572 assignment expressions Update FAQ improve how unsupported versions are informed this should be clearer on why we refuse to continue * add more asign-expressions
This commit is contained in:
55
screen.py
55
screen.py
@@ -137,10 +137,21 @@ class KlipperScreen(Gtk.Window):
|
||||
self.gtk = KlippyGtk(self)
|
||||
self.init_style()
|
||||
self.set_icon_from_file(os.path.join(klipperscreendir, "styles", "icon.svg"))
|
||||
|
||||
self.base_panel = BasePanel(self, title="Base Panel")
|
||||
self.add(self.base_panel.main_grid)
|
||||
self.show_all()
|
||||
min_ver = (3, 8)
|
||||
if sys.version_info < min_ver:
|
||||
self.show_error_modal(
|
||||
"Error",
|
||||
_("The system doesn't meet the minimum requirement") + "\n"
|
||||
+ _("Minimum:") + f" Python {min_ver[0]}.{min_ver[1]}" + "\n"
|
||||
+ _("System:") + f" Python {sys.version_info.major}.{sys.version_info.minor}"
|
||||
)
|
||||
return
|
||||
if self._config.errors:
|
||||
self.show_error_modal("Invalid config file", self._config.get_errors())
|
||||
return
|
||||
if self.show_cursor:
|
||||
self.get_window().set_cursor(
|
||||
Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.ARROW))
|
||||
@@ -150,18 +161,9 @@ class KlipperScreen(Gtk.Window):
|
||||
Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.BLANK_CURSOR))
|
||||
os.system("xsetroot -cursor ks_includes/emptyCursor.xbm ks_includes/emptyCursor.xbm")
|
||||
self.base_panel.activate()
|
||||
if self._config.errors:
|
||||
self.show_error_modal("Invalid config file", self._config.get_errors())
|
||||
# Prevent this dialog from being destroyed
|
||||
self.dialogs = []
|
||||
self.set_screenblanking_timeout(self._config.get_main_config().get('screen_blanking'))
|
||||
self.log_notification("KlipperScreen Started", 1)
|
||||
self.initial_connection()
|
||||
if sys.version_info == (3, 7):
|
||||
GLib.timeout_add_seconds(2, self.show_popup_message,
|
||||
_("Warning") + f" Python 3.7\n"
|
||||
+ _("Ended official support in June 2023") + "\n"
|
||||
+ _("KlipperScreen will drop support in June 2024"), 2)
|
||||
|
||||
def state_execute(self, state, callback):
|
||||
self.close_screensaver()
|
||||
@@ -396,15 +398,16 @@ class KlipperScreen(Gtk.Window):
|
||||
self.popup_message = self.popup_timeout = None
|
||||
return False
|
||||
|
||||
def show_error_modal(self, err, e=""):
|
||||
logging.error(f"Showing error modal: {err} {e}")
|
||||
def show_error_modal(self, title_msg, description="", help_msg=None):
|
||||
logging.error(f"Showing error modal: {title_msg} {description}")
|
||||
|
||||
title = Gtk.Label(wrap=True, wrap_mode=Pango.WrapMode.CHAR, hexpand=True, halign=Gtk.Align.START)
|
||||
title.set_markup(f"<b>{err}</b>\n")
|
||||
title.set_markup(f"<b>{title_msg}</b>\n")
|
||||
version = Gtk.Label(label=f"{functions.get_software_version()}", halign=Gtk.Align.END)
|
||||
|
||||
help_msg = _("Provide KlipperScreen.log when asking for help.\n")
|
||||
message = Gtk.Label(label=f"{help_msg}\n\n{e}", wrap=True, wrap_mode=Pango.WrapMode.CHAR)
|
||||
if not help_msg:
|
||||
help_msg = _("Provide KlipperScreen.log when asking for help.\n")
|
||||
message = Gtk.Label(label=f"{description}\n\n{help_msg}", wrap=True, wrap_mode=Pango.WrapMode.CHAR)
|
||||
scroll = self.gtk.ScrolledWindow()
|
||||
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
|
||||
scroll.add(message)
|
||||
@@ -416,13 +419,13 @@ class KlipperScreen(Gtk.Window):
|
||||
grid.attach(scroll, 0, 2, 2, 1)
|
||||
|
||||
buttons = [
|
||||
{"name": _("Go Back"), "response": Gtk.ResponseType.CANCEL}
|
||||
{"name": _("Close"), "response": Gtk.ResponseType.CLOSE}
|
||||
]
|
||||
self.gtk.Dialog(_("Error"), buttons, grid, self.error_modal_response)
|
||||
|
||||
def error_modal_response(self, dialog, response_id):
|
||||
self.gtk.remove_dialog(dialog)
|
||||
self.restart_ks()
|
||||
@staticmethod
|
||||
def error_modal_response(dialog, response_id):
|
||||
sys.exit(1)
|
||||
|
||||
def restart_ks(self, *args):
|
||||
logging.debug(f"Restarting {sys.executable} {' '.join(sys.argv)}")
|
||||
@@ -883,8 +886,7 @@ class KlipperScreen(Gtk.Window):
|
||||
if self.connected_printer is None or not devices:
|
||||
return found_devices
|
||||
devices = [str(i.strip()) for i in devices.split(',')]
|
||||
power_devices = self.printer.get_power_devices()
|
||||
if power_devices:
|
||||
if power_devices := self.printer.get_power_devices():
|
||||
found_devices = [dev for dev in devices if dev in power_devices]
|
||||
logging.info(f"Found {found_devices}", )
|
||||
return found_devices
|
||||
@@ -1039,8 +1041,7 @@ class KlipperScreen(Gtk.Window):
|
||||
def init_tempstore(self):
|
||||
if len(self.printer.get_temp_devices()) == 0:
|
||||
return
|
||||
tempstore = self.apiclient.send_request("server/temperature_store")
|
||||
if tempstore:
|
||||
if tempstore := self.apiclient.send_request("server/temperature_store"):
|
||||
self.printer.init_temp_store(tempstore)
|
||||
if hasattr(self.panels[self._cur_panels[-1]], "update_graph_visibility"):
|
||||
self.panels[self._cur_panels[-1]].update_graph_visibility()
|
||||
@@ -1051,8 +1052,7 @@ class KlipperScreen(Gtk.Window):
|
||||
if set(self.printer.tempstore) != set(self.printer.get_temp_devices()):
|
||||
GLib.timeout_add_seconds(5, self.init_tempstore)
|
||||
return
|
||||
server_config = self.apiclient.send_request("server/config")
|
||||
if server_config:
|
||||
if server_config := self.apiclient.send_request("server/config"):
|
||||
try:
|
||||
self.printer.tempstore_size = server_config["config"]["data_store"]["temperature_store_size"]
|
||||
logging.info(f"Temperature store size: {self.printer.tempstore_size}")
|
||||
@@ -1138,11 +1138,6 @@ class KlipperScreen(Gtk.Window):
|
||||
|
||||
|
||||
def main():
|
||||
minimum = (3, 7)
|
||||
if not sys.version_info >= minimum:
|
||||
logging.error(f"python {sys.version_info.major}.{sys.version_info.minor} "
|
||||
f"does not meet the minimum requirement {minimum[0]}.{minimum[1]}")
|
||||
sys.exit(1)
|
||||
parser = argparse.ArgumentParser(description="KlipperScreen - A GUI for Klipper")
|
||||
homedir = os.path.expanduser("~")
|
||||
|
||||
|
Reference in New Issue
Block a user