diff --git a/csaxs_bec/bec_ipython_client/plugins/flomni/gui_tools.py b/csaxs_bec/bec_ipython_client/plugins/flomni/gui_tools.py index f02f501..af52575 100644 --- a/csaxs_bec/bec_ipython_client/plugins/flomni/gui_tools.py +++ b/csaxs_bec/bec_ipython_client/plugins/flomni/gui_tools.py @@ -18,13 +18,8 @@ class flomniGuiToolsError(Exception): class flomniGuiTools: def __init__(self): - self.gui_window = None - self.camera_gripper_image = None - self.camera_overview_image = None - self.xeyegui = None - self.progressbar = None self.text_box = None - self.idle_text_box = None + self.progressbar = None def set_client(self, client): self.client = client @@ -42,38 +37,55 @@ class flomniGuiTools: def flomnigui_raise(self): self.gui.flomni.raise_window() + # def flomnigui_show_xeyealign(self): + # self.flomnigui_show_gui() + # if self.xeyegui is None: + # self.flomnigui_remove_all_docks() + # self.xeyegui = self.gui.flomni.new("xeyegui").new("XRayEye") + # # start live + # if not dev.cam_xeye.live_mode: + # dev.cam_xeye.live_mode = True + def flomnigui_show_xeyealign(self): self.flomnigui_show_gui() - if self.xeyegui is None: + if self._flomnigui_check_attribute_not_exists("xeyegui"): self.flomnigui_remove_all_docks() self.xeyegui = self.gui.flomni.new("xeyegui").new("XRayEye") # start live if not dev.cam_xeye.live_mode: dev.cam_xeye.live_mode = True + + def _flomnigui_check_attribute_not_exists(self, attribute_name): + if hasattr(self.gui,"flomni"): + if hasattr(self.gui.flomni,attribute_name): + return False + return True + + def flomnigui_show_cameras(self): self.flomnigui_show_gui() - if self.camera_gripper_image is None or self.camera_overview_image is None: + if self._flomnigui_check_attribute_not_exists("camera_gripper") or self._flomnigui_check_attribute_not_exists("camera_overview"): self.flomnigui_remove_all_docks() - self.camera_gripper_image = self.gui.flomni.new("camera_gripper").new("Image") + camera_gripper_image = self.gui.flomni.new("camera_gripper").new("Image") if self._flomnicam_check_device_exists(dev.cam_flomni_gripper): - self.camera_gripper_image.image(("cam_flomni_gripper", "preview")) - self.camera_gripper_image.lock_aspect_ratio = True - self.camera_gripper_image.enable_fps_monitor = True - self.camera_gripper_image.enable_toolbar = False - self.camera_gripper_image.outer_axes = False - self.camera_gripper_image.inner_axes = False + camera_gripper_image.image(("cam_flomni_gripper", "preview")) + camera_gripper_image.lock_aspect_ratio = True + camera_gripper_image.enable_fps_monitor = True + camera_gripper_image.enable_toolbar = False + camera_gripper_image.outer_axes = False + camera_gripper_image.inner_axes = False dev.cam_flomni_gripper.start_live_mode() else: print("Cannot open camera_gripper. Device does not exist.") - self.camera_overview_image = self.gui.flomni.new("camera_overview").new("Image") + camera_overview_image = self.gui.flomni.new("camera_overview").new("Image") if self._flomnicam_check_device_exists(dev.cam_flomni_overview): - self.camera_overview_image.image(("cam_flomni_overview", "preview")) - self.camera_overview_image.lock_aspect_ratio = True - self.camera_overview_image.enable_fps_monitor = True - self.camera_overview_image.enable_toolbar = False - self.camera_overview_image.outer_axes = False - self.camera_overview_image.inner_axes = False + camera_overview_image.image(("cam_flomni_overview", "preview")) + camera_overview_image.lock_aspect_ratio = True + camera_overview_image.enable_fps_monitor = True + camera_overview_image.enable_toolbar = False + camera_overview_image.outer_axes = False + camera_overview_image.inner_axes = False dev.cam_flomni_overview.start_live_mode() else: print("Cannot open camera_overview. Device does not exist.") @@ -82,19 +94,15 @@ class flomniGuiTools: dev.cam_flomni_overview.stop_live_mode() dev.cam_flomni_gripper.stop_live_mode() dev.cam_xeye.live_mode = False - self.gui.flomni.delete_all() - self.camera_gripper_image = None - self.camera_overview_image = None - self.xeyegui = None + self.gui.flomni.delete_all() self.progressbar = None self.text_box = None - self.idle_text_box = None def flomnigui_idle(self): self.flomnigui_show_gui() - if self.idle_text_box is None: + if self._flomnigui_check_attribute_not_exists("idle_text_box"): self.flomnigui_remove_all_docks() - self.idle_text_box = self.gui.flomni.new("idle_textbox").new("TextBox") + idle_text_box = self.gui.flomni.new("idle_textbox").new("TextBox") text = ( "
"
             + " ,---.,--. ,-----. ,--.   ,--.,--.  ,--.,--. \n"
@@ -104,7 +112,7 @@ class flomniGuiTools:
             + "`--'  `--' `-----' `--'   `--'`--'  `--'`--' \n"
             + "
" ) - self.idle_text_box.set_html_text(text) + idle_text_box.set_html_text(text) def _flomnicam_check_device_exists(self, device): try: @@ -116,7 +124,7 @@ class flomniGuiTools: def flomnigui_show_progress(self): self.flomnigui_show_gui() - if self.progressbar is None: + if self._flomnigui_check_attribute_not_exists("progressbar"): self.flomnigui_remove_all_docks() # Add a new dock with a RingProgressBar widget self.progressbar = self.gui.flomni.new("progressbar").new("RingProgressBar") @@ -147,7 +155,7 @@ class flomniGuiTools: * 100 ) self.progressbar.set_value([progress, subtomo_progress, 0]) - + if self.text_box is not None: text = f"Progress report:\n Tomo type: ....................... {self.progress['tomo_type']}\n Projection: ...................... {self.progress['projection']:.0f}\n Total projections expected ....... {self.progress['total_projections']}\n Angle: ........................... {self.progress['angle']}\n Current subtomo: ................. {self.progress['subtomo']}\n Current projection within subtomo: {self.progress['subtomo_projection']}\n Total projections per subtomo: ... {self.progress['subtomo_total_projections']}" self.text_box.set_plain_text(text)