job_status: fix metadata not updating after printer switch fixes #1301

This commit is contained in:
alfrix 2024-03-12 13:39:53 -03:00
parent a312c28471
commit 1e2f538210
3 changed files with 4 additions and 12 deletions

View File

@ -47,7 +47,7 @@ class KlippyFiles:
os.path.dirname(params['filename']),
thumbnail['relative_path']
)
self.run_callbacks("update_metadata", result["result"])
self._screen.process_update("notify_metadata_update", params)
def add_file(self, item):
if 'path' not in item:

View File

@ -337,7 +337,6 @@ class Panel(ScreenPanel):
if self.flow_timeout is not None:
GLib.source_remove(self.flow_timeout)
self.flow_timeout = None
self._files.remove_callback(self._callback_metadata)
def create_buttons(self):
@ -454,12 +453,6 @@ class Panel(ScreenPanel):
for arg in args:
self.buttons[arg].set_sensitive(False)
def _callback_metadata(self, action, item):
if action == "update_metadata" and self.filename in item:
logging.info("Callback complete")
self.update_file_metadata()
self._files.remove_callback(self._callback_metadata)
def new_print(self):
self._screen.close_screensaver()
if "virtual_sdcard" in self._printer.data:
@ -476,6 +469,8 @@ class Panel(ScreenPanel):
elif "action:resumed" in data:
self.set_state("printing")
return
elif action == "notify_metadata_update" and data['filename'] == self.filename:
self.update_file_metadata()
elif action != "notify_status_update":
return
@ -811,6 +806,5 @@ class Panel(ScreenPanel):
self.labels['filament_total'].set_label(f"{float(self.file_metadata['filament_total']) / 1000:.1f} m")
else:
logging.debug("Cannot find file metadata. Listening for updated metadata")
self._screen.files.add_callback(self._callback_metadata)
self._files.request_metadata(self.filename)
self.show_file_thumbnail()

View File

@ -385,9 +385,7 @@ class Panel(ScreenPanel):
def _callback(self, action, item):
logging.info(f"{action}: {item}")
if action == "update_metadata":
return
elif action in {"create_dir", "create_file"}:
if action in {"create_dir", "create_file"}:
self.add_item_from_callback(action, item)
elif action == "delete_file":
self.delete_from_list(item["path"])