diff --git a/modules/firmware_apps/app_store.py b/modules/firmware_apps/app_store.py index 16581c7..ed2de10 100644 --- a/modules/firmware_apps/app_store.py +++ b/modules/firmware_apps/app_store.py @@ -69,7 +69,12 @@ def cleanup_ui_widgets(self): for widget in widgets: if widget: widget._cleanup() - widget = None + + self.menu = None + self.available_menu = None + self.installed_menu = None + self.update_menu = None + self.codeinstall = None def get_index(self): if not wifi.status(): @@ -106,10 +111,7 @@ def handle_index(self): def install_app(self, app): try: install_app(app) - if self.available_menu: - self.update_state("available_menu") - else: - self.update_state("main_menu") + self.update_state("main_menu") eventbus.emit(InstallNotificationEvent()) eventbus.emit(ShowNotificationEvent("Installed the app!")) except MemoryError: @@ -137,6 +139,7 @@ def prepare_available_menu(self): def on_select(_, i): self.to_install_app = self.app_store_index[i] self.update_state("installing_app") + self.cleanup_ui_widgets() def exit_available_menu(): self.cleanup_ui_widgets() @@ -153,11 +156,12 @@ def exit_available_menu(): def prepare_main_menu(self): def on_cancel(): + self.cleanup_ui_widgets() self.minimise() def on_select(value, idx): + self.cleanup_ui_widgets() if value == CODE_INSTALL: - self.cleanup_ui_widgets() self.codeinstall = CodeInstall( install_handler=lambda id: self.handle_code_input(id), app=self ) diff --git a/modules/system/eventbus.py b/modules/system/eventbus.py index 0d848be..f9a94e3 100644 --- a/modules/system/eventbus.py +++ b/modules/system/eventbus.py @@ -40,10 +40,16 @@ def remove(self, event_type, event_handler, app): if app in self.handlers: if event_type in self.handlers[app]: if event_handler in self.handlers[app][event_type]: + print( + f"Removed event handler for {event_type.__name__}: {app.__class__.__name__} - {event_handler.__name__}" + ) self.handlers[app][event_type].remove(event_handler) if app in self.async_handlers: if event_type in self.async_handlers[app]: if event_handler in self.async_handlers[app][event_type]: + print( + f"Removed event handler for {event_type.__name__}: {app.__class__.__name__} - {event_handler.__name__}" + ) self.async_handlers[app][event_type].remove(event_handler) def deregister(self, app):