rework update_queue fixes an issue that caused to not initialize after updates

This commit is contained in:
alfrix 2022-11-23 01:09:14 -03:00
parent 9211583a15
commit 9ec4ed204e
3 changed files with 18 additions and 32 deletions

View File

@ -218,6 +218,8 @@ class KlippyGtk:
return dialog return dialog
def remove_dialog(self, dialog, *args): def remove_dialog(self, dialog, *args):
if self.screen.updating:
return
dialog.destroy() dialog.destroy()
if dialog in self.screen.dialogs: if dialog in self.screen.dialogs:
logging.info("Removing Dialog") logging.info("Removing Dialog")

View File

@ -99,8 +99,8 @@ class SystemPanel(ScreenPanel):
self.get_updates() self.get_updates()
def finish_updating(self, dialog, response_id): def finish_updating(self, dialog, response_id):
self._screen.updating = False
self._gtk.remove_dialog(dialog) self._gtk.remove_dialog(dialog)
self._screen.set_updating(False)
self.get_updates() self.get_updates()
def refresh_updates(self, widget=None): def refresh_updates(self, widget=None):
@ -122,9 +122,7 @@ class SystemPanel(ScreenPanel):
self._screen.close_popup_message() self._screen.close_popup_message()
def process_update(self, action, data): def process_update(self, action, data):
if action == "notify_update_response": if action == "notify_update_response" and 'application' in data:
logging.info(f"Update: {data}")
if 'application' in data:
self.labels['update_progress'].set_text( self.labels['update_progress'].set_text(
f"{self.labels['update_progress'].get_text().strip()}\n" f"{self.labels['update_progress'].get_text().strip()}\n"
f"{data['message']}\n" f"{data['message']}\n"
@ -253,7 +251,7 @@ class SystemPanel(ScreenPanel):
self.reset_repo(self, program, False) self.reset_repo(self, program, False)
def reset_repo(self, widget, program, hard): def reset_repo(self, widget, program, hard):
if self._screen.is_updating(): if self._screen.updating:
return return
buttons = [ buttons = [
@ -280,10 +278,10 @@ class SystemPanel(ScreenPanel):
logging.info(f"Sending machine.update.recover name: {program}") logging.info(f"Sending machine.update.recover name: {program}")
self._screen._ws.send_method("machine.update.recover", {"name": program, "hard": hard}) 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): def update_program(self, widget, program):
if self._screen.is_updating(): if self._screen.updating:
return return
if not self.update_status: if not self.update_status:
@ -328,7 +326,7 @@ class SystemPanel(ScreenPanel):
else: else:
logging.info(f"Sending machine.update.client name: {program}") logging.info(f"Sending machine.update.client name: {program}")
self._screen._ws.send_method("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): def update_program_info(self, p):

View File

@ -80,7 +80,6 @@ class KlipperScreen(Gtk.Window):
printer = None printer = None
subscriptions = [] subscriptions = []
updating = False updating = False
update_queue = []
_ws = None _ws = None
screensaver_timeout = None screensaver_timeout = None
reinit_count = 0 reinit_count = 0
@ -450,9 +449,6 @@ class KlipperScreen(Gtk.Window):
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
) )
def is_updating(self):
return self.updating
def _go_to_submenu(self, widget, name): def _go_to_submenu(self, widget, name):
logging.info(f"#### Go to submenu {name}") logging.info(f"#### Go to submenu {name}")
# Find current menu item # Find current menu item
@ -622,21 +618,11 @@ class KlipperScreen(Gtk.Window):
self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver) self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver)
return 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): def show_printer_select(self, widget=None):
self.base_panel.show_heaters(False) self.base_panel.show_heaters(False)
self.show_panel("printer_select", "printer_select", _("Printer Select"), 2) self.show_panel("printer_select", "printer_select", _("Printer Select"), 2)
def state_execute(self, callback): def state_execute(self, callback):
if self.is_updating():
self.update_queue.append([callback])
else:
self.reinit_count = 0 self.reinit_count = 0
self.init_printer() self.init_printer()
callback() callback()