Repository navigation
Add front-end Slit1 aperture plan and a Slit Control tab - #117
Conversation
FrontEndSlit device (Y axis, fixed aperture positions), set_fe_slit1_aperture plan, and a Slit Control tab with an aperture dropdown and live Y/aperture readback. Assisted-by: copilot:claude-opus-5-5
There was a problem hiding this comment.
🟡 Changes recommended
The slit wrapper must forward stop requests so motor motion can be interrupted by RunEngine controls.
1 open issue
What changed in this PR
Adds front-end Slit1 aperture selection to the beamline device model, session plans, and GUI, with live readbacks in local mode.
Changes:
- Adds a
FrontEndSlitdevice and plan for selecting five fixed apertures. - Integrates Slit1 into the collection profile and a new Slit Control tab.
- Adds mock tests and CLI documentation.
| File | Description |
|---|---|
| tests/test_profile_namespace.py | Checks that the aperture plan is exported. |
| tests/photon_delivery_system/test_fe_slit.py | Tests aperture mapping, readbacks, moves, and invalid inputs. |
| tests/gui/test_slit_control.py | Tests the dropdown and live readbacks. |
| src/hextools/profiles/collection.py | Creates Slit1 and includes it in baseline readings. |
| src/hextools/photon_delivery_system/fe_slit.py | Defines the slit device, apertures, and movement plan. |
| src/hextools/photon_delivery_system/__init__.py | Exports the new device, enum, and plan. |
| src/hextools/gui/slit_control.py | Implements the plan form and local live readbacks. |
| src/hextools/gui/__main__.py | Registers Slit1 and adds the Slit Control tab. |
| docs/profile.md | Lists the new session plan. |
| docs/cli.md | Documents aperture-selection commands. |
Review effort: Balanced
Assisted-by: copilot:claude-opus-5-5
|
Anthony Sligar (@sligara7) i think we should avoid making device specific widgets like this. It's how a gui codebase can quickly balloon in complexity/size. Let's discuss how to achieve something similar without needing to make a widget specific to the device. |
… readout widget Per review: no widgets written for one device. The aperture dropdown comes from set_fe_slit1_aperture's type hint. Assisted-by: copilot:claude-opus-5-5
|
Agreed. Reworked in c1995e8: dropped the slit-specific widget; the Slit Control tab is now just the generic plan form for |
Keep both: the Slit Control tab and set_fe_slit1_aperture beside the Filters tab and set_filters. Assisted-by: copilot:claude-opus-5-5
| plan_tabs = QTabWidget() | ||
| plan_tabs.addTab(QtPlanWidget(re_client, move_motor), "Motors") | ||
| plan_tabs.addTab(QtPlanWidget(re_client, move_slits), "Slits") | ||
| plan_tabs.addTab(QtPlanWidget(re_client, set_fe_slit1_aperture), "Slit Control") |
There was a problem hiding this comment.
I'd maybe use a different name, since slits vs slit control sounds kind of the same. I wonder if we could do Slits tab, with two plan widgets stacked on top of each other?

No description provided.