rework update_queue fixes an issue that caused to not initialize after updates
This commit is contained in:
parent
9211583a15
commit
9ec4ed204e
@ -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")
|
||||
|
@ -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):
|
||||
|
||||
|
20
screen.py
20
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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user