fix(gui_tools): minimal ring progress bar safeguard in order to not interupt any script using it
This commit is contained in:
1 parent
48b21d806a
commit
dea43edcd9
1 file changed
+28
-13
@@ -1,8 +1,12 @@
|
|||||||
import builtins
|
import builtins
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
from bec_lib import bec_logger
|
||||||
|
|
||||||
# from csaxs_bec.bec_ipython_client.plugins.cSAXS import epics_get, epics_put, fshopen, fshclose
|
# from csaxs_bec.bec_ipython_client.plugins.cSAXS import epics_get, epics_put, fshopen, fshclose
|
||||||
|
|
||||||
|
logger = bec_logger.logger
|
||||||
|
|
||||||
if builtins.__dict__.get("bec") is not None:
|
if builtins.__dict__.get("bec") is not None:
|
||||||
bec = builtins.__dict__.get("bec")
|
bec = builtins.__dict__.get("bec")
|
||||||
dev = builtins.__dict__.get("dev")
|
dev = builtins.__dict__.get("dev")
|
||||||
@@ -209,18 +213,21 @@ class flomniGuiTools:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def flomnigui_show_progress(self):
|
def flomnigui_show_progress(self):
|
||||||
self.flomnigui_show_gui()
|
try:
|
||||||
if self._flomnigui_is_missing("progressbar"):
|
self.flomnigui_show_gui()
|
||||||
self.flomnigui_remove_all_docks()
|
if self._flomnigui_is_missing("progressbar"):
|
||||||
# Add a new dock with a RingProgressBar widget
|
self.flomnigui_remove_all_docks()
|
||||||
self.progressbar = self.gui.flomni.new("RingProgressBar")
|
# Add a new dock with a RingProgressBar widget
|
||||||
|
self.progressbar = self.gui.flomni.new("RingProgressBar")
|
||||||
|
|
||||||
# Setting multiple rings with different values
|
# Setting multiple rings with different values
|
||||||
self.progressbar.add_ring().set_update("manual")
|
self.progressbar.add_ring().set_update("manual")
|
||||||
self.progressbar.add_ring().set_update("manual")
|
self.progressbar.add_ring().set_update("manual")
|
||||||
self.progressbar.add_ring().set_update("scan")
|
self.progressbar.add_ring().set_update("scan")
|
||||||
|
|
||||||
self._flomnigui_update_progress()
|
self._flomnigui_update_progress()
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Error in flomnigui_show_progress: {e}")
|
||||||
|
|
||||||
def _flomnigui_update_progress(self):
|
def _flomnigui_update_progress(self):
|
||||||
"""Update the progress ring bar and center label from the current progress state.
|
"""Update the progress ring bar and center label from the current progress state.
|
||||||
@@ -231,9 +238,13 @@ class flomniGuiTools:
|
|||||||
|
|
||||||
client.get_global_var("tomo_progress")
|
client.get_global_var("tomo_progress")
|
||||||
"""
|
"""
|
||||||
main_progress_ring = self.progressbar.rings[0]
|
try:
|
||||||
subtomo_progress_ring = self.progressbar.rings[1]
|
if self.progressbar is None:
|
||||||
if self.progressbar is not None:
|
logger.warning("flOMNI progress GUI update skipped: progressbar is not available.")
|
||||||
|
return
|
||||||
|
|
||||||
|
main_progress_ring = self.progressbar.rings[0]
|
||||||
|
subtomo_progress_ring = self.progressbar.rings[1]
|
||||||
progress = self.progress["projection"] / self.progress["total_projections"] * 100
|
progress = self.progress["projection"] / self.progress["total_projections"] * 100
|
||||||
subtomo_progress = (
|
subtomo_progress = (
|
||||||
self.progress["subtomo_projection"]
|
self.progress["subtomo_projection"]
|
||||||
@@ -247,6 +258,7 @@ class flomniGuiTools:
|
|||||||
start_str = self.progress.get("tomo_start_time")
|
start_str = self.progress.get("tomo_start_time")
|
||||||
if start_str is not None:
|
if start_str is not None:
|
||||||
import datetime as _dt
|
import datetime as _dt
|
||||||
|
|
||||||
start_display = _dt.datetime.fromisoformat(start_str).strftime("%Y-%m-%d %H:%M:%S")
|
start_display = _dt.datetime.fromisoformat(start_str).strftime("%Y-%m-%d %H:%M:%S")
|
||||||
else:
|
else:
|
||||||
start_display = "N/A"
|
start_display = "N/A"
|
||||||
@@ -255,6 +267,7 @@ class flomniGuiTools:
|
|||||||
remaining_s = self.progress.get("estimated_remaining_time")
|
remaining_s = self.progress.get("estimated_remaining_time")
|
||||||
if remaining_s is not None and remaining_s >= 0:
|
if remaining_s is not None and remaining_s >= 0:
|
||||||
import datetime as _dt
|
import datetime as _dt
|
||||||
|
|
||||||
remaining_s = int(remaining_s)
|
remaining_s = int(remaining_s)
|
||||||
h, rem = divmod(remaining_s, 3600)
|
h, rem = divmod(remaining_s, 3600)
|
||||||
m, s = divmod(rem, 60)
|
m, s = divmod(rem, 60)
|
||||||
@@ -281,6 +294,8 @@ class flomniGuiTools:
|
|||||||
f" Est. remaining: {eta_display}"
|
f" Est. remaining: {eta_display}"
|
||||||
)
|
)
|
||||||
self.progressbar.set_center_label(text)
|
self.progressbar.set_center_label(text)
|
||||||
|
except Exception as exc:
|
||||||
|
logger.warning(f"flOMNI progress GUI update skipped: {exc}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in new issue
Block a user