From 2e7627dbcce61bbcec2aa7e020543df733612d2a Mon Sep 17 00:00:00 2001 From: appleb_m Date: Wed, 10 Dec 2025 17:07:42 +0100 Subject: [PATCH] DAQ: Add throttle down to raster scan --- gui/src/aaregui/widgets/camera_image.py | 32 +++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/gui/src/aaregui/widgets/camera_image.py b/gui/src/aaregui/widgets/camera_image.py index 3234eabf..54342405 100644 --- a/gui/src/aaregui/widgets/camera_image.py +++ b/gui/src/aaregui/widgets/camera_image.py @@ -116,6 +116,12 @@ class SampleCameraImageLabel(QGraphicsView): self.left_click_hold_threshold = 200 self.right_click_hold_threshold = 200 + self.raster_timer = QTimer() + self.raster_timer.setSingleShot(True) + self.raster_timer_interval = 400 + self.raster_timer.timeout.connect(self.__on_raster_timer_timeout) + self.__pending_load_pos = None + self.__detections = [] # list of dicts from publisher self.__det_shape = None # shape from payload [h,w] so we can scale @@ -267,7 +273,11 @@ class SampleCameraImageLabel(QGraphicsView): if self.__state == SampleCameraImageState.IDLE: if event.modifiers() & Qt.KeyboardModifier.ShiftModifier: - self.load_image.emit(mouse_pos) + if not self.raster_timer.isActive(): + self.load_image.emit(mouse_pos) + self.raster_timer.start(self.raster_timer_interval) + else: + self.__pending_load_pos = mouse_pos else: txt = self.__raster_mgr.is_part_of_completed_grid(mouse_pos) if txt != "": @@ -285,6 +295,12 @@ class SampleCameraImageLabel(QGraphicsView): self._update_grid() self.update() + def __on_raster_timer_timeout(self): + if self.__pending_load_pos is not None: + self.load_image.emit(self.__pending_load_pos) + self.__pending_load_pos = None + self.raster_timer.start(self.raster_timer_interval) + def mouseReleaseEvent(self, event): if event.button() == Qt.MouseButton.LeftButton: if self.click_timer.isActive(): @@ -637,16 +653,12 @@ class SampleCameraImageLabel(QGraphicsView): mouse_global_pos = QCursor.pos() mouse_view_pos = self.mapFromGlobal(mouse_global_pos) mouse_scene_pos = self.mapToScene(mouse_view_pos) - smargon_coord = SmargonCoordinate( - sh_mm=self.__geom.picture_to_smargon( - Coordinate(x=mouse_scene_pos.x(), y=mouse_scene_pos.y()) - )) - if event.key() == Qt.Key.Key_1: - self.set_helical_start.emit(smargon_coord) - - elif event.key() == Qt.Key.Key_2: - self.set_helical_end.emit(smargon_coord) + if event.key() == Qt.Key.Key_Shift: + if self.__state == SampleCameraImageState.IDLE: + if not self.raster_timer.isActive(): + self.load_image.emit(mouse_scene_pos) + self.raster_timer.start(self.raster_timer_interval) super().keyPressEvent(event)