Open real .ui files and see what fails to render. Remaining candidates:
caWaveTable— editable waveform tablecaDoubleTabWidget— specialised tab containercaScriptButton— button that runs a script
parseUi already applies macro substitution to all property values at parse
time, including the args string in caRelatedDisplay. So $(P) in args is
resolved before CaRelatedDisplayWidget ever reads it — the chain works for
the common case. The only gap is when a child's related display has empty args
but the grandchild still needs macros from the grandparent (never explicitly
forwarded). Not yet observed in practice at 29-ID.
- Color maps — jet, hot, cool, viridis in addition to grayscale
- Histogram — display pixel value distribution to help set min/max
- ROI display — draw a region-of-interest overlay
- Data type awareness — currently assumes uint8; handle uint16 (values > 255) and float data correctly
- sizePolicy support — widgets with
MinimumExpandingshould stretch to fill available space (currently only caCamera does this viaright:0) - Visibility conditions —
caQtDMsupports showing/hiding widgets based on PV values;visibilityCalcis partially parsed but not fully wired up for all widget types - Font scaling — verify that font sizes match caQtDM across all widget types at different scales
See DEPLOYMENT.md for the full setup including known pitfalls
(NFS overlay storage, --no-hosts, etc.).
On the caCamera canvas, allow the user to draw a horizontal or vertical line by clicking and dragging. Display the pixel intensity profile along that line in a small chart below or beside the image. Useful for beam alignment and diagnostics.
- Line scan (strip chart / caCartesianPlot): clicking on a point in a
scan curve writes the corresponding motor position to the motor's
.VALPV, moving the motor to that position. - Camera image: clicking on a pixel writes the corresponding X/Y motor positions (requires a coordinate mapping configuration linking pixel coordinates to motor PV pairs).
App.tsx is now a generic shell. Deployment-specific tabs and panels live in
src/deployments/nefarian.tsx and src/deployments/29id.tsx. Select with
npm run dev -- --mode <name>. See README for details.