Detector, collimator, post-tube in/out, move home/yag, the backlight button
and the sample exchange/alignment/data collection transitions blocked the
GUI thread for up to ~20s per move.
- MoveWorker (same thread as the collection worker, so sequences and
collections can not overlap) runs (label, callable) steps with a progress
dialog; all controls are locked meanwhile (no nudges, zoom stays usable)
- move functions raise MoveError instead of showing dialogs; the GUI shows
the message when the sequence ends
- abort stops all motors (motor record STOP, backlight) and ends the
sequence; position checks (assert_tweaker_positions abort=) stop waiting
- safety: backlight moves wait and check the position before the next step
(post-tube in used to start while the backlight was still moving out)
- tandem nudges stay non blocking in the GUI thread; collimator still moves
X then Y
- sample alignment: backlight in now also checks the detector is clear of
the post-tube path (as the backlight button does)
Tested in simulation and at the beamline.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>