From 7b4a24d079fc75a044c571e254c7c280a128fa56 Mon Sep 17 00:00:00 2001 From: alfrix Date: Thu, 19 May 2022 14:46:26 -0300 Subject: [PATCH] job_status: simplify timeouts because sometimes it didn't work, also do not autoclose by default because there may be offsets to be saved --- docs/Configuration.md | 8 ++++---- panels/job_status.py | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/Configuration.md b/docs/Configuration.md index c335466a..8ba96490 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -20,11 +20,11 @@ invert_x: False invert_y: False invert_z: False -# Time (seconds) before the Job Status page reverts to main menu after a successful job -job_complete_timeout: 30 +# Time in seconds before the Job Status page closes itself after a successful job/print +# 0 means disabled +job_complete_timeout: 0 -# Time (seconds) before the Job Status page reverts to main menu after a successful job. -# If this option is 0, the user must click on a button to go back to the main menu. +# Time in seconds before the Job Status closes itself if an error is encountered job_error_timeout: 0 # Specify the language diff --git a/panels/job_status.py b/panels/job_status.py index 8c276b78..b1ea732f 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -16,13 +16,13 @@ def create_panel(*args): class JobStatusPanel(ScreenPanel): is_paused = False - filename = state_timeout = prev_pos = prev_gpos = vel_timeout = animation_timeout = None + filename = state_timeout = prev_pos = prev_gpos = vel_timeout = animation_timeout = close_timeout = None file_metadata = labels = {} state = "standby" timeleft_type = "auto" progress = zoffset = flowrate = vel = 0 main_status_displayed = True - close_timeouts = velstore = flowstore = [] + velstore = flowstore = [] def __init__(self, screen, title, back=False): super().__init__(screen, title, False) @@ -490,9 +490,9 @@ class JobStatusPanel(ScreenPanel): return False def remove_close_timeout(self): - for to in self.close_timeouts: - GLib.source_remove(to) - self.close_timeouts.remove(to) + if self.close_timeout is not None: + GLib.source_remove(self.close_timeout) + self.close_timeout = None def enable_button(self, *args): for arg in args: @@ -750,9 +750,9 @@ class JobStatusPanel(ScreenPanel): self.set_state("complete") self._screen.wake_screen() self.remove_close_timeout() - timeout = self._config.get_main_config().getint("job_complete_timeout", 30) + timeout = self._config.get_main_config().getint("job_complete_timeout", 0) if timeout != 0: - self.close_timeouts.append(GLib.timeout_add_seconds(timeout, self.close_panel)) + self.close_timeout = GLib.timeout_add_seconds(timeout, self.close_panel) return False elif ps['state'] == "error": logging.debug("Error!") @@ -763,7 +763,7 @@ class JobStatusPanel(ScreenPanel): self.remove_close_timeout() timeout = self._config.get_main_config().getint("job_error_timeout", 0) if timeout != 0: - self.close_timeouts.append(GLib.timeout_add_seconds(timeout, self.close_panel)) + self.close_timeout = GLib.timeout_add_seconds(timeout, self.close_panel) return False elif ps['state'] == "cancelled": # Print was cancelled @@ -772,7 +772,7 @@ class JobStatusPanel(ScreenPanel): self.remove_close_timeout() timeout = self._config.get_main_config().getint("job_cancelled_timeout", 0) if timeout != 0: - self.close_timeouts.append(GLib.timeout_add_seconds(timeout, self.close_panel)) + self.close_timeout = GLib.timeout_add_seconds(timeout, self.close_panel) return False elif ps['state'] == "paused": self.set_state("paused")