From 9ec4ed204ea6b09158c180036acbdbe44c8d0576 Mon Sep 17 00:00:00 2001 From: alfrix Date: Wed, 23 Nov 2022 01:09:14 -0300 Subject: [PATCH] rework update_queue fixes an issue that caused to not initialize after updates --- ks_includes/KlippyGtk.py | 2 ++ panels/system.py | 28 +++++++++++++--------------- screen.py | 20 +++----------------- 3 files changed, 18 insertions(+), 32 deletions(-) diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index 22e6bbd6..5e23268d 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -218,6 +218,8 @@ class KlippyGtk: return dialog def remove_dialog(self, dialog, *args): + if self.screen.updating: + return dialog.destroy() if dialog in self.screen.dialogs: logging.info("Removing Dialog") diff --git a/panels/system.py b/panels/system.py index 1accb12e..d680ff7c 100644 --- a/panels/system.py +++ b/panels/system.py @@ -99,8 +99,8 @@ class SystemPanel(ScreenPanel): self.get_updates() def finish_updating(self, dialog, response_id): + self._screen.updating = False self._gtk.remove_dialog(dialog) - self._screen.set_updating(False) self.get_updates() def refresh_updates(self, widget=None): @@ -122,16 +122,14 @@ class SystemPanel(ScreenPanel): self._screen.close_popup_message() def process_update(self, action, data): - if action == "notify_update_response": - logging.info(f"Update: {data}") - if 'application' in data: - self.labels['update_progress'].set_text( - f"{self.labels['update_progress'].get_text().strip()}\n" - f"{data['message']}\n" - ) - if data['complete']: - self.update_dialog.set_response_sensitive(Gtk.ResponseType.CANCEL, True) - self.update_dialog.get_widget_for_response(Gtk.ResponseType.CANCEL).show() + if action == "notify_update_response" and 'application' in data: + self.labels['update_progress'].set_text( + f"{self.labels['update_progress'].get_text().strip()}\n" + f"{data['message']}\n" + ) + if data['complete']: + self.update_dialog.set_response_sensitive(Gtk.ResponseType.CANCEL, True) + self.update_dialog.get_widget_for_response(Gtk.ResponseType.CANCEL).show() def restart(self, widget, program): if program not in ALLOWED_SERVICES: @@ -253,7 +251,7 @@ class SystemPanel(ScreenPanel): self.reset_repo(self, program, False) def reset_repo(self, widget, program, hard): - if self._screen.is_updating(): + if self._screen.updating: return buttons = [ @@ -280,10 +278,10 @@ class SystemPanel(ScreenPanel): logging.info(f"Sending machine.update.recover name: {program}") self._screen._ws.send_method("machine.update.recover", {"name": program, "hard": hard}) - self._screen.set_updating(True) + self._screen.updating = True def update_program(self, widget, program): - if self._screen.is_updating(): + if self._screen.updating: return if not self.update_status: @@ -328,7 +326,7 @@ class SystemPanel(ScreenPanel): else: logging.info(f"Sending machine.update.client name: {program}") self._screen._ws.send_method("machine.update.client", {"name": program}) - self._screen.set_updating(True) + self._screen.updating = True def update_program_info(self, p): diff --git a/screen.py b/screen.py index 494cb25d..a556e65e 100644 --- a/screen.py +++ b/screen.py @@ -80,7 +80,6 @@ class KlipperScreen(Gtk.Window): printer = None subscriptions = [] updating = False - update_queue = [] _ws = None screensaver_timeout = None reinit_count = 0 @@ -450,9 +449,6 @@ class KlipperScreen(Gtk.Window): Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION ) - def is_updating(self): - return self.updating - def _go_to_submenu(self, widget, name): logging.info(f"#### Go to submenu {name}") # Find current menu item @@ -622,24 +618,14 @@ class KlipperScreen(Gtk.Window): self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver) return - def set_updating(self, updating=False): - if self.updating is True and updating is False and len(self.update_queue) > 0: - i = self.update_queue.pop() - self.update_queue = [] - i[0]() - self.updating = updating - def show_printer_select(self, widget=None): self.base_panel.show_heaters(False) self.show_panel("printer_select", "printer_select", _("Printer Select"), 2) def state_execute(self, callback): - if self.is_updating(): - self.update_queue.append([callback]) - else: - self.reinit_count = 0 - self.init_printer() - callback() + self.reinit_count = 0 + self.init_printer() + callback() def websocket_disconnected(self, msg): self.printer_initializing(msg, remove=True)